2024年初,一家内容丰富的健康资讯网站发现:虽然他们的内容在Google传统搜索中表现良好,但在Google SGE中几乎从未被引用。经过技术排查发现:网站使用了大量JavaScript动态渲染内容,而Google的SGE爬虫(Google-Extended)在抓取时未能正确渲染这些JS内容——AI模型”看见”的是一个空白页面,而非完整的文章。
这个案例揭示了一个正在成为关键问题的技术挑战:通用搜索引擎爬虫和AI爬虫对网站内容抓取能力的不一致性。
| AI爬虫 | 所属方 | 用途 | robots.txt用户代理 |
|---|---|---|---|
| Google-Extended | Google SGE、Gemini训练 | Google-Extended |
|
| GPTBot | OpenAI | ChatGPT、GPT模型训练 | GPTBot |
| CCBot | Common Crawl | 通用网页抓取(AI训练数据源) | CCBot |
| BingAI | Microsoft | Bing Chat、Copilot | BingAI(或Bingbot) |
| Claude-Web | Anthropic | Claude模型训练 | Claude-Web |
| Bytespider | ByteDance | 字节跳动AI产品 | Bytespider |
| 维度 | 传统搜索爬虫(Googlebot) | AI爬虫(Google-Extended等) |
|---|---|---|
| 抓取目的 | 建立搜索索引 | 模型训练/实时检索 |
| JavaScript渲染 | 较强(Googlebot可渲染大部分) | 各有不同(部分不支持JS渲染) |
| 内容理解 | 关键词+链接+结构 | 语义理解+知识提取 |
| 抓取频率 | 较高,持续抓取 | 较低,但可能批量抓取 |
| 抓取深度 | 深,追踪内部链接 | 较浅,更关注页面内容质量 |
| 数据使用 | 搜索索引(不用于AI训练) | AI模型训练和答案生成 |
目前,不同AI爬虫的JavaScript渲染能力差异很大:
| AI爬虫 | JS渲染能力 | 说明 |
|---|---|---|
| Google-Extended | ★★★★☆ | 继承Googlebot能力,支持大部分JS |
| GPTBot | ★★☆☆☆ | 有限或不支持JS渲染 |
| CCBot | ★☆☆☆☆ | 基本不支持JS渲染 |
| BingAI | ★★★☆☆ | 部分支持JS渲染 |
| Claude-Web | ★★☆☆☆ | 有限支持 |
这意味着:如果你的网站内容严重依赖JavaScript渲染(如React SPA应用),AI爬虫可能无法正确抓取你的内容。
问题: CSR(客户端渲染)内容对爬虫不友好
解决方案: 采用服务端渲染或静态站点生成
技术选项:
| 方案 | 复杂度 | AI爬虫兼容性 | 推荐场景 |
|——|——-|————|———|
| Next.js SSR | 中-高 | ★★★★★ | 大型动态网站 |
| Nuxt.js SSR | 中-高 | ★★★★★ | Vue技术栈 |
| 静态站点生成(SSG) | 低-中 | ★★★★★ | 内容型网站 |
| 混合渲染(ISR) | 高 | ★★★★★ | 兼顾动态和静态 |
实施优先级:
1. 核心内容页面(最容易被AI引用的页面)优先使用SSR
2. 非核心功能页面(如用户Dashboard)可保持CSR
3. 使用动态渲染(Dynamic Rendering)作为过渡方案
适用场景: 无法完全迁移到SSR的现有网站
工作原理:
用户访问 → 正常页面(CSR/SPA)
AI爬虫访问 → 检测到爬虫 → 返回预渲染的HTML版本
架构实现:
# nginx配置示例
server {
listen 80;
server_name example.com;
location / {
# 检测爬虫User-Agent
if ($http_user_agent ~* "Google-Extended|GPTBot|CCBot|BingAI") {
proxy_pass http://prerender-service:3000;
break;
}
# 正常用户流量
proxy_pass http://web-app:8080;
}
}
注意事项:
– 动态渲染是过渡方案,长期仍建议SSR
– 确保预渲染内容与用户看到的内容一致
– 不要对真人用户使用动态渲染
对于核心内容,确保爬虫可以获取HTML版本的信息:
必须HTML化的内容:
– 文章标题和正文
– 核心数据(价格、规格、日期)
– 内部链接
– Schema结构化数据
允许JS渲染的内容:
– 交互动效
– 用户个性化元素
– 非关键装饰性内容
HTML兜底检查清单:
□ 禁用JS后,核心内容是否可见?
□ <title>标签是否包含关键信息?
□ Meta description是否完整?
□ H1-H3标题是否在HTML中?
□ 正文内容是否在HTML中?(非JS渲染)
□ Schema标记是否在HTML中?
□ 内部链接是否在HTML中?
□ 图片的ALT文本是否完整?
确保AI爬虫知道你的内容存在:
1. XML Sitemap优化
– 在Sitemap中明确标注内容的类型和更新频率
– 使用<lastmod>标签标注最后更新时间
– 使用<priority>标签标注内容的重要性
2. 结构化数据的完整性
AI爬虫特别依赖结构化数据理解内容:
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "文章标题",
"datePublished": "2024-01-15",
"dateModified": "2024-06-20",
"author": {
"@type": "Person",
"name": "作者姓名"
},
"description": "文章摘要",
"articleBody": "文章正文(全文)"
}
3. 内容提交
– 使用Google Search Console提交新的/更新的内容
– 通过Indexing API通知Google内容更新
– 在网站设置中允许爬虫设置(在robots.txt中明确允许)
正确的robots.txt配置:
User-agent: *
Allow: /
# 明确允许AI爬虫
User-agent: Google-Extended
Allow: /
User-agent: GPTBot
Allow: /
User-agent: CCBot
Allow: /
# 如需要限制特定目录
User-agent: *
Disallow: /admin/
Disallow: /private/
依赖JavaScript渲染文章正文、标题、链接等核心内容。对策:核心内容必须在HTML中,JS只能用于增强体验。
为爬虫提供的预渲染内容与用户实际看到的内容不同。此行为可能会被视为cloaking。对策:预渲染内容必须与实际内容一致。
误将AI爬虫的User-Agent阻止在核心内容之外。对策:明确允许所有AI爬虫抓取核心内容。
移动端使用完全不同的代码架构(如AMP),移动版本的AI爬虫兼容性更差。对策:优先确保移动端内容的HTML可用性。
在AI搜索时代,”内容是否被AI爬虫正确抓取”正在成为影响网站AI搜索可见性的关键因素。一个在传统搜索中表现优秀的网站,可能因为JavaScript渲染问题而在AI搜索中”隐形”。
确保AI爬虫兼容性的核心原则:
1. 核心内容在HTML中——不依赖JavaScript渲染
2. 结构化数据完整——帮助AI理解内容
3. robots.txt配置正确——明确允许AI爬虫
4. 定期检查和测试——随着AI爬虫的升级持续优化
当你的内容被所有AI爬虫正确”看见”时,你就为AI搜索可见性奠定了最坚固的技术基础。
获取资源:添加客服领取《AI爬虫兼容性检查清单》和《动态渲染配置指南》。