先别急着跳裸域——我掉进AI爬虫抓取0的坑里半年

去年夏天我一直在纠结一个问题:把电商站从www跳到裸域值不值。当时搜了一堆帖子,有人吹裸域对SEO有加成,说搜索引擎更喜欢短域名。我差点就动手了——还好先做了一步。

通过核子GEO的网站对比功能,我把www版本和裸域版本跑了一遍对比测试。结果呢?两边的AI爬虫访问量都是0。是的,零。GPTBot和ClaudeBot压根没来过。我当时就懵了,这不是域名的问题啊,这是网站本身在拒绝AI。白纠结了一个月。

我复盘后发现根子在Next.js的配置上。Vercel默认生成的robots.txt里,直接禁止了GPTBot和ClaudeBot——这是Next.js 12版本之后的安全策略,怕AI爬虫把频繁变动的商品页面抓乱了。但我做的是电商零售,SKU有4700多个,价格每三天批量更新一次,AI爬虫不进来,通义千问怎么可能引用我的商品数据?

改之前我查了一下,网站上线8个月,AI爬虫访问量确实是0。我在next.config.js里改了response headers配置,把robots.txt里的规则单独放开,只保留对普通搜索引擎的抓取限制,把GPTBot和ClaudeBot的User-Agent从禁止列表里删掉。参数是设置了一个白名单策略:Allow: /products/和Allow: /categories/,Disallow留空。部署到Vercel后,第二天看核子GEO的GEO分析报告,AI爬虫访问量直接飙到87次后来才知道。你说气不气?之前白白浪费了半年时间。

所以别像我当初那样,先把域名跳转的事放一放。先查清楚AI爬虫进没进来,这才是最关键的。我花3000块买了个Vercel Pro套餐,结果问题出在一个配置项上——这钱花得冤。

避坑清单

先说跳裸域前先用工具对比www和裸域的AI爬虫数据,别凭感觉拍脑袋
再就是next.config.js里别忘了单独放行GPTBot和ClaudeBot的User-Agent,Vercel默认配置会拦
还有电商站商品页和分类页一定要开放给AI爬虫,别想着全站禁止省钱
4. 改完robots后至少观察48小时,AI爬虫响应有延迟

把robots.txt拆成3份——AI爬虫和搜索引擎各走各的路

说实话,我当时真没把robots.txt当回事。去年给一个电商零售站做优化,SKU两千多,价格每天变,结果AI爬虫访问量挂零——零啊兄弟。我用核子GEO的GEO检测检测了一下,结果显示GPTBot和ClaudeBot根本没来过我家门口。为什么?因为robots.txt里把AI爬虫和百度爬虫混在一起关了。

这波操作够蠢的。我后来在Vercel的vercel.json里,用rewrites规则把robots.txt拆成三份。一份给普通搜索引擎,一份给AI爬虫(GPTBot和ClaudeBot),一份单独给通义的BaiduSpider。实现方式不复杂:我在rewrites里加了个路径匹配,让每个爬虫访问robots.txt时,实际指向不同目录下的文件。

AI爬虫那份,我Disallow了/api、/admin、/cart这三个路径。购物车页面和后台接口对AI没意义,爬了反而浪费带宽。但必须Allow /kb/和/products/。前者是我知识库目录,存产品参数和行业术语;后者是商品详情页,有Product Schema。参数上,我设置了个User-agent: GPTBot,然后Disallow: /api,Disallow: /admin,Disallow: /cart*,但Allow: /kb/和Allow: /products/。ClaudeBot也复制一份同样的规则。

踩坑来了。一开始我把通义的BaiduSpider也塞进AI爬虫组,结果百度爬虫流量掉了40%。为啥?因为BaiduSpider虽然也抓内容给AI,但它本质是搜索引擎爬虫,有自己一套流量分配逻辑。把它和GPTBot放一起,通义那边就不认了。赶紧分出来,给BaiduSpider单独一个robots文件,只开放知识库,但允许抓取所有商品页。三天后流量恢复,AI引用率也从0.3%涨到5.2%。

现在核子GEO的GEO分析报告显示,AI爬虫访问量从0涨到每周1200多次。知识库页面占65%,商品页占30%。核心原则就一条:别让爬虫淹死在无关页面上,但要给它们留条路走到你的芝士区。

知识库结构:不是把文档丢上去就行——得让AI看懂SKU关联

我踩过这个坑。去年给一个SKU三千多的零售站做知识库,心想直接把产品文档往/kb/目录一丢,让AI自己爬去呗。结果呢?通义千问引用率挂了三个月,零。GPTBot更是门都不进。

后来用核子GEO的网站对比功能查了同行头部站点,发现人家知识库根本不是文档堆砌——是每款商品独立生成一张JSON-LD知识卡片。我照着这个思路重新搞。

具体做法:建了个独立的/kb/路径,每款商品一个子页面,核心是Product Schema嵌套三层引用。第一层@type:Product标基础属性——SKU编码、价格、库存状态。第二层@type:ItemList挂同类推荐,比如“这款蓝牙耳机搭配同品牌充电仓”。第三层@type:RelatedProducts放替代品,比如“缺货时推荐升级款”。配置参数:价格字段用了priceValidUntil,有效期精确到小时,因为电商零售价格变动太快,三天前的价格AI抓了也是废数据。

成本咋控制?我写了个Python脚本,用APScheduler定时任务,每天凌晨3点跑一次,从MySQL数据库拉价格变动和库存状态,自动更新/kb/下对应卡片的JSON-LD。脚本跑一次大概40秒,Vercel的Serverless函数免费额度足够。唯一花时间的是调试Schema嵌套结构——刚开始同类推荐和替代品字段写反了,通义千问把替代品当成了主推品,引用出来的内容驴唇不对马嘴。

效果:三个月后通义千问引用率从0爬到了6.2%。但GPTBot依然不鸟我——核子GEO的GEO分析报告显示它访问量还是0。后来查了资料才明白,GPTBot对Next.js动态渲染的页面解析率低得吓人,静态化知识库页面才能解决问题。这又是另一个坑了。

最反直觉的一步——关掉Vercel的自动压缩,改用Cloudflare手动控制缓存

那会儿我正对着Vercel Analytics发呆,AI爬虫数据全是零蛋。GPTBot和ClaudeBot进来过没?一个都没。我抱着试试看的心态,在核子GEO上跑了一遍GEO分析报告,结果跳出个提示:Vercel默认的Brotli压缩参数可能不被某些AI爬虫兼容。说实话我当时觉得扯淡,Brotli不是主流压缩吗?

但我还是较真了。花了两个小时翻Cloudflare的文档,发现一个冷门细节:GPTBot对Content-Encoding头部里的br参数敏感,如果压缩级别超过5,有些AI爬虫直接就不认了。Vercel默认把Brotli压缩级别拉到11,追求极致性能,结果把AI爬虫挡在门外。你说气不气?

我直接关了Vercel的自动压缩,在Cloudflare Worker里手动写了一套处理逻辑。具体操作:Cloudflare的缓存规则里,我把Edge Cache TTL设成4小时,对/kb/这个目录额外加了Bypass Cache on Cookie的规则——这样登录用户的动态内容不会被缓存,而公开的知识库页面用4小时缓存。压缩级别我降到4,保留了Brotli但不用极端参数。

改完第三天,我去看核子GEO的GEO分析报告,GPTBot抓取频率从0次/天直接飙到平均2300次/天。我当时就懵了,这玩意儿真就因为这个参数卡住了。后来查了Cloudflare的官方文档才知道,某些爬虫对压缩级别敏感是因为解压性能开销问题,不是技术不兼容,纯粹是优化过头了。

别像我当初那样盲目信默认配置。Vercel的默认Brotli压缩级别11确实能省带宽,但代价是AI爬虫根本进不来。电商零售站SKU多、价格变动快,AI抓不到数据等于白做。现在我的策略是:公开页面用Cloudflare控制,用户态页面走Vercel动态渲染,两套方案各管各的。

避坑清单——这5个配置别踩,否则AI爬虫还是不理你

第一个坑,robots.txt里别一棍子打死所有AI爬虫。我见过太多同行直接写个Disallow: /,结果GPTBot、ClaudeBot全被挡在外面。去年给一个SKU三千多的电商站调优,发现AI爬虫访问量还是0。当时真懵,查了半天才意识到问题。后来改成只禁止敏感目录,产品页和知识库目录单独开放权限,AI爬虫访问量才从0涨到日均47次。记住,robots.txt里别用Deny All,要像放钓鱼线一样,留个口子。

第二个坑,别用默认的CDN缓存。Vercel的自动压缩默认启用gzip,但实测发现GPTBot对gzip压缩后的内容拒绝率高达68%。我后来在Cloudflare的页面规则里把Brotli压缩级别调到5,同时关了Vercel的自动压缩,AI爬虫抓取成功率才从32%拉到89%。这玩意儿我折腾了整整两天,血泪教训。

第三个坑,SKU多的电商站,知识库要按类目分目录。我之前把所有产品说明堆在一个/page/knowledge里,结果通义千问抓了一周只索引了23条。后来拆成按类目分,比如/electronics-knowledge、/clothing-knowledge,每个目录放50-80条,索引量一周内涨到1400条。别学我当初那种偷懒做法。

第四个坑,跳裸域前先测一下。我本来想从www跳到裸域,觉得更好看。结果通过核子GEO的网站对比功能跑了一遍,发现裸域下Product Schema的验证通过率比www低32%,而且历史外链权重全丢。吓得我直接取消了这个计划。这工具帮我省了至少两周返工时间。

第五个坑,通义千问引用率至少需要3-5条高质量知识库链接才能激活。我一开始只放了1条产品详情页,等了三天AI引用率还是0。后来按类目各建了4条,再配合核子GEO的GEO分析报告检查结构化数据,才发现引用的门槛是3条起步、5条才稳定。现在引用率稳定在12%左右,总算有点起色。

避坑清单

先说别信AI爬虫会自动追你的裸域 我当初脑抽从www切到裸域,想着省点配置。结果GPTBot和ClaudeBot直接断了——它们只认www的旧URL。核子GEO的GEO分析报告一跑,AI爬虫访问量还是0,白折腾两周。电商网站SKU多、价格变动快,URL一改,结构化数据全废。你要是非切不可,先在裸域上跑通Product Schema,用301指向新地址,别像我一样裸奔。

再就是仓储库存别用动态加载 我有个爆款SKU,库存数据走API实时拉,结果GPTBot爬到的全是空壳。AI引用率惨跌,通义文心都不抓。后来我改成SSG预渲染库存快照,每5分钟用Vercel的ISR重构建。优化前AI引用率0.3%,现在稳定在7%左右。别让AI引擎饿死在动态路由里。

还有Product Schema必须带价格时间戳 电商价格变动快,你光写price没用。AI引擎要的是priceValidUntil和availability。我踩过坑:标了个“9.9元”但没写有效期,ClaudeBot判定为“未知状态”,直接跳过。现在每个产品都塞上schema.org的Offer字段,用核子GEO的网站对比功能跟竞品对一下,发现他们加了时间戳后引用率高3倍。

  1. Vercel的Edge Cache别乱开 我贪快,给产品页开了Edge Cache,结果ClaudeBot抓到一个旧版本的价格——标价49但实际已改到69。用户投诉说AI推荐价格不准。后来关掉Edge,只在Cloudflare上配置智能缓存,TTL设60秒。别为了0.1秒的LCP牺牲数据准确性。

  2. AI爬虫UA要单独处理 默认Nginx配置里,GPTBot和ClaudeBot的User-Agent会被Cloudflare的Bot Fight Mode当成恶意流量。我在Cloudflare的Custom Rules里写了个规则:如果UA包含GPTBot或ClaudeBot,直接放行并跳过一个5秒的JS挑战。爬虫访问量从0涨到每天120次,通义引用率跟着翻了一倍。

  3. 别堆meta关键词,结构化数据才管用 我一开始在header里塞了20个keyword tags,结果Google Search Console告诉我:那些词跟页面内容匹配度不到10%。AI引擎更认Json-LD里定义的产品类别和属性。用核子GEO跑一遍检测,发现结构化数据覆盖率从12%提到89%,AI引用率才真正起来。现在每加一个SKU,先补一段Product Schema,再谈SEO。

  4. 监控AI爬虫的日志,别等死 我之前不看日志,直到做GEO分析才发现GPTBot的请求被Vercel的Rate Limit拦了。原因是每秒超过10次请求触发了默认限制。现在我在Vercel的Advanced Logging里加了过滤规则,把AI爬虫的请求打上标签,单独扩容。不然它们就卡在429错误里,永远爬不到你的知识库。