AI 审计 hreflang:30 分钟揪出双语站 SEO 隐患

用大模型审计多语言站的 hreflang:缺回链、错代码、slug 不匹配。真实 prompt、真实工具,2026 年 6 月。

双语站的 hreflang 一旦写错,排名信号会被悄悄漏掉:translationKey 拼错、单向链接、缺自指,还有最经典的 zhzh-CN 不一致。Google 的规则很直接——两个页面如果不互相指向,整条标注就直接被忽略(Google Search Central)。这篇教程用大模型去做你本来要人肉一行行盯的”上千行模式匹配”,再用一个免费的专用 hreflang 测试工具复核结果。产出是一份”坏对清单”CSV,你回到源仓库改,再对照渲染后的 HTML 验证。

一句话版

  • 每页导出一行 CSV(sluglangtranslationKeycanonical_url、渲染后的整段 <link rel="alternate">),喂给长上下文模型配一份固定清单,回源修、重渲、再复核。
  • 大模型抓五类结构性 bug:缺对、key 不匹配、locale 代码错、缺自指、缺 x-default。它不会检查 hreflang 的 URL 是否返回 200——那要爬虫来做。
  • Google 的”国际定位报告”已经没了(2022 年废弃、之后移除)。截至 2026 年 6 月,你用 Screaming FrogTechnicalSEO.com 的免费测试工具(能直接吃整份 sitemap),或 hreflang.org 来监控——不是 Search Console。
  • 最适合 50 对文章以上的站。不到 50 对,跑一次 Screaming Frog 爬取比搭这套管道更快。

审什么,不审什么

这套管道检查的是 HTML 页面 <head> 里和 XML sitemap(<xhtml:link> 元素)里的 hreflang,不覆盖 HTTP header 形式——内容站很少用。大模型负责上千行的交叉比对;它没法抓取 URL,所以要另配一个爬虫确认每个 hreflang 目标确实返回 200。

适合双语 / 多 locale 内容站的拥有者和维护者——EN/ZH、EN/JA、EN+ES+FR 都行,Astro / Next.js / Hugo 都行。如果你已有 translationKey 或 i18n-key 字段连接翻译,工作流直接用。没有也行,第 1 步照样跑:slug pair(en/foozh/foo)本身就是键。

什么时候跑?每批内容上线后(10 篇以上新增或翻译)、每次 SEO 推进前(外链或重交 sitemap),以及每次改 locale 代码或重命名 slug 之后。这些重命名恰恰是互指关系悄悄断掉的时刻。

五类 bug,各靠什么抓

Google 把 hreflang 当作”提示”而非”指令”——canonical 标签、内容相似度、哪个页面被索引,都可能盖过它。但一条断掉的标注集群会被直接忽略,所以这五类缺陷等于白白浪费信号。截至 2026 年 6 月,每一类在真实爬虫里对应如下:

Bug为什么坏Screaming Frog 报告
缺对文章只有一种语言;集群不完整Hreflang › Missing Return Links
key / slug 不匹配同一 translationKey 解析到对不上的 slug表现为断掉的回链
locale 代码错zh 而非 zh-CN/zh-Hant;用下划线(en_US)而非连字符Hreflang › Incorrect Language & Region Codes
缺自指页面没有自己语言的 alternateInconsistent Language & Region Confirmation Links
x-default未匹配 locale 没有 fallbackHreflang › Missing X-Default

两条格式规则能解释大多数”代码错”。语言用 ISO 639-1(enzh);可选的地区用 ISO 3166-1 Alpha-2,跟在连字符后面(en-GBzh-CN)——绝不用下划线,也绝不单独写地区码(hreflang="US" 无效,因为 Google 不会替你推断语言)。整个值遵循 BCP 47。

开始前准备

  • 写下你的策略。 大多数双语站对每个 locale 输出 <link rel="alternate" hreflang="en" href="..."/>,再加一条 x-default。把你的确切标签记下来,等下对照渲染结果验证。
  • 锁定一个中文代码。 zhzh-CNzh-Hanszh-Hant 选一个全站用到底。混着用是集群被忽略的头号原因。
  • 用长上下文模型。 1000 行 CSV 加上渲染后的标签列,很容易超过 10 万 token。截至 2026 年 6 月,Claude Sonnet 4.6 和 Gemini 3.1 Pro 都是 100 万 token 上下文(Sonnet 4.6 是更便宜的主力,每 100 万 token 输入 / 输出 3 / 15 美元)。

具体步骤

  1. 导出 CSV。 一行一篇。列:sluglangtranslationKeycanonical_url,以及那一页渲染后的整段 <link rel="alternate">。一个读 content collection 的短 Node 脚本不到一分钟搞定。

  2. 用固定清单去 prompt 模型。 保持确定性——每次都用同一份 prompt,这样月度结果才能 diff:

审计这份 hreflang 配置。每行要标的问题:
1. 缺对:translationKey 相同但只有一种语言(按 translationKey 分组)
2. key / slug 不匹配:同 slug 不同 key、或同 key 但 slug 对不上
3. locale 代码错:不在 [en, zh-CN] 集合里;标出下划线和只有地区码的情况
4. 缺自指:该行没有自己语言的 hreflang
5. 缺 x-default
返回 TSV 列:issue, slug, lang, suggested_fix
  1. 回源修。 真正的修法只有两种:补缺失翻译,或改 translationKey。绝不要靠”删掉一条 hreflang 链接”来糊弄——审计看不到,但 Google 看得到。

  2. 重渲后复核。 用 Screaming Frog 重爬(免费版上限 500 个 URL;上面那些 hreflang 报告能直接导出坏行),或把 sitemap 的 URL 粘进 TechnicalSEO.com 的 hreflang 测试工具,一次性核对所有 alternate。再抽查 5 个有代表性的页面(HTML 视图):一篇热门 EN、它的 ZH 对、一篇只有 EN(也需要 x-default 和自指)、首页、一个标签 / 索引页。

  3. 重交 sitemap。 更新后重交 Search Console;用 sitemap index 的话把所有子 sitemap 一起 ping。注意上限:单份 sitemap 最多 50,000 个 URL / 未压缩 50MB。现在已经没有 Search Console 的 hreflang 报告可盯了——改成重跑爬虫,确认错误数趋向 0。

扩到全站前先校准 prompt

别让一份新 prompt 直接上全站。先在一个子目录或标签上跑(30-50 篇),那是模型最准的规模;然后故意 plant 一个 bug——删一条回链、把代码换成 zh——看模型抓不抓得到。漏抓说明 CSV 或清单太薄。每次运行的 TSV 跟修复 commit 存在一起;diff 两个月的 TSV,就能看到哪类 bug 在偷偷回潮。等 prompt 在 plant 的 bug 上做到 100% 之后,再扩到全站。

完成后检查

  • 重渲后随机开 3 个页面看 <head>:每页都要有自指 hreflang、所有兄弟 locale 的 alternate、一条 x-default
  • 确认 hreflang 的 URL 返回 200 而不是 301 / 404——模型测不了,得靠爬虫或失链脚本。参见用 AI 找失效链接
  • 抽查每页的 canonical。hreflang 指向非 canonical URL 时整个集群会被静默忽略。

把它进流水线

  • 把审计 prompt 存进仓库,每个 PR 改 > 10 篇文章就在 CI 里跑一次。
  • 把”允许的 locale 代码”放在数据里,不要写死在 prompt 里——加第三语言时改起来方便。
  • 把反复出现的失败变成 build 断言:同一个 translationKey 坏两次,就在 build 里断言每个 key 必须正好出现在 N 个 locale。这就把 bug 从”审计能抓到”变成”build 直接拒绝上线”。

容易踩的坑

  • 该用 zh-CN/zh-Hant 却用了 zh,或该用 en-US 却用了 en_US。Google 当成不同(或无效)信号。
  • x-default。未匹配 locale 的用户被分到最坏 fallback。
  • hreflang 在 <head> 但指向非 canonical URL——整个集群被静默忽略。
  • 单向 pair:EN 链到 ZH 但 ZH 没链回。集群必须互指,否则 Google 直接丢弃。
  • 审了线上 HTML 没审 sitemap。两边必须一致,冲突时两个都被忽略。
  • 不看 HTML 就照搬 AI 的”修复”。模型偶尔会建议看起来对但其实错的 locale 代码。

FAQ

  • hreflang 错 Google 会惩罚吗? 不会直接惩罚,但流量被分到错的 locale,该市场的 CTR 和转化会跌。Google 也确认过(2025 年 5 月)hreflang 是提示——canonical、内容相似度、索引情况都可能盖过它。
  • Search Console 报告没了,现在去哪监控 hreflang? 国际定位报告 2022 年废弃、之后移除。截至 2026 年 6 月,用 Screaming Frog 的 hreflang 报告、TechnicalSEO.com 的免费测试工具(能吃整份 sitemap),或 hreflang.org。
  • 是不是每页都要写 hreflang? 每个可索引、有翻译的页面都要:首页、分类页、文章页都算。
  • 只有 EN 的页面怎么处理? 自指 EN,加一条 x-default 指向自己。不要编一个不存在的 ZH 翻译。
  • 模型多大概率会”幻觉”出一个问题? 干净 prompt 下大概 5% 假阳性。永远先核实再改。
  • 没有 translationKey 也能跑吗? 能。按 slug pair 约定(en/foozh/foo)分组,告诉模型规则即可。

相关阅读

标签: #教程 #SEO #AI 编程 #hreflang #双语