SKILL.md
readonly只读
name
seo-hreflang
description
Hreflang 和国际 SEO 审计、验证与生成。检测常见错误,验证语言/地区代码,并生成正确的 hreflang 实现。当用户提到“hreflang”、“i18n SEO”、“国际 SEO”、“多语言”、“多地区”或“语言标签”时使用。
Hreflang 与国际 SEO
验证现有的 hreflang 实现,或为多语言和多地区网站生成正确的 hreflang 标签。支持 HTML、HTTP 标头和 XML 站点地图实现。
验证检查
1. 自引用标签
- 每个页面必须包含指向自身的 hreflang 标签
- 自引用 URL 必须与页面的规范 URL 完全匹配
- 缺少自引用标签会导致 Google 忽略整个 hreflang 集合
2. 返回标签
- 如果页面 A 使用 hreflang 链接到页面 B,则页面 B 必须链接回页面 A
- 每个 hreflang 关系必须是双向的(A→B 和 B→A)
- 缺少返回标签会使两个页面的 hreflang 信号失效
- 检查所有语言版本是否相互引用(全网格)
3. x-default 标签
- 当存在选择器/备用 URL 时推荐使用:指定未匹配语言/地区的备用页面
- 通常指向语言选择器页面或英文版本
- 每组替代项只能有一个 x-default
- 还必须从所有其他语言版本获得返回标签
4. 语言代码验证
- 必须使用 ISO 639-1 双字母代码(例如
en、fr、de、ja) - 可选的 ISO 15924 文字子标签是文档化的官方机制,用于指定文字:
zh-Hant(繁体)/zh-Hans(简体)。文字可以与地区组合,例如zh-Hans-US是有效的(语言+文字+地区)。 - 常见错误:
eng代替en(ISO 639-2,对 hreflang 无效)jp代替ja(日语的错误代码)zh有效,但对于特定文字的页面有歧义;当针对特定文字时,优先使用zh-Hans或zh-Hant
5. 地区代码验证
- 可选地区限定符使用 ISO 3166-1 Alpha-2(例如
en-US、en-GB、pt-BR) - 格式:
language-REGION(小写语言,大写地区) - 单独的国家代码无效,不能在没有语言的情况下指定地区(Google 自己的错误示例是
be,它实际上是白俄罗斯语的语言代码,而不是比利时)。 - 常见错误:
en-uk代替en-GB(UK 不是有效的 ISO 3166-1 地区代码)EU/UN作为地区(不是有效的 ISO 3166-1 值)es-LA(拉丁美洲不是一个国家;请使用具体国家)- 没有语言前缀的地区
5b. 地理定位信号层级
- 实用的区域信号启发式:ccTLD > hreflang 注释 > 服务器位置/IP > 地址/语言/货币/商家信息。不要将其呈现为已确认的 Google 排名顺序。hreflang 是一个提示,而非指令。Google 忽略位置元标签和 HTML 地理定位属性。
- Search Console 的国际定位报告和手动国家定位设置已于 2022 年移除,不要推荐在 GSC 中设置国家定位;hreflang 是剩下的杠杆。
6. 规范 URL 对齐
- Hreflang 标签只能出现在规范 URL 上
- 如果页面有指向其他位置的
rel=canonical,则该页面上的 hreflang 将被忽略 - 规范 URL 和 hreflang URL 必须完全匹配(包括尾部斜杠)
- 非规范页面不应出现在任何 hreflang 集合中
7. 协议一致性
- 同一 hreflang 集合中的所有 URL 必须使用相同的协议(HTTPS 或 HTTP)
- 混合 HTTP/HTTPS 的 hreflang 集合会导致验证失败
- HTTPS 迁移后,更新所有 hreflang 标签为 HTTPS
8. 跨域支持
- Hreflang 可以跨不同域工作(例如 example.com 和 example.de)
- 跨域 hreflang 需要在两个域上都有返回标签
- 使用 Google Search Console 验证进行监控,或在需要时提交跨站点地图
- 对于跨域设置,推荐使用基于站点地图的实现
常见错误
| 问题 | 严重性 | 修复 |
|---|---|---|
| 缺少自引用标签 | 严重 | 添加指向同一页面 URL 的 hreflang |
| 缺少返回标签(A→B 但无 B→A) | 严重 | 在所有替代项上添加匹配的返回标签 |
| 需要备用行为时缺少 x-default | 中等 | 添加指向备用/选择器页面的 x-default |
无效的语言代码(例如 eng) |
高 | 使用 ISO 639-1 双字母代码 |
无效的地区代码(例如 en-uk) |
高 | 使用 ISO 3166-1 Alpha-2 代码 |
| 非规范 URL 上的 hreflang | 高 | 仅将 hreflang 移至规范 URL |
| URL 中 HTTP/HTTPS 不匹配 | 中等 | 将所有 URL 标准化为 HTTPS |
| 尾部斜杠不一致 | 中等 | 精确匹配规范 URL 格式 |
| HTML 和站点地图中同时存在 hreflang | 低 | 选择一种方法(大型网站推荐使用站点地图) |
| 需要时语言不带地区 | 低 | 为地理定位内容添加地区限定符 |
实现方法
方法 1:HTML 链接标签
最适合:每个页面语言/地区变体少于 50 个的网站。
<link rel="alternate" hreflang="en-US" href="https://example.com/page" />
<link rel="alternate" hreflang="en-GB" href="https://example.co.uk/page" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/page" />
放置在 <head> 部分。每个页面必须包含所有替代项,包括自身。
方法 2:HTTP 标头
最适合:非 HTML 文件(PDF、文档)。
Link: <https://example.com/page>; rel="alternate"; hreflang="en-US",
<https://example.com/fr/page>; rel="alternate"; hreflang="fr",
<https://example.com/page>; rel="alternate"; hreflang="x-default"
通过服务器配置或 CDN 规则设置。
方法 3:XML 站点地图(推荐用于大型网站)
最适合:具有多种语言变体、跨域设置或 50 个以上页面的网站。
请参阅下面的 Hreflang 站点地图生成部分。
方法比较
| 方法 | 最适合 | 优点 | 缺点 |
|---|---|---|---|
| HTML 链接标签 | 小型网站(<50 个变体) | 易于实现,在源代码中可见 | 使 <head> 臃肿,大规模维护困难 |
| HTTP 标头 | 非 HTML 文件 | 适用于 PDF、图片 | 服务器配置复杂,在 HTML 中不可见 |
| XML 站点地图 | 大型网站、跨域 | 可扩展,集中管理 | 在页面上不可见,需要维护站点地图 |
Hreflang 生成
流程
- 检测语言:扫描网站的语言指示器(URL 路径、子域名、顶级域、HTML lang 属性)
- 映射页面等价物:匹配跨语言/地区的对应页面
- 验证语言代码:对照 ISO 639-1 和 ISO 3166-1 验证所有代码
- 生成标签:为每个页面创建 hreflang 标签,包括自引用
- 验证返回标签:确认所有关系是双向的
- 添加 x-default:为每个页面集合设置备用
- 输出:生成实现代码(HTML、HTTP 标头或站点地图 XML)
Hreflang 站点地图生成
带 Hreflang 的站点地图
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/page</loc>
<xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/page" />
<xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
<xhtml:link rel="alternate" hreflang="de" href="https://example.de/page" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" />
</url>
<url>
<loc>https://example.com/fr/page</loc>
<xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/page" />
<xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
<xhtml:link rel="alternate" hreflang="de" href="https://example.de/page" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" />
</url>
</urlset>
关键规则:
- 包含
xmlns:xhtml命名空间声明 - 每个
<url>条目必须包含所有语言替代项(包括自身) - 每个替代项必须作为单独的
<url>条目出现,并带有自己的完整集合 - 在以下条件之一时拆分:每个站点地图文件 50,000 个 URL 或 50MB 未压缩
输出
Hreflang 验证报告
摘要
- 扫描的总页面数:XX
- 检测到的语言变体:XX
- 发现的问题:XX(严重:X,高:X,中等:X,低:X)
验证结果
| 语言 | URL | 自引用 | 返回标签 | x-default | 状态 |
|---|---|---|---|---|---|
| en-US | https://... | ✅ | ✅ | ✅ | ✅ |
| fr | https://... | ❌ | ⚠️ | ✅ | ❌ |
| de | https://... | ✅ | ❌ | ✅ | ❌ |
生成的 Hreflang 标签
- HTML
<link>标签(如果选择了 HTML 方法) - HTTP 标头值(如果选择了标头方法)
hreflang-sitemap.xml(如果选择了站点地图方法)
建议
- 需要添加的缺失实现
- 需要修复的错误代码
- 方法迁移建议(例如,从 HTML 迁移到站点地图以扩展规模)
文化适应性评估
分析多语言网站时,除了技术性的 hreflang 验证外,还要评估内容是否针对每个目标市场进行了文化适应。
加载 references/cultural-profiles.md 获取预构建的配置文件(DACH、法语区、西班牙语区、日语)。
评估步骤:
- 识别所有语言版本及其目标市场
- 加载相关的文化配置文件
- 检查 CTA 是否符合文化期望(直接 vs 间接)
- 检查信任信号是否适合区域(认证、法律页面)
- 检查本地化页面上是否有外国品牌引用
- 检查数字/日期/货币格式的一致性
- 将文化适应问题标记为中等严重性
输出: 每个语言版本的文化适应性评分(0-100),附带具体发现。
内容一致性审计
命令: /seo hreflang audit <directory-or-url>
审计网站或本地内容目录的所有语言版本的内容一致性。
加载 references/content-parity.md 获取完整的一致性矩阵和评分方法。
检查内容:
- 所有声明语言中的页面存在性
- 章节结构等价性(H2/H3 数量)
- SEO 元素一致性(标题、元描述、Schema 本地化)
- 字数比例验证(德语应比英语长 25-35%,日语应短 10-25%)
- 新鲜度跟踪(通过时间戳检测过时的翻译)
- 文化标记扫描(外国品牌、错误的法律引用、未翻译的元素)
输出: 一致性矩阵表格,包含每页评分和优先处理事项。
区域格式验证
加载 references/locale-formats.md 获取每个区域的数字、日期、货币、地址和电话格式参考表。
检查内容:
- 数字格式一致性(例如,"1,000.00" 在 de-DE 页面上应为 "1.000,00")
- 日期格式符合区域期望
- 货币符号和位置正确对应目标市场
- 电话号码使用国际格式,并带有正确的国家代码
参考文件
根据需要按需加载(不要在启动时全部加载):
references/cultural-profiles.md:DACH、法语区、西班牙语区、日语的文化适应配置文件references/locale-formats.md:每个区域的数字、日期、货币、地址、电话格式表references/content-parity.md:内容一致性审计方法和评分
错误处理
| 场景 | 操作 |
|---|---|
| URL 不可达(DNS 失败、连接被拒绝) | 清晰报告错误。不要猜测网站结构。建议用户验证 URL 并重试。 |
| 未找到 hreflang 标签 | 报告缺失。检查其他国际化信号(子目录、子域名、ccTLD),并推荐适当的 hreflang 实现方法。 |
| 检测到无效的语言/地区代码 | 列出每个无效代码及其正确替换。提供一组已修正的 hreflang 标签,可直接实施。 |
| 语言的文化配置文件不可用 | 使用 cultural-profiles.md 中的默认配置文件清单。注意评估基于通用指南,而非预构建的配置文件。 |
| 内容一致性目录为空 | 报告未找到内容文件。建议验证目录路径或提供 URL 进行实时网站分析。 |






