网站AI可读性工程清单:让AI爬得到、读得懂、能引用

网站AI可读性三层模型:爬得到、读得懂、能引用的工程分层示意图

网站AI可读性,指AI爬虫能否顺利抓取、正确解析并直接引用你网页内容的综合能力。 它不是单一指标,而是从HTTP响应、页面渲染、爬虫放行、结构化标注到可引用块的一条完整链路。任何一环断裂,DeepSeek、豆包、Kimi、通义千问这些AI平台拿到的,就只是一份残缺甚至空白的内容。

市面上多数“AI优化清单”谈的是内容与实体——写什么、怎么建权威。本文只谈工程层:服务器返回了什么、AI实际拿到了什么、解析器能不能切出可引用的事实。这是一份偏开发与技术SEO的诊断手册,目标是让你能亲手验证、亲手修。

网站AI可读性三层模型:爬得到、读得懂、能引用的工程分层示意图

为什么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 Google 收录 / 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看到的也是这份空壳。

用GPTBot的User-Agent抓取页面返回的原始HTML截图,正文区域为空的JS空壳示例

三种修复路径,按可读性从高到低:

  1. SSR服务端渲染:Next.js、Nuxt.js 在服务端把正文渲成完整HTML再返回,AI直接可读。注意确认用的是SSR/SSG,而非默认的客户端渲染。
  2. 预渲染(Prerender / SSG):构建期生成静态HTML,适合内容相对稳定的页面。
  3. 动态渲染:识别爬虫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可读性工程清单P0–P2优先级表格示意

常见问题

网站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可见度与引用来源的变化趋势。