‹ 首页

seo-international

@hainrixz · 收录于 1 周前

Audit and generate hreflang annotations for multilingual sites — check reciprocity, BCP-47 validity, self-reference, x-default, hreflang/canonical conflicts, and <html lang> agreement, and emit reciprocal hreflang link sets. Module M20 (conditional). Feeds the Search SEO score.

适合你,如果运营多语言网站并需要正确配置hreflang标签

/ 下载安装
seo-international.skill双击,或拖进 Claude 桌面版 / Cowork,即完成安装↓ .skill↓ .zip
用别的 agent?下载 .zip 解压,把文件夹放进它的技能目录
Claude Code~/.claude/skills/(项目级 .claude/skills/)
Codex CLI~/.codex/skills/
Cursor自动读取上面两处目录
其他工具见其文档的「skills」目录;两个下载是同一份文件,只是名字不同
/ 通过 npx 安装 校验哈希
npx oh-my-skill add hainrixz/claude-seo-ai/seo-international
/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- hainrixz/claude-seo-ai/seo-international
/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify hainrixz/claude-seo-ai/seo-international
安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
27GitHub stars
~928上下文体积 · 单文件
镜像托管

怎么用

技能原文 SKILL.md作者撰写 · MIT · 788e7b4

seo-international (M20)

hreflang tells search engines which language/region URL to serve. This module is conditional: it only runs when seo-vertical-detect flags a multilingual site (multiple lang/locale URLs, language switcher, or existing hreflang). On monolingual sites every finding is not_applicable at severity 0. Schema-type concerns defer to references/schema-tier1.md; this module owns link-level localization only.

Audits

Working from the PageSnapshot (rendered_dom if present, else raw_html). Read hreflang from <link rel="alternate" hreflang="..."> in <head> (also accept HTTP Link: headers / sitemap xhtml:link when present):

  1. Reciprocity — if page A declares an alternate B, B must declare A back. One-way hreflang is ignored by Google.
  2. BCP-47 validity — each hreflang value is a valid language (en) or language-region (en-GB, pt-BR) tag; region is ISO-3166-1 alpha-2, not a country-of-language guess (en-UK is invalid; use en-GB).
  3. Self-reference — the page lists itself in its own hreflang set.
  4. x-default — at least one hreflang="x-default" for the language-selector / fallback URL.
  5. hreflang↔canonical conflict — an hreflang URL must be self-canonical; pointing hreflang at a URL whose rel=canonical is a different page neutralizes the cluster (cross-check M2/seo-indexability).
  6. <html lang> agreement — the document lang attribute matches the locale this URL targets in its own hreflang entry.
Fixes
  • AUTO (fixable: auto): when the locale→URL map is known (supplied by the user, a sitemap, or discovered alternates), generate a complete reciprocal hreflang link set — every locale + a single x-default — as a <head> diff for fix. Additive and deterministic.
  • PROPOSED (fixable: proposed): a partial set inferred from discovered alternates that needs the user to confirm the locale map before write.
  • ADVISORY (fixable: advisory): "this looks multilingual but no locale map exists" — never written by the tool.
  • Never fabricate locales, region codes, or alternate URLs. If the map is incomplete, leave a clearly-marked TODO(locale) placeholder and ask the user.
Verification
  • Offline: node ${CLAUDE_SKILL_DIR}/../../scripts/hreflang-check.mjs --url <u> — parses the alternate set, validates BCP-47 tags, and checks reciprocity/self-reference/x-default across the discovered cluster.
  • Reciprocity requires fetching each declared alternate; when those URLs (or a sitemap tier) are unavailable, status is needs_api, never a false pass.
Findings

Findings conform to schema/finding.schema.json. On a confirmed multilingual site severity is 4; otherwise the check is not_applicable at severity 0. Examples:

  • M20.hreflang.missing_reciprocal — page declares hreflang="de-DE" for a URL that does not point back (status: fail, severity 4, fixable: proposed, axis search, confidence established). evidence.observed quotes the one-way <link>; verification.reproduce runs the hreflang-check command above.
  • M20.hreflang.invalid_bcp47hreflang="en-UK" (fail, severity 4, fixable: auto, axis search, confidence established; recommend en-GB).
  • M20.hreflang.missing_xdefault — cluster has no x-default fallback (warn, severity 4, fixable: auto, axis search, confidence directional).
  • M20.hreflang.not_applicable — monolingual site (not_applicable, severity 0).
Honesty
  • hreflang is a targeting/clustering signal, not a ranking boost: it selects which existing URL to show in a locale, it does not raise rankings. Don't sell it as a ranking lever.
  • hreflang does not fix thin or machine-translated content, and it is not a substitute for rel=canonical — the two work together.
  • Bing/Yandex use it weakly to not-at-all; the documented beneficiary is Google. Don't claim cross-engine parity.
按 MIT 许可原样转载,未经改动 · 在 GitHub 查看 →

评论

登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。