如果你的网站使用 React、Vue、Angular 等前端框架且核心内容依赖客户端 JavaScript 渲染,大多数 AI 爬虫看到的可能只是一个空壳——这是 GEO 实践中最常见的致命基础设施问题。
通俗理解
你精心装修了一个展厅,商品摆放完美。但门口装了一把特殊的锁——只有带着专用钥匙(JavaScript 引擎)的人才能进去看到里面的内容。
普通用户的浏览器自带这把钥匙,所以他们进去一切正常。但 AI 爬虫没有这把钥匙——它们站在门口,看到的只是一个空房间。
你的展厅对 AI 来说等同于不存在。
为什么会这样
浏览器访问你的页面时会完整执行一套流程:下载 HTML → 执行 JavaScript → 渲染 CSS → 内容出现。但大多数 AI 爬虫只完成第一步:下载 HTML。
如果你的网站使用现代前端框架(React、Vue、Angular 等),初始 HTML 源码中可能只有一个空的挂载点:
<div id="app"></div>
<script src="/js/app.js"></script>
浏览器会执行 app.js,动态生成页面内容。但 AI 爬虫不执行 JavaScript——它看到的就是一个空的 div。你的全部内容、精心优化的答案块、完美的 H2 结构——在 AI 眼里全部不存在。
谁受影响,谁不受影响
不受影响的:
– WordPress 用户 — WordPress 默认是服务器端渲染(SSR),HTML 源码中已经包含完整内容
– 传统 PHP/Python/Java 网站 — 服务器端生成 HTML 的网站通常不受影响
– 静态站点(Hugo、Jekyll 等) — 内容在构建时就已经写入 HTML
受影响的:
– React(Create React App) — 纯客户端渲染,初始 HTML 为空壳
– Vue(默认模式) — 同上
– Angular — 同上
– 单页应用(SPA) — 所有内容依赖 JavaScript 动态加载
快速诊断方法
10 秒检测:
- 打开 Chrome 浏览器 → 访问你的页面
- 按 Ctrl+U(查看网页源代码)——注意不是 F12 的 Elements 面板
- 用 Ctrl+F 搜索你的正文中的一个关键词
- 如果搜不到——你的内容对 AI 爬虫不可见
Elements 面板显示的是 JavaScript 执行后的 DOM,而 Ctrl+U 显示的是原始 HTML 源码——后者才是 AI 爬虫看到的。
解决方案
方案一:SSR(服务器端渲染)
使用支持 SSR 的框架:React → Next.js,Vue → Nuxt.js。服务器在返回 HTML 时就已经包含完整的渲染内容。
方案二:SSG(静态站点生成)
在构建阶段预渲染所有页面为静态 HTML。适合内容不频繁更新的网站。Next.js 和 Nuxt.js 都支持 SSG 模式。
方案三:预渲染服务
使用 Prerender.io 等服务,检测到爬虫(包括 AI 爬虫)时返回预渲染的 HTML 版本,普通用户仍然走客户端渲染。
方案四(临时方案):关键内容写入初始 HTML
对于短期内无法迁移框架的网站,至少把最重要的内容(页面标题、首段答案块、Meta Description)硬编码在初始 HTML 中,不依赖 JavaScript 渲染。
这是最高优先级的 GEO 问题
在《让AI替你说话:GEO权威指南》第四章中,JavaScript 渲染被标记为”最常见的 GEO 致命问题”。它的优先级高于所有内容优化——因为如果 AI 爬虫看不到你的内容,后面的所有优化(答案块、信息密度、语义覆盖)都是空中楼阁。
如果你只有时间做一件事,先做这个检查。
延伸阅读
- 《让AI替你说话:GEO权威指南》第四章 4.3 节”JavaScript 渲染陷阱:最常见的 GEO 致命问题”
- 《让AI替你说话:GEO权威指南》第四章 4.1 节”AI 爬虫 vs 浏览器”
- GEOBOK 免费工具:AI 可抓取性检测
常见问题 FAQ
-
用 React/Vue 的网站 AI 一定看不到吗?不一定。使用 SSR 或预渲染的 AI 爬虫可以看到完整内容。问题只出在纯客户端渲染——HTML 中只有空 div。
-
怎么检测 AI 爬虫看到的内容?运行 curl 命令获取 HTML,看返回源码中是否包含核心内容。curl 返回没有文字说明 AI 也看不到。
-
SSR 和预渲染哪个更适合 GEO?两者都能解决问题。SSR 更灵活适合动态内容,预渲染更简单适合固定内容。核心目标一致:HTML 源码包含完整文字。
