AI 智能体访问你的网站时真正看到什么

你打开自己的首页,看到的是一套设计:导航栏、一张大图、三栏文字、一张价格表,还有一条几个月前就不再注意的 Cookie 提示。

智能体打开同一个网址,这些一样也看不见。它拿到的是一串字节,丢掉其中绝大部分,把剩下的交给一个上下文窗口有限的模型。熬过这段路程的东西,就是助手描述你公司时的全部依据。

几乎没人真去看过那是什么。所以我们做了测量。

测量

2026 年 8 月 31 日,我们把十二个知名页面送进自家引擎:像普通智能体那样抓取页面,抽取可读内容,转换成 Markdown,再用 cl100k_base 在两端数 token。

页面 发送 抵达模型 剩余
wordpress.org/about 56,663 tok 159 tok 0.3%
vercel.com/docs 278,962 tok 905 tok 0.3%
stripe.com/docs 376,509 tok 1,042 tok 0.3%
cloudflare.com/learning/… 95,028 tok 631 tok 0.7%
nodejs.org/en/about 117,729 tok 1,190 tok 1.0%
shopify.com/pricing 410,515 tok 2,479 tok 0.6%
notion.com/pricing 172,136 tok 2,805 tok 1.6%
slack.com/pricing 294,980 tok 5,718 tok 1.9%
developer.mozilla.org/…/HTTP 59,350 tok 3,059 tok 5.2%
react.dev/learn 91,899 tok 3,804 tok 4.1%
atlassian.com/software/jira/pricing 379,636 tok 1 tok 0.0%
agentready.md 13,188 tok 627 tok 4.8%

没有一个页面交付的内容超过它所发送的 6%。中位数不到 1%。

这算不上什么丑闻。那些字节大多在做真正的工作——排版、样式、统计、交互——为带着浏览器来的读者服务。我们要说的是更窄的一件事:这些全都在入口处付了钱,而其中几乎没有一样是智能体来找的东西。

你的页面会经历的四件事

从请求到模型,你的页面要过四道门。每一道都会掉下点什么。

1. 抓取。 智能体请求这个网址。多数智能体的抓取器不执行 JavaScript:慢、贵,还多一层攻击面。所以它拿到的是你服务器的原始响应,不是浏览器组装出来的页面。

2. 抽取。 总得有东西判断这段 HTML 里哪部分是正文,哪部分是家具。这和 Firefox 阅读模式解决的是同一个问题,用的也是大家都在用的那个库。导航、页脚、Cookie 提示和侧边栏进垃圾桶。抽取器分辨不出跟侧边栏有何不同的东西,也一起进去。

3. 转换。 剩下的变成文本。标题、列表、表格、链接和代码块作为结构保留下来。类名、包裹用的 <div>、内联 SVG 和 data- 属性则不会。

4. 上下文窗口。 走到这一步的内容,此刻要和用户的问题、系统提示,也许还有另外九个页面抢位置。

对助手来说,你的内容只有穿过这四道门才算存在。

顺利时是什么样子

vercel.com/docs 把 278,962 个 token 压到 905 个,这 905 个是这么开头的:

## Ship anything with Vercel

Deploy your app on Vercel in three steps: install the CLI, add agent
support if you need it…

这是对“Vercel 是做什么的”一个干净的回答。读到它的模型可以引用、可以概括、可以标注出处。掉掉的那 99.7% 没有拿走它想要的任何东西。

不顺利时是什么样子

atlassian.com/software/jira/pricing 发送 1.37 MB,交付 一个 token

这个页面是个壳。HTML 里有 <div id="wac-root"></div>,后面跟着大约一兆字节的内嵌应用状态——价格、套餐名称、功能清单,全部以 JSON 的形式待在一个 <script> 里,等着 JavaScript 把页面搭出来。我们的抽取器老老实实地取出了 110 万个字符的 window.SSR_detailMetrics=Object.freeze({"getFeatureGateValues":…,而在剥掉脚本之后,剩下的是一个换行符。

也就是说:去问助手 Jira 多少钱,这个页面上没有任何东西能成为它答案的来源。不是因为 Atlassian 拦了谁——它没有——而是因为在浏览器运行它之前,这个页面里没有文字。

用无头浏览器抓同一个网址,得到的是 3,048 个 token,开头是 Transparent pricing for every team。内容是在的。只是不在响应里。智能体跑不跑浏览器,以及这要付出什么代价,就是全部差别。

stripe.com/docs 是同一形态更温和的版本:进去 1.28 MB,抽出来的内容是 1,057 个字符,开头是一条命令行示例,而不是一句关于 Stripe 是做什么的说明。

我们以为会找到、结果没有的东西

我们本以为这些站点里会有几个在边缘把智能体挡回去。于是每个都探测两次——一次作为普通浏览器,一次自称 OAI-SearchBot——然后比对。

十二个里没有一个区别对待机器人。 两次的状态码一样,跨越 Cloudflare、Vercel 和 CloudFront 都是如此。(cloudflare.com/learning 对我们两次探测都返回 403,那是一堵墙,但不是针对机器人的墙。)

拦截是人人都在谈的那种失败。在这个样本里它一次都没发生。发生的是更安静的事:门开着,屋子是空的。

看看你自己的页面

两条命令。你发送的量:

curl -s https://你的站点/页面 | wc -c

然后去读熬过抽取的那部分:把网址贴进检测工具,看 Markdown 面板,别看分数。要问的不是这个数字大不大,而是你正在读的这段文字,是不是你希望助手拿去引用来描述你的那段。

大多数人会惊讶两次:惊讶剩下的这么少,也惊讶留下来的竟是这几块。

简短版

  • 智能体看到的是你的原始 HTML,通常不执行 JavaScript,并且只留下大约 1%。
  • 如果你的内容靠 JavaScript 拼出来,这 1% 可能恰好等于零。
  • 被拦截很少见。内容为空很常见。
  • 解法不是少发标记,而是让文字确实出现在响应里。

检测你的网站 · AI 助手读得到你吗 · 向智能体提供 Markdown