hreflangチェッカー

hreflangを1つのURL単位でも、ページ群全体でもチェックします。言語・地域コード、自己参照、重複、x-default、相互リンク、リダイレクトやエラーになる代替ページ、noindexが付いた代替ページが対象です。

できること

ページ群全体のチェック

相互リンクと確認の判定には、ページ群のすべてのページが必要です。ページAがページBについて書いている内容と、ページBがAについて書き返している内容を比べるためです。このチェックは1ページではなく、Screaming FrogのAll Hreflangエクスポートなどのクロールデータで実行します。代替ページの宛先についても、200を返すか、インデックス可能か、自身が正規URLかを確認します。

  • 相互リンクがない、ペアが確認できない
  • リダイレクトする、4xxや5xxを返す、noindexが付いている代替ページ
  • ページの正規URLではない代替ページ
  • サイト内のどのリンクからも参照されていない代替ページ

単一URL

hreflang-checkは、1ページを取得し、リダイレクトを辿って、HTML内の代替リンクを読み取ります。言語、スクリプト、地域のコードをすべて検証し、重複した値、ページ自身の記載、x-defaultの有無を確認します。代替ページにはアクセスしないので、全体のクロールの前に手早く状況を見るのに向いています。

  • 言語・スクリプト・地域コードを、ISO 639-1、ISO 15924、ISO 3166-1で検証
  • 自己参照と重複した値
  • x-defaultの有無
  • 4xxや5xxのページは、問題なしではなくエラーとして報告

記述位置

hreflangのリンクは、headの中で読み取られた場合にだけ有効です。ネイティブクロールはすべての代替リンクの位置を比べ、bodyに入ってしまったものを報告します。原因は、headの上のほうにある壊れたタグであることが多く、そのタグを直せばアノテーションも直ります。

  • headの外にある代替リンクを報告
  • 大文字と小文字は区別しない:en-usとen-USは同じ値
  • en-UKのようなよくある誤りを検出

3ステップで、スキャンを1件保存

  1. 1つのURLをその場でチェック

    hreflang-checkは、ページを取得してリダイレクトを辿り、HTML内の代替リンクを読み取ります。コード、自己参照、重複、x-defaultを確認します。

  2. クロールでページ群全体をチェック

    相互リンク、リンク切れやリダイレクトする宛先、noindexの宛先のチェックには、ページ群のすべてのページが必要です。1ページ単位ではなく、ネイティブクロール全体、またはseohead sf runでインポートしたAll Hreflangエクスポートに対して実行します。

  3. ペアを直して再チェック

    検出結果ごとに、対象のページと代替ページが示されます。サイトのアノテーションを修正してから、もう一度チェックします。

この機能のチェック項目

チェック項目意味重要度根拠
HREFLANG_MISSING_RETURN_LINK別のページがこのURLをhreflangで指定しているが、このページから相互に指定し返していないImportant元のページと、相互リンクがない代替ページ(クロール)
HREFLANG_BROKEN_TARGET代替URLが3xx、4xx、5xxのステータスを返すImportant宛先のURLとそのステータスコード(クロール)
HREFLANG_NOINDEX_TARGET代替URLにnoindexが指定されているImportant宛先のURLとnoindexのシグナル(クロール)
HREFLANG_INVALID_CODE言語または地域の値が、ISO 639-1、ISO 15924、ISO 3166-1の有効なコードではない(例:en-UK)Importanthreflangの値そのものと、それがあるページ(単一URL:`malformed hreflang code`)
HREFLANG_MISSING_SELF_REFERENCEページに代替指定はあるが、自身のURLが含まれていないImportantページのURLと代替の一覧(単一URL:`page does not self-reference`)
HREFLANG_MULTIPLE_ENTRIES同じ言語・地域の値が、1ページに複数回出現するImportant重複した値とそのhref(単一URL:`duplicate hreflang`)
HREFLANG_MISSING_XDEFAULTどの代替にも言語が合わないユーザー向けの、x-defaultのフォールバックがないTipページと代替の一覧(単一URL:`no x-default alternate`)
チェック一覧にある関連項目
HREFLANG_ERRORHREFLANG_INCONSISTENT_CONFIRMATIONHREFLANG_NOT_CANONICALHREFLANG_UNLINKED_TARGETHREFLANG_OUTSIDE_HEAD

コマンド1つで実行

bash
seohead hreflang-check --url https://example.com/en/

先にインストールします: インストールガイド。どのコマンドも、AIエージェント向けのMCPツールとして実行できます。

必要なもの

  • hreflang-check用のページURL1件
  • ページ群全体のチェック用に、クロール結果またはScreaming FrogのAll Hreflangエクスポート
  • APIキーは不要

制限事項

  • 単一URLのチェックでは代替ページにアクセスしないため、ステータスコード、noindex、相互リンクは確認できません
  • 読み取るのはHTMLのlink要素だけです。サイトマップやHTTPのLinkヘッダーにあるhreflangは対象外です
  • ページ群全体のチェックは、Screaming Frogのhreflangエクスポートを前提に説明しています。ネイティブスキャンはhreflangのデータを保持しません
  • コードが正しくても、そのページがその言語で書かれているとは限りません

よくある質問

単一URLのチェックは、すべての代替ページをテストしますか?
いいえ。ページ自身の代替リンクを読み取り、コード、重複、x-default、ページの自己参照を確認します。各代替ページにはアクセスしません。リンク切れ、リダイレクト、noindexの宛先や、相互リンクの欠落は、クロールで確認します。
サイトには何か変更が加わりますか?
いいえ。送るのは読み取り専用のGETリクエストだけです。サイトには何も書き込みません。
有効な言語コードとは何ですか?
ISO 639-1の言語コードです。続けてISO 15924のスクリプト、ISO 3166-1 alpha-2またはUN M.49の地域を付けられます。大文字と小文字は区別しないため、en-usとen-USは同じ値です。en-UKは、国コードがGBなので無効と判定されます。
サイトマップやHTTPヘッダーのhreflangも読み取りますか?
単一URLのチェックが読み取るのは、HTMLレスポンスのlink要素だけです。サイトマップやHTTPのLinkヘッダーで宣言されたhreflangは、このコマンドでは読み取りません。
ページがエラーを返したらどうなりますか?
HTTPステータスを報告し、チェックするアノテーションがなかったことを示します。4xxや5xxのページが、問題なしと表示されることはありません。
x-defaultがないのはエラーですか?
最も軽い検出結果です。x-defaultは、どの代替にも言語が合わないユーザー向けのフォールバックです。あると便利ですが、必須ではありません。そのためレジストリでは、アノテーションを壊す問題より下の通知として扱います。