見出し・リンク抽出
URL からページの見出し構造とすべてのリンクを抽出します。
🌐 sitekits fetches the URL server-side (private/internal addresses are blocked). The HTML is parsed as delivered — JavaScript is not executed, so client-rendered headings will not appear.
概要
ページの見出し階層はそのページの目次であり、多くの人が思うより多くのものが
読んでいます。要約を組み立てる検索エンジン、移動可能な見出し一覧を提供する
スクリーンリーダー、ページの主題を判断する AI の回答エンジンです。階層が誤って
いると、それらが同時に劣化します。しかも画面上では見えません。セクション見出しの
見た目に整えられた h3 は、h2 と全く同じに見えます。
このツールは URL をサーバー側で取得し、配信されたままの HTML を解析して、
完全な見出しツリー、h1 の数、飛ばされたレベル、そして内部/外部に分けた
全リンク(nofollow の表示付き)を返します。
使い方
- URL を貼ります。スキームは省略できます(
httpsを仮定します)。 - 要約行を読みます。
h1の数、見出しの本数、レベルの飛びです。 - 詳細は Outline と Links を切り替えて見ます。
「配信されたままの HTML」の意味
JavaScript は実行しません。これは回避すべき制約ではなく意図した設計です。 スクリプトを実行しないものから見たページを示すためです。
見出しがクライアント側のフレームワーク由来なら、ここでの階層はほぼ空になります。 そしてそれが結果です。検索エンジンは JavaScript を描画しますが、独自の スケジュールで、保証はありません。そして HTML を消費する他の多くのものは 描画を一切しません。リンクのプレビュー、フィードリーダー、テキストブラウザ、 そして多くの AI クローラーです。サーバーで描画された階層は、すべての消費者が 見る唯一のものです。
<script> と <style> の中身、および HTML コメントは解析前に取り除くので、
コメントアウトされた部分やテンプレート文字列の中の見出しは階層に現れません。
見出しテキスト内のタグは除去し、HTML エンティティは復号するので、
<h2>Pricing & plans</h2> は Pricing & plans として読まれます。
レベルの飛びの読み方
直前の見出しより 2 段以上深い見出しがあるたびに報告します。h1 から h3、
あるいは h2 から h5 です。浅くなる方向は飛びではありません。h3 の次の
h2 は、単に小節を閉じているだけです。
気にする理由は、HTML において入れ子を示す信号が見出しレベルだけだからです。
スクリーンリーダーの利用者はレベルを辿って文書を移動するので、飛ばされた
レベルは「内容にはない小節が存在する」と伝えることになります。原因は通常
見た目です。ちょうどよい大きさだったから h4 を選び、その後 CSS で大きさを
変えてしまった、という経緯です。
対処は、レベルは構造で選び、大きさは CSS で決めることです。そうすれば階層は どの読者に対しても正しくなり、見た目は変わりません。
リンク一覧の読み方
すべてのリンクはページの最終 URL を基準に解決するので、相対 href はクローラーが
辿る絶対 URL として現れます。プロトコル相対リンク(//host/path)はページの
スキームを継承します。不正な href はリンクとして報告せず捨てます。
rel="nofollow" は大文字小文字を無視し、複数値の rel 属性の中でも検出するので
rel="NoFollow noopener" も印が付きます。なお nofollow は 2019 年以降、
クロールに対する指示ではなくヒントになっています。リンクを辿らせない手段としては
もう確実ではないので、URL をインデックスから外す目的で頼っていた場合は注意が
必要です。それができるのは対象ページ側の noindex だけです。
テキストが空のリンクは明示的に示します。テキストの無いリンク(aria-label の
無いアイコンだけのアンカーが典型)は、スクリーンリーダーの利用者には到達不能で、
行き先についての情報も持ちません。
使用例
- ページではなくテンプレートの点検 — テンプレートごとに 1 ページ実行します。 見出しの不備はほぼ必ずテンプレートにあるので、数個の URL でサイト全体を 覆えます。
- サーバーで描画されているかの確認 — ページは見出しで埋まっているのに階層が 空なら、JavaScript を実行しないものは何も読めていません。
- 移行の前 — 主要ページの階層とリンク数を記録し、移行後に比較します。
h1が 落ちた、1 段階降格した、といった変化は気づかずに出してしまいがちです。 - 意図しない外部リンクの発見 — 外部一覧にステージングや CDN のホストが 混ざっていれば、通常はデプロイを生き延びた絶対 URL のハードコードです。
- AI の回答エンジン向けの準備 — 正しい見出し階層は最も低コストな構造の信号で、 最も頻繁に壊れているものでもあります。マークアップの誤りは HTML バリデーター、共有時の見え方は OG プレビューが扱います。
数えないもの
収集するのは <a href> 要素だけです。<link>・<form action>・<iframe src>・
JavaScript による遷移は対象外です。文書からクローラーが辿るリンクではないからです。
注意事項
リダイレクトは 5 つまで追い、各ホップで同じアドレス判定を再度通すので、公開 URL からプライベートネットワークへリダイレクトさせることはできません。階層は最終応答 のものを表し、経路も表示します。
読み取りは 1 MB で止まり、報告は見出し 300 件・リンク 500 件で打ち切ります。 いずれかに達した場合はお伝えします。無言で切り詰められた階層は、完全なものと 見分けが付かないからです。
プライベート・ループバック・リンクローカル・予約済みのアドレスへのリクエストは 接続前に拒否します。応答本文はこの結果を作るためにメモリ上で解析するだけで、 保存はしません。詳細はプライバシーポリシーに書いてあります。