基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
AIHT
内容
精选全部 AI 动态热点榜AI 日报收藏
分类
模型行业编程产品技术观点开源
更多
Agent 接入
返回首页开发者导航
AIHT
精选 / 资讯详情
8.0
热点
AI SCORE
技术实践2026-10-27 14:00

网站提供 Markdown,能否改善 AI 访问

dev.to · AI#Agent#Markdown#搜索优化
Editor brief · 编辑速览

文章区分 llms.txt、独立 Markdown 页面和基于 Accept 请求头的内容协商,解释各自服务的工具与代理。其核心判断是:改善代理读取文档的体验,不等于提高 Google 搜索或 AI 搜索曝光。

文章思维导图
Knowledge map
拖拽缩放
AI deep read

AI 深度解读

给 AI 提供 Markdown,能让文档更省 token,但未必能让网站获得更多搜索流量。原文最有价值的地方,是把这两件常被混在一起的事拆开:搜索引擎如何收录内容,和编程助手如何读取文档,解决的是不同问题。

如果你维护开发者文档、API 参考或 SDK 指南,这篇值得读。它给出了 Next.js 的接入思路,也划出了边界:格式可以变,内容不能偷偷加料。不过,示例代码距离生产可用还有几处需要补齐。

省 token 和增加搜索曝光,是两笔账

原文讨论了三个容易混淆的东西:作为文档入口的 /llms.txt、页面的 Markdown 版本,以及通过 Accept: text/markdown 请求这种版本的内容协商。内容协商,就是同一个地址根据客户端声明,返回不同格式。

先看搜索曝光。按原文转述,Google 的 Gary Illyes 在 2025 年 7 月表示,Google 不支持 llms.txt,也没有支持计划。2026 年 5 月的 Google 搜索 AI 功能指南进一步说明,面向这些功能的优化仍属于 SEO,不需要 llms.txt 或特殊机器可读格式。

原文引用的 2026 年日志研究称,GPTBot、OAI-SearchBot、ClaudeBot、PerplexityBot 很少请求 /llms.txt,主要还是抓取 HTML。SE Ranking 对约 30 万个域名的研究发现,采用率约为 10%,没有测出它与被引用之间的关联。

这些证据支持的是「尚无可测量的引用收益」,不能推成所有场景都绝无收益。

再看文档读取。Cloudflare 在 2026 年推出 Markdown for Agents:请求的 Accept 头包含 text/markdown 时,将 HTML 转为 Markdown,并通过 x-markdown-tokens 返回估算大小。它展示的一篇博客,从约 16,000 tokens 降到约 3,000 tokens。

降低上下文开销有具体案例,提高搜索排名则缺少证据。

原文还转述了 John Mueller 对面向 SEO 向机器人提供 Markdown 的批评。这与 Cloudflare 的产品并不冲突:搜索爬虫会解析 HTML,编程助手却需要在有限上下文中容纳文档。导航、页脚和重复结构占得越多,留给接口说明与代码的空间就越少。

什么样的网站值得提供 Markdown

最适合的是开发者文档。用户把链接交给 Cursor、Claude Code 或 ChatGPT,希望助手据此调用 API、解释参数或编写接入代码。清晰的 Markdown 可以减少页面杂项,让正文更容易进入上下文。

原文列举了 Stripe、Anthropic、Cloudflare、Vercel 提供 llms.txt 或 Markdown 文档的做法。这里的价值是方便工具读取,不能把这些公司的采用行为当成 SEO 效果证明。

另一类是 Agent 代表用户查询的产品目录或知识库。不过,原文没有提供这些场景的准确率、延迟或转化率对照,适用性仍要结合访问方式判断。

如果只是一个营销网站,希望多放一个文件就增加 Google 排名或 ChatGPT 引用,现有材料不足以支持投入。内容是否有用、页面能否正常抓取,优先级更高。

提供 Markdown 的适用场景与避免内容伪装的决策指南

同一份内容,怎样安全地返回两种格式

原文提醒的风险是内容伪装(cloaking):给机器人和普通用户展示不同内容。按其转述,Google 的相关垃圾内容政策从 2026 年 5 月起,也明确适用于 AI Overviews 和 AI Mode。

因此,Markdown 应从 MDX、CMS 或渲染后的 HTML 自动生成。正文可以换格式,但不能塞入网页里没有的额外承诺、关键词或「给 AI 的说明」。

Next.js 示例用下面这段中间件,把 .md 地址和明确请求 Markdown 的访问重写到接口:

// middleware.ts
import { NextResponse, type NextRequest } from "next/server";

export function middleware(req: NextRequest) {
  const { pathname } = req.nextUrl;
  if (!pathname.startsWith("/docs")) return NextResponse.next();

  const accept = req.headers.get("accept") ?? "";
  const wantsMarkdown =
    pathname.endsWith(".md") ||
    // Only when Markdown is explicitly listed. Browsers send text/html and */*.
    /(^|,)\s*text\/markdown/i.test(accept);

  if (!wantsMarkdown) return NextResponse.next();

  const slug = pathname.replace(/^\/docs\/?/, "").replace(/\.md$/, "") || "index";
  const url = req.nextUrl.clone();
  url.pathname = `/api/md/${slug}`;
  return NextResponse.rewrite(url);
}

export const config = { matcher: ["/docs/:path*"] };

关键是判断 wantsMarkdown 的那一行:浏览器常带 */*,不能据此就返回 Markdown。不过,这个正则没有完整处理 Accept 的权重与优先级,例如 text/markdown;q=0 仍会匹配,正式接入时需要完善。

接口部分使用 node:fs/promises 的 readFile 读取 content/docs 中的 .mdx 文件,以 gray-matter 去掉 front matter,再调用 stripJsx 移除组件标签。它接收的 params 类型是 Promise<{ slug: string[] }>,需要先 await params。

响应必须带上 Content-Type: text/markdown; charset=utf-8,并设置 Vary: Accept,让缓存区分两种格式。否则,浏览器可能拿到 Markdown,Agent 也可能收到 HTML。

搜索归属则保留给 HTML:示例使用 Link: <https://example.com/page>; rel="canonical";原文也提供了通过 X-Robots-Tag: noindex 排除 .md 搜索结果的选项。HTML 页面通过 generateMetadata 中的 alternates.types 声明替代格式,对应 rel="alternate"。示例缓存时间是 Cache-Control: public, max-age=3600。

最后用原文命令检查响应:

curl -s https://example.com/docs/auth | head -c 200                           # HTML
curl -s -H "Accept: text/markdown" https://example.com/docs/auth | head -20  # Markdown
curl -sI -H "Accept: text/markdown" https://example.com/docs/auth | grep -i -E "content-type|vary|link"

重点检查第三行的 content-type|vary|link,同时确认前两行返回的正文确实对应同一篇文档。

我的判断

我赞成按读取需求提供 Markdown,也赞成不按 User-Agent 猜测访问者身份。客户端声明需要什么格式,服务端就按协议处理,行为更容易理解和验证。

但原文的「Markdown 对 Google 排名没有作用」说得偏满。它展示的材料主要证明 Google 不要求这种格式,以及研究未发现引用关联;没有隔离其他变量的完整实验。对编程助手「帮助很大」的判断,也主要来自 token 缩减案例,没有答案质量的对照数据。

代码更适合当接入草图。stripJsx 用正则删除组件标签,可能把组件通过属性或运行逻辑生成的关键信息一起丢掉;文件路径只用 startsWith(DOCS_DIR) 检查,也不足以严谨验证目录边界。原文没有说明 Next.js 版本和部署文件打包方式,不能默认复制后就能上线。

Cloudflare 托管转换可以减少维护工作,但依赖套餐是否包含 Markdown for Agents。直接从源文件生成更便于控制文档结构,代价是自行处理组件语义。两种方式没有质量对照,应拿自己的文档验证。

能拿来做什么

  • 如果你维护 API 或 SDK 文档,先选认证、错误处理等高频页面生成 Markdown,检查参数、代码和组件内容是否完整,再让编程助手完成同一个接入任务,对比读取开销与答案质量。
  • 如果你准备接入 Next.js,先完善 Accept 权重解析、目录边界校验和 MDX 转换,再检查 CDN 是否正确处理 Vary: Accept。
  • 如果你已有文档导航配置,可以在构建时生成简短 llms.txt,列出认证、支付、Webhook 和更新日志入口,避免人工维护导致链接过期。
  • 如果你的目标是增加搜索曝光,优先检查内容质量与可抓取性;把 Markdown 的投入记作文档读取体验改进,不要承诺尚未验证的排名收益。
Original source

本文由 AI 通读原文后重新编写,观点部分为站内判断,细节以原文为准,来源 dev.to · AI,原文版权归原作者所有。

阅读原文
上一篇
空白环境复测:n8n 显示成功也可能失效
下一篇
中间证书弱私钥事件暴露密钥生成缺陷

资讯速览

dev.to · AI · 2026-10-27 14:00

AI 评分 8.0 / 10

相关标签

#Agent#Markdown#搜索优化

继续阅读

  • LLM 请求重试:先分错误,再管预算
  • 空白环境复测:n8n 显示成功也可能失效
  • 中间证书弱私钥事件暴露密钥生成缺陷
  • 金融 Agent 如何落实最小权限
  • 端侧模型上线,难在版本与分发生命周期