我们有各种方法可以让 AI 能够发现我们的内容,并确保其易于以纯文本格式进行消耗。
该领域的主要提案是 llms.txt ↗,它为包含您所有页面的 Markdown 列表提供了一条众所周知的路径。
我们已按如下方式实现 llms.txt 和 llms-full.txt:
llms.txt— 所有 Cloudflare 文档产品的目录,按类别分组。每个条目都链接到该产品自己的llms.txt(例如/workers/llms.txt),其中以 Markdown 格式列出了该产品的所有页面。llms-full.txt— 单个文件中所有 Cloudflare 文档的完整内容,旨在用于离线索引、批量向量化或大上下文模型。我们还提供基于每个产品的llms-full.txt文件,例如/workers/llms-full.txt。
要获取单个文档页面的 Markdown 版本,您可以:
-
发送请求到
/$page/index.md— 在任何页面的末尾添加/index.md以获取 Markdown 版本。例如,/docs-for-agents/index.md。 -
发送带有
Accept: text/markdown标头的请求到任何页面 — 使用 Markdown for Agents 在网络层将页面转换为 Markdown。例如:curl "https://developers.cloudflare.com/docs-for-agents/" \ --header "Accept: text/markdown"
这两种方法都会返回相同的 Markdown 输出,由 Markdown for Agents 提供支持。
在此页面的右上角,您将看到一个 Page options 按钮,您可以在其中将当前页面复制为 Markdown,以提供给您选择的 LLM。

HTML 很容易被解析——毕竟,浏览器必须解析它才能决定如何渲染您现在正在阅读的页面——但它往往不是很具有 可移植性。这种限制在 AI 环境中尤其痛苦,因为所有额外的展示信息都会消耗额外的 token。
例如,对于我们的 Tabs,在单击选项卡本身之前,面板是隐藏的:
如果我们通过像 turndown ↗ 这样的解决方案来运行该组件生成的 HTML:
- [One](#tab-panel-6)
- [Two](#tab-panel-7)
One Content
Two Content对通常由 JavaScript 处理的面板 id 的引用是可见的,但不起作用。
主要答案或核心说明应始终出现在主要内容流中,而不应仅存在于选项卡或可折叠区域内。
只有在阐述了通用概念之后,才能针对特定平台的变化(例如,仪表板对比 API 对比 Terraform)使用选项卡。使用 Details 提供补充信息,而不是用于主要答案。
为了解决这个问题,我们使用 Markdown for Agents,它在 Cloudflare 网络层将 HTML 转换为 Markdown。它处理:
- 删除非内容标签(
script、style、link等) - 将诸如
Tabs的交互式组件转换为标准无序列表 - 将代码块 HTML 转换为干净的 Markdown 围栏代码块
以前一节中的 Tabs 示例为例,Markdown for Agents 将为我们提供一个普通的无序列表,其中内容已正确与给定的列表项关联:
- One
One Content
- Two
Two Content您可以通过两种方式将任何页面请求为 Markdown:
-
发送带有
Accept: text/markdown头的请求:curl "https://developers.cloudflare.com/docs-for-agents/" \ --header "Accept: text/markdown" -
在 URL 后追加
index.md—— 例如,/docs-for-agents/index.md
大多数 AI 定价基于输入和输出 token,而 Markdown 大大减少了所需的输入 token 量。
例如,让我们使用 OpenAI 的 tokenizer ↗ 来查看 Workers 快速入门所需的 token 数量:
- HTML: 15,229 个 token
- Markdown: 2,110 个 token(比 HTML 少 7.22 倍)
当向 AI 提供我们的内容时,我们可以看到输入 token 成本在现实世界中节省了约 7 倍。
除了使我们的内容 可被发现 的工作之外,为 AI 制作内容的大多数其他工作都与 SEO 或内容最佳实践相一致,例如:
- 使用语义化 HTML
- 添加标题
- 减少命名不一致或过时的信息
有关更多详细信息,请参阅 Google 的 AI 指南 ↗。
我们所做的唯一 特殊 工作是向特定类型的内容添加 noindex 指令 ↗(通过 frontmatter 标签)。
<meta name="robots" content="noindex">例如,我们有某些页面讨论已弃用的功能,例如 Wrangler 1。虽然在技术上是准确的,但已不再建议遵循,并且可能会混淆 AI 输出。
目前尚不清楚是否所有的 AI 爬虫都会遵守这些指令,但这是我们将其排除在其索引之外的唯一信号(并且我们不想为单个页面设置 WAF 规则)。