中断したクロールを再開する

クロールは再開できます。スキャンは来歴付きで保持されるSQLiteファイルなので、止まったクロールは最初からやり直さず、続きから再開します。

できること

保持されるスキャン

ネイティブのスキャンは、証拠データ、キュー、すべての設定をまとめて保持する1つのSQLiteファイルです。サイトに再アクセスせず、オフラインで検査、エクスポート、スナップショット、固定、削除、再キュー、本文の差分比較、再分析ができます。完了したスキャンは変更されません。

  • scan-reanalyzeは保持したHTMLを再解析
  • ベースライン用のスナップショットと固定

復旧

スキャンのパスを指定してcrawl-site --resumeを実行すると、保存されたキューから、保存されたルールのままクロールを再開します。crawl-siteは終了時に、実行が完了したか、途中で止まったか、前回の続きだったかを表示します。crawl-diagnoseはスキャンをオフラインで読み、通信なしで停止の原因を説明します。

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

  1. スキャンファイルがチェックポイント

    SQLiteのスキャンには、キュー、証拠データ、すべての設定が1つのファイルに入っています。書き込みは同じトランザクションで行われるため、停止してもデータが食い違うことはありません。

  2. ファイルだけで再開

    スキャンのパスを指定してseohead crawl-site --resumeを実行します。開始URLと設定はファイルから読み込むので、同じルールのままクロールを続けられます。

  3. 停止の原因を調べる

    crawl-diagnoseはスキャンをオフラインで読み、キュー、robots、スコープ、上限の状態、コンテンツタイプ、記録された失敗を、通信なしで表示します。

この機能のチェック項目

チェック項目意味重要度根拠
NO_RESPONSEURLがタイムアウトしたか、DNSの解決に失敗したか、接続を拒否された。配信元の停止はここに現れることが多いCriticalスキャンに記録されたURLと失敗の種類
SERVER_ERROR_5XXページが5xxのステータスを返す。たとえば、負荷で配信元が応答しなくなった場合CriticalURLとステータスコード
BROKEN_PAGE_4XXページが4xxのステータスを返す。ユーザーにもクローラーにも壊れたページCriticalURLとステータスコード
BLOCKED_BY_ROBOTSrobots.txtがURLをブロックしている。再開前に、意図したブロックか確認するImportantURLとrobots.txtのルール

コマンド1つで実行

bash
seohead crawl-diagnose --scan ./scans/audit.sqlite

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

必要なもの

  • crawl-site --scan-outで書き出したスキャンファイル
  • ファイルを書き出したものと同じSpiderHeadのビルド(または--producer-build SHA)
  • 旧形式のフォルダ実行では、同一のコマンドと同じ--out-dir

制限事項

  • 完了または失敗したスキャンは再開できません
  • URL数や時間の上限で止まったクロールは、同じ上限のまま再開します。上限を上げる場合は、新しいスキャンとしてクロールしてください
  • 認証ヘッダーを使ったクロールは再開できません
  • 再開時に変更できるのはレート設定だけです

よくある質問

再開時にURLや設定を変更できますか?
いいえ。--resumeと併用できるのは、レートのオプション(--max-urls-per-second、--min-delay)だけです。開始URLとそのほかの設定はファイルから読み込むため、別のクロールのルールで続行されることはありません。
再開には同じSpiderHeadのビルドが必要ですか?
はい。ソースのリビジョンが異なる場合、再開は拒否され、メッセージに両方のリビジョンが示されます。このチェックアウトがファイルを書き出したビルドだと確認できない場合は、そのSHAを--producer-buildに指定します。
再開したクロールは、取得済みのページを再取得しますか?
いいえ。スキャンにコミット済みのページは、二重に取得されません。再開した実行は、保存されたキューの続きから進みます。
止まったクロールが、完了したように見えることはありますか?
いいえ。JSON出力と保存される監査の記録に、partial、finish_reason、resumedが残るので、途中までのスキャンがサイト全体の結果に見えることはありません。
--out-dirを使ったクロールはどう再開しますか?
同じ--out-dirを付けて、同一のコマンドをもう一度実行します。そのフォルダのcrawl_state.jsonのチェックポイントで再開が決まります。スコープや上限が変わっていた場合は、意図的に最初からクロールし直します。