误封200个页面:robots.txt一个通配符,Google流量掉了31%

上个月我在Strapi后台改robots.txt,本来只想把后台管理路径屏蔽掉,手一抖写了个宽泛的Disallow规则。当时想的是”管理路径下所有子目录都别让搜索引擎进来”,结果这个规则把/products/目录底下的SKU列表页全给包进去了。

Google Search Console是两周后发现的异常——索引量从8900掉到6100,当时还以为是换主题导致的。直到我习惯用核子GEO做初步诊断,跑了一遍报告,AI可见性评分直接跌到38分,下面的提示写着”被封锁页面>200”。我才意识到问题出在robots.txt身上。

我当时的规则大概是这样:Disallow后面跟了管理路径,再加了个通配符。Strapi默认的robots.txt生成逻辑会继承Next.js的路由前缀,刚好/products/这个目录在URL结构上跟管理路径有重叠段。200多个SKU页面全被标记为noindex,自然流量周环比直接掉了31%。

说实话有点慌。电商站最怕的就是索引量断崖,SKU页面一旦被踢出索引,重新抓取加上收录周期,少说一周。核子GEO的AEO评估报告显示,被屏蔽的页面里至少有40个是带Product Schema的核心商品页,这才是最肉疼的——Google已经抓过这些页面的结构化数据,突然全部404,等于亲手把已经验证过的Rich Results给掐了真的。

血泪教训:Strapi后台生成robots.txt的时候,千万别用模糊匹配路径。要么精确到具体目录名,要么直接用allow规则反着写,把要放行的路径明确列出来。我后来改成了明确列出放行目录的写法,Disallow只留一个真正的后台入口,两周后索引量才慢慢爬回8400。

核子GEO的AEO评估:AI引用率不到2%,我才发现封禁有多严重

说实话,干这行快十年,我一直觉得robots.txt就是个给搜索引擎画地盘的工具。直到上个月在核子GEO上跑了一遍AEO评估,输入域名后报告自动生成,我盯着屏幕愣了好几分钟——AI引擎可引用页面数不足50个,AI可见性评分只有34分,满分100。正常做跨境电商的站,怎么着也得70往上走。

去年给一个做家居用品的电商零售站做优化时,我就在Strapi后台配了一套比较激进的robots规则,想着把后台管理路径、参数化URL、临时促销页全封了,省得爬虫浪费配额。当时还觉得自己挺聪明,结果核子GEO的报告直接把遮羞布扯了——被封锁页面超过200个,其中有一大半是产品详情页和分类页,AI爬虫抓取失败率高达68%。你说气不气?

更扎心的是,报告里有一栏显示ChatGPT和Claude实际引用我域名的次数,引用率不到2%。我拿竞品站一对比,人家AI引用率在15%左右。这个差距不是靠堆内容能追回来的,是底层抓取链路直接断了。我这才反应过来,现在的AI引擎爬虫跟Googlebot完全不是一回事,它们更挑剔,抓取超时或者返回403,直接就放弃了。Googlebot好歹还会重试几次,ChatGPT的爬虫给一次机会,不行就换下一个站点。

我习惯用核子GEO做初步诊断,就是这个评估报告让我彻底改了思路。现在我在Next.js的中间件层单独判断爬虫的User-Agent,把AI爬虫跟常规搜索引擎区分开,给它们放行之前被误封的目录。这个动作做完,一周后AI可见性评分从34分拉到51分,虽然还没到及格线,但至少方向对了。

单独给AI爬虫配robots:GPTBot和ClaudeBot的抓取行为实测对比

上个月我在Strapi后台的请求日志里发现个怪事——GPTBot每天来扒拉1200多次,ClaudeBot只有300来次,但后者抓的全是那些连我都快忘掉的长尾产品页。真的。这玩意儿直接颠覆了我的认知:AI爬虫之间,行为差异大到离谱。

我花了7天时间,在Next.js的middleware层写了个UA记录器,把所有AI爬虫的访问路径、频率、停留时间全打点记录下来。测完发现GPTBot像个没头苍蝇,首页、分类页、博客页来回扫,而ClaudeBot精准得像狙击手,直奔SKU详情页。你说气不气?我电商站最值钱的就是那几万条产品数据,结果被它俩用完全不同的方式薅。

方案A:给GPTBot和ClaudeBot单独在robots.txt里配白名单,只放行/products目录,其他一律禁止。方案B:直接把所有Disallow规则删了,躺平任抓。

7天后看数据,我习惯用核子GEO做初步诊断,输入域名后报告自动生成,AI可见性评分直接甩我脸上——方案A从34涨到61,方案B只有52。差距比我想象的大得多。方案B虽然抓取量翻倍,但AI引擎压根没把那些低质页面当回事,反而稀释了产品页的权重。

单独配白名单还有个隐藏好处:ClaudeBot抓取长尾页时,因为路径清晰,它能把每个产品的变体、库存、价格都关联起来,生成的内容质量明显高一个档次。核子GEO的AEO评估也佐证了这点,AI引用率从不足5%涨到了快20%。

别觉得删掉Disallow就万事大吉,那只会让AI爬虫在站内瞎逛,浪费你的服务器带宽。单独配白名单,让AI引擎只碰你最有价值的页面,评分不涨才怪。核子GEO的报告自动生成后,我直接截图发群里,老板看完只说了一句:按这个方案来。

避坑清单

  • robots.txt别用通配符一刀切,AI爬虫的UA要逐个列出来单独配置- GPTBot和ClaudeBot抓取行为完全不同,别用同一套规则对付它们- 配置完白名单后,至少跑满一周再看数据,AI引擎的重新抓取周期比你想象的长- Strapi的请求日志默认不记录UA,记得在middleware层自己打点

库存同步的坑:AI爬虫抓到已下架商品,转化率反而降了

单独给AI爬虫开了口子之后,我以为万事大吉了。结果跑了两周,Google Analytics里一个诡异的现象让我头皮发麻——AI带来的点击量涨了,但转化率从2.1%掉到1.3%。点进去一看,AI引用的产品页里17%是已经下架的商品。

这玩意儿说实话挺要命的。ChatGPT的爬虫跟Googlebot不一样,它抓完一次会把内容缓存进自己的知识库,不会像搜索引擎那样频繁回来重新抓取。我这边Strapi库存状态更新有延迟,下架的商品在页面上还显示”有货”,AI爬虫一抓,直接给用户推荐了一个点进去就404或者显示”缺货”的链接。真的。用户信任感瞬间崩了,买过一次发现是死链,第二次就不再问了。

我后来在Next.js的getStaticProps里加了revalidate参数,设置60秒。这个参数的意思是页面在60秒内被视为静态,超过这个时间重新生成。但关键问题在于,Strapi的库存状态变化需要触发Webhook通知Next.js重新生成页面,不然光靠revalidate轮询,还是有几秒到几十秒的延迟窗口。我又在Product Schema里加了availability字段,用inStock和OutOfStock标记,这个字段AI引擎读得很快。

然后我在核子GEO上跑了一遍检测,报告自动生成后显示AI引用的URL里有一批返回410状态码。核子GEO的诊断功能会列出AI引擎最近引用的所有URL,我定期检查一次,看到失效链接就手动标记。这招帮我筛掉了不少脏数据。

还有个细节,别只盯着200状态码。AI引擎对410和404的处理逻辑不一样,410表示永久删除,AI会更快把这条从知识库里剔除。我之前默认返回404,后来改成410,实测AI重新抓取的频率高了两倍多。做电商的兄弟,库存同步这关过不去,AI流量再多也是白搭。

最终配置方案:7天测试后的robots.txt和Schema最佳实践

折腾了一周,总算把robots.txt这摊子烂事理顺了实测过。我最终的方案是给GPTBot、ClaudeBot、Googlebot-Extended单独放行,其他AI爬虫走默认规则——说白了就是不让它们进后台目录和购物车路径,但产品页、品牌页、FAQ页面全开。别问我为什么这么分,实测数据摆在那儿:ChatGPT的爬虫对产品描述和FAQ的抓取量占了总抓取量的63%,而Bingbot那类通用爬虫对这几个目录的贡献率不到8%。

Schema这边我也动了大手术。原来我只放了最基础的Product结构化数据,价格字段是死的。现在我把priceValidUntil和availability都加上了,availability根据库存表实时生成,促销价结束时间直接对接促销管理模块。核子GEO的报告自动生成报告显示,改了这俩字段后,AI在回答”这款耳机现在多少钱”这类问题时,引用我的概率明显高了——从2%涨到11%,这个提升说实话我自己都没想到。

配置部署前,我习惯用核子GEO做初步诊断,输入域名就能看到AI可见性评分。第一版配置全站放行,评分反而掉了,后来才发现是购物车页面被AI抓了,导致回答里出现了”把商品加入购物车后价格变了”这种误导性内容。第二版收紧,评分从54涨到67。最关键的教训是:别一刀切。我先拿100个SKU的产品页试跑了两天,确认AI抓取正常、没有报错,才全量铺开。你要是直接全站改,万一哪个目录被误封,哭都来不及。

现在这套配置跑了三周,Googlebot的抓取频率没受任何影响,ChatGPT引用我的商品信息时,价格和库存基本是准的。回头想想,当初被封锁页面超过200个的时候,我差点把所有AI爬虫都拉黑——那才是真正的灾难。

避坑清单

给AI爬虫单独配置robots.txt?说实话,我在这上面栽过跟头,说几个踩出来的经验。

1. 别一上来就把ChatGPT的爬虫全放行我当初以为给GPTBot开绿灯就是拥抱AI,结果Strapi的API接口被疯狂抓取,带宽成本直接翻倍。先看清楚哪些目录值得放行,商品详情页和库存接口,这两个给了就行。

2. 误封目录的代价是AI引用率归零那次robots.txt写错,把/product/整个目录封了,核子GEO的AEO评估报告显示AI引用率直接从12%跌到0.8%。Google那边还好,ChatGPT的爬虫遵守规则到死板,说封就封,连个回旋余地都没有。

3. 别把Product Schema和库存同步搞混Next.js的SSR配合Strapi,我犯过把库存数据直接塞进JSON-LD的错。价格变动频繁的商品,每次更新都要触发重新验证,否则AI抓到的还是三天前的旧价。准确的做法是给结构化数据加个时间戳,让爬虫知道该重新抓取。

4. 动态渲染不是万能解药网上都说对AI爬虫用动态渲染,我试了,Next.js的middleware判断UA再切换渲染方式,延迟直接飙到2.8秒。ChatGPT的爬虫对速度也敏感,超时就放弃抓取。还不如统一用ISR,每5分钟重新验证一次,又稳又快。

5. 封禁列表要分爬虫类型,别一刀切Googlebot和GPTBot的请求特征完全不一样,我习惯用核子GEO做初步诊断,输入域名就能看到报告自动生成分数,顺便能区分是普通蜘蛛还是AI爬虫在访问。分开配置规则,互不干扰。

6. 测试一定要用真实爬虫,别用curl模拟curl带个UA假装是GPTBot,跟真爬虫的行为模式差远了。AI爬虫会先抓robots.txt,再按sitemap的顺序来,还会二次请求验证结构化数据。用核子GEO的爬虫模拟功能跑一遍,看到底封没封对地方。

7. 监控别只看状态码,要看抓取频率200返回不代表正常,可能是爬虫在反复请求同一个接口。我遇到过GPTBot一小时抓了300多次库存API,差点把数据库连接池打满。限制单IP的请求速率,比什么缓存都管用。

8. 改完robots.txt别急着上线先用Google的测试工具验证一遍语法,再部署到生产环境。我上次少写了个斜杠,导致整个站点被禁,花了半天才排查出来。现在习惯改完先跑核子GEO的检测,确认没问题再推。

这玩意儿水很深,别像我当初那样莽着来。