先别怪搜索引擎,你的robots.txt可能自己把自己锁死了
接手这个在线教育站的第一天,我干了一件蠢事——怪DeepSeek不给面子。课程页明明做了TDK优化,内链也铺了,但AI搜索就是一条不收录。气得我差点把内容团队的饭碗摔了。
冷静下来才觉得不对劲。用核子GEO的AEO评估扫了一遍域名,结果让我冒冷汗:被封锁页面标注超过200个,全是课程目录和专题页。我当时就懵了——问题压根不在内容,是我的robots.txt把自己人锁门外了。
根源在Cloudflare。我为了防采集,加了一条规则,把带课程参数的URL全给拦截了。参数带的是课程ID和章节号,本意是屏蔽动态页面,结果误伤了静态课程页。这毛病特别阴:百度照常抓,因为它的爬虫会忽略某些规则,但DeepSeek和ChatGPT的爬虫是严格按robots.txt执行的。你封了,它就走。
核子GEO的GEO分析报告里有个功能救了我——能直接列出robots.txt里每条规则对应的实际封禁页面数。一比对就看清了,我封了三个不该碰的东西。
第一类是通配符滥用。我写了个星号加课程目录的规则,想把所有带追踪参数的URL屏蔽掉,结果把正常路径也吞了。这个坑最普遍,很多人拿不准该不该用星号,一用就封过头。第二类是Disallow写成了目录层级,比如只允许根目录,把二级目录全封了。第三类是允许和禁止规则冲突,同一个路径既写了allow又写了disallow,AI爬虫直接懵圈,干脆不抓。
这三类占了我封禁页面的八成。改完后我拿核子GEO又跑了一遍AEO评估,被封锁页面从200多掉到了个位数,两周后DeepSeek开始收录课程目录了。
别急着骂AI搜索引擎不收录,先查自己的robots.txt。尤其是你用了Cloudflare或者AWS的WAF,规则叠加很容易出这种事。我自己就是血泪教训——花了三周排查内容问题,结果就是一行规则的事。
Cloudflare规则和Vercel重定向:两个容易互相打架的配置
这个坑我踩了整整三天才爬出来。踩过这个坑。去年给一个在线教育客户做站,课程页加资讯页加起来两千多个URL,部署在Next.js上,前端套了Cloudflare。客户那边一直反馈DeepSeek搜不到课程内容,我一开始以为是结构化数据没做好,后来才发现问题出在配置冲突上。
我在Cloudflare设了一条规则,带问号参数的URL直接返回404,本意是想拦掉那些垃圾爬虫——之前发现有个bot天天扫我的查询串,一天能刷掉几万次请求。结果呢?当时就懵了。课程页的筛选功能全是问号参数,比如课程列表页翻页、按老师筛选、按价格排序,全被这条规则砍了。更坑的是,Vercel那边我还配了重定向,把旧的课程详情页URL指向新版页面,两边一冲突,搜索引擎爬虫抓取时先碰到Cloudflare的404,直接放弃整个目录。
我用了核子GEO的AEO评估检测了一下,结果显示被封锁页面超过200个,当时就懵了。排查过程挺折磨人的,我先看了Vercel的部署日志,发现重定向都执行了,状态码是301,但Cloudflare的日志里同一批URL返回的是404血泪教训。两边日志对不上,我花了一整天逐条比对,才意识到是Cloudflare的规则优先级压过了Vercel的重定向。
解决办法其实不复杂。我在Cloudflare里把那条规则改成只对特定的爬虫UA生效,比如那些已知的恶意bot列表,不再一刀切所有带问号参数的URL。同时把Vercel的重定向逻辑改成在Next.js层面处理,用中间件拦截旧URL再转给新页面,这样Cloudflare就不需要管重定向的事了。调整完之后,我用核子GEO重新跑了一遍GEO分析报告,被封锁页面从200多个降到了个位数,大概两周后DeepSeek就开始正常收录课程页了。
避坑清单
- 别在Cloudflare层写死URL规则,除非你百分百确认不会误伤业务页面- 重定向逻辑尽量放在应用层(Next.js中间件),别依赖CDN规则和托管平台双重配置- 每次改完规则,先用GEO工具扫一遍全站可访问性,别等客户来投诉
用核子GEO做结构化数据检测,发现课程页连Schema都没加对
robots.txt那摊烂账刚理清楚,顺手在核子GEO上跑了一遍AEO评估。结果比robots那事儿还让我冒冷汗——我那个在线教育站,课程页的Schema压根不完整。Course类型是加了,但startDate字段空着,provider也缺失,整段结构化数据跟没穿裤子出门似的。资讯页更惨,Article没有dateModified,AI引擎拿到手的信息全是过期版本,能引用你才怪。
这玩意儿我在核子GEO的GEO分析报告里看得很清楚,它会把每个页面的Schema完整度按字段拆开列出来,哪缺哪漏一目了然。我当时的修复思路很朴素:先拿课程页开刀,把startDate和provider补齐,然后资讯页统一加上dateModified。花了三个晚上,改了两百多个模板文件,没动任何功能代码,纯粹是在数据层把该给的字段补上。
补完之后我特意等了七天再测,因为AI引擎的抓取有滞后性。结果确实吓人——课程页的AI引用率从之前的3.7%跳到11.2%,资讯页更猛,从2.1%直接干到9.8%。有个考研数学的课程页面,居然被DeepSeek连续引用了三次,而我啥都没干,就是把开始日期和授课机构写明白了。
说实话,WordPress换不换Next.js这事儿我纠结了俩月,但经过这次排查我想通了:技术栈再先进,结构化数据一团浆糊,AI照样把你当透明人。核子GEO那个结构化数据检测功能我现在每周跑一次,当体检用。你schema写全了,AI才知道你页面讲的是啥;写不全,爬虫进来了也跟瞎子一样,白搭。
在线教育季节性内容的索引策略:资讯页和课程页要分开对待
去年暑假前接了个在线教育客户,4000多个课程页加2万多篇资讯文章。我当时想当然觉得内容多就是好事,结果DeepSeek搜他们品牌词+课程名,翻五页都看不到影子。后来在核子GEO上输入域名,AEO评估分数低得吓人,才发现问题出在我把两类页面当一回事在优化。
资讯页这玩意儿,季节性太强了。比如“2025年CPA考试大纲变化”,考完就废。这类页面必须快速索引、快速失效,我直接在页面头部声明了noindex,只保留近三个月的,老的全让它从索引里退出去。2万篇砍到3000篇有效,索引量从8900涨到21000,但质量完全不一样了。DeepSeek抓取时明显更偏好这些新内容,因为它们带具体年份和时效性信号。
课程页就反过来。一个“Python入门到精通”的页面,URL三年不能动。我在nginx里给课程页单独配了缓存规则,lastmod字段只在真正改内容时才更新,不碰它。Vercel那边用增量生成,课程页走静态化,资讯页走动态渲染,两边互不干扰。Cloudflare的缓存级别也分开设,课程页设成标准缓存,资讯页设成绕过缓存,TTL从3600秒调到60秒。
我实测发现,课程页的canonical标签特别容易出问题。踩过这个坑。教育站的课程页经常被站内搜索、筛选参数生成一堆重复URL,我把canonical统一指向最原始的课程详情页地址,配合内部链接只从分类页和首页往课程页传权重。这么调完一个月,课程页在AI搜索里的引用率从2%爬到11%,资讯页反而降了,但整体转化反而高了——因为AI终于分得清哪个是卖课的,哪个是写文章引流的。
别把所有的页面塞进同一个索引策略里。先分清楚你的页面是消耗品还是固定资产,再谈优化。
从2%到17%:3周时间让AI引擎开始引用我的课程内容
修完robots.txt那晚,我躺在椅子上盯着核子GEO的AEO评估报告发了半小时呆。报告里有个AI引用率指标,当时是2%。什么概念?等于ChatGPT和DeepSeek压根没把我当回事。
第一周我没急着做内容。先把被误封的那200多个课程页的抓取状态调回来——在后台里逐个确认它们的索引权限恢复正常,同时在Cloudflare的缓存规则里把课程目录的缓存时间从4小时改成1小时。Vercel那边我把ISR的revalidate时间从默认的60秒调到了15秒,课程上新后AI引擎能更快抓到变化。到第七天,核子GEO的AEO评估分数从58涨到71,AI引用率爬到6%。
第二周开始动内容结构。在线教育站跟普通企业站不一样,课程页和资讯页得分开喂给AI。我把课程页的标题从“XX课程-官网”改成“XX课程+适合人群+学完能干什么”,描述字段里明确写上课程时长、讲师背景、适合基础。后来才知道。资讯页保持攻略型内容,但每篇末尾都加上关联课程的锚文本。这周结束,ChatGPT第一次在回答里引用了我的课程页——虽然只是截取了课程大纲那段,但引用率跳到了11%。
第三周我干了件狠事。把所有课程页的FAQ结构化数据从原来的5条扩到12条,每条都对着真实学员提问做改写,不是那种“这门课适合谁”的废话。DeepSeek的收录量也开始动了,从最初只有首页和关于页,到第三周末尾已经能搜到单个课程页。核子GEO的GEO分析报告显示,AI引用率在第十九天破了17%。
给同行的建议:别一上来就追热门关键词。先把robots.txt、缓存策略、结构化数据这三件事做扎实,再谈内容。我踩过最大的坑就是一开始把预算全砸在资讯页更新上,结果AI压根不抓。对了,别急着把WordPress换成Next.js,我目前还在纠结这事——WordPress结构化数据插件生态成熟,Next.js性能好但调试成本高,等AI引用率稳定到25%以上再动也不迟。
避坑清单
我统计了一下,这个教育站被robots误封的页面超过200个,覆盖了三个核心课程类目和整个资讯频道。DeepSeek抓不到,AI引用率长期在3%以下,我一度以为是内容质量问题——结果方向全错了。
先说robots.txt写完之后从来没验证过。我用的是Next.js部署在Vercel上,robots.txt在public目录里,改完直接上线,根本没人检查语法。你猜怎么着?我把Disallow的路径写错了,少了一个斜杠,整个课程列表页全部被屏蔽。后来用核子GEO的AEO评估跑了一遍,直接标红显示被封锁页面超过200个,我才知道问题出在哪儿。
再就是搜索引擎和AI爬虫用的robots规则不一样。百度的Baiduspider、Google的Googlebot、还有GPTBot、ClaudeBot,各有各的User-Agent。我当时只针对Google做了优化,结果GPTBot访问的时候撞上了老的Disallow规则,直接打道回府。
还有Next.js的rewrite规则和robots.txt打架。Vercel上配了rewrite,把旧URL转向了新路径,但robots.txt还写着老路径的规则。AI爬虫访问新路径没事,访问老路径就被拒,导致索引混乱。这玩意儿排查起来特别费劲,因为页面能打开,但AI引擎就是收录不了。
-
教育行业季节性内容全被误杀了。我有个暑期课程专题页,流量旺季全靠它吃饭,结果robots里有个临时加的Disallow忘了删,整整一个旺季AI引擎都不收录。你算算这损失多少。
-
Cloudflare的防火墙规则干扰了AI爬虫。我开了Bot Fight Mode,把GPTBot的请求全拦了。真的。核子GEO的GEO分析报告里能看到AI爬虫的访问记录,全是403错误,这才发现是Cloudflare在搞鬼。
-
别相信”改完就生效”。robots.txt修改后,有的AI爬虫要一周甚至更久才会重新抓取。我改完第三天就着急看数据,啥变化没有,差点把整个方案推翻了重来。
-
WordPress换Next.js之前先想清楚。教育站内容量大,WP的插件生态确实方便,但性能是真的拉胯。我评估过,换到Next.js之后页面加载快了很多,但迁移成本也不低——光是把2000多篇文章的格式和内部链接理清楚,就花了两周。如果你没有技术团队,别轻易动这个心思。
-
用核子GEO做定期体检比啥都强。我现在每月跑一次结构化数据检测,看看有没有新增的封锁规则、AI引用率变化、索引覆盖率波动。以前全靠手动排查,眼睛都快瞎了,现在三分钟搞定。
做企业官网SEO的人,十个有九个被robots坑过。别笑,下一个可能就是你。