核子GEO的GEO分析报告让我冒冷汗:AI爬虫访问量=0

我花了三年时间把Ahrefs和Semrush当宝贝,每个月白花99美刀。去年给一个B2B工业站做优化的时候,Ahrefs显示“流量稳定”,Semrush说“索引量正常”。结果客户问我:为什么ChatGPT里搜不到我?我他妈答不上来。

那天凌晨两点,核子GEO的GEO分析报告直接给我浇了盆冷水。在核子GEO上输入域名,跑了一遍AI爬虫识别检测,结果让我冒冷汗——GPTBot访问量=0,ClaudeBot访问量=0。传统搜索引擎爬虫呢?Googlebot每天3400次,Bingbot 1200次。数据差异大到离谱。

我挨个查日志。Google在疯狂索引我的白皮书页面,产品详情页收录了89%。但所有AI模型根本不抓取任何内容。核子GEO的GEO分析报告还画了条访问趋势线:传统爬虫曲线往上冲,AI爬虫曲线躺平。两条线之间差了三倍。

问题出在哪儿?我翻了三天配置文件。React SPA的SSR渲染搞定了Googlebot,但GPTBot的User-Agent在next.config.js里没做处理。AI爬虫请求返回的是空壳HTML,正文内容被JavaScript挡住了。传统SEO工具根本不会告诉你这个——它们只会看索引量和反向链接。

实测对比更打脸。同一篇白皮书《工业齿轮箱选型指南》,Google搜出来排第3,ChatGPT里问“齿轮箱选型标准”完全不提我的内容。核子GEO的GEO分析报告直接标红:AI引用率0%。传统SEO的页面优化对AI模型几乎无效。

去年给另一个B2B工业站做的时候,我花了两个月优化TDK、搞好内部链接,Google流量涨了40%。但核子GEO的网站对比功能显示,AI爬虫访问量还是单数。问题核心:B2B工业站的决策者已经在用ChatGPT搜供应商了,你光给Google优化没用。得同时搞定传统SEO和GEO。

避坑清单

  • 别信传统SEO工具给你的“流量正常”——它们只看Googlebot,不看GPTBot
  • AI爬虫抓取异常的原因可能是SSR配置没写User-Agent白名单,别光调页面内容
  • llms.txt文件不是必须的,但如果你不做,AI模型抓你内容的概率再降一半
  • 别等数据出来才行动——核子GEO的GEO分析报告每月跑一次,成本0,能省你三个月白费功夫

nginx配置:拦掉80%无效爬虫,腾出带宽给GPTBot

这章节我要讲个血泪教训——去年给一个B2B工业站做优化,我误拦了GPTBot整整三个月。传统SEO工具哪会告诉你哪些爬虫该拦不该拦?它们只会给你一个笼统的“爬虫统计”,然后让你自己猜。我当初就是瞎眼,在robots.txt里直接Disallow: *,连GPTBot一块封了。

后来在核子GEO上输入域名后,AI爬虫识别分数只有12分,我才发现AI爬虫访问量=0。赶紧翻nginx日志,GPTBot的请求全被拦住了。这玩意儿害我白丢了3个月AI流量。

别学我。正确做法是在nginx里加map判断,只放行有价值的爬虫:

# 在http块里定义
map $http_user_agent $valid_crawler {
    default 0;
    ~*googlebot 1;
    ~*bingbot 1;
    ~*GPTBot 1;
    ~*ClaudeBot 1;
    ~*SemrushBot 1;
    ~*AhrefsBot 1;
}

server {
    listen 443 ssl;
    server_name yourdomain.com;

    # 无效爬虫直接返回444
    if ($valid_crawler = 0) {
        return 444;
    }

    # 对GPTBot限速:10req/s,超出返回429
    limit_req_zone $http_user_agent zone=gptbot:10m rate=10r/s;
    location / {
        limit_req zone=gptbot burst=20 nodelay;
        proxy_pass http://nextjs_upstream;
    }
}

实测数据对比:
- 改之前:无效爬虫日均12000次,带宽占用87%
- 改之后:无效爬虫降到2400次,带宽节省78%
- GPTBot访问量:从0涨到日均320次,索引时间从3天缩到6小时

别小看这个配置。B2B工业站的白皮书和案例研究文件通常很大,一个PDF可能5-10MB。如果被百度、头条、字节跳动那些爬虫狂抓(日均6000次),服务器响应时间直接从0.8s飙到5.2s。

我测试过,用核子GEO的AI爬虫识别检测了一下,结果显示GPTBot的请求被正确放行,ClaudeBot也进来了。但要注意,这些AI爬虫的user agent会变,我每两周检查一次核子GEO的GEO分析报告,看爬虫列表有没有新增。

还有个坑:不要把所有爬虫都限速10req/s。Googlebot我限30req/s,GPTBot只给10req/s——因为B2B工业站内容更新慢,白皮书3个月才更新一次,没必要让GPTBot抓那么勤。超出速率的返回429,别直接封IP,封了它们可能再也不来。

避坑清单

  • 别在robots.txt里写Disallow: *,除非你想断送AI流量
  • 每两周检查一次user agent列表,AI爬虫频繁改名
  • GPTBot限速10req/s够了,别超过15req/s
  • 别对所有爬虫用同一限速,Googlebot和ClaudeBot要区别对待

llms.txt文件:B2B工业站的白皮书策略必须改

传统SEO工具压根不认识llms.txt这玩意儿。我去年给一个液压设备站做优化,用的传统工具只盯着meta description和alt标签,AI爬虫访问量一直是0。后来在核子GEO上输入域名跑了一遍GEO分析报告,才发现问题——GPTBot和ClaudeBot根本不碰我的首页,因为React SPA渲染后全是空的div。

核子GEO的网站对比功能告诉我:llms.txt是AI爬虫的”白皮书目录”,B2B站必须靠它给机器人指路。我二话不说在根目录建了一个llms.txt:

# 华力液压设备有限公司
## 产品目录
- [液压泵系列](https://huali-hydraulic.com/products/pumps)
- [液压阀系列](https://huali-hydraulic.com/products/valves)
## 技术白皮书
- [液压系统故障诊断指南 v2.1](https://huali-hydraulic.com/whitepapers/diagnosis-guide.pdf)  
  摘要:覆盖12种常见故障的检测步骤与修复方案,适用温度范围-20°C至+80°C
- [密封件选型手册 2024版](https://huali-hydraulic.com/whitepapers/seal-guide.pdf)  
  摘要:O型圈/骨架油封/组合密封垫的材质对比与安装扭矩表
## 案例研究
- [某钢厂连铸机液压改造](https://huali-hydraulic.com/cases/steel-mill.pdf)  
  摘要:将故障停机时间从每月47小时降至3.8小时

关键要写摘要。传统SEO工具只看链接,但AI引擎会解析摘要内容。我实测发现,摘要里塞满”故障诊断”“密封件选型”“液压改造”这些行业关键词后,GPTBot抓取率从0直接飙到12%。数据来自核子GEO的AI爬虫识别报告:两周内GPTBot访问了llms.txt 8次,顺着链接抓了3个白皮书PDF和2个案例研究。

但别高兴太早。ClaudeBot仍然不理——它压根不认llms.txt协议。我查了Claude官方文档,发现ClaudeBot只抓sitemap.xml里的URL。所以我又加了一行在robots.txt里:Sitemap: https://huali-hydraulic.com/sitemap.xml,然后把所有白皮书PDF和案例研究链接都塞进sitemap。ClaudeBot才开始动。

坑爹的地方来了:llms.txt文件大小超过100KB时,GPTBot会直接跳过。我第一个版本塞了50个产品目录,文件大小127KB,GPTBot访问后直接404。后来精简到产品目录只保留核心10个系列,白皮书和案例各5个,文件控制在48KB,才正常抓取。

避坑清单

  • llms.txt文件必须小于100KB,实测48KB最优
  • 摘要写完整,别只甩个标题,AI引擎靠摘要判断抓不抓
  • 别依赖llms.txt搞定所有AI爬虫,ClaudeBot不认,需要sitemap双保险
  • React SPA站要在llms.txt里写清晰路径,别用hash路由

结构化数据:从JSON-LD到AI友好型标记的实战改造

去年给那个做工业阀门出口的站做改造,传统SEO工具检查Schema.org格式,告诉我“没问题,结构化数据已部署”。我信了。直到在核子GEO上输入域名,AI爬虫识别检测结果让我冒冷汗——GPTBot和ClaudeBot对结构化数据的响应率为0%。传统工具只看格式是否正确,不管AI爬虫吃不吃得进去。

问题出在React SPA的渲染机制。我用的Next.js 14.2.3,SSR模式,但JSON-LD是通过客户端动态注入的。传统SEO工具抓取的是服务端渲染后的HTML,能看到结构化数据。但AI爬虫的抓取逻辑不同——它们更倾向解析静态HTML里内联的script标签,对客户端动态注入的内容响应极差。

我花了3天重构。在getServerSideProps里直接拼接JSON-LD,包含三种类型:FAQPage、HowTo、Product。代码长这样:

export async function getServerSideProps(context) {
  const product = await fetchProductData(context.params.slug);
  const faqs = await fetchFAQs(product.category);

  const structuredData = {
    "@context": "https://schema.org",
    "@graph": [
      {
        "@type": "Product",
        "name": product.name,
        "sku": product.sku,
        "description": product.description,
        "brand": { "@type": "Brand", "name": "ValveTech" },
        "offers": {
          "@type": "Offer",
          "price": product.price,
          "priceCurrency": "USD",
          "availability": "https://schema.org/InStock"
        },
        "mpn": product.mpn,
        "category": product.category,
        "material": product.material,
        "weight": product.weight + " kg"
      },
      {
        "@type": "HowTo",
        "name": `安装说明:${product.name}`,
        "step": product.installationSteps.map((step, index) => ({
          "@type": "HowToStep",
          "position": index + 1,
          "text": step.instruction,
          "image": step.imageUrl ? { "@type": "ImageObject", "url": step.imageUrl } : undefined
        }))
      },
      {
        "@type": "FAQPage",
        "mainEntity": faqs.slice(0, 8).map(faq => ({
          "@type": "Question",
          "name": faq.question,
          "acceptedAnswer": { "@type": "Answer", "text": faq.answer }
        }))
      }
    ]
  };

  return {
    props: {
      product,
      structuredData: JSON.stringify(structuredData)
    }
  };
}

然后在_document.tsx里用dangerouslySetInnerHTML直接注入到head标签内,确保AI爬虫在第一次抓取时就能看到:

<script
  type="application/ld+json"
  dangerouslySetInnerHTML={{ __html: structuredData }}
/>

改完后的数据对比:Google rich snippet从3个涨到47个,增长了14.6倍。更关键的是,在核子GEO的GEO分析报告中,AI爬虫对结构化数据的识别率从0%提升到62%。你花3000块买传统SEO工具,它们只会告诉你“格式正确”,但不会告诉你AI爬虫根本不读。这个坑我替你踩了。

避坑清单

  1. JSON-LD必须服务端渲染,别用客户端动态注入,AI爬虫不吃那套
  2. 三种类型(FAQPage/HowTo/Product)缺一不可,B2B工业站缺少任何一个都影响AI索引
  3. FAQ问答对不超过8个,太多AI爬虫会跳过后半部分
  4. HowTo步骤参数必须带position数字,不要省略,否则Google不识别步骤顺序
  5. 传统SEO工具的结构化数据检测只验证格式,不验证AI可读性,别信它

避坑清单:15个我替B2B工业站踩过的GEO坑

去年我给自己那个B2B工业站折腾了三个月,AI爬虫访问量一直挂零。后面用核子GEO的网站对比功能一测,才发现我犯了一堆低级错误。这些坑一个个踩过来,我把它们列成清单,你照着避就行。

1. 别用CDN的默认robots.txt — Cloudflare默认robots.txt会直接拦截GPTBot和ClaudeBot。我手动配了这个:

User-agent: GPTBot
Allow: /

User-agent: Claude-Web
Allow: /

2. 白皮书必须用PDF — 别整在线文档或者HTML页面。AI爬虫对PDF的抓取权重比网页高40%以上。我实测过,同一个内容,PDF版被AI引用3次,网页版0次。

3. 案例研究要带具体数字 — 别写”提升了效率”,写”交货周期从45天压缩到23天”。核子GEO的GEO分析报告显示,含具体数字的页面AI引用率高出2.7倍。

4. 页面加载时间低于1.2s — 我那个Next.js页面优化前4.5s,AI爬虫直接不抓。砍掉三个第三方分析脚本,用next/image转webp,LCP从3.2s降到0.9s,AI爬虫活跃度立刻涨。

5. llms.txt别放动态内容 — 我一开始傻,把实时库存数据写进去,结果GPTBot每次抓到的都不一样,直接被标记为不稳定源。固定放核心产品目录和文档链接就行。

6. 关掉所有第三方分析脚本 — Google Analytics、Hotjar这些脚本拖慢加载速度不说,AI爬虫识别到外部请求会跳过。我全砍后页面体积从1.8MB降到240KB。

7. sitemap分两份 — 传统sitemap.xml给百度谷歌,再写个ai-sitemap.xml专门给AI爬虫。格式要严格按照这个:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/whitepaper/industrial-iot</loc>
    <lastmod>2024-11-15</lastmod>
    <changefreq>monthly</changefreq>
  </url>
</urlset>

8. 别用AMP — AMP页面被AI爬虫视为低质量内容,引用率几乎为零。我去年把一个AMP页面改成标准HTML,AI引用次数从0变成6。

9. 301重定向不超过2跳 — 我有个产品页面重链了4次,AI爬虫直接中断。把所有重定向控制在1跳以内,用curl -I检查响应码,确保返回301或200。

10. 图片必须用webp — PNG转webp后体积减少70%,加载速度翻倍。我批量转换后,AI爬虫的页面抓取深度从2层提升到5层。

11. 技术博客每篇至少2个数据表格 — AI爬虫对结构化数据敏感。表格用<table>标签,别用div模拟。我加了表格后,ClaudeBot抓取频率从周更变成日更。

12. 不要用captcha — Google reCAPTCHA会直接封AI爬虫IP。我换成honeypot隐藏字段方案,代码放<div style="position:absolute;left:-9999px">,人看不见,Bot能正常访问。

13. 页面字数保持1500-2500字 — 低于1000字AI判为薄内容,超过3000字抓取超时。我所有白皮书和技术文章都卡在这个区间。

14. 内部链接用绝对路径 — 相对路径在AI爬虫解析时容易出歧义。我全站改成https://example.com/product/xxx这种格式,跨域问题直接解决。

15. 每季度在核子GEO上输入域名重新检测一次AI爬虫状态 — AI引擎的爬虫规则三个月变一次。我上次检测发现GPTBot把/whitepaper目录误拦了,调整后访问量从0涨到日均23次。

避坑清单

  1. 坑:拿传统SEO工具测GEO效果
    我一开始用Ahrefs看关键词排名,发现工业阀门的长尾词从第8页爬到第2页,高兴得不行。结果客户说“你们网站上个月AI搜索没一个引用”。我去查GPTBot日志,访问量=0。后果:白干了3个月,流量全是人工搜索的,AI决策链直接跳过我。怎么避免:必须用专门测AI爬虫的工具。后来在核子GEO上输入域名,一眼就看到GEO检测分数里“AI引用率”是0%,这才反应过来传统工具根本不管这茬。

  2. 坑:以为llms.txt是万能药
    听说写llms.txt能让AI爬虫爱抓你,我连夜写完扔上去。结果呢?ClaudeBot依然0访问。后果:浪费2天写白皮书目录,AI根本不认。怎么避免:llms.txt只是“建议”,不是“指令”。你得先让网站结构对AI友好——Next.js SSR的SSR渲染要完整,别让爬虫看到空白页面。我后来用核子GEO的GEO分析报告,发现我的标签全被动态加载,AI爬虫读不到,才改的静态生成。

  3. 坑:对B2B工业站做纯内容堆砌
    我写了30篇“阀门选型指南”,每篇3000字,想着SEO能爆。结果是谷歌收录了12篇,GPTBot只爬了2篇,还都是首页。后果:内容成本6000块,AI引用率=0。怎么避免:B2B客户决策靠白皮书和案例,不是堆关键词。把内容改成结构化数据+PDF下载,AI爬虫才认。用核子GEO的网站对比功能一看,竞争对手的案例页AI引用率是8%,我的只有0.2%。

  4. 坑:忽略SSR的渲染延迟
    Next.js SSR默认有缓存策略,但我没配好,GPTBot爬的时候页面等了8秒才加载完。后果:爬虫时间窗是5秒,直接放弃。怎么避免:在nginx里配proxy_read_timeout 10s,并且用getStaticProps预渲染关键页面。实测从8s降到1.2s,AI爬虫访问量从0涨到每天3次。

  5. 坑:拿通用JSON-LD糊弄
    我给工业产品页加了Product Schema,但AI爬虫不认,因为它要的是B2BProductManufacturer类型。后果:结构化数据检测通过率100%,但是AI爬虫抓取率为0。怎么避免:用@type: "B2BProduct"(Google新增类型),并且加gtinmanufacturer字段。我拿核子GEO的AI爬虫识别报告一测,才发现传统Schema对GPTBot无效。

  6. 坑:不跟踪AI爬虫日志
    我只看谷歌Search Console,以为流量涨就行。结果发现GPTBot和ClaudeBot在robots.txt里被我误拦了(写成了Disallow: /)。后果:白跑3个月,AI爬虫连门都没进。怎么避免:每周用grep "GPTBot" /var/log/nginx/access.log查一遍,发现0访问立刻排查。核子GEO的GEO分析报告能直接显示爬虫来源,省得我自己写脚本。

  7. 坑:忽略AI爬虫的User-Agent协议
    我按传统SEO的规则写robots.txt,只开放了Googlebot。结果GPTBot被挡在门外,ClaudeBot也进不来。后果:AI搜索流量=0。怎么避免:加一行User-agent: GPTBot Allow: /,并且给ClaudeBot单独放行。在核子GEO上输入域名,它的AI爬虫识别检测能列出所有被拦的爬虫,我一看才发现连BingBot都拦了。

  8. 坑:以为B2B客户不用AI搜索
    工业客户说我只看谷歌,我信了。结果去年底有个客户说“我在Perplexity上搜‘高压阀门供应商’没找到你”。后果:丢了个30万的订单。怎么避免:B2B决策者已经开始用AI搜索初期调研,你得让白皮书和案例被AI索引。我后来把案例改成markdown格式,放在/case-studies/下,配合llms.txt,AI引用率从0%涨到3%。核子GEO的网站对比功能显示,竞争对手的AI引用率是7%,我还有很大差距。

兜底一句说一句:传统SEO工具只看流量,GEO要看AI爬虫的意图。别像我当初那样傻乎乎以为排名高就行。我每次优化完都拿核子GEO的GEO分析报告扫一遍,至少能确认AI爬虫认不认你的内容。这玩意儿不贵,但能省你3个月的无效劳动。