seo-hreflang について
多言語・多地域サイトの hreflang を生成・監査する、SEO 担当者やサイト運営者向けのスキルです。相互リンク、正規 URL、言語コードを検証し、HTML、HTTP ヘッダー、XML サイトマップに対応します。
主な機能
- 01hreflang 関係の検証
- 02言語別代替タグの生成
- 03正規 URL の整合性確認
- 04言語・地域コードの検証
- 05HTML・ヘッダー・サイトマップ対応
活用シーン
- 01サイト内の地域別ページを監査
- 02複数ドメイン向けサイトマップ hreflang の生成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill seo-hreflangインストール後、Claude Code で/seo-hreflangを入力して読み込まれたか確認します。
詳細
Hreflang と国際 SEO
使用する場面
- 多言語または多地域サイトの hreflang を検証、生成する場合に使用します。
- ユーザーが国際 SEO、言語タグ、x-default、hreflang の問題について言及した場合に使用します。
- HTML、ヘッダー、サイトマップの実装におけるロケールの代替ページを監査する場合に使用します。
多言語・多地域サイトの既存の hreflang 実装を検証するか、正しい hreflang タグを生成します。HTML、HTTP ヘッダー、XML サイトマップによる実装に対応しています。
検証項目
1. 自己参照タグ
- すべてのページに、そのページ自身を指す hreflang タグを含める必要があります
- 自己参照 URL は、ページの canonical URL と完全に一致している必要があります
- 自己参照タグの欠落は実装上の不備です。常にセット全体が無視されると断定するのではなく、影響を受ける URL を報告してください
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) - 形式:
言語-地域(言語は小文字、地域は大文字) - よくある間違い:
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. プロトコルの一貫性
Google は完全修飾された代替 URL に対応しています。一貫した HTTPS の使用はデプロイ時の推奨事項であり、hreflang の有効性を一律に左右するルールではありません。
- hreflang セット内のすべての URL で、同じプロトコル(HTTPS または HTTP)を使用する必要があります
- HTTP と HTTPS のバージョンが異なる場合は、リダイレクト先と canonical の参照先を確認してください
- HTTPS に移行した後は、すべての hreflang タグを HTTPS に更新してください
8. ドメイン間の対応
- hreflang は異なるドメイン間でも機能します(例:example.com と example.de)
- ドメイン間の hreflang では、両方のドメインに戻りタグが必要です
- Search Console へのアクセスは診断に役立ちますが、ドメイン間の hreflang の前提条件ではありません
- ドメインをまたぐ構成では、サイトマップによる実装を推奨します
よくある間違い
| 問題 | 重大度 | 修正方法 |
|---|---|---|
| 自己参照タグがない | 重大 | 同じページの URL を指す hreflang を追加します |
| 戻りタグがない(A→B だが B→A がない) | 重大 | すべての代替ページに対応する戻りタグを追加します |
| x-default がない | 任意の改善 | フォールバックページまたは選択ページを指す x-default を追加します |
言語コードが無効(例:eng) | 高 | ISO 639-1 の 2 文字コードを使用します |
地域コードが無効(例:en-uk) | 高 | ISO 3166-1 Alpha-2 コードを使用します |
| 正規 URL ではない URL に hreflang が設定されている | 高 | hreflang を正規 URL のみに設定します |
| URL の HTTP/HTTPS が不一致 | 中 | すべての URL を HTTPS に統一します |
| 末尾のスラッシュが不統一 | 中 | 正規 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>エントリとして記載します - サイトマップファイルあたり 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 からサイトマップに移行)
エラー処理
| シナリオ | 対応 |
|---|---|
| URL にアクセスできない(DNS エラー、接続拒否) | エラーを明確に報告します。サイト構造を推測してはいけません。ユーザーに URL を確認して再試行するよう提案します。 |
| hreflang タグが見つからない | タグがないことを報告します。ほかの国際化の手がかり(サブディレクトリ、サブドメイン、ccTLD)を確認し、適切な hreflang の実装方法を推奨します。 |
| 無効な言語/地域コードが検出された | 無効なコードをそれぞれ正しい置換コードとともに列挙します。実装にそのまま使える、修正済みの hreflang タグ一式を提示します。 |
制限事項
- このスキルは、タスクが上記の範囲に明確に該当する場合にのみ使用してください。
- 出力を、環境固有の検証、テスト、専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認を求めてください。
コメント
Markdown 対応