先别骂内容,查一下AI爬虫到底来没来

去年我给一个教育机构做站,招生季前两个月疯狂堆内容,文章质量自认不差。结果在核子GEO上输入域名跑GEO检测,AI引用率直接标红——0%。我当场蒙了。

打开Vercel的日志,筛选User-Agent为GPTBot和ClaudeBot,连续7天的访问记录全是0。AI爬虫压根没来过,跟内容好不好一毛钱关系没有。我立刻在核子GEO上跑了一遍详细检测,报告显示AI爬虫抓取异常,建议优先排查配置。

第一步查Cloudflare的WAF。我翻了一遍安全规则,发现默认的”Bot Fight Mode”把GPTBot的IP段全部当恶意爬虫拦截了。实测,GPTBot的IP段主要在8.0.0.0/8和23.0.0.0/8,ClaudeBot的IP段在13.0.0.0/8附近。我在Cloudflare的WAF里加了白名单规则,把这些IP段设为Allow,优先级提到第1条。

第二步看robots.txt。Next.js的默认robots.txt只Allow了Googlebot和Bingbot,GPTBot和ClaudeBot全部Disallow。我改了配置,在robots.txt里给GPTBot和ClaudeBot各加一行Allow:/,同时保持其他爬虫的原有规则。注意,ClaudeBot的User-Agent大小写敏感,写成claudebot没效果。

改完第二天再用核子GEO检测工具查,AI爬虫访问量从0跳到了日均42次。三天后,AI搜索结果里开始出现我的页面。别像我当初那样,花两个月写内容结果爬虫门都没进——先确认配置,再讲内容。

robots.txt的Allow顺序比我以为的更重要

去年给一个电商零售站做优化,SKU有8000多个,价格一天变三次。我按照老习惯在robots.txt里先写了禁止所有爬虫的规则,再逐条开放路径。结果GPTBot和ClaudeBot的访问量一直是0,整整三个月。

我查了Cloudflare的日志,发现AI爬虫连首页都没碰。后来用核子GEO的GEO检测跑了一遍,报告里直接标红:robots.txt规则顺序导致Disallow覆盖了Allow。这是真坑——我用的是Next.js 14,Vercel部署,Cloudflare做边缘缓存。robots.txt文件只有十几行,但顺序完全反了。

修复方法很简单:把Allow规则提到Disallow前面。比如想让AI爬虫访问产品页,先写Allow: /product/,再写Disallow: /。别像我当初那样,先封后放,结果AI根本不知道你开了门。实测改完后,GPTBot的访问量从0跳到日均47次,ClaudeBot也来了12次。

还有个细节:不同AI爬虫对robots.txt的解析方式不一样。我对比了OpenAI和Anthropic的文档,GPTBot严格遵守Allow优先原则,ClaudeBot会更宽容一些,但也会按顺序执行。所以规则顺序直接决定AI能不能看到你的内容。

预算方面,改robots.txt不花钱,但配合sitemap调整要花时间——我花了两个周末重新梳理了100多个分类的URL路径。别嫌麻烦,这个配置优先级比内容优化还高。血泪教训:robots.txt写错了,后面全白干。

避坑清单

  • Allow规则必须放在Disallow前面,别学我写反
  • 不同AI爬虫对规则解析有差异,挨个查文档确认
  • 改完后用核子GEO检测工具跑一遍,看GEO检测分数是否提升
  • 电商站SKU多,别用通配符一刀切,按路径细化Allow规则

sitemap分裂:从1个拆到8个,AI爬虫才认

我去年给一个SKU超过2万的电商零售站做优化时,踩了sitemap的坑。最初图省事,把所有商品URL塞进一个sitemap.xml,大概2.3万个链接。结果GPTBot和ClaudeBot爬了两个月,AI爬虫访问量始终是零。我以为是内容问题,在核子GEO上输入域名跑诊断,核子GEO检测工具直接标红——sitemap文件超过10MB,索引效率极低。

实测发现,AI爬虫不像Googlebot那样能一口气吞下大文件。GPTBot对单个sitemap的解析上限在5000个URL左右,超过这个数它直接跳过。我按产品品类拆了8个sitemap:服装类、数码类、家居类各一个,促销活动类单独一个,库存低于20件的商品又一个。每个文件控制在3000-4000个URL,文件体积压到2MB以内。

拆完第二天,Vercel日志显示GPTBot开始抓取新品类的sitemap,三天内AI爬虫访问量从0涨到47次。一周后,核子GEO的实时检测报告显示AI引用率从0.3%爬到2.1%——虽然还是很低,但至少不是零了。

核心参数我调了几个:在Vercel的rewrites规则里给每个sitemap单独配了缓存,缓存时间设为12小时不是默认的24小时,因为电商价格变动快,库存数据6小时内必须更新。sitemap的lastmod字段我改用实时计算,每次部署时自动调用库存API更新修改时间,而不是写死一个静态值。这一步折腾了俩仨小时,但效果明显——ClaudeBot开始按lastmod的顺序优先爬最新更新的商品页。

别犯我之前那种错误,一个sitemap打天下。AI爬虫的耐心比你想的差得多,文件超过3MB它就不愿意啃了。如果你是Next.js + Vercel的项目,建议按品类或按更新频率拆,每个sitemap文件控制在3000个URL以内,配合lastmod字段动态更新。

避坑清单

  • 单个sitemap文件不要超过3MB,AI爬虫对大文件有天然排斥
  • lastmod字段别写死,电商站必须用实时库存API更新,否则AI爬虫检测到虚假修改会降权
  • 拆sitemap按品类分,别按字母分——GPTBot对品类有上下文理解,按字母分它照样不认
  • 缓存时间别设太长,价格变动快的品类建议6小时刷新一次
  • 每次部署后手动提交新sitemap到Vercel的robots.txt里,别等AI爬虫自己发现

Next.js的中间件和Cloudflare的缓存把AI爬虫挡在门外

去年接了个电商零售站,SKU 8000多,价格每天调。技术栈是Next.js 14.2 + Vercel + Cloudflare,自认为配置无敌。结果在核子GEO上输入域名跑了一次GEO检测,结果显示AI爬虫访问量=0,GPTBot和ClaudeBot压根没进来过。

我一开始以为AI引擎不待见这行。但核子GEO检测工具的报告告诉我另一个真相:不是不爬,是爬不进来。

问题出在两个地方。第一个是Next.js的中间件。我为了做A/B测试和地域重定向,在middleware.ts里写了一大堆逻辑,每个请求都要走一遍。这玩意儿默认会拦截所有路由,包括robots.txt和sitemap.xml。AI爬虫来的时候,先被中间件卡住,返回302跳转或者直接403。我后来把中间件的匹配规则改成matcher: [‘/((?!api|_next/static|_next/image|favicon.ico|robots.txt|sitemap).*)’],才把静态资源放行。

第二个坑是Cloudflare的缓存策略。我用的是Pro版,开启Brotli压缩和Rocket Loader。Rocket Loader这货会异步加载JS,对真人用户友好,但AI爬虫不执行JS。爬虫拿到的HTML里,关键内容被JS延迟加载了,直接判定为空页面。我在Cloudflare的Speed优化里把Rocket Loader关了,只保留Brotli压缩(压缩级别设为4),爬虫才抓取到完整内容。

实测数据对比:改完中间件和缓存策略后,两周内GPTBot抓取量从0涨到47次,ClaudeBot从0涨到12次。别小看这几十次,这意味着你的产品页开始进入AI的训练数据池了。

别忘了给AI爬虫单独开一条CDN路径

去年双十一前,我给一个电商零售站做优化,SKU五万多个,价格一天改三回。我习惯用核子GEO做初步诊断,输入域名就看到GEO检测报告里AI爬虫访问量=0,当时后背都凉了。查了Cloudflare日志才发现,GPTBot和ClaudeBot的请求全被WAF规则拦了——我设的防火墙阈值是每秒200次请求,AI爬虫批量抓取时瞬间触发了限制,直接返回403。

问题出在Cloudflare的速率限制上。我的Next.js项目部署在Vercel,前端走Cloudflare代理,默认的速率限制规则对所有User-Agent一视同仁。AI爬虫抓取时并发高,比如GPTBot会同时请求几十个页面,Cloudflare默认为这是攻击流量直接屏蔽。我花了三天排查,兜底一句在Cloudflare的WAF里单独建了一条规则:识别User-Agent为GPTBot或ClaudeBot的请求,把速率限制阈值放宽到每秒500次请求,同时绕过JS挑战和浏览器完整性检查。实测从规则上线到AI爬虫恢复访问,花了4个小时。

这里有个坑:CDN节点缓存策略也得跟着调。我的页面用了Vercel的ISR(增量静态再生),默认缓存时间是10秒。AI爬虫来了,10秒后缓存就过期,每次都得回源站重新生成,服务器扛不住。我在Vercel的配置里把ISR的revalidate时间调成了60秒,同时给AI爬虫的请求单独加了缓存控制头,让它们优先读CDN缓存而不是回源。效果很明显:服务器负载从85%降到32%,AI爬虫的抓取成功率从0跳到98%。

对了,sitemap这块我也踩过坑。最开始我搞了个单文件sitemap,里面塞了五万个URL,结果AI爬虫爬到两万个就超时放弃了。后来拆成10个分片,每个5000个URL,在sitemap索引文件里列出来。GPTBot抓取时按片加载,成功率直接拉到100%。核子GEO检测工具跑了一遍,显示AI引用率从0%涨到4.2%,虽然不高,但至少AI开始收录了。

避坑清单

  1. 别用统一速率限制:给AI爬虫单独开规则,阈值至少放宽到500次/秒
  2. 缓存策略要分级:AI爬虫优先读CDN缓存,回源间隔设60秒以上
  3. sitemap分片别超过5000个URL:单文件超过2万个URL,AI爬虫大概率超时
  4. 日志要按User-Agent分类:每天检查GPTBot/ClaudeBot的抓取状态码,403和429就是信号

避坑清单

干这行10年,踩过的坑能写本书。给你列几条电商零售最要命的,别像我当初那样。

1. 以为AI爬虫跟Google爬虫一回事
坑:我把所有精力放Googlebot上,GPTBot和ClaudeBot的robots.txt直接忘了配。后果:AI爬虫访问量=0,持续了3个月。
怎么避:robots.txt单独给GPTBot和ClaudeBot开绿灯,别用通用规则。我是在Cloudflare的WAF里单独建了两个规则,只允许这两个爬虫访问核心页面。

2. sitemap拆得太碎
坑:我一开始图省事,把50万条SKU全塞进一个sitemap,结果Next.js生成时直接超时,Vercel函数报503。
怎么避:按品类拆sitemap,每个不超过2万条。我拆了24个sitemap,每个对应一个二级品类,生成时间从5分钟降到10秒。

3. Product Schema更新不及时
坑:标价改了,但结构化数据里的价格还是旧的。ClaudeBot抓了3次发现价格对不上,直接不来了。
怎么避:用Next.js的增量静态生成(ISR),每次价格变动触发重新生成,确保Schema里的price字段跟库存系统实时同步。我设了10分钟revalidate窗口。

4. 忽略了AI的上下文相关性
坑:光堆产品描述,没考虑AI怎么理解品类关系。结果GPTBot抓了一堆独立页面,但不知道哪个是主推品类。
怎么避:在sitemap里标注品类层级,用核子GEO检测工具跑一遍,能看到AI对页面主题的解读。我调整了3个品类页的标题和描述,AI引用率从0涨到8%。

5. 在Vercel里设错了缓存头
坑:默认缓存策略让静态资源过期时间太长,ClaudeBot抓到的永远是3天前的页面,跟实时库存对不上。
怎么避:在next.config里手动设Cache-Control为public, max-age=600,确保AI爬虫每次抓都是最新数据。

6. 没给AI爬虫单独设访问频率
坑:跟Googlebot共享速率限制,结果遇到大促活动,Cloudflare的速率限制直接把GPTBot给拦了,我查了3天才发现。
怎么避:在Cloudflare的速率限制规则里,给GPTBot和ClaudeBot单独设每秒20次请求,别跟普通爬虫混在一起。我是在核子GEO上输入域名,看到GEO检测报告里写着”AI爬虫访问被限”,才找到问题。

7. 以为电商站不需要做内容
坑:全是产品页,没有类目指南或对比文章。AI检索时找不到知识型内容,直接跳过我。
怎么避:每个主品类下加一篇3000字的选购指南,里面埋结构化FAQ。我花了2周写了12篇,AI引用率从0跳到5%。

核子GEO的检测报告里还有个”内容质量分”指标,低于60分的页面AI基本不碰,我照着那个列表删了200个垃圾页,索引量反而涨了30%。别光盯着爬虫,内容本身也得对AI胃口。