Prhub

#2400 docs: fix SEO gaps across the docs site

原始 PR 作者 nblintao 合并时间 2026-08-12 08:00 文件变更 15 提交数 1 评论 0 代码增减 +50 / -39

执行摘要

补齐 SEO 元数据,6 个页面纳入索引

PR body 明确指出:Mintlify 的 seo.indexing 默认 navigable,页面缺失于 docs.json 导航树就不会进 sitemap 和搜索结果,即使文件存在且其他页面链接它。五个 docs/ci/ 页面与 advanced/on-policy-distillation 都处于该状态,live sitemap 83 个 URL 无一包含;首页与 blog/index 完全没有 meta description,导致搜索结果和社交卡片缺描述。此外 docs.json 长期以 v1 schema 声明 v2 格式,使无效的顶层 url 键一直未被发现。

值得作为 Mintlify 文档站导航与 SEO 维护的模板 PR 快速精读,重点学习作者的方法:用 live sitemap 核对导航覆盖率、实测 canonical 优先级、把 docs.json 升级到 v2 schema 并规范化 seo 块。代码层面无风险,不需要深挖;若要精读,关注 docs/docs.json 的顶部 SEO 配置与导航新增组,以及 docs/README.md 新增的页面规范。

讨论亮点

该 PR 没有 review 评论,Zhichenzzz 直接 APPROVED,实质决策都记录在 PR body 中。作者对比 live 页面 后发现 Mintlify 已生成 per-page OG 卡,因此放弃自制全站 og:image——静态 logo 反而会替代更好的现状;同时主动搁置 font/background/logo.width 死配置与主色 #d55816 对比度 4.01:1 未达 WCAG AA 4.5:1 的问题,明确说明这两者会改变站点外观,超出本次 SEO 范围,值得单独处理。

实现拆解

  1. 导航与索引修复:在 docs/docs.json 的 Developer Guide 分组下新增 CI 子组,纳入 ci/contributor-guide、ci/00-stage、ci/01-label、ci/02-docker-build、ci/03-metric-history-gate 五个页面;在 Advanced Features 的 Performance 分组中加入 advanced/on-policy-distillation。同步删除这些页面中与 frontmatter title 重复的正文 H1(涉及 docs/ci/00-stage.md、01-label.md、02-docker-build.md、03-metric-history-gate.md、docs/ci/contributor-guide.md、docs/user-guide/agentic-chat-template.md 和 docs/advanced/on-policy-distillation.md),并为 on-policy-distillation 首次补上 frontmatter 的 title 与 description。这样 6 个此前仅存在于磁盘、链接可达但从未进 sitemap 的页面进入 Mintlify 索引(83 → 89)。
  2. 元数据补全:给 docs/index.md 首页与 docs/blog/index.md 增加顶层 description(此前完全没有,导致搜索结果与社交卡片无描述);重写 docs/developer/debug.md(原描述仅为“Useful tips for debugging.”)与 docs/models/gpt-oss/gpt-oss.md 的单薄描述;把 docs/ci/03-metric-history-gate.md、docs/ci/contributor-guide.md 等超过约 160 字符的 description 收紧到 SERP 安全长度。
  3. docs.json schema 对齐:将 $schema 从 v1 schema.json 指向 v2 docs.json(此前文件已是 v2 格式却声明 v1,导致无效键未被发现);删除站点级 canonical 配置(当前被 Mintlify 的 per-page canonical 覆盖,属潜在隐患);删除顶层非法的 url 键,将其移入 seo.organization 块并补充 name 与 sameAs,输出 JSON-LD Organization 数据;新增顶层 description 供 SEO/AEO 使用。
  4. 站内链接化与维护规范:把正文中按文件路径书写的引用(如 docs/ci/02-docker-build.md)改为站内链接,涉及 docs/developer/contributor-guide.md、docs/developer/versions.md、docs/ci/00-stage.md;在 docs/README.md 中明确“每个页面必须有 frontmatter title 和 description,description 会用作 meta description 且应控制在 160 字符内;不在导航树中的页面完全不会被索引”,把本次修复固化为贡献规范。
  5. 验证:mint validate(严格模式)与 mint broken-links 从 docs/ 运行均干净,导航覆盖核对为 89 文件 ↔ 89 条目、无孤儿页;作者还核实了 robots.txt、sitemap.xml、llms.txt、图片 alt 文本与重复标题均无问题。
文件 模块 状态 重要度
docs/docs.json 文档站 modified 4.46
docs/advanced/on-policy-distillation.md 高级特性 modified 2.39
docs/README.md 文档站 modified 2.4
docs/ci/00-stage.md CI 文档 modified 2.5
docs/developer/debug.md 开发者文档 modified 1.89

关键源码片段

docs/docs.json configuration

文档站唯一根配置:升级 $schema 到 v2、新增顶层 description、删除站点级 canonical、把 url 移入 seo.organization,并在导航树中补入 OPD 与 CI 组 6 个页面,是整个 SEO 修复的核心。

{
  // 从 v1 schema.json 升级到 v2 docs.json:此前文件已是 v2 格式却声明 v1,
  // 导致顶层无效键 url 从未被校验发现
  "$schema": "https://mintlify.com/docs.json",
  "name": "Miles",
  // 顶层 description:Mintlify 会把它用于 SEO 与 AEO,此前首页完全没有它
  "description": "Miles is an open-source reinforcement learning framework for large-scale LLM post-training, pairing SGLang rollout with Megatron-LM training at trillion-parameter scale.",
  "seo": {
    // 删除站点级 canonical:Mintlify 已为每页生成正确的 per-page canonical,
    // 旧配置是被覆盖的“哑配置”,但若优先级变化将变成全站指向 /docs 的隐患
    "metatags": {
      "og:site_name": "Miles Documentation"
    },
    // url 从顶层移入 organization:在 v2 schema 中顶层 url 不是合法键,
    // 这里它有了合法位置,并输出 JSON-LD Organization 结构化数据
    "organization": {
      "name": "RadixArk",
      "url": "https://www.radixark.com",
      "sameAs": ["https://github.com/radixark"]
    }
  },
  // 导航即索引:Mintlify 的 seo.indexing 默认 navigable,
  // 不在 navigation 里的页面不会进 sitemap,也不会被搜索到。
  // 以下截取与本次修复相关的导航片段
  "navigation": {
    "tabs": [
      {
        "tab": "Developer Guide",
        "groups": [
          {
            "group": "Developer Guide",
            "root": "developer/index",
            "pages": [
              "developer/experimental-features",
              {
                // 五个 CI 文档页整体纳入导航,它们与 advanced/on-policy-distillation
                // 一起使可索引页面数从 83 增至 89
                "group": "CI",
                "pages": [
                  "ci/contributor-guide",
                  "ci/00-stage",
                  "ci/01-label",
                  "ci/02-docker-build",
                  "ci/03-metric-history-gate"
                ],
                "expanded": false
              }
            ]
          }
        ]
      }
    ]
  }
}

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

docs.json 是 Mintlify 站点配置的单一根入口:导航结构或 schema 写错可能导致页面从侧边栏消失或构建失败,本次通过 mint validate 严格模式加 broken-links 双验证、89/89 覆盖核对,该风险已收敛。删除站点级 canonical 依赖“Mintlify 每页生成正确 canonical 并优先”的当前行为,若平台未来改变优先级,可能造成 canonical 指向缺失,需在后续上线检查中关注 。url 移入 seo.organization 依赖 v2 schema 对该块的支持,本地验证已通过,但 JSON-LD 实际渲染效果属于静态生成的平台行为,实测风险低。作者提到的 font、background、logo.width 死配置与主色对比度问题仍保留,属于后续站点质量问题。本次不触碰任何代码路径,不影响训练、推理等运行时功能。

用户侧:搜索引擎用户与爬虫首次可检索到 5 页 CI 文档和 OPD 文档;首页与 blog 在搜索结果和社交卡片上首次拥有描述文案。系统侧:文档站可索引页面从 83 增至 89,站内引用从裸文件路径改为更可靠的站内链接,降低链接失效风险;JSON-LD Organization 增强了品牌结构化数据。团队侧:docs/README.md 的强制规范(description 必填、导航树缺失即不索引)降低了未来新增页面的 SEO 回归概率;CI 文档归入 Developer Guide 子组后更易被开发者发现。影响面仅限 docs/ 目录 15 个文件,无源码、测试或部署改动。

docs.json 根配置调整 依赖 Mintlify 索引行为 SEO 回归依赖规范约束

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论