为什么你的AI抓不到页面内容?从Vue渲染到SSR直出的一次工程实践总结
在企业官网 AI 化改造过程中,我们发现一个非常典型但容易被忽略的问题:
在企业官网 AI 化改造过程中,我们发现一个非常典型但容易被忽略的问题:
同一篇页面内容,在不同访问方式下,返回结果可能完全不同。
-
浏览器访问:内容完整展示
-
AI 抓取请求:
- 有时可以获取正文
- 有时只返回一个几乎空的 HTML 结构
在对抓取链路进行排查(包括网络、请求频率、渲染方式等)后,最终定位到问题核心:
👉 前端渲染模式导致页面内容在 AI 侧“可见性不稳定”
这个问题在传统 SEO 体系中并不突出,但在 AI 搜索场景下,会直接影响:
👉 内容是否能够被模型理解,甚至是否“存在”
在我们推进企业官网 AI 友好化改造(易科势腾内部实践)过程中,这类问题往往是第一道技术门槛。
一、问题复现:同一页面,两种完全不同的结果
为了验证问题的稳定性,我们做了一个简单测试:
👉 将同一个产品页 URL,交给不同 AI 工具进行总结
结果非常一致:
✅ 服务端渲染页面(SSR)
- 能稳定获取正文内容
- 可完成摘要
- 在部分场景下可作为引用来源
⚠️ 前端渲染页面(Vue SPA)
常见返回:
页面信息不足 / 未识别到有效内容
这里有一个关键认知需要明确:
与其说 AI“抓不到内容”,不如说在前端渲染模式下,页面内容对 AI 而言是不稳定可见的
二、问题本质:AI拿到的不是你看到的页面
将页面原始 HTML 输出后,问题就非常清晰:
<div id="app"></div>
<script src="/assets/index.js"></script>
真实内容依赖前端 JS 执行:
fetch('/api/product/123').then(render)
👉 浏览器可以执行 JS,因此页面正常
👉 但大多数 AI 抓取流程:
- 不执行 JS
- 或执行能力有限
- 或出于成本考虑不会完整执行
👉 最终结果:
AI获取到的是“初始HTML壳”,而不是“渲染后的页面内容”
三、一个常见误区:仅靠 Schema 并不能解决问题
在优化过程中,一个常见思路是:
👉 增加结构化数据(Schema / JSON-LD)
<script type="application/ld+json">
{
"@type": "Product",
"name": product.name,
"description": product.desc
}
</script>
但在前端渲染模式下,这里存在一个关键问题:
👉 Schema 本身也是通过 JS 注入的
在 AI 抓取阶段,可能出现:
👉 既拿不到正文,也拿不到结构化数据
因此真正的关键不在于“是否有结构化数据”,而在于:
👉 结构化信息是否在 HTML 返回阶段就已经存在
四、关键认知:AI不是在调接口,而是在解析HTML
在大多数实际场景中:
- AI不会调用你的
/api/*接口 - 它会请求页面 URL
- 然后直接解析 HTML
👉 因此问题可以被重新定义为:
你返回的 HTML,是否已经是“完整语义内容”
五、工程解法:SSR直出,让内容天然可见
针对这一问题,我们采用了一种更稳定的工程策略:
👉 服务端渲染(SSR)直出内容
示例(Spring Boot + 模板渲染)
Controller
@GetMapping("/product/{id}")
public String productPage(@PathVariable Long id, Model model) {
Product product = productService.getById(id);
model.addAttribute("product", product);
return "product";
}
HTML 模板
<h1 th:text="${product.name}"></h1>
<p th:text="${product.description}"></p>
<h2>适用场景</h2>
<p th:text="${product.scene}"></p>
同步输出结构化数据
<script type="application/ld+json">
{
"@type": "Product",
"name": "[[${product.name}]]",
"description": "[[${product.description}]]"
}
</script>
👉 改造后的效果:
- HTML 即最终内容
- 不依赖 JS 执行
- AI 可直接解析
可以总结为一句工程原则:
👉 把“运行时生成内容”,前置为“返回即存在内容”
六、从AI-CMS到GEO:一个容易被忽略的分层
在完成页面可见性改造之后,我们进一步拆解了一个关键问题:
AI-CMS = 内容生产与管理能力
GEO = 内容被AI引用与排序能力
👉 AI-CMS解决的是:
- 内容有没有
- 能不能检索
- 能不能生成
👉 GEO解决的是:
- AI是否会选择你的内容
- 是否会出现在答案中
- 出现的位置和权重
而“页面是否可见”,实际上是两者之间的前置条件。
七、GEO的工程化拆解(核心指标落地)
在实践过程中,我们将 GEO 拆解为五个可工程化的指标:
1️⃣ 提及率(Mention)
👉 是否存在足够多“可被引用的内容片段”
工程手段:
- FAQ结构化拆分
- 多页面内容分布
- 语义自然覆盖
2️⃣ 位置(Position)
👉 信息是否出现在高权重位置
工程手段:
- 标题层级(H1 / H2)
- 首屏核心信息前置
- 语义结构清晰
3️⃣ 上下文权重(Context)
👉 内容是否完整、自洽
工程手段:
- chunk切分策略
- 检索召回质量
- 上下文拼接优化
4️⃣ 可信度(Trust)
👉 AI是否“信任该内容来源”
工程手段:
- 公司信息一致性
- 多页面交叉验证
- 内容稳定输出
5️⃣ 结构化程度(Structure)
👉 AI是否容易解析内容
工程手段:
- SSR输出
- JSON-LD
- Schema.org
👉 从工程角度来看:
GEO并不是营销问题,而是内容结构、页面结构与数据结构的组合问题
八、对后端的三个直接影响
这次实践带来的变化,其实更多发生在后端层。
1)接口设计:不再只面向前端
过去:
👉 返回 JSON 即完成职责
现在需要考虑:
- 是否支持HTML生成
- 是否适配结构化输出
2)数据结构:不再只是存储
过去:
👉 面向存储与展示
现在需要支持:
- chunk切分
- FAQ结构
- 可引用片段
3)页面输出:不仅是展示层
过去:
👉 面向用户
现在:
👉 同时面向 AI
九、实践中的一个结论(AI友好化改造视角)
在易科势腾推进 AI 友好化改造的过程中,我们逐渐形成一个共识:
👉 页面可见性,是所有AI能力的基础设施
在很多项目中:
- RAG能力已经具备
- 知识库已经建立
但如果页面层仍然是“不可见”的:
👉 上层能力很难真正产生外部价值
像本文提到的:
- SSR直出
- Schema结构化
- 页面语义优化
本质上是在解决同一个问题:
👉 让内容稳定进入 AI 解析链路
十、边界说明(工程现实)
需要说明的是:
并不是所有 AI 系统都完全无法解析前端渲染页面。
部分具备浏览器能力的抓取流程,在特定场景下可以执行 JS。
但从工程实践来看:
- 成功率存在波动
- 抓取成本较高
- 不适合作为核心依赖路径
👉 更稳定的方式仍然是:
在HTML返回阶段即提供完整内容
十一、当前阶段 & 下一步
目前这套方案已经在基础场景中验证可行,但仍在持续优化:
- schema自动生成
- 内容结构标准化
- 页面语义增强
下一阶段更关注的是:
👉 AI为什么会优先选择你的内容
对应更深一层问题:
- 内容权重分配
- 引用概率建模
- 多模型适配机制
一个工程视角的小结
在 AI 时代,很多问题不再是“能不能做”,而是:
👉 内容能不能被稳定获取
👉 信息能不能被可靠引用
👉 系统能不能被持续信任
如果你也在做 AI 知识库、RAG 或官网改造,可以交流一下你们在“前端渲染 vs AI抓取”这块的处理方式。