跳转到内容
搜索文档

Markdown for Agents(面向 Agent 的 Markdown)

最后更新 查看 MarkdownAgent 设置

什么是 Markdown for Agents

Markdown 已迅速成为 Agent 和 AI 系统的通用语言。该格式的明确结构使其非常适合 AI 处理,最终获得更好的结果,同时最小化 token 浪费。

Cloudflare 的网络支持在源站进行实时内容转换,对于使用内容协商 ↗标头且启用了 Markdown for Agents 的 zone,当 AI 系统从任何使用 Cloudflare 的网站请求页面时,它们可以在请求中表达 text/markdown 偏好,我们的网络会在可能的情况下自动高效地将 HTML 转换为 Markdown。

在我们的博客公告 ↗中阅读更多信息。

如何使用

要从启用了 Markdown for Agents 的 zone 获取任何页面的 Markdown 版本,客户端需要添加带有 text/markdown 作为选项之一的 Accept 协商标头。Cloudflare 会检测到此请求,从源站获取原始 HTML 版本,并在提供给客户端之前将其转换为 Markdown。

以下是一个带有 Accept 协商标头、从我们的开发者文档请求此页面的 curl 示例:

curl https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/ \
  -H "Accept: text/markdown"

如果您使用 Workers 构建 AI Agent,可以使用 TypeScript:

const r = await fetch(
	`https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/`,
	{
		headers: {
			Accept: "text/markdown",
		},
	},
);
const tokenCount = r.headers.get("x-markdown-tokens");
const originalTokenCount = r.headers.get("x-original-tokens");
const markdown = await r.text();
const r = await fetch(
	`https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/`,
	{
		headers: {
			Accept: "text/markdown",
		},
	},
);
const tokenCount = r.headers.get("x-markdown-tokens");
const originalTokenCount = r.headers.get("x-original-tokens");
const markdown = await r.text();

此请求的响应现在以 markdown 格式呈现:

HTTP/2 200
date: Wed, 11 Feb 2026 11:44:48 GMT
content-type: text/markdown; charset=utf-8
content-length: 2899
vary: accept
cache-control: public, max-age=3600
strict-transport-security: max-age=63072000; includeSubDomains
x-markdown-tokens: 725
x-original-tokens: 12345
content-signal: ai-train=yes, search=yes, ai-input=yes

---
title: Markdown for Agents · Cloudflare Agents docs
---

## 什么是 Markdown for Agents

Markdown has quickly become the lingua franca for agents and AI systems
as a whole. The format’s explicit structure makes it ideal for AI processing,
ultimately resulting in better results while minimizing token waste.
...

响应标头

Markdown for Agents 在转换后的响应中保留源站响应的标头,因此与安全性和缓存相关的标头在转换后仍然保留。这包括 Strict-Transport-Security(HSTS)、Content-Security-Policy(CSP)、X-Frame-Options、Set-Cookie、CORS 标头(例如 Access-Control-Allow-Origin)以及缓存标头(Cache-Control、Expires、Age)等标头。

由于正文被替换为转换后的 Markdown,将应用以下更改:

  • Content-Type 设置为 text/markdown; charset=utf-8。
  • Vary 包含 Accept(保留源站已声明的任何 Vary 维度),以便缓存为 Markdown 和 HTML 存储单独的变体。
  • Content-Length 重新计算以匹配 Markdown 响应的大小。
  • 描述原始正文的标头被移除,因为它们不再与转换后的响应匹配:Content-Encoding、Content-Range、Transfer-Encoding、ETag 和 Last-Modified。ETag 和 Last-Modified 被丢弃,因为无法对转换后的响应满足条件请求(If-None-Match、If-Modified-Since)。

Markdown for Agents 还会添加下面描述的 token 计数标头。

Token 计数标头

请注意,我们在转换后的响应中包含 token 计数标头。x-markdown-tokens 表示 Markdown 文档中的估计 token 数,x-original-tokens 表示转换前原始 HTML 文档中的估计 token 数。您可以在流程中使用这些值,例如计算上下文窗口大小、估计 Markdown 转换的 token 节省,或决定分块策略。

Content Signals Policy

Content Signals ↗ 是一个框架,允许任何人在访问内容后表达其内容使用偏好。

如果您的源站已设置 content-signal 标头,Markdown for Agents 会在转换后的响应中保留该值——源站的政策具有权威性。这使您可以通过在源站设置 content-signal 标头来定义自定义 Content Signal 政策。

当源站响应不包含 content-signal 标头时,Markdown for Agents 会添加默认的 Content-Signal: ai-train=yes, search=yes, ai-input=yes,表示内容可用于 AI 训练、搜索结果和 AI 输入(包括 Agent 用途)。

输出格式

Markdown for Agents 返回具有一致、可预测结构的 Markdown 文档,以便 AI 系统可以依赖它而无需针对每个站点编写解析逻辑。响应始终遵循以下布局:

  1. YAML frontmatter(YAML 前置元数据),包含从页面 <meta> 标签提取的元数据。仅当存在至少一个受支持的 meta 标签时才输出。
  2. 正文 Markdown,从文档正文转换。非内容元素(如页眉、页脚、导航、脚本和样式)在预处理期间被剥离。有关被移除元素的完整列表,请参阅 Workers AI Markdown Conversion 文档中的 HTML 预处理。
  3. JSON-LD 结构化数据,在文档末尾保留为围栏 json 代码块。仅当源 HTML 包含 JSON-LD 时才输出。

YAML 前置元数据

当源 HTML 包含受支持的 <meta> 标签时,Markdown for Agents 会在响应前添加 YAML 前置元数据块。该块使用以下字段:

字段 源 <meta> 标签
title <meta name="title">,回退到 <meta property="og:title">
description <meta name="description">,回退到 <meta property="og:description">
image <meta property="og:image">

仅输出有值的字段。如果源 HTML 不包含任何受支持的 meta 标签,则完全省略 frontmatter 块。

对于 title 和 description,标准 <meta name="..."> 形式始终优先于 Open Graph <meta property="og:..."> 形式,无论它们在 HTML 中的顺序如何。仅当标准形式缺失时才使用 Open Graph 值作为回退。

示例输出:

---
title: My Page Title
description: A short summary of the page.
image: https://example.com/cover.png
---

# Page heading

...

JSON-LD

JSON-LD ↗ 是一种结构化数据格式,搜索引擎和 AI 系统使用它来解读页面的语义内容。Markdown for Agents 通过在转换后的 Markdown 末尾的单个围栏 json 代码块中附加,保留源 HTML 中任何 <script type="application/ld+json"> 块。

如果源 HTML 包含多个 JSON-LD 脚本,它们全部连接在同一代码块内,每个占一行。

JSON-LD 是输出中唯一保留的 <script> 内容——所有其他 <script> 和 <style> 内容在 HTML 预处理期间被剥离。

示例输出:

... main markdown content ...

```json
{
	"@context": "https://schema.org",
	"@type": "Article",
	"headline": "Article Title",
	"author": { "@type": "Person", "name": "Jane Doe" }
}
```

如何启用

要在仪表板中为您的 zone 启用 Markdown for Agents:

  1. 登录 Cloudflare 仪表板 ↗ 并选择您的账户(您需要 Pro 或 Business 计划)。
  2. 选择要配置的 zone。
  3. 访问 AI Crawl Control ↗ 部分。
  4. 启用 Markdown for Agents(面向代理的 Markdown)。

为特定子域或路径启用

要为特定子域或路径(而非整个 zone)启用 Markdown for Agents,请创建配置规则:

  1. 登录 Cloudflare 仪表板 ↗ 并选择您的账户。
  2. 选择要配置的 zone。
  3. 前往 Rules(规则) > Overview(概览),选择 Create rule(创建规则) > Configuration Rules(配置规则)。
  4. 在 When incoming requests match 下,构建表达式以匹配您的子域(例如 http.host eq "docs.example.com")或路径。
  5. 在 Then the settings are(然后设置为) 下,选择 Add setting(添加设置) > Markdown for Agents(面向代理的 Markdown),并将其设置为 On(开启)。
  6. 选择 Deploy(部署)。

要使用 API 为您的 zone 启用 Markdown for Agents,请向 Cloudflare API 的 /client/v4/zones/{zone_tag}/settings/content_converter 发送 PATCH 请求,载荷为 {"value": "on"}。

您需要创建一个启用了 Zone Settings 编辑权限的 API 令牌。

示例:

Enable Markdown for Agentsbash
curl -X PATCH 'https://api.cloudflare.com/client/v4/zones/{zone_tag}/settings/content_converter' \
  --header 'Content-Type: application/json' \
  --header "Authorization: Bearer {api_token}" --data-raw '{"value": "on"}'

为特定子域或路径启用

要为特定子域或路径(而非整个 zone)启用 Markdown for Agents,请创建配置规则:

Enable Markdown for Agents for a subdomainbash
curl --request PUT \
  --url "https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/phases/http_config_settings/entrypoint" \
  --header "Authorization: Bearer {api_token}" \
  --header "Content-Type: application/json" \
  --data '{
    "rules": [{
      "expression": "http.host eq \"docs.example.com\"",
      "action": "set_config",
      "action_parameters": {
        "content_converter": true
      },
      "description": "Enable Markdown for Agents for docs subdomain"
    }]
  }'

您还可以使用基于路径的表达式,例如 starts_with(http.request.uri.path, "/blog/")。有关构建表达式的更多信息,请参阅规则语言。

如果您正在使用 Cloudflare for SaaS,并希望为自定义主机名启用 Markdown for Agents,您有两个选项:

为所有自定义主机名启用

要为 SaaS zone 上的所有自定义主机名启用 Markdown for Agents:

  1. 登录 Cloudflare 仪表板 ↗ 并选择您的账户。
  2. 选择您的 SaaS zone。
  3. 找到 Quick Actions。
  4. 切换 Markdown for Agents(面向代理的 Markdown) 按钮以启用。

为特定自定义主机名启用

为特定自定义主机名启用 Markdown for Agents 需要具有自定义元数据访问权限的高级订阅。

步骤 1:在自定义主机名上设置自定义元数据

通过 API 创建或更新自定义主机名时,将 content_converter 添加到 custom_metadata 对象:

curl --request PATCH \
  --url "https://api.cloudflare.com/client/v4/zones/{zone_id}/custom_hostnames/{custom_hostname_id}" \
  --header "Authorization: Bearer {api_token}" \
  --header "Content-Type: application/json" \
  --data '{
    "custom_metadata": {
      "content_converter": "enabled"
    }
  }'

步骤 2:创建配置规则

在 SaaS zone 上创建配置规则,匹配具有该元数据的自定义主机名并启用内容转换:

curl --request PUT \
  --url "https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/phases/http_config_settings/entrypoint" \
  --header "Authorization: Bearer {api_token}" \
  --header "Content-Type: application/json" \
  --data '{
    "rules": [{
      "expression": "lookup_json_string(cf.hostname.metadata, \"content_converter\") eq \"enabled\"",
      "action": "set_config",
      "action_parameters": {
        "content_converter": true
      },
      "description": "Enable content converter for opted-in custom hostnames"
    }]
  }'

这将为设置了 content_converter 自定义元数据标签的自定义主机名启用该功能。

可用性与定价

Markdown for Agents 向 Pro、Business 和 Enterprise 计划以及 SSL for SaaS 客户提供,免费使用。

在 Cloudflare 上试用

我们已在开发者文档和博客 ↗中启用此功能,邀请所有 AI 爬虫和 Agent 使用 markdown 而非 HTML 消费我们的内容。

curl https://blog.cloudflare.com/markdown-for-agents/ \
  -H "Accept: text/markdown"

限制

  • 我们仅从 HTML 转换,其他类型的文档可能在未来包含。
  • 源站响应不能超过 2 MB(2,097,152 字节)。

其他 Markdown 转换 API

如果您正在构建需要在 Cloudflare 外部进行任意文档转换的 AI 系统,或内容源不提供 Markdown for Agents,我们提供其他方式为您的应用将文档转换为 Markdown:

  • Workers AI AI.toMarkdown() 支持多种文档类型和摘要。
  • Browser Run /markdown 端点支持 markdown 转换,如果您需要在转换前在真实浏览器中渲染动态页面或应用。

这篇文档对您有帮助吗?