seo-hreflang について
seo-hreflangは、多言語・多地域サイトのhreflangを検証・生成するスキルです。技術面に加え、文化的適応やコンテンツの同等性も確認します。
主な機能
- 01hreflangタグと相互リンクの検証
- 02HTML、HTTPヘッダー、サイトマップの生成
- 03言語・地域コードと正規URLの確認
- 04文化的適応とコンテンツ同等性の監査
- 05ロケール形式の検証
活用シーン
- 01hreflangの欠落や誤りの特定
- 02新規サイト向けhreflangの作成
- 03言語別ページの内容比較
- 04ローカライズ内容と形式の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ infrasity-labs/ dev-gtm-claude-skills --skill seo-hreflangインストール後、Claude Code で/seo-hreflangを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/content-parity.mdcultural-profiles.mdlocale-formats.mdmachine-translation-qa.md詳細
Hreflang と国際 SEO
既存の hreflang の実装を検証するか、多言語・複数地域向けサイトに適した hreflang タグを生成します。HTML、HTTP ヘッダー、XML サイトマップでの実装に対応しています。
検証項目
1. 自己参照タグ
- すべてのページに、自身を指す hreflang タグを含める必要があります
- 自己参照 URL は、ページの canonical URL と完全に一致する必要があります
- 自己参照タグがない場合、Google は hreflang セット全体を無視します
2. 戻りタグ
- ページ A が hreflang でページ B にリンクする場合、ページ B もページ A にリンクする必要があります
- すべての hreflang 関係は双方向である必要があります(A→B と B→A)
- 戻りタグがない場合、両方のページで hreflang のシグナルが無効になります
- すべての言語版が互いを参照していることを確認します(完全な相互リンク)
3. x-default タグ
- 必須:一致する言語・地域がない場合のフォールバックページを指定します
- 通常は、言語選択ページまたは英語版を指定します
- 代替ページのセットにつき x-default は 1 つだけです
- ほかのすべての言語版からの戻りタグも必要です
4. 言語コードの検証
- ISO 639-1 の 2 文字コードを使用する必要があります(例:
en、fr、de、ja) - よくある誤り:
enではなくengを使用する(ISO 639-2 であり、hreflang では無効)- 日本語に正しくないコード
jaではなくjpを使用する - 地域指定なしで
zhを使用する(曖昧なため、zh-Hansまたはzh-Hantを使用)
5. 地域コードの検証
- 任意の地域指定には、ISO 3166-1 Alpha-2 を使用します(例:
en-US、en-GB、pt-BR) - 形式:
language-REGION(言語は小文字、地域は大文字) - よくある誤り:
en-GBではなくen-ukを使用する(UK は有効な ISO 3166-1 コードではありません)es-LAを使用する(ラテンアメリカは国ではないため、具体的な国を指定します)- 言語の接頭辞なしで地域を指定する
6. canonical URL との整合性
- hreflang タグは canonical URL にのみ記述する必要があります
- ページの
rel=canonicalが別の URL を指している場合、そのページの hreflang は無視されます - canonical URL と hreflang URL は完全に一致する必要があります(末尾のスラッシュも含む)
- canonical ではないページを hreflang セットに含めないでください
7. プロトコルの一貫性
- hreflang セット内のすべての URL で、同じプロトコル(HTTPS または HTTP)を使用する必要があります
- hreflang セット内に HTTP と HTTPS が混在すると、検証に失敗します
- 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 の 2 文字コードを使用する |
無効な地域コード(例:en-uk) | 高 | ISO 3166-1 Alpha-2 コードを使用する |
| canonical ではない URL に hreflang がある | 高 | hreflang を canonical URL のみに移す |
| URL で HTTP と HTTPS が不一致 | 中 | すべての URL を HTTPS に統一する |
| 末尾のスラッシュが不統一 | 中 | canonical URL の形式と完全に一致させる |
| HTML とサイトマップの両方に hreflang がある | 低 | どちらか一方を選ぶ(大規模サイトではサイトマップを推奨) |
| 必要な地域指定がない言語 | 低 | 地域ターゲティングされたコンテンツには地域指定を追加する |
実装方法
方法 1:HTML リンクタグ
最適な対象:1 ページあたりの言語・地域バリエーションが 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 パス、サブドメイン、TLD、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>エントリーとして記載する必要があります - サイトマップファイル1つあたり50,000 URL を上限に分割します
出力
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 検証にとどまらず、各ターゲット市場に合わせてコンテンツが文化的に適応されているかどうかも評価します。
事前定義されたプロファイル(DACH、フランス語圏、スペイン語圏、日本)については、references/cultural-profiles.md を読み込みます。
評価手順:
- すべての言語版と、それぞれのターゲット市場を特定します
- 該当する文化的プロファイルを読み込みます
- CTA が文化的な期待(直接的か間接的か)に合っているか確認します
- 信頼性を示す要素が地域に適しているか(認証、法的ページ)確認します
- ローカライズされたページに外国のブランドへの言及がないか確認します
- 数値、日付、通貨の書式に一貫性があるか確認します
- 文化的適応の問題には中程度の重大度を割り当てます
出力: 各言語版の文化的適応スコア(0~100)と具体的な所見。
コンテンツ同等性の監査
コマンド: /seo hreflang audit <directory-or-url>
サイトまたはローカルコンテンツディレクトリのすべての言語版を対象に、コンテンツの同等性を監査します。
同等性マトリックス全体とスコアリング方法については、references/content-parity.md を読み込みます。
確認項目:
- 宣言されているすべての言語でのページの存在
- セクション構成の同等性(H2/H3 の数)
- SEO 要素の同等性(タイトル、メタデータ、スキーマのローカライズ)
- 単語数の比率の検証(DE は EN より25~35%長く、JA は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 の Default Profile チェックリストを使用します。評価が既成のプロファイルではなく、一般的なガイドラインに基づいていることを明記します。 |
| コンテンツ同等性のディレクトリが空 | コンテンツファイルが見つからなかったことを報告します。ディレクトリのパスを確認するか、公開サイトの分析用に URL を提供するよう提案します。 |