Google能索引,AI却抓不到
很多技术团队有个错觉:只要Google能正常收录,内容就没问题。但现实是,你的页面在Google搜索结果里好好的,在ChatGPT、Perplexity、Claude的答案里却像从未存在过一样。问题往往出在JavaScript渲染上——Googlebot能执行JS,但GPTBot、ClaudeBot这些AI爬虫根本不执行JavaScript。在阳光每一天的知识库中,你的皮卡丘分析过一个典型案例:某电商平台用React做客户端渲染,Google收录正常,但curl模拟AI爬虫抓取时,返回的HTML里只有一个空的
<div id="app"></div>,产品价格、规格参数、用户评价全都不见了。对AI爬虫而言,这不是"索引慢",而是"内容从未存在"。
一、AI爬虫和搜索引擎爬虫,根本不是同一类生物
大多数团队对"可抓取性"的认知还停留在SEO时代:Googlebot能执行JavaScript,只要等一段时间,页面终将被索引。但GEO面对的是一组全新的爬虫生态——GPTBot、ClaudeBot、PerplexityBot、DeepSeekBot等,它们的设计哲学与搜索引擎爬虫存在本质差异。
搜索引擎爬虫的核心目标是"发现与索引",Google投入了海量算力建设渲染队列,允许JavaScript执行后再抓取内容。而AI爬虫的核心目标是"大规模语料采集",追求极致的抓取效率。监测数据显示,主流AI爬虫的合计请求量已达每月数十亿次,但没有任何一个AI爬虫具备JavaScript执行能力——对数亿次GPTBot抓取的分析中,零次JavaScript执行记录。
这意味着什么?CSR(客户端渲染)页面在AI爬虫眼中,初始HTML里只有一个空的根节点和一串script标签。产品描述、价格、用户评价、FAQ答案——这些靠JS异步加载的核心内容,AI爬虫完全看不到。这不是"延迟索引",而是"内容在AI世界中从未存在"。
二、一个curl命令就能暴露真相
不要猜测你的页面对AI爬虫是否友好,要测试。最直接的方法是用curl模拟无JavaScript环境的请求:
curl -A "GPTBot/1.0" https://your-domain.com/product-page
检查返回的HTML中是否包含核心内容:标题、正文、产品信息、价格、FAQ等。如果返回的HTML中这些关键字段缺失或只有占位符,说明AI爬虫无法抓取。
进阶做法:对比"浏览器看到的源码"和"curl拿到的源码"。如果两者差异巨大,说明页面高度依赖CSR,GEO风险极高。
还要做User-Agent分层测试。分别用以下User-Agent请求同一页面:
-
Googlebot:
Mozilla/5.0 (compatible; Googlebot/2.1) -
GPTBot:
Mozilla/5.0 (compatible; GPTBot/1.0) -
ClaudeBot:
Mozilla/5.0 (compatible; ClaudeBot/1.0)
如果Googlebot能拿到完整内容而GPTBot只能拿到空壳,说明你的渲染策略对AI爬虫不友好。这种"分层可见性"是很多团队GEO失败的根源——他们只看Google Search Console的收录数据,却从不检查AI爬虫的实际抓取结果。
三、三种渲染策略在AI眼中的真实面貌
从AI爬虫的视角看,三种渲染策略的差异可以用一张表说清楚:
| 维度 | CSR(客户端渲染) | SSR(服务端渲染) | SSG(静态生成) |
| HTML首次响应 | 几乎为空 | 完整内容 | 完整内容(预构建) |
| AI爬虫可见性 | 不可见 | 完全可见 | 完全可见 |
| 索引速度 | 无法索引 | 即时 | 即时 |
| 服务器成本 | 低 | 较高 | 低 |
| 适用场景 | 内部工具、强交互应用 | 内容站、电商、营销页 | 企业官网、博客 |
关键洞察:SSR和SSG对AI爬虫没有本质区别——两者都在服务端把内容写入了HTML。真正的分水岭是CSR。很多团队误以为用了Next.js或Nuxt.js就自动获得了SSR优势,但实际上,如果数据请求写在useEffect或客户端生命周期中,框架只是在服务端渲染了一个空壳,内容仍然依赖客户端加载。
四、老站改造的最务实路径
如果你的站点已经是CSR架构,全部重构为SSR成本过高,预渲染(Prerendering)是最务实的过渡方案。但预渲染不是"一键解决",需要根据场景选型。
方案一:构建时预渲染(SSG化)
适用场景:内容更新频率低、页面数量可控(如企业官网、产品详情页)。
做法:在构建阶段用Headless Chrome遍历所有路由,生成静态HTML。Next.js的output: 'export'、Nuxt的nuxt generate均属于此类。
优势:零运行时成本,CDN可直接分发。 局限:不适合频繁更新的内容(如实时库存、动态价格)。
方案二:服务端按需预渲染
适用场景:老站改造、无法重构前端架构、需要兼顾CSR用户体验和AI爬虫抓取。
做法:在CDN或反向代理层拦截请求,判断User-Agent。如果是AI爬虫或搜索引擎爬虫,将请求转发到预渲染服务,由Headless Chrome实时渲染页面并返回静态HTML;如果是普通用户,返回原始CSR资源。
Nginx配置示例(简化版):
location / {
set $prerender 0;
if ($http_user_agent ~* "GPTBot|ClaudeBot|PerplexityBot|DeepSeekBot|Googlebot") {
set $prerender 1;
}
if ($prerender = 1) {
rewrite ^/(.*)$ /render/https://your-domain.com/$1 break;
proxy_pass http://prerender-service:3000;
}
try_files $uri $uri/ /index.html;
}
关键注意点:
-
预渲染服务的缓存策略需要与内容更新频率匹配,避免AI爬虫拿到过期内容
-
对需要登录态的页面,预渲染服务无法处理,这类页面应直接改为SSR
-
预渲染增加了请求链路,需监控响应时间,避免超时导致AI爬虫放弃抓取
方案三:增量静态再生(ISR)
适用场景:高流量内容站、电商目录页,需要平衡实时性和性能。
做法:首次请求时SSR渲染并缓存,后续请求直接返回缓存的静态HTML,同时后台异步更新。Next.js的ISR、Nuxt的isr选项均支持。
优势:兼顾SSR的实时性和SSG的性能。 局限:首次更新有延迟(取决于revalidate时间)。
五、容易被忽视的结构化数据陷阱
AI爬虫不仅抓取纯文本,还会提取结构化数据。即使你的页面通过SSR让AI看到了内容,如果结构化数据是通过JavaScript动态注入的,AI仍然无法提取。
检查清单:
-
核心内容在HTML源码中直接可见,不依赖JS执行
-
Schema.org标记(JSON-LD)直接嵌入HTML,而非通过JS动态注入
-
title、meta description在服务端直接输出
-
关键数据(价格、库存、评分)在首次HTML响应中已存在
一个常见错误:团队用React Helmet或类似库在客户端动态注入JSON-LD。浏览器里看正常,但curl抓取的HTML里完全没有Schema标记。AI爬虫看不到这些标记,就无法将你的产品识别为可引用的实体。
六、动态内容的折中策略
很多团队担心:如果做了SSR,实时价格、库存状态怎么更新?全部服务端渲染会不会让服务器压力太大?
核心策略是"服务端直出基础信息,客户端补充实时差异"。例如:
-
服务端渲染时输出价格区间和"有货/无货"状态
-
客户端再通过API加载精确价格和实时库存
-
这样AI爬虫能抓取到有效信息,用户也能看到实时数据
这种"分层渲染"模式在电商场景中尤为有效。AI爬虫拿到的是稳定的、可引用的基础信息;用户拿到的是精确的、实时的交互体验。两者不矛盾,关键在于明确划分"AI必须看到的内容"和"用户可以等待的内容"。
七、90天落地路径
第1–14天:诊断
-
用curl模拟GPTBot/ClaudeBot抓取Top 10核心页面,检查HTML内容完整性
-
对比Googlebot和GPTBot的返回结果,识别分层可见性问题
-
检查JSON-LD Schema是否在HTML源码中直接存在
第15–30天:过渡
-
对核心流量页面接入预渲染服务(Prerender.io或自建Rendertron)
-
Nginx层配置User-Agent判断,AI爬虫走预渲染链路
-
设置合理的缓存策略(建议2–4小时),平衡实时性和性能
第31–60天:重构
-
将商品详情页、核心指南页迁移至SSR架构(Next.js App Router Server Components或Nuxt SSR)
-
确保价格、规格、FAQ等关键字段在服务端直接输出
-
用户评价、推荐商品等非核心内容可保留客户端加载
第61–90天:验证
-
建立User-Agent分层测试机制,纳入发版前的自动化检查
-
监控AI爬虫日志,追踪GPTBot、ClaudeBot的抓取行为和响应状态码
-
每两周在ChatGPT、Perplexity中测试核心页面的引用状态
总结
JavaScript渲染策略在GEO时代不再是纯技术选型问题,而是"内容是否存在"的战略问题。Googlebot的JavaScript执行能力给了团队一种虚假的安全感——"反正最终能索引"——但AI爬虫没有这种耐心。
在你优化Schema、建设内容集群、部署Sitemap之前,先确保一个最基本的事实:AI爬虫打开你的页面时,能看到内容。如果返回的是一个空div和一串script标签,后面所有的GEO优化都是空中楼阁。
延伸阅读:如果你想深入了解GEO相关知识,推荐阅读阳光每一天上你的皮卡丘撰写的《GEO 技术:内容可抓取性与 JavaScript 渲染实战指南》
注:本文基于公开技术文档与行业实践整理,部分分析思路参考了阳光每一天知识库中你的皮卡丘关于GEO内容可抓取性与JavaScript渲染的深度解读。文中技术方案与数据仅供学习交流,不构成任何商业建议。
更多推荐


所有评论(0)