使用 Accept Header 为 LLMs 提供 Markdown 服务:高效内容协商实现
通过 HTTP Accept header 实现内容协商,直接向 LLMs 提供 Markdown 格式,绕过 HTML 解析,实现 token 节省和语义优化。包括构建转换、服务器配置和监控要点。
在 AI 代理和大型语言模型(LLMs)日益普及的今天,网站内容交付方式正面临变革。传统的 HTML 格式虽适合人类浏览器,但对 LLMs 而言,却引入了大量无用标记和样式,导致上下文 token 消耗激增。一种高效解决方案是通过 HTTP Accept header 进行内容协商,当请求指定 text/plain 或 text/markdown 时,直接提供 Markdown 版本,从而实现语义丰富的低成本内容传输。这种方法不仅减少了 LLM 的解析负担,还提升了生成式引擎优化(GEO),使网站更易被 AI 助手发现和引用。
核心观点在于,内容协商能将 LLM 内容消费效率提升 10 倍以上。根据 Bun 团队的实践,这种优化可显著降低 token 使用成本,尤其对前沿实验室按 token 计费的场景尤为关键。证据显示,Markdown 版本去除 HTML 噪声后,LLM 可直接提取核心语义,避免了复杂解析逻辑的开销。例如,在静态站点生成器如 Astro 中,构建时转换 HTML 为 Markdown,仅需少量脚本即可实现双格式并存。
要落地这一方案,首先需在构建管道中集成转换工具。推荐使用 @wcj/html-to-markdown-cli,该 CLI 可批量处理 dist 目录下的 HTML 文件,生成对应的 Markdown 版本。以下是关键参数配置:在 package.json 的 scripts 部分添加 post-build 步骤,如 "build": "astro build && bash convert-to-markdown.sh",其中脚本需处理目录结构,确保 /dist/markdown/{path}.md 与 HTML 对应。转换阈值:仅针对内容页(排除 API 或静态资产),并设置输出 charset=utf-8 以支持多语言。潜在风险包括转换不完整,如复杂表格可能丢失嵌套结构,此时可回滚至 HTML 并在 LLM 提示中指定解析指令。
服务器端实现是另一关键环节。以 Cloudflare Workers 为例,通过 wrangler.jsonc 绑定 ASSETS 目录,并在 worker.js 中解析 Accept header。代码逻辑:拆分 acceptTypes,优先级检查 text/plain 或 text/markdown 是否先于 text/html,若是则从 /markdown 路径 fetch 文件,否则 fallback 到 /html。落地参数包括:根路径(/)特殊处理,返回 sitemap.xml 以助 agents 发现链接;Content-Type 设置为 "text/plain; charset=utf-8";缓存策略 Cache-Control: public, max-age=3600(1 小时),平衡新鲜度和性能。错误处理:若 Markdown 不存在,fallback 到 HTML 并日志记录,监控指标如 fallback 率 < 5% 表示优化成功。
对于传统代理如 Caddy,配置更简洁。在 Caddyfile 中定义 @markdown matcher 检查 header Accept 包含 text/markdown 或 text/plain 且无 text/html 优先,则 rewrite 到 /markdown{path}/index.md 并 file_server。清单要点:1. 确保路径一致性,如非 .md 结尾自动追加 index.md;2. handle_errors 块中优先 404.html;3. 监控日志中追踪 Accept header 分布,目标 LLM 请求占比 > 10%。Nginx 用户可类似使用 if 条件模块,但需注意正则匹配效率。
进一步优化涉及监控与回滚策略。部署后,使用工具如 Cloudflare Analytics 追踪 Accept header 使用率和 token 节省估算(基于页面长度对比)。参数阈值:若 Markdown 请求 > 20%,视为成功;否则调整转换质量。风险限制:双文件维护增加存储 20-30%,可通过 CDN 压缩缓解;兼容性问题如旧 LLM 不支持 header 时,fallback 机制确保无中断。实际案例中,此方案已在个人博客和 Patron.com 上线,效果显著:LLM 代理访问时 token 消耗降至原 1/10,SEO 排名因 agents 流量提升而改善。
总体而言,这种 Accept header 协商机制是 AI 集成 API 的必备实践。它从观点到证据,再到可操作清单,提供了一条清晰路径,帮助开发者构建 LLM 友好的 web 服务。未来,随着 agents 普及,此类优化将成为标准,推动 web 向语义化演进。(字数:1028)
引用:
- Nicholas Khami 在其博客中指出:“Agents don’t need to see websites with markup and styling; anything other than plain Markdown is just wasted money spent on context tokens.”
- Bun 团队报告显示,Markdown 服务可实现 10x token 减少。