网站AI可读性,指AI爬虫能否顺利抓取、正确解析并直接引用你网页内容的综合能力。 它不是单一指标,而是从HTTP响应、页面渲染、爬虫放行、结构化标注到可引用块的一条完整链路。任何一环断裂,DeepSeek、豆包、Kimi、通义千问这些AI平台拿到的,就只是一份残缺甚至空白的内容。
市面上多数“AI优化清单”谈的是内容与实体——写什么、怎么建权威。本文只谈工程层:服务器返回了什么、AI实际拿到了什么、解析器能不能切出可引用的事实。这是一份偏开发与技术SEO的诊断手册,目标是让你能亲手验证、亲手修。

为什么Google收录良好,AI还是读不到、不引用?
因为AI爬虫和Googlebot不是同一套抓取逻辑。 最关键的差异是:Googlebot会渲染JavaScript,而当前主流AI爬虫(GPTBot、ClaudeBot、PerplexityBot等)大多只抓取原始HTML、不执行JS。你在浏览器里看到的内容,AI可能根本拿不到。
抓取量也在爆发。Cloudflare 对全网爬虫流量的监测显示,从2024年5月到2025年5月,GPTBot 的请求量一年内增长约 305%,排名从第9升至第3(Cloudflare:2025谁在抓你的网站);而AI爬虫里**近80%**的抓取是为训练模型(Cloudflare:按用途拆解AI爬虫流量)。但在头部域名中,只有约 14% 在 robots.txt 里针对AI爬虫写过指令——大多数站点对“谁在抓、抓到了什么”一无所知。
把网站AI可读性拆成三个可验证的目标,就好下手了:爬得到(响应层 + 放行层)、读得懂(渲染层 + 结构化层)、能引用(可引用块层)。下面逐层自查。
爬得到(一):HTTP与响应层自查
响应层是第一道闸门:状态码不对、重定向链太长、高峰期返回5xx,AI爬虫连内容都拿不到,后面全是空谈。 这一层最容易被忽视,却是失分重灾区。
用GPTBot的视角看你的页面
不要用浏览器判断,用AI爬虫的User-Agent直接拉一次。AI看到的就是这份原始响应:
# 1. 拉取 AI 实际拿到的原始 HTML(不执行 JS)
curl -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.1; +https://openai.com/gptbot" \
-sL "https://你的域名/目标页" -o ai-view.html
# 2. 一行量化响应层:重定向跳数、终态码、首字节时间(TTFB)
curl -A "GPTBot/1.1" -sIL -o /dev/null \
-w "重定向 %{num_redirects} 跳 | 终态 %{http_code} | TTFB %{time_starttransfer}s\n" \
"https://你的域名/目标页"
打开 ai-view.html,去掉标签后正文若寥寥几字,说明AI拿到的是空壳;第二条命令把最常见的响应层失分项压成一行——重定向超过1跳、终态不是 200、TTFB偏高,任一项都要修。
响应层常见失分项
- 多跳重定向链:
http→https→加斜杠→最终页每跳都消耗抓取预算,部分爬虫中途放弃。规范到一跳内。 - soft 404:页面已无内容却返回
200,AI会把空页当正文收录。-w命令看不出它,要靠肉眼核ai-view.html是否真有正文。 - 高峰期5xx / 限流误伤:把AI爬虫当攻击流量限速,会让它长期标记你为“不稳定源”。
- TTFB过高:首字节响应慢,抓取预算被等待吃掉。控制服务器响应时间,关键页优先。
爬得到(二):robots.txt该不该放AI爬虫进来
结论先行:想被AI引用,就必须在robots.txt里显式放行检索类爬虫;训练类爬虫则按品牌策略取舍。 默认配置常常无意中把AI挡在门外,或把该放的和该挡的混为一谈。
放行检索类爬虫的最小配置:
User-agent: OAI-SearchBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: ClaudeBot
Allow: /
关键要分清两类爬虫:训练型(如 GPTBot、Bytespider)抓你的内容去训模型;检索型(如 OAI-SearchBot、ChatGPT-User、PerplexityBot)在用户提问时实时取你的页面来生成并标注引用。挡掉训练型不影响被推荐,挡掉检索型就等于放弃被AI实时引用的机会(官网迟迟不被引用的系统排查,见《AI不引用官网?四层诊断与修复清单》)。下面这张对照表,是规划放行策略前要先看清的底数:
| 爬虫 | 所属 | 主要用途 | 是否执行JS | robots.txt遵守 |
|---|---|---|---|---|
| GPTBot | OpenAI | 训练 | 否(抓原始HTML) | 遵守 |
| OAI-SearchBot / ChatGPT-User | OpenAI | 检索引用 | 否 | 遵守 |
| ClaudeBot | Anthropic | 训练 | 否 | 遵守(官方承诺) |
| PerplexityBot | Perplexity | 检索引用 | 否 | 名义遵守,曾被监测到绕过 |
| Bytespider | 字节(豆包相关) | 训练 | 否 | 历史上多次不严格遵守 |
| Googlebot | 收录 / AI概览 | 是(渲染JS) | 遵守 |
上表能力综合自 Cloudflare 2025年爬虫监测与各厂商官方文档,爬虫行为会持续变化,建议每季度复核。另需注意:DeepSeek、Kimi、通义千问等国内AI平台目前很少公开稳定的爬虫UA或robots token,对它们更多靠服务器日志比对和品牌监测来确认抓取,而非 robots.txt 精确放行。具体到每个UA放行还是封禁,要看品牌是否介意内容进训练集来定。
读得懂(一):渲染层——是HTML实体内容,还是JS空壳
这是网站AI可读性最大的隐形杀手:内容靠前端JS异步渲染,原始HTML是空的,AI抓到一个 <div id="root"></div> 就走了。 纯前端SPA站点尤其高发。
诊断只需两步:一是上一节那条 curl 抓原始HTML,肉眼看 ai-view.html 有没有正文;二是直接数去标签后的字符数,结果只有几十字基本就是空壳:
# 粗估 AI 去标签后能读到的正文字数;结果只有几十 = 基本是 JS 空壳
curl -A "GPTBot/1.1" -sL "https://你的域名/目标页" \
| sed 's/<[^>]*>//g' | tr -d '[:space:]' | wc -m
更直观的对比:浏览器“查看网页源代码”(不是开发者工具的Elements)里如果只有脚本和空容器,AI看到的也是这份空壳。

三种修复路径,按可读性从高到低:
- SSR服务端渲染:Next.js、Nuxt.js 在服务端把正文渲成完整HTML再返回,AI直接可读。注意确认用的是SSR/SSG,而非默认的客户端渲染。
- 预渲染(Prerender / SSG):构建期生成静态HTML,适合内容相对稳定的页面。
- 动态渲染:识别爬虫UA时返回HTML快照——临时方案,长期仍建议SSR。
一句话原则:关键正文必须存在于首屏返回的HTML里,不能只在JS执行后才出现。 改造后用上面两条命令复测,确认字符数和正文都到位。
读得懂(二):结构化层——让AI解析出实体与事实
让AI“读懂”不等于“读到”:它还要能从HTML里切出谁是谁、什么是什么。语义化标签和结构化数据,就是给解析器的明确信号。 一堆 <div> 和正确的 <article><h2><table> 在AI眼里差别巨大。
三件事按优先级做:
- 语义化HTML与标题层级:H1唯一,H2/H3逐级不跳级,正文用
<p>、列表用<ul>/<ol>、数据用<table>。标题要描述性,能预告段落内容。 - 结构化数据(Schema.org / JSON-LD):给品牌(Organization)、产品(Product)、文章(Article)、问答(FAQPage)打标注。Schema里的每个字段都必须在正文肉眼可见且一致,否则视为不可信。该标哪些字段、怎么逐项自测,见《品牌官网 AI优化检查清单》。
- 事实就近可证:关键数字、参数、定义紧贴来源或链接,方便AI核验后引用。
能引用:把正文切成AI能直接摘录的可引用块
AI引用的不是整篇文章,而是一个个能独立读懂的段落块。所以最后一层,是把正文切成“可引用块”。 这一步直接决定AI提及率和被引用的概率。
一个合格的可引用块满足三点:
- 答案先行:小节开头40–60字直接给出定义或结论,再展开论证,别让AI从铺垫里猜重点。
- 自包含:每个H2小节约130–170字能脱离上下文独立成立,定义用“X是…/X指…”句式。
- 适配摘录形态:定义类用短段落,步骤类用有序列表,对比与参数类用表格——本文每个小节和那张爬虫对照表,就是按这个标准写的。
把每个小节做成能脱离上下文、可被直接摘录的证据单元,正是《AI引用来源优化》里讲的“证据链”在页面层的落地:不是写得更长,而是切得更可摘。做完这一层,再用AI品牌监测工具(如 MaxAEO)持续观察哪些段落真被DeepSeek、豆包引用、引用了哪些来源,形成“优化—监测—再优化”的闭环(完整GEO落地流程见《GEO优化怎么做》)。
一份可落地的网站AI可读性工程清单(P0–P2)
按优先级修,别平均用力。P0是致命失分项,没修好其余都白搭;P1决定解析质量;P2是锦上添花。 拿这张表逐项打钩:
| 优先级 | 检查项 | 为什么 |
|---|---|---|
| P0 | 目标页返回200,重定向≤1跳 | 状态不对,AI直接拿不到 |
| P0 | 原始HTML含完整正文(非JS空壳) | 渲染层断裂,内容等于不存在 |
| P0 | robots.txt未误封检索类AI爬虫 | 挡掉检索爬虫=放弃被引用 |
| P0 | 无soft 404、高峰期无5xx/误限流 | 空页被收录、源被标记不稳定 |
| P1 | 语义化HTML+H1–H3正确层级 | 解析器据此切分结构 |
| P1 | 品牌/产品/FAQ上结构化数据并与正文一致 | 让AI解析出实体与事实 |
| P1 | 小节答案先行、自包含、可引用 | 决定被摘录的概率 |
| P1 | TTFB与首屏HTML体积可控 | 抓取预算用在内容上 |
| P2 | llms.txt索引核心页面 | 给AI一份精华目录 |
| P2 | canonical、sitemap、lastmod规范 | 减少重复与抓取浪费 |
| P2 | 图片alt、表格语义、关键信息列表化 | 提升可解析颗粒度 |
| P2 | 持续监测AI提及与引用来源 | 验证优化是否真生效 |

常见问题
网站AI可读性和传统SEO是一回事吗?
不是。SEO面向Googlebot,它会渲染JS、看重排名信号;网站AI可读性面向不渲染JS的AI爬虫,看重原始HTML里能否解析出可引用的事实。两者有重叠(语义化、结构化数据),但渲染层和可引用块是AI特有的考点。
屏蔽了Bytespider,豆包就不推荐我了吗?
要分清两类抓取。Bytespider 偏训练型,挡它主要影响内容进训练集,不直接等于检索时不被引用。但策略要清晰:如果希望被豆包等平台实时检索引用,就别误封对应的检索类UA。具体取舍要按平台逐个UA决定,并配合服务器日志确认到底是谁在抓。
怎么确认AI到底有没有抓到我的页面?
三个办法叠加:用本文的 curl 命令看AI拿到的原始HTML;查服务器访问日志里AI爬虫UA的命中记录;再用AI品牌监测工具看你的内容是否被实际提及和引用、引用了哪个URL。
用了Next.js / Nuxt 默认配置就够了吗?
不一定。这些框架支持SSR,但也能跑成纯客户端渲染(CSR)。务必用 curl 验证原始HTML里有正文,而不是假设“用了框架就安全”。
关于llms.txt——要不要做?
属于P2加分项,不是前置条件。它给AI一份精华页面目录,但救不了空壳HTML或被封的爬虫。先把P0/P1修好再考虑它。
改完多久AI能读到?
取决于各平台的重新抓取周期,通常数天到数周。训练型抓取生效更慢,检索型更新更快。别一次性判断成败,建议持续监测AI可见度与引用来源的变化趋势。