Engineering

Making Agent-Friendly Pages with Content Negotiation

来源: Vercel Blog | 发布日期: 2026-02-03 | 评分: ★★★★★ 5星

核心观点

Agent 浏览网页的方式与人类不同。它们不需要 CSS、客户端 JavaScript 或图片。所有这些标记都会填满它们的 context window,在不增加有用信息的情况下消耗 tokens。Agent 需要的是干净的、结构化的文本。

创新: Vercel 通过内容协商(content negotiation)让同一 URL 同时提供 markdown 给 Agent 和 HTML 给人类,无需重复内容或单独站点。

技术实现

1. HTTP Accept Header

Agent 使用 HTTP Accept header 指定它们偏好的格式。例如 Claude Code 发送:

Accept: text/markdown, text/html, */*

通过将 text/markdown 放在第一位,Agent 表明当有 markdown 时优先于 HTML。

2. 中间件路由

Vercel 中间件检查传入请求的 Accept header,检测这些偏好。当 markdown 被偏好时,将请求路由到 Next.js route handler,将 Contentful 富文本内容转换为 markdown。

3. Markdown Sitemap

实现了 markdown sitemap,以 Agent 优化的格式列出所有内容。Sitemap 包含每个内容的元数据,包括发布日期、内容类型,以及 HTML 和 markdown 版本的直接链接。

性能收益

指标 数据
典型博客文章(HTML) 500 KB
相同内容(Markdown) 2 KB
Payload 减少 99.6%

对于在 token 限制下运行的 Agent,较小的 payload 意味着它们每请求可以消费更多内容,将预算花在实际信息而不是标记上。

同步机制

使用 Next.js 16 remote cache 和共享 slugs 保持 HTML 和 markdown 版本同步。当内容在 Contentful 中更新时,两个版本同时刷新。

实践方法

尝试一下:发送 curl 请求

curl https://vercel.com/blog/self-driving-infrastructure -H "accept: text/markdown"

或者直接在 URL 末尾添加 .md:

https://vercel.com/blog/making-agent-friendly-pages-with-content-negotiation.md

← 返回索引