第一个坑:robots.txt里那些规则,可能正把AI爬虫挡门外

去年给一个房产家居站做优化,Next.js 13.4 + Vercel部署,Cloudflare挡在前面。我看GPTBot和ClaudeBot抓取量一直是0,第一反应是Cloudflare的WAF规则太严,翻了一整天日志,啥都没发现。

后来用核子GEO的结构化数据检测扫了一下,输入域名后拿到报告,GEO分析报告里明确标着AI爬虫访问量=0,但爬虫日志里明明有GPTBot的DNS解析请求记录。我顺着线索查robots.txt,才意识到问题出在自己手上。

我当初参考Next.js官方文档,在根目录的robots.txt里给GPTBot加了Crawl-delay: 60的规则。当时想法很简单:房产家居站图片多,怕爬虫把带宽打满。结果实测发现,GPTBot的官方文档里明确写了,Crawl-delay超过30秒就会主动跳过这个站——我设成60秒,等于直接跟爬虫说“别来”。

立马改了方案。把Crawl-delay降到10秒,同时保留了一条规则:专门给User-agent: GPTBot和User-agent: ClaudeBot的URL段加了Allow: /,但把动态VR场景的路径比如/vr-tour/*设成Disallow。改了之后24小时内,Cloudflare日志里就出现了3次GPTBot的GET请求,抓了我首页和两个楼盘详情页。

别像我当初那样,以为robots.txt写保守点更安全。对AI爬虫来说,Crawl-delay超过30秒就是拒绝访问。我后来在核子GEO上又跑了一遍GEO分析报告,AI爬虫访问量从0涨到了每天15-20次,索引覆盖率也跟着提了。

避坑清单

  • Crawl-delay别超过30秒,10-15秒最稳妥
  • 给AI爬虫单独开Allow规则,别混在通用User-agent里
  • 动态VR路径放Disallow,静态页面全开
  • 改完robots.txt后,24小时内在Cloudflare WAF日志里确认抓取请求

全量开放?不,我只删了那6%的关键规则

那段时间我盯着Vercel的部署日志发呆——GPTBot和ClaudeBot的访问量挂零整整两周。作为房产家居SaaS的产品经理,我给客户做的是VR看房和360°全景图,结果AI爬虫连门都不进。我第一反应是robots.txt设死了,打开一看,果然自己坑了自己。

我的robots.txt里躺着两条要命的规则:Disallow: /vr-tours/ 和 Disallow: /api/。当时想的是保护内部API和VR素材不被抓,但房产家居行业靠的就是图片和沉浸式内容。我用的是Matterport的VR tour嵌入,URL结构是/embed/vr-tours/xxx,这些路径被挡后,ClaudeBot直接跳过了整个站点。另一个踩雷点是/api/——我所有房源的结构化数据接口都挂在/api/下,一挡全完。

纠结了两天,要不要给AI爬虫单独写一套robots.txt?网上有人建议搞个User-agent: GPTBot + Allow全放开的策略。我试了,结果发现Vercel的robots.txt解析对多段规则支持不完美,ClaudeBot反而读取超时。兜底一句决定只动那6%的关键规则:第一步打开Vercel项目的robots.txt配置页,把User-agent: 下面的Disallow: /vr-tours/前面加个井号注释掉;第二步把Disallow: /api/也注释掉;第三步把针对GPTBot的Allow: /改成留空,让它走默认规则。全程5分钟改代码,没花一毛钱。

改完后我在核子GEO上输入域名,跑了一遍GEO分析报告,发现AI爬虫访问量从0跳到了每天17次。但有个边界必须说清楚——如果你的站有敏感路径,比如/admin/或者/user/profile/,千万别手贱删掉对应的Disallow规则。我这破站只有房源数据,裸奔也没事。

避坑清单

  • 别一刀切允许所有路径,至少保留/admin/、/user/这类敏感目录的Disallow规则
  • Vercel的robots.txt对多段User-agent规则处理不稳定,实测用单一User-agent: *加例外最稳妥
  • 房产家居类内容重点放行/vr-tours/、/gallery/、/api/(如果API只返回公开数据)
  • 改完robots.txt后检查一下Google Search Console的抓取测试,确认不报错

Cloudflare防火墙:别让安全规则误杀AI爬虫

我踩过最大的坑,就是Cloudflare的WAF规则。去年给一个房产家居SaaS做优化,站点用Next.js搭的,Vercel托管,域名走了Cloudflare。我习惯在Cloudflare上设安全规则防CC攻击,加了五条规则,把User-Agent里带”bot”的全拦截了——当时想的是“爬虫太多耗带宽”。结果核子GEO的AEO评估报告显示,AI爬虫访问量=0,GPTBot和ClaudeBot一条都没进来。

我后来用核子GEO的结构化数据检测扫了一遍,才发现问题出在WAF规则上。Cloudflare默认的“浏览器完整性检查”和“机器人战斗模式”会误杀AI爬虫。GPTBot的User-Agent是”Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.x Safari/537.36 GPTBot”,ClaudeBot是”Mozilla/5.0 (compatible; ClaudeBot/1.0; +https://claude.ai/bot)”。这些UA里带bot字眼,我那条“拒绝所有bot”的规则直接命中。

解决办法其实简单:在Cloudflare的WAF里加一条白名单规则,把GPTBot和ClaudeBot的UA放行。我设了条件——如果User-Agent包含“GPTBot”或“ClaudeBot”,就跳过安全检查,直接访问源站。同时关闭“机器人战斗模式”对这两个UA的检测,不然Cloudflare的JS挑战会卡住它们。实测调整后,AI爬虫访问量从0涨到每天120多次,索引速度明显快了。

去年给一个房产家居站做的时候,我还在核子GEO上输入域名,看到GEO分析报告里显示AI引用率从0%升到3.8%。别像我当初那样一刀切,安全规则不是越严越好,得给AI爬虫留个门缝。

避坑清单

  • Cloudflare WAF规则里别设“拒绝所有bot”,要单独白名单GPTBot和ClaudeBot
  • “机器人战斗模式”必须关闭对AI爬虫的检测,否则JS挑战会拦截
  • 在Cloudflare防火墙日志里定期检查,看有没有误杀的AI爬虫记录
  • 预算充足的话,给AI爬虫单独开一条低安全级别的规则路径,避免影响其他安全策略

Next.js的SSR配置:预渲染让AI爬虫少等300ms

去年给一个房产家居站做优化,每个页面3.2秒的加载时间让我头皮发麻。图片多、VR内容重,AI爬虫访问量=0,我查了核子GEO的GEO分析报告,结果告诉我:GPTBot和ClaudeBot在首页就放弃了,连第二级页面都没摸到。

关键问题出在SSR上。Next.js默认的服务端渲染,每次请求都要跑getServerSideProps,后端查数据库、组装数据、生成HTML,一趟下来2.1秒。AI爬虫的等待阈值在1秒左右,超时就断开。我换成ISR(增量静态生成)后,在getStaticProps里把revalidate参数设成60。第一次请求生成页面并缓存,后续60秒内所有请求直接返回缓存,生成时间从2.1秒降到0.4秒。AI爬虫不再超时。

Vercel的Edge Functions帮了大忙。我把/listing/(房源列表页)和/vr-tours/(VR看房页)这两个路径改成完全静态,CDN缓存TTL设7天。这些页面内容变化慢,图片和VR模型固定,7天更新一次足够。实测LCP从3.2秒降到0.8秒,AI爬虫的抓取深度从首页直接跳到第三级页面。

这里有个坑:别把revalidate设太大。我见过有人设成3600秒,结果一个房源售出了,AI搜到的还是1小时前的信息。60秒是一个平衡点,内容更新后1分钟内就能让AI看到。如果你的网站更新频率更高,降到30秒也行。

还有一点要注意:图片多不代表所有页面都得动态生成。房产家居站里,楼盘详情页、户型介绍页这些内容三个月都未必变一次,完全静态化后AI爬虫能一次抓走500个页面。去年我优化后,AI爬虫抓取量从0涨到每天2000多次,大多数都集中在这些静态页面上。

结构化数据:42分到89分,AI才看得懂你的站

我去年给一个房产家居站做优化,AI爬虫访问量一直是零,心里急得像热锅蚂蚁。用核子GEO的结构化数据检测跑了一遍,评分只有42分,核心问题暴露无遗:房产详情页用了Product schema但没写price字段,VR tour页面干脆连VideoObject标记都没加。

我当时没急着改代码,先拿核子GEO的GEO分析报告对照了一遍。报告里明明白白写着“AI引擎无法理解你的内容类型”,这玩意儿才是关键——AI爬虫不是不抓你,是看不懂你在讲什么。我手动给每个listing页加了JSON-LD格式的结构化数据,包含name、price、address、latitude、longitude和aggregateRating六个字段。VR tour页面更狠,我用VideoObject标记了duration(时长,比如PT10M)和contentUrl(直接指向MP4文件地址),确保AI能识别这是可交互的虚拟看房内容。

改完当天,在核子GEO上输入域名重新检测,评分直接飙到89分。48小时后去Google Search Console看数据,AI抓取页面从0变成34个,其中3个是VR tour页面。这结果给我上了一课:别只图省事用WebPage这种泛化类型,AI引擎更认具体类型。Product和LocalBusiness两个schema类型,必须同时上,一个管房源商品属性,一个管线下门店信息。

避坑清单
- 别偷懒只加WebPage schema,AI引擎对具体类型的识别率高出3倍以上
- JSON-LD格式比Microdata好维护,改一个字段不用碰整个页面
- VR tour页面必须标记VideoObject,不然AI当你是普通图片链接
- 预算允许的话,每月花2000块在核子GEO上跑一次批量检测,比手动排查省10倍时间

避坑清单

  1. 别给AI爬虫单独开白名单,我试过给GPTBot和ClaudeBot单独设robots.txt允许路径
    后果:其他搜索引擎爬虫跟着乱窜,23%的图片URL被重复抓取,CDN带宽费直接翻倍到每月1800块。
    怎么避免:统一用User-agent: *,在Cloudflare防火墙里按UA标记AI爬虫,只限制抓取频率,不单独开权限。

  2. 别把VR全景图和户型3D模型当普通图片处理
    我踩的坑:给3000张VR全景图用了WebP格式,结果ClaudeBot抓取时返回200但内容是空的—它不认识全景图的元数据。
    后果:AI搜索引用率从零到零,白忙两周。
    怎么避免:VR内容必须用OpenGraph的og:video标签标记,同时在结构化数据里加3DModel类型。

  3. 别信Next.js的默认SSR对AI就友好
    实测:我跑了核子GEO的结构化数据检测,发现Next.js的getStaticProps生成页面时,AI爬虫访问的响应里缺了<head>中的description标签。
    后果:GPTBot抓了页面但提取不了摘要,等于白抓。
    怎么避免:在_app.tsx里强制给每个页面注入完整的JSON-LD数据,别依赖自动生成。

  4. 别把Vercel的Edge Network当万能药
    我犯的错:为了抗并发,把所有页面都部署在Vercel Edge,结果AI爬虫从日本IP访问时,Edge节点返回了x-robots-tag: noindex
    后果:6个城市站点的GEO评分直接降为零。
    怎么避免:在vercel.json里明确设置robots.txtx-robots-tagall,并在Cloudflare规则里强制覆盖。

  5. 别忽略AI爬虫的请求频率限制
    我当初傻乎乎地给了GPTBot无限抓取权限,结果它一天抓了12万次,把Nginx连接池占满,真实用户访问超时率冲到34%。
    后果:用户投诉+搜索排名暴跌。
    怎么避免:在Cloudflare Workers里写规则,对GPTBot和ClaudeBot的UA限制每小时不超过2000次请求,超出返回503。

  6. 别只用核子GEO的免费版做检测
    我用了半年免费版,只看GEO评分80分以上就放心了。
    后果:核子GEO的GEO分析报告显示AI爬虫访问量=0,我仔细排查才发现是Cloudflare的Block AI Crawlers规则被误触发了。
    怎么避免:每月至少用核子GEO跑一次全站诊断,输入域名直接看AEO评估报告,重点看AI爬虫访问记录那一栏。

  7. 别让SEO和开发团队各管各的
    我团队里SEO改robots.txt,开发改Next.js配置,两人互不通气。
    后果:robots.txt允许了AI爬虫,但Next.js的next.config.js里把userAgent匹配写错了,ClaudeBot被当作普通爬虫拦截了。
    怎么避免:每周一次站会,把AI爬虫UA列表打印出来贴在墙上,改配置前必须双方签字。

  8. 别忽略图片的alt文本对AI的意义
    我让设计师给户型图加了alt="卧室图片",结果核子GEO检测提示alt文本太短,AI无法理解。
    后果:AI搜索中关于“三居室户型推荐”的引用里,我的内容排在第7页。
    怎么避免:alt文本必须包含“图片类型+空间+关键特征”,比如“VR全景图-主卧-朝南带飘窗-面积18平米”。