这篇讲什么
任何有意义的站点变更——URL 重构、加语言、内容迁移——sitemap 都会悄悄漂移。draft 页混进来、lastmod 日期跟现实脱节、不同小节尾斜杠约定分裂、一周后 Search Console 开始抱怨。这篇用 Codex 作为聚焦审计员,对照 sitemap 源码和构建产物,给一份能抓常见失败的 prompt 模板,输出是你能直接动手处理的清单。
这篇适合谁看
任何有生成 sitemap.xml 的站长:Astro、Next.js、Hugo、带插件的 WordPress、自定义生成器。双语 / 多语言站点尤其受益——hreflang 和分语言 sitemap 把失败模式翻倍。
什么时候适合用
大改后:URL 重构、加语言、内容迁移、大批量内容剪枝、分类改名。即使没大改,每季度做一次也值得——漂移是默默累积的。
开始前准备
- 确认有构建步骤把 sitemap 产出到
dist/(或你的构建目录)。Codex 要读产物,不只读源。 - 标清生成 sitemap 的源文件。Astro 通常是
src/pages/sitemap-*.ts或astro-sitemap配置。Next.js 是app/sitemap.ts或next-sitemap.config.js。 - 提前定尾斜杠约定。约定分裂是索引混乱的第一大来源。
- 知道你的 draft / noindex 政策。draft 绝不能进 sitemap。
具体步骤
- 在仓库打开 Codex。重新 build 让
dist/sitemap-index.xml反映当前源。 - 发一条聚焦的 review prompt,写明文件和规则:
读 src/pages/sitemap-*.ts 与 dist/sitemap-index.xml(build 后)。
核验并报告 findings:
- 每个分类页每个语言都有。
- 每个文章 URL 都带尾斜杠(项目约定)。
- 无 draft URL(按 frontmatter `draft: false` 过滤)。
- 活跃页 lastmod 在最近 90 天内。
- en/zh 翻译对(同 translationKey)之间有 hreflang 对应。
- 没有 404 URL(随机抽 10 个 URL 验证源文件存在)。
每条 finding 都引源文件 + 行号,不要引 dist/。建议在源上改,不要建议改 dist。
- Codex 返回异常列表。每条都读;hreflang 启发式上会有少量误报。
- 在源上修——sitemap 生成逻辑、frontmatter、内容审计脚本——不要碰
dist/。dist 改了下次构建会被覆盖。 - 重 build,再用同一条 prompt 跑一次。findings 应当降到 0 或一组有文档化的有意例外。
- 源改动以清晰 message 提交:“fix(sitemap): drop drafts, normalize trailing slashes.”
第一次实操怎么跑
- 选最容易核验的分类:首页 + 一个熟悉的小节。
- 先把 prompt 限定到这几个 URL。证明 Codex 理解你的源结构,再做全量。
- 跑全量 prompt。数 finding。一年没扫过的站点首跑通常 10-30 条异常。
- 修前 3 条。重跑。看数字下降。剩余的当后续 ticket。
完成后检查
- 每条 finding 都引源文件、不是 dist URL?没引就说明 Codex 没完全理解构建链路。
- 建议的修法幂等吗——对已经正确的文件套用会不会破坏?会就重新精修建议。
- 在浏览器里随机打开 5 个 sitemap 里的 URL。404、重定向、语言错都是红旗。
- 下次抓取后在 Search Console 看 hreflang 对。Codex 抓结构问题,Search Console 验证搜索引擎行为。
怎么复用这套流程
- prompt 存成片段,项目相关路径用占位符。每季度、每次 URL 变更、每次内容清理后跑。
- CI 加一步:build sitemap + 跑简化版检查(文件数、draft 过滤、尾斜杠)。剩下的 Codex 抓。
- 维护
sitemap-conventions.md记录尾斜杠规则、draft 政策、hreflang 配置。Codex 会读。 - Astro / Next.js / CMS 大版本升级后重测——sitemap 生成常变。
建议的操作流程
build → 带完整 checklist 的 Codex prompt → triage finding → 在源上修 → 重 build → 复核 → 提交 → 提交到 Search Console。
容易踩的坑
- 直接改
dist/sitemap.xml。下次 build 覆盖你的修复。 - 不写尾斜杠约定。Codex 会报混用,但分不清哪边是正版。
- sitemap 含 draft / noindex 页。搜索引擎抓了再发现 404 或 noindex,就开始抱怨。
lastmod全部一样。所有 URL 同一个lastmod,抓取器就不再信这个字段。- 翻译内容缺 hreflang 对。Search Console 会标,Codex 能更早抓。
- 修完忘了去 Search Console 重新提交。Google 不会按你的节奏重新抓。
FAQ
- 几万 URL 怎么办?: 抽样。让 Codex 在随机 100 个 URL 上验证规则,报模式而不是逐条。
- Codex 能直接修 sitemap 吗?: 能——让它开一个源级修复的 PR。像任何 PR 一样审。
- robots.txt 和 meta noindex 呢?: 相邻议题。单独写一条审计 prompt,不要混进 sitemap 那条。
- CMS 插件生成的 sitemap 还能用吗?: 能,它审产物 + 审配置。源修在插件配置里,不在生成的 XML 里。