无 JS 渲染检测
看你的服务器在 JavaScript 执行之前实际返回了什么 HTML。这一轮内容才是检索型爬虫读到的东西——OAI-SearchBot、Claude-SearchBot、PerplexityBot,决定 AI 会不会引用你的正是它们。
https://example.com
模拟 User-Agent: GPTBot/1.0(无 JS 原始 HTML 抓取)
客户端 JavaScript 依赖警告!
AI 模型能读到的纯文本
剥离 <script>、<style> 及 HTML 标签浏览器渲染效果(已禁用 JavaScript)
在沙箱 iframe 中渲染,不执行任何脚本。JavaScript 渲染决定了 AI 爬虫能看到什么
浏览器会执行 JavaScript,但决定 AI 引用的那些爬虫——OAI-SearchBot、Claude-SearchBot、PerplexityBot 以及它们对应的用户触发版本——并不保证会执行。它们抓取最初返回的原始 HTML,从里面提取文字和链接。Googlebot 确实会渲染 JavaScript,但那是滞后很多的第二轮,所以只有 hydration 之后才存在的内容,被读到的时间会很晚,甚至根本读不到。
单页应用(SPA)最常见的几个坑
- 空容器: 只返回一个空的
<div id="app"></div>、不做服务端渲染(SSR),爬虫拿到的就是一张白页。 - 初始 HTML 里缺少 meta 标签: 如果
<title>和<h1>是由前端 JavaScript 动态填充的,AI 拿到的版本里这些关键信息是空的。 - 推荐做法: 用服务端渲染(Next.js / Nuxt / Laravel Blade)或预渲染,把完整的 HTML 直接交给爬虫。能被读到只是第一步,决定会不会被引用的是另一批因素。
常见问题
AI 搜索爬虫会像浏览器一样执行 JavaScript 吗?
不保证会。决定引用的那些爬虫——OAI-SearchBot、Claude-SearchBot、PerplexityBot 以及它们对应的用户触发版本——抓取的是最初返回的原始 HTML,从中提取文字和链接。GPTBot 和 ClaudeBot 是训练型爬虫,不参与引用决策。Googlebot 确实会渲染 JavaScript,但那是滞后很多的第二轮,所以只有 hydration 之后才存在的内容,被读到的时间会很晚,甚至根本读不到。
单页应用(SPA)怎么才能让 AI 爬虫读到内容?
用服务端渲染(SSR)、静态生成(SSG)或预渲染,把完整的 HTML 直接交给爬虫。Next.js、Nuxt、Laravel Blade 都能做到。判断是否生效很简单:用这个工具看一下不执行 JavaScript 时页面还剩什么——那就是爬虫拿到的版本。