开发者验证发现 llms.txt 只有被主动抓取时才有用,而实际上主流 AI 爬虫几乎不主动请求此文件;Per-page Markdown 副本反而在已有流量中更实用。
前一阵子,我在这个网站上添加了两样东西,让 AI 能够读取它的内容。每个页面帖子的 Markdown 副本,以及根目录下的一个 llms.txt 文件——一个指向所有帖子的纯文本索引。大致来说,这就是你被告知如果想让自己的文章在有人向聊天机器人提问时能够被找到该做的事。我做了,感觉自己有点效率,然后就继续干别的了。
然后我突然意识到,我根本不知道到底有没有任何东西来请求过这两个文件。每个写这个话题的人都推荐这么做。但几乎没人会在之后去检查一下自己的服务器。于是我去查了。
这里有一个我之前不知道的区别:这两个文件的回报方向是相反的。
Markdown 副本只在某个东西已经找到了我的某一篇文章时才有意义——无论是人粘贴链接,还是爬虫跟随链接。这时候它交出一份干净的文本副本,去掉了导航栏和 Mac 风格的外壳。这是一种为已经到达的访客提供的便利。
llms.txt 索引则相反。除非爬虫自己决定去 /llms.txt 查找文件并跟随里面的列表,否则它毫无作用。文件可以完美无缺却依然纹丝不动,因为它只在有东西来主动寻找它的时候才会有回报。
所以:一个是服务已经找到我的人,另一个则必须先被找到。同一下午的工作,概率却天差地别——我一直把它们当作同一个策略来归档。
于是我开始挖掘这两个文件中到底是哪一个真正起了作用,首先发现的就是 Google 自相矛盾。
它自己的指导明确说了,Google Search 不使用 llms.txt,你不需要它来出现在它的 AI 功能中。人们引用这句话就停在那里了。但看看 Google 自身发布的内容:它的每个开发者文档页面都有一个 Markdown 副本(给 docs URL 加上 .md.txt 就能返回干净的文本),而整个站点上没有任何 llms.txt。它建了副本却跳过了索引。
这和我无意中做出的选择一样,只是 Google 是有意为之,运行着网络上最大的爬虫。那一刻,这个区别就不再只是猜测了。
不过值得公平地看待范围。Google 那句话是针对 Google Search 说的。它并不是说这个文件在所有地方都没用,只是说自己的爬虫会忽略它。很多文章把这一点简化成"llms.txt 已死",但这是任何人都无法证实的事情。
我在两个文件前面加了一个小日志。每次有东西获取 /llms.txt 或某个 Markdown 副本时,它就会记下是谁请求的:user-agent、路径,不涉及访客身份信息。它已经运行了大约八天。
以下是返回的结果。
Markdown 副本被声称是真实 AI 爬虫的东西访问了三十次。其中大部分是 Meta 的爬虫,二十四次。Amazon 的机器人三次,Anthropic 的 ClaudeBot 两次,OpenAI 的 GPTBot 一次。大致相当的数量是普通浏览器访问,大约二十几次,和 Meta 差不多,另外还有一次搜索引擎。
在同一时间窗口内,llms.txt 索引被访问了四次。其中两次是侦察扫描器,那种在每个网站上探测已知文件名的家伙。另外两次是使用浏览器的人,几乎可以确定是我和收到链接的人。真正来请求的 AI 爬虫:零次。
我能找到的唯一另一份日志研究,是在另一个网站上做的,报告了同样的 llms.txt 无访问记录。它没有把两个文件并列运行,所以看不到画面的另一半:那些跳过索引的爬虫反而在读取页面。
这是一这个小站点八天的数据。它不是互联网的定律。更大的站点、更长的时间窗口或不同的爬虫组合都可能轻易讲述另一个故事。
另外,user-agent 永远只是一个声明。任何东西都可以在头部加上 GPTBot,我的日志相信它被告知的内容。这些计数也不是防篡改的:没有什么能阻止一个无聊的人猛敲这个文件来扭曲数字。我的日志里没有任何看起来是伪造的,模式平淡而稳定,没有可疑的峰值,但我无法证明一个否定,所以与其让表格暗示比它实际获得的更多,我宁愿说出来。
而且"AI 爬虫读取了 Markdown 副本"在很大程度上只是一家公司的数据。这三十次访问中有二十四是 Meta。把它去掉,剩下的就稀薄到只剩几次访问了。这是一个信号,不是一场狂奔。而且值得注意的是哪些爬虫根本没有出现:那些按需爬虫——因为有人刚问了 ChatGPT 或 Perplexity 某个问题而去获取页面的那种。我日志里的所有东西都是批量爬虫,按自己的计划在网络上工作。没有任何东西是因为一个人正在对话中讨论我的网站而到达的——这可能只是意味着根本没有这样的人。
我确实防止了一种故障模式:一个悄然坏掉的日志看起来恰恰就是"从来没有人请求过"。所以一个定时任务每天故意获取一次这个文件,在日志中留下一个心跳。心跳每天都出现。无论我的日志错过了什么,在爬虫远离的日子里它都没有睡着。
如果你想让你的网站对 AI 更友好,就提供 Markdown 副本。它成本低廉,真正的 Agent 会去获取,代价只是你已写内容的一个稍干净的副本。
llms.txt 索引是一个对未来的一次廉价赌注,而那个未来还没有在我的网站上出现。我保留着我的那个;它没有害处,也许哪天会有用。但我已经不再把它当作和 Markdown 副本同一级别的动作了,也不再信任我从未测量过的推荐。测量花了一个下午。奇怪的是,这一步几乎从来没有人写过。