見出し構造チェッカー

ページやクロール結果の見出しの構成をチェックします。H1の欠落や複数設定、URL間の重複、レベルの飛び、最初のH1より前の見出し、本文ではなくページ共通部分にある見出しを検出します。

できること

DOM順で見る見出しの構成

見出しのチェックは、解析したドキュメントを順に読み、各見出しのレベル、テキスト、ページ内の領域を取得します。H1の数を数えるだけでは見逃す、レベルの飛びやナビゲーション内の紛れ込んだ見出しも分かります。

  • すべての見出しのレベル、テキスト、領域
  • H2からH4のようなレベルの飛び
  • 最初のH1より前にある見出し
  • ヘッダー、ナビゲーション、サイドバー、フッターにある見出し

H1のチェック

ページにはっきりしたH1が1つあるのが理想です。チェックでは、H1がないページ、複数あるページ、H1が画像の代替テキストだけのページ、H1が長すぎるページを検出します。複数のURLで同じH1のテキストが使われていれば重複として扱い、H1があるのにH2がない場合は通知にとどめます。

  • H1なし、H1が複数、URL間のH1重複
  • 画像の代替テキストだけでできたH1
  • H1はあるがH2がないページ

テンプレートを1回直せば済む

ヘッダー、ナビゲーション、サイドバー、フッターにある見出しは、繰り返されるテキストごとにまとめ、ページ数を添えて表示します。テンプレートを1回直せば、同じテンプレートを使うすべてのページで検出結果が解消します。

  • 繰り返される見出しのテキストごとにグループ化
  • グループごとのページ数
  • 単なるdivで作ったメニュー向けに、領域のルールを追加可能

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

  1. サイトをクロールするか、1ページを解析

    クロールでは、各ページの見出しの構成をDOM順に保存します。parseは、1つのURLについて見出しのレベルと構成を返します。

  2. 数だけでなく順序を見る

    各見出しはレベル、テキスト、ページ内の領域を保持するので、レベルの飛びやメニュー内の紛れ込んだ見出しが分かります。

  3. テンプレートを1回直す

    ヘッダー、ナビゲーション、サイドバー、フッターの見出しは、繰り返されるテキストごとにまとめ、ページ数を表示します。テンプレートの修正1回で、すべてのページに反映されます。

この機能のチェック項目

チェック項目意味重要度根拠
H1_MISSINGページにH1の見出しがないImportantページのURL(解析したドキュメントにH1がない状態)
H1_MULTIPLEページにH1が複数あるImportantページのURLと、該当したH1のテキスト
H1_DUPLICATE1回の実行内で、複数のURLに同じH1のテキストがあるTipH1のテキストと、それを共有するURL
HEADING_BEFORE_H1DOM順で最初のH1より前に、見出しが1つ以上あるTip件数、見出しのレベル、H1より前にある最初の見出しのテキスト
HEADING_SKIP本文の見出しがH2からH4のように、2レベル以上飛んでいるTip飛び元と飛び先のレベルと見出しのテキスト(本文領域のみ)
HEADING_IN_PAGE_CHROME本文ではなく、ヘッダー、ナビゲーション、サイドバー、フッターに見出しがあるTip領域、レベル、テキストと、同じテンプレートの見出しを共有するページ数
チェック一覧にある関連項目
H1_TOO_LONGH1_ALT_TEXT_ONLYH2_MISSING

コマンド1つで実行

bash
seohead parse --url https://example.com/

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

必要なもの

  • parse用のURL1件(見出しの構成を見る場合)
  • 構成のチェック用に、crawl-siteで実行したスキャン
  • 独自のメニューマークアップ向けの、任意のlink_positionルール

制限事項

  • 構成のチェックにはDOMの順序が必要です。そのため、Screaming Frogのエクスポートではなく、ネイティブクロールで実行します
  • メインコンテンツのランドマークも一致するルールもない場合、領域は未判定となり、そのページのチェックはスキップされます
  • crawl-siteの既定の上限は200 URLです
  • チェックするのは構造です。見出しの文言が適切かどうかは判定しません

よくある質問

parseは見出しのチェックを実行しますか?
いいえ。parseが返すのは、1ページの見出しのレベルと構成です。チェックはクロールで実行されます。crawl-siteが構成を保存し、HEADING_BEFORE_H1、HEADING_IN_PAGE_CHROME、HEADING_SKIPを報告します。H1_MISSING、H1_MULTIPLE、H1_DUPLICATEもクロールで実行されます。
Screaming Frogのエクスポートから見出しの順序が分からないのはなぜですか?
Screaming Frogのエクスポートでは、見出しは順序のない集合として入っています。見出しの構成が含まれないため、HEADING_BEFORE_H1、HEADING_IN_PAGE_CHROME、HEADING_SKIPの3つは名前を示してスキップされます。この3つにはネイティブクロールが必要です。
メニュー内の見出しが検出されない、またはページ共通部分として検出されたのはなぜですか?
領域は、ページのメインコンテンツのランドマークから決まります。main要素、role=main、article、または設定したセレクターです。ランドマークがなく、一致する位置ルールもない場合、領域は未判定です。そのページのチェックはスキップされ、実行結果に理由が表示されます。問題なしとして報告されることはありません。単なるdivで作ったメニューには、link_position.rulesにルールを追加します。
チェッカーはサイトを変更しますか?
いいえ。読み取り専用のリクエストだけを送り、robots.txtに従います。crawl-siteの既定の上限は200 URLなので、範囲は自分で決められます。
H1が複数あれば必ずエラーですか?
レジストリでは警告として扱います。H1が1つなら、ページのテーマが最も明確に伝わるためです。検索エンジンが強制するルールではないので、テンプレートごとに判断してください。