30x-seo-hreflang について
既存の hreflang 設定を検証し、多言語・多地域サイト向けのタグを生成するスキルです。HTML、HTTP ヘッダー、XML サイトマップに対応し、相互リンク、コード、正規 URL の整合性を確認します。
主な機能
- 01自己参照タグと戻りタグの検証
- 02言語コードと地域コードの確認
- 03正規 URL との整合性確認
- 04HTML、HTTP ヘッダー、サイトマップに対応
- 05hreflang の実装内容を生成
活用シーン
- 01言語別ページの hreflang を監査
- 02相互参照の不足を検出
- 03新しい地域サイト向けタグの生成
- 04大規模な hreflang セットをサイトマップへ移行
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ norahe0304-art/ 30x-seo --skill 30x-seo-hreflangインストール後、Claude Code で/30x-seo-hreflangを入力して読み込まれたか確認します。
詳細
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 がある | 高 | canonical URL にのみ hreflang を設定する |
| 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 link タグ | 小規模なサイト(<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>エントリとして記述する必要があります - サイトマップファイルごとに 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 → サイトマップへの移行)
[PROTOCOL]: 変更時はこのヘッダーを更新し、その後 CLAUDE.md を確認してください
コメント
Markdown 対応