内部リンクとクロール深度の監査

クロール結果から内部リンクグラフを作成します。孤立ページ、深いクリック深度、行き止まりのページ、ナビゲーションからしかリンクされていないページ、nofollowの被リンクだけのページ、サイトの中央値と比べたリンクスコアが分かります。

できること

構造

crawl-siteは、開始URLから同じホストのリンクを辿り、すべてのリンクを1つのSQLiteファイルに保存します。ページごとに、被リンク、発リンク、開始URLからのクリック深度、各リンクの位置(ナビゲーション、フッター、本文)が分かります。これにより、本文からリンクされているページと、メニューにしか載っていないページを区別できます。

  • ページごとの被リンクと発リンク
  • 開始URLからのクリック深度
  • リンク位置:ナビゲーション、ヘッダー、サイドバー、フッター、本文
  • 各ページの発見経路

弱点

チェックでは、どの内部リンクからも到達できないページ、発リンクのない行き止まりのページ、共通パーツ(ボイラープレート)からしかリンクされていないページ、被リンクがすべてnofollowのページを検出します。リンクスコアでは、サイトの中央値を大きく下回るページが分かります。レジストリには検出結果ごとに修正方法が登録されています。たとえば、関連ページからの文脈に沿ったリンクの追加です。

  • 孤立ページと行き止まりのページ
  • ナビゲーション、ヘッダー、サイドバー、フッターからしかリンクされていないページ
  • nofollowの被リンクだけのページ
  • 開始URLからのクリック数が多すぎるページ

アンカー

「こちら」「続きを読む」「ここをクリック」のような汎用的なアンカーテキストでは、リンク先が何のページなのか、読者にも検索エンジンにも伝わりません。アンカーテキストが空の内部リンクも、アクセシブルなラベルがない限り報告されます。

  • 汎用的なアンカーテキスト
  • アンカーテキストが空の内部リンク
  • リンク元のページとあわせて表示するアンカーテキスト

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

  1. 1つの開始URLからサイトをクロールする

    crawl-siteは、開始URLから同じホストのリンクを辿ります。既定ではrobots.txtに従い、すべてのリンクを1つのSQLiteファイルに保存します。

  2. リンクグラフを作成する

    ページごとに、被リンク、発リンク、開始URLからのクリック深度、各リンクの位置(ナビゲーション、フッター、本文)を記録します。

  3. 孤立ページ、行き止まり、弱いリンクを検出する

    チェックでは、どのリンクからも到達できないページ、行き止まり、共通パーツやnofollowからしかリンクされていないページ、「こちら」のようなアンカーを報告します。

この機能のチェック項目

チェック項目意味重要度根拠
ORPHAN_PAGEクロール内に、ページへの内部リンクがないImportantURLの被リンク数
DEEP_CLICK_DEPTH開始URLからのクリック数が、設定した下限を超えているImportantクリック深度と、開始URLからの最短経路
NO_INTERNAL_OUTLINKS内部リンクが出ていない、行き止まりのページImportantページのURLと発リンク数
INLINK_BOILERPLATE_ONLYナビゲーション、ヘッダー、サイドバー、フッターからしかリンクされておらず、本文からのリンクがないImportantテンプレートの領域ごとの被リンクの位置
ONLY_NOFOLLOW_INLINKSページへの内部リンクがすべてnofollowImportantrel属性付きの被リンク一覧
LOW_LINK_SCORE内部リンクスコアが、サイトの中央値を大きく下回っているTipページのスコアとサイトの中央値の比較
GENERIC_ANCHOR_TEXT「こちら」「続きを読む」「ここをクリック」のようなアンカーテキストが、リンク先の内容を表していないTipリンク元のページとアンカーテキスト
チェック一覧にある関連項目
INTERNAL_LINK_NO_ANCHORSITEMAP_ORPHAN

コマンド1つで実行

bash
seohead crawl-site --url https://example.com --max-urls 1000 --scan-out ./scans/links.sqlite

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

必要なもの

  • crawl-site用の開始URL
  • または、監査の経路用にScreaming FrogのInlinksエクスポート
  • グラフ全体についての結論を出すための、完全なクロール

制限事項

  • 一部だけのクロールでは、孤立ページとは断定できません。クロールできなかったページに、唯一のリンクがあるかもしれないためです
  • 一部だけのクロールでは、INLINK_BOILERPLATE_ONLYはスキップされ、LOW_LINK_SCOREは出力されません
  • JavaScriptで追加されたリンクが見えるのは、クロールでページをレンダリングする場合だけです
  • どのページからどのページへリンクすべきかは、修正方法の記述以上には提案しません

よくある質問

サイトには何か変更が加わりますか?
いいえ。クロールはページを読み取るだけです。既定ではrobots.txtに従い、--robotsでレポートのみ(report-only)または無視(ignore)に設定できます。結果はSQLiteファイルとして残り、自分で確認します。
何ページまでクロールしますか?
既定の上限は200 URLです。--max-urlsで最大1,000,000まで増やせます。--max-urls 0を指定すると、完全なクロールになります。中断したクロールは、--resumeで再開できます。
クロールが途中で止まった場合、結果は完全ですか?
グラフ全体についての結論は出せません。一部だけのクロールでは、クロールできなかったページに唯一のリンクがあるかもしれないため、INLINK_BOILERPLATE_ONLYのようなチェックはスキップされ、LOW_LINK_SCOREは出力されません。スコアを信頼する前に、完全なクロールを実行してください。
クロールの速度はどのくらいですか?
--max-urls-per-secondまたは--min-delayで速度を設定します。本番サイトなら、1秒あたり1〜2リクエストが、負荷をかけにくい出発点です。
サイトマップは使いますか?
はい。URLの追加ソースとして使います。--sitemapでXMLのURLをシードにしたり照合したりでき、内部リンクのないサイトマップ上のURLは、サイトマップの孤立ページとして報告されます。