Open SEO Crawler について
Open SEO Crawlerは、SEO担当者、開発者、サイト運営者向けのセルフホスト型サイトクローラー兼テクニカルSEO監査ツールです。検索エンジンやAIクローラーによるページ閲覧も調べられ、MCPとコマンドラインからクロールデータを操作できます。
主な機能
- 01テクニカルSEOのクロールと監査
- 02検索・AIクローラーのアクセス確認
- 03JavaScriptのみのページ内容を検出
- 04一括レポートとXLSXエクスポート
- 05クロール保存と重要度別サマリー
- 06MCPサーバーとCLIによる操作
活用シーン
- 01サイトのテクニカルSEO問題を監査
- 02AIボットがページを読めるか確認
- 03AIクライアントでクロールを開始・確認
- 04保存した監査のクロール結果を比較
MCP 対応
MCPサーバーを通じて、MCPクライアントはクロールの開始・追跡、サマリーの取得、問題別のページ絞り込み、ページと被リンクの確認、クロール比較、AIクローラーチェック、XLSX出力を行えます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Open SEO Crawler:無料のSEOクローラー、ウェブサイト監査&AIクローラーチェッカー(セルフホスト可能)
Open SEO Crawler は、ローカルで実行する無料のオープンソースSEOクローラーです。あらゆるウェブサイトをクロールして技術的なSEOの問題を検出する、セルフホスト型のウェブサイトSEOクローラー兼サイト監査ツールです。高速で並行処理に対応し、CMSを認識します。アカウント、APIキー、クラウド、URLごとの制限がなく、Screaming Frog、Sitebulb、Ahrefs Site Auditの代替としてすぐに利用できます。
AIクローラーチェッカーとしても利用できます。 AI検索やGoogleはあなたのページを読み取れるでしょうか?クロール後、ページのサンプルに対して、Googlebot、Bingbot、Applebot、およびユーザーエージェントを公開しているすべてのAIクローラー(GPTBot、OAI-SearchBot、ChatGPT-User、PerplexityBot、CCBot)としてリクエストを送信します。クローラーがアクセスをブロックされたり、チャレンジを受けたり、別の場所へリダイレクトされたり、簡易版を配信されたりするページにはフラグが付けられます。JavaScriptの実行後にのみ表示されるテキストにも同様にフラグが付けられます。クロールが完了したら、Use with AI ボタンでクロール結果を要約とすぐに使えるプロンプトにまとめ、任意のAIアシスタントに貼り付けられます。または、AIアプリをクローラーに接続し、自動でクロールを実行させるためのセットアップ用プロンプトを取得できます。
AIアシスタントから操作できます。 リポジトリにはMCPサーバーとコマンドラインツールが付属しているため、Claude Code、Claude Desktop、CursorなどのMCPアプリ(または任意のスクリプト)から、ブラウザーを開かずにクロールを開始し、問題を読み取り、任意のページを表示できます。クローラー自体はAIを呼び出しません。アシスタントがクローラーを呼び出します。セットアップ方法。
SEOの専門家、ウェブ開発者、そして技術的なSEO監査を自分のマシン上で行いたいサイト所有者のために作られています。単一サイト向けの無料SEOクローラーとしても、ポートフォリオ全体を定期的にクロールするウェブサイトクローラーとしても利用できます。
現役のSEO担当者であるPuneet Singhが開発しました。相談したい質問、アイデア、バグなどがあれば、LinkedInでつながりましょう。
→ Linux、macOS、Windowsにワンラインでインストールできます。起動時に自動起動し、毎日自動更新します。完了するとブラウザーがhttp://localhost:5002/を開きます。


一般公開されているスクレイピング用サンドボックス、books.toscrape.comを100ページクロールしたテスト結果。
比較
| Open SEO Crawler | Screaming Frog(無料版) | Screaming Frog(有料版) | Sitebulb | Ahrefs Site Audit | |
|---|---|---|---|---|---|
| URL数の制限 | 無制限 | 500 | 無制限 | 無制限 | クレジット制 |
| 価格 | 無料、MIT | 無料 | £199 / 年 | $13.50+ / 月 | $129+ / 月 |
| セルフホスト可能 | ✅ | ✅ | ✅ | ✅ | ❌ クラウド |
| ホームにデータを送信 | ❌ | ❌ | ❌ | ❌ | ✅ |
| 自動更新 | ✅ 毎日+起動時 | ❌ 手動 | ❌ 手動 | ❌ 手動 | 該当なし |
| オープンソース | ✅ | ❌ | ❌ | ❌ | ❌ |
| CMS対応プリセット | ✅ 10種類のCMS | ❌ | 一部対応 | 一部対応 | 一部対応 |
| ヘッドレスJSレンダリング | ✅ オプション | ✅ 有料 | ✅ | ✅ | ✅ |
コンパニオン:Chrome 用 SEO サイドパネル
クローラーはサイト全体を対象にします。開いているページだけを確認するには、同じ開発元が提供する無料の Chrome 拡張機能、SEO Side Panel をお使いください。アクセスするすべてのページの横に開いたままになり、問題とその修正方法を一覧表示します。
- AI クローラーが見落とすもの。 サーバーが送信する生の HTML と、レンダリング後のページを並べて表示します。GPTBot、ClaudeBot、PerplexityBot は JavaScript を実行しないため、ハイドレーション後にのみ表示されるコンテンツは認識できません。
- タイトルとメタディスクリプションを文字数ではなくピクセル数で測定します。
- JSON-LD のエラーをブロックと行番号で特定し、わかりやすい言葉で表示します。
- リンクのステータス: ページ内のすべてのリンクに、200、リダイレクト、404 のいずれかを表示します。
アカウントも API キーもテレメトリーも不要です。ここでサイトをクロールして問題のあるページを見つけ、Chrome で開いて何が問題なのかを確認してください。
新着情報(最近の追加機能)
- AI との 2 つの使い方:上部バーのボタンを押すと、選択肢が表示されるようになりました。概要をコピーすると、クロール結果を Markdown の概要としてコピーでき、あらゆる AI チャットで使えます。AI アプリに接続すると、このコンピューター上の正確なコマンドとパスを含むセットアップ用プロンプトが表示されます。コマンドを実行できる AI アプリに貼り付けると、MCP サーバーが自動で追加されます。手動でセットアップできるよう、コマンドと設定ブロックもコピーできます。
- 普段使われているクローラーを参考にした、よりシンプルな外観:デスクトップ版とホスト型のクローラーを参考にしました。明るいグレーのキャンバスに白いパネル、青を 1 色、全体を文頭大文字に統一し、Lighthouse 風の深刻度マークを採用しました。概要は監査の要約のように構成され、ステータス別のクロール済みページ数、深刻度別の問題があるページ数、クロールの詳細、問題の一覧表が表示されます。通常の 200 はシンプルに表示し、リダイレクトとエラーだけにバッジを付けます。行の操作はホバー時に表示され、ダークモードではニュートラルなグレーを使います。クロールが画面に表示されると設定列は折りたたまれます(上部バーの「設定」から再表示できます)。設定がどれほど長くなっても、「クロールを開始」は常に表示されます。
- クロールの進行状況とリアルタイムの概要:上部バーの下に進行状況バーが表示され、クロールの進み具合(クロール済みページ数を、クロール済みページ数とキュー内のページ数の合計で割った割合。ページ上限で打ち切り)、キュー、経過時間、残り時間の推定値を確認できます。新しいクロールを開始すると概要が表示され、ページが読み込まれるたびに更新されます。
- リダイレクト先のページもチェックするようになりました:クローラーは追跡したリダイレクトを遷移先のページとして保存していましたが、そのページのコンテンツチェックはスキップしていました。そのため、開始 URL がリダイレクトされる場合(example.com から www.example.com へ、または言語フォルダーへなど)、タイトル、メタディスクリプション、H1、canonical、Open Graph がチェックされませんでした。現在はこれらもチェックされ、重複レポート、サイトマップとの比較、エクスポートされるサイトマップにも含まれます。
- より正確な AI 向け概要:開始 URL とリダイレクト先を記載し、リンク先のすべてのページに到達する前にクロールが終了した場合はその旨を示します(到達していない URL を孤立ページとは呼びません)。ほぼすべてのページに該当する問題は、該当しない少数のページを列挙します。タイトル内の
|はそのまま保持し、エクスポートの日付は使用しているタイムゾーンで表示します。サイトマップレポートの サイトマップ内、未クロール リストに、各 URL へリンクしているクロール済みページの数が表示されるようになりました。 - MCP サーバーとコマンドライン:Claude Code、Claude Desktop、その他の MCP アプリをクローラーに接続するか、
osc.pyでスクリプトを作成できます。クロールを開始して進行状況を追跡し、概要をデータとして読み込み、問題別にページを絞り込み、インリンクとともにページを開き、2 つのクロールを比較し、任意の URL で AI クローラーチェックを実行して、.xlsx にエクスポートできます。この方法で開始したクロールにもブラウザーと同じチェックが適用され、「読み込み」の一覧に表示されます。Python の標準ライブラリのみを使用するため、追加のインストールは不要です。AI アシスタントから使うをご覧ください。 - AI クローラーチェッカー(ボットによる読み取りやすさ):クロールのたびに、サンプルページをブラウザーとして、また Googlebot、Bingbot、Applebot、およびユーザーエージェントを公開している AI クローラー(OAI-SearchBot、PerplexityBot、ChatGPT-User、GPTBot、CCBot)としてリクエストします。ブロック、CDN チャレンジ、リダイレクト、異なるタイトルやテキスト、内容が少ないページ、特定のクローラーを対象とした noindex を検出します。また、JavaScript の実行後にのみ存在するコンテンツや、デスクトップ版よりコンテンツが少ないモバイルページも検出します。デフォルトでは 10 ページが対象です。
- AI 向け概要(現在は AI との使い方 にあります):ワンクリックでクロール結果を簡潔な Markdown の概要に変換します。あらかじめ用意されたプロンプトとともに、あらゆる AI アシスタントに貼り付けて、優先順位付きの修正リストを作成できます。問題は概要と同じ方法でグループ化され、URL リストには上限があるため、チャット画面に収まります。クローラー自体は AI を呼び出さず、どこにもデータを送信しません。
- すべてのレポートをエクスポート可能に:「タイトル一覧」「リダイレクトチェーン」「Hreflang」「深い階層のページ」など、すべてのレポートタブで「ビューをエクスポート」が使えるようになりました。.xlsx ブックには、行のあるレポートごとにシートが追加されます。
- より安全で安定した動作:クロールしたタイトル、URL、robots.txt の行からアプリ内でスクリプトを実行できなくなりました。他のウェブサイトから「更新」や「再起動」を実行することもできません。「更新」ボタンは systemd と launchd の下で正しく再起動するようになり、サイトマップ分析も再び動作します。
- 不正なリンク href の検出:スキームがなく、生の空白を含む
href(住所や Google Maps Plus Code をリンクに直接貼り付けたもの。例:<a href="7FG4+8Q Springfield">Directions</a>)は、以前はそれを含むすべてのページに対する相対 URL として解決され、クロールに架空の 404 が大量に追加されていました。300 ページのサイトでフッターのリンクが 1 つ壊れているだけで、約 300 件の偽の 404 行ができていました。現在はリンクとしてスキップし、問題の原因となったテキストを示す 不正なリンク href の問題として、ページごとに 1 回報告します。 - JS 対 非 JS の比較モード:「JS をレンダリング」をオンにした状態で 非 JS HTML と比較 にチェックを入れると、両方のモード(Playwright でレンダリングした HTML と生の HTML)で各ページをクロールします。ページごとの差分から、主に JavaScript を実行しない AI クローラー(GPTBot、ClaudeBot、PerplexityBot、CCBot)に見えないコンテンツを正確に確認できます。
- 共有インスタンスのサポート:保存済みクロールの一覧に追加フォルダー(
SITE_CRAWLER_EXTRA_CRAWL_DIRS)を指定すると、1 つのオフィス用インスタンスで複数のツールのクロールを表示できます。また、IP アドレスを使ってクロールの実行者(SITE_CRAWLER_USER_MAP)を表示できます。 - クロールバジェットページ:ホームページとセクションページをスキャンし、検出したすべての URL をクエリパラメーター別に分類します。クロールバジェットを浪費する要因(Elementor の
?e-page-AJAX ページネーション、ファセットフィルター、並べ替え/トラッキング/セッションパラメーター)を分類し、robots.txt にそのまま貼り付けられるDisallowルールを生成します。サイトマップの実際のページ数と、パラメーター付きの架空 URL 数を並べて表示するため、クロールバジェットの浪費がひと目でわかります。 - ソフト 404/無限 URL トラップの検出:クロールのたびに、存在しない URL(ルート直下の
/<token>/と、実在するページの下にネストした URL)に対して 2 回のプローブリクエストを行い、サーバーが 200 を返すか確認します。200 が返る場合は、サーバーがソフト 404 を返し、クロール可能な無限の URL 空間を生成していることを意味します。問題サイドバーに赤色で表示され、修正方法も示されます。 - 代替テキストがない画像レポート:代替テキストがない画像ごとに 1 行を表示し、その画像を埋め込んでいるすべてのページを一覧にする、画像を中心とした一括レポートです。
- robots.txt による AI クローラーブロックの検出:robots.txt が AI クローラー(GPTBot、ClaudeBot、PerplexityBot、Google-Extended、CCBot、Bytespider など 20 以上)をブロックしている場合、ChatGPT、Perplexity、Google AI Overviews がサイトを読み取ったり引用したりできないことを赤色のエラーとして表示します。また、一般的な検索エンジン(Googlebot/Bingbot)がブロックされている場合も検出します。Cloudflare の
Content-Signal: ai-train=noによるオプトアウトも検出します。問題サイドバーのホームページ行に、AI クローラーのブロック/検索エンジンのブロックとして表示されます。 - クロール後の概要ダッシュボード:クロールの完了後に自動で開き、深刻度別の問題、ページの総数、レスポンスコードの内訳、特に問題の大きいページをひと目で確認できます。
- 一括 SEO レポート:「タイトル一覧」「メタ一覧」「H1 一覧」「canonical 一覧」に加え、「タイトルの重複」「メタの重複」「H1 の重複」「本文の重複」「複数の H1」「リダイレクトチェーン」「レスポンスコード」「深い階層のページ」「Hreflang」専用のレポートがあります。
- 深刻度別の問題表示:ページごとに最も深刻な問題(エラー/警告/情報)で分類し、問題の種類ごとにグループ化します。影響の大きな問題から修正できます。
- ワンクリック自動更新:上部バーのバージョンバッジが GitHub を確認し、新しいコミットがある場合はワンクリックで
git pull + restart + page reloadを実行できます。常に最新のコードを使えます。 - ダークモードの切り替え:ユーザーごとに明示的に選択でき(localStorage に保存)、システムの
prefers-color-scheme設定を適切に上書きします。 - 保存済みクロールの一覧:すべてのクロールが自動保存されます。「保存済みデータを読み込む」モーダルから、過去のクロールを再度開けます。同じ LAN 上の複数のツールで、各クロールの実行者名を特定できます。
- スマートな noindex/canonical 処理:これらのページがエラー数を増やしたり、一括レポートで重複として報告されたりしなくなりました。
機能
クロール
- 並列クロール:デフォルトではワーカー数は5で、1~20の範囲で設定できます。ホストごとに適切なアクセス間隔を保つため、目標とするレート制限を超えずに高速で処理できます。
- CMS の検出とワンクリックでの推奨設定:Shopify、WordPress(+ Yoast / Rank Math)、Webflow、Wix、Squarespace、Kajabi、Ghost、Drupal、HubSpot、Joomla を自動検出します。プラットフォームごとに適切な除外パターンと JS レンダリング設定を適用します。
- スマートな再試行:429 / 5xx / 接続エラーの際に、指数バックオフで再試行します。
Retry-Afterを尊重します。サーバーでレート制限が始まるとホストごとの適応型バックオフが倍増し、回復すると徐々に元に戻ります。 - サイトマップ分析:sitemap.xml を取得し、クロール結果と照合します。サイトマップにないページ、孤立したページ、サイトマップにのみ存在する URL、サイトマップ内の非200応答、サイトマップ内のリダイレクトを検出します。
- 類似コンテンツの検出:シングルベースの Jaccard 類似度を使い、90%以上類似するページのペアを検出します(80 / 85 / 90、または任意の値に調整可能)。
- robots.txt に対応(無視する設定も選択可能)。
- Glob による包含/除外パターン:
*?variant=*、*/cart/*など。 - Playwright による任意の JS レンダリング:SPA サイト(React、Vue、Wix)では、別途インストールしてください。非 JS HTML と比較にチェックを入れると、すべてのページを両方のモードでクロールし、差分から非 JS クローラーでは見えないコンテンツを検出します。
- クローラーのトラップを防ぐ組み込み機能:不正なリンクや無限に広がる URL 空間をレポートに影響する前に除外します。設定は不要です。
- ページ以外のパスをスキップ(
/feed/、/wp-json/、/wp-admin/、/cdn-cgi/、サイトマップ XML、カート/チェックアウトの AJAX エンドポイント) - セグメントの繰り返しを防止:パス相対のナビゲーション href によって生成された
/our-team/our-team/のような URL を拒否します - ページビルダーのページネーション/フィルターパラメーター(Elementor AJAX の
?e-page-*、?e-filter-*、Jetpack の?infinity)はキューに追加されません(「9,000ページのサイトで26,000件がキューに追加される」という典型的な問題を防ぎます) mailto:なしで記述されたメールアドレス(<a href="[email protected]">)は、偽の/contact/[email protected]URL になる代わりに破棄されますhrefに貼り付けられたプレーンテキスト(住所、Google マップの Plus Codes)は、各ページに偽の404を発生させる代わりに、不正なリンク href の問題として報告されます- クロール後のソフト404プローブにより、存在し得ない URL に対して200を返すサーバーを検出します
- ページ以外のパスをスキップ(
AI クローラーチェッカー(ボットの読み取り可能性)
Googlebot、Bingbot、ApplebotはJavaScriptをレンダリングします。ほとんどのAIクローラーはレンダリングするとは明示していないため、配信されたHTMLを読み取ります。クロールのたびに(チェックボックスで切り替え可能、デフォルトで有効)、サンプルページとしてホームページと各セクションから1ページずつを、ブラウザーおよび以下の各クローラーとしてリクエストし、比較します。
- 各運営者が公開しているユーザーエージェントを使った実際のリクエスト:Googlebot(スマートフォンとデスクトップ)、Bingbot、Applebot、OAI-SearchBot、PerplexityBot、ChatGPT-User、GPTBot、CCBot。
- 公開されたユーザーエージェントがないクローラー(ClaudeBot、Claude-SearchBot、Claude-User)と、クローラーではないトークン(Google-Extended、Applebot-Extended)は、robots.txtのみを確認します。
- ページとクローラーごと:ブロック(403、429、503)、CDNチャレンジ、別の場所へのリダイレクト、そのクローラーのみを対象としたnoindex、タイトル、H1、canonical、テキストの違い、または内容が少ないページを確認します。読み込みのたびに内容が変わるページを別物と判定しないよう、各ページは最初にブラウザーとして2回取得します。
- JavaScript:各サンプルページを1回レンダリングし、JavaScriptの実行後にのみ存在する単語数を数え、スクリプトによって削除されるHTML内のnoindexも検出します(Googleはそのようなページのレンダリングを省略する場合があります)。
- モバイル優先:GooglebotスマートフォンとGooglebotデスクトップを比較します。
- クロールされたすべてのページで:AIによる回答に関して各サービスが公表している意味に基づくrobotsディレクティブ(Bing Copilot向けのnosnippet、noarchive、nocache、max-snippet、data-nosnippet)と、GooglebotまたはBingbotのみを対象としたnoindexを確認します。
リクエストは、各クローラーのユーザーエージェントを使って、お使いのマシンから送信されます。CDNやファイアウォールはIPアドレスやシグネチャで本物のクローラーを識別するため、結果は本物のクローラーが取得する内容と異なる場合があり、どちらの方向にも食い違う可能性があります。問題が見つかった場合は、CDNやファイアウォールの設定を確認する手掛かりとして扱い、Search ConsoleのURL検査のライブテストでGooglebotを確認してください。所有または監査するサイトで使用してください。
ページごとのチェック項目
- タイトル:欠落、長すぎる(60文字超)、短すぎる、ページ間で重複、H1と同一
- メタディスクリプション:欠落、長すぎる(160文字超)、短すぎる、ページ間で重複
- H1タグ:欠落、複数のH1、タイトルと同一、ページ間で重複
- Canonicalタグ:欠落、別のページを指している(canonical化)、自己参照
- Schema.org構造化データ:JSON-LDとマイクロデータ(
itemtype)マークアップの両方から、存在と検出されたタイプを確認 - Open Graph + Twitter Card:
og:title、og:image、twitter:cardの欠落 - コンテンツ:内容が少ない(200語未満)、本文がほぼ重複(Jaccard類似度)
- パフォーマンス:応答が遅い(3秒超)
- リダイレクト:通常のリダイレクトと、末尾のスラッシュ/www/HTTPSの正規化を区別して分類(末尾のスラッシュによる301で「リダイレクトチェーン」レポートが汚染されないよう、別々に分類)
- リダイレクトチェーン:複数段階のリダイレクトを、全ホップのリストとともに検出
- HTTPエラー:再試行回数を含む4xx/5xx
- インデックス登録可否:meta robotsまたはX-Robots-Tagの
noindex - Hreflang:抽出と検証を行い、戻りタグの欠落を検出
- ページネーション:
/page/N/、?page=N、?paged=Nおよび?_page=Nのようなビルダー固有のプレフィックス付きパターンをクロールしますが、SEOの問題チェックはスキップします(ページネーションされたアーカイブでメタ情報の欠落を誤検出しません) - モバイル対応:viewportメタタグの有無
- 混合コンテンツ:HTTPSページがHTTPリソースを読み込んでいる場合
- URLの適切さ:大文字、アンダースコア、空白、115文字超、トラッキングパラメーター
- 不正なリンクhref:
hrefに貼り付けられたプレーンテキスト(住所、Plus Codeなど)を、架空のURLとしてクロールせず、ページごとに検出 - 画像:
alt属性がない画像の数(装飾用のalt=""は減点対象外) - セキュリティヘッダー:HTTPS、HSTS、CSP、X-Frame-Options、X-Content-Type-Options
- 深い階層のページ:ホームページからのクリック数がNを超えるURL(設定可能)
- ソフト404/URLトラップ:クロール後の検査で、存在しないURL(ルートとネストされたURL)に対してサーバーが200を返すかを検出します。これにより、無限にクロール可能なURL空間が生じます。リダイレクトおよび4xx/5xxの検査応答は正常として扱います
一括レポート(サイドバー)
すべてのレポートをXLSXにエクスポートできるため、コンテンツチームや開発チームにそのまま渡せます。
- すべてのタイトル/すべてのメタ情報/すべてのH1/すべてのCanonical:ページごとに1行
- 重複タイトル/重複メタ情報/重複H1/重複本文:重複値ごとにグループ化し、URLを正規化(末尾のスラッシュによる誤検出なし)
- 複数のH1:H1タグが2つ以上あるページ。H1(1)/H1(2)/H1(N)の列を動的に生成
- リダイレクトチェーン:2段階以上のホップを経由して到達したページ。完全なチェーンを表示
- 応答コード:ステータスコード別の内訳
- 深い階層のページ:ホームページからのクリック数がN以上のURL
- 代替テキストのない画像:altテキストがない画像ごとに1行。その画像を埋め込んでいるすべてのページを表示
- Hreflang:抽出、検証、ページ間の整合性チェック
- 重大度別ビュー:すべてのエラー/すべての警告/すべての情報。各ビューで関係のない列は非表示
クロールバジェット分析
- オンデマンドのクロールバジェットページ(トップバー):サイト全体のクロールは不要です。ホームページとセクションページをスキャンし、見つかったすべてのURLをクエリパラメーター別に分類して、クロールバジェットを浪費するトラップ、Elementorの
?e-page-AJAXページネーション、絞り込みフィルター、並べ替え、トラッキング、セッションIDを分類します。 - そのまま貼り付けられるrobots.txtルール:各トラップをブロックする正確な
Disallow行を生成し、トラップの内容とrobots.txtで修正するのが適切な理由を説明します。 - 無駄を可視化:サイトマップの実際のページ数と、実在しないパラメーター付きURLの数を並べて表示するため、存在すべきでないURLにクロールバジェットがどれだけ使われているかを確認できます。
- ソフト404/無限URLトラップの検査:各クロール後に自動で実行されます。結果は問題サイドバーの赤いURLトラップカテゴリに表示され、詳細パネルと修正方法を案内します。
自動更新+バージョンバッジ
- トップバーのバージョンバッジには現在のビルドが表示され、新しいコミットがないか GitHub を定期的に確認します。新しい master コミットがある場合は、**「更新が利用可能」**に切り替わります。
- ワンクリックで、
git pull + restart service + reload pageを一括実行します。SSH 接続や手動コマンドは不要です。 - バックグラウンドで毎日自動更新(Linux の systemd タイマー/macOS の LaunchAgent/Windows タスク スケジューラ)が実行されるため、意識することなく常に最新の状態を保てます。pull によってアプリが動作しなくなった場合は、自動でロールバックします。
UI
- クロール後の概要ダッシュボードが自動で開き、重要度別の件数、主な問題、クロール統計が表示されます。
- 重要度サイドバー:すべてのページ/エラー/警告/情報が、それぞれリアルタイムの件数とともに表示されます。
- 問題のグループ化:重要度をクリックすると、問題が種類別にグループ化され、影響が最も大きいページが各項目の下に表示されます。
- ページ詳細ドック:URL をクリックすると、ページのメタデータ全体、そのページのすべての問題、内部リンク(アンカーテキスト付き)、外部リンクが表示されます。
- ダークモード:トップバーで切り替えられ、ユーザーごとに設定が保存されます。
- 保存済みクロール:すべてのクロールが自動保存され、「保存済みの読み込み」モーダルから再度開けます。開くと保存日時が表示されます。
- AI で使用:編集可能なプロンプトを使って、クロールの概要を AI アシスタント向けにコピーまたはダウンロードできます。または、AI アプリを MCP 経由でクローラーに接続する設定プロンプトをコピーできます。
- サイトマップ+XLSX のエクスポートボタンがトップバーにあり、それぞれワンクリックで実行できます。
クイックインストール(手動)
Python 3.10 以降が必要です。
git clone https://github.com/puneetindersingh/open-seo-crawler.git
cd open-seo-crawler
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python3 app.py
ブラウザーでhttp://localhost:5002/を開いてください。
ワンラインインストール:自動起動+自動更新(Linux/macOS/Windows)
各インストーラーは、起動時/ログイン時にクローラーをバックグラウンドサービスとして起動するよう登録し、このリポジトリから最新の内容を取得する毎日の自動アップデーター(失敗時はロールバック)も登録します。インストール先は~/open-seo-crawlerです(Windows では%USERPROFILE%\open-seo-crawler)。完了すると、ブラウザーでhttp://localhost:5002/が自動的に開きます。
| プラットフォーム | インストールコマンド |
|---|---|
| Linux Mint/Ubuntu/Debian | Linux のセクションを参照してください |
| macOS(Intel+Apple Silicon) | macOS のセクションを参照してください |
| Windows 10/11 | Windows のセクションを参照してください |
Linux Mint/Ubuntu/Debian でのワンラインインストール
ターミナルを開いて、次のコマンドを貼り付けてください。
curl -fsSL https://raw.githubusercontent.com/puneetindersingh/open-seo-crawler/master/install.sh -o install.sh && chmod +x install.sh && ./install.sh
これで完了です。処理が終わると、ブラウザーでhttp://localhost:5002/が開きます。
任意のドライランによる事前チェック(Python、ポート、ディスク、インターネットを確認します。変更は行いません):
curl -fsSL https://raw.githubusercontent.com/puneetindersingh/open-seo-crawler/master/install.sh -o install.sh && chmod +x install.sh && ./install.sh --check
インストーラーの処理内容:
- 前提条件(Python 3.10 以降、systemd、sudo、ディスク容量、空いているポート 5002、インターネット)を確認します
- 不足している場合は、
aptを使ってpython3 / python3-venv / git / curlをインストールします - 古い Ubuntu/Mint のサポート:システムに Python 3.10 未満(例:Mint 20.x では Python 3.8)が付属している場合、インストーラーは deadsnakes PPA を追加し、
python3.13→3.12→3.11→3.10の順にインストールを試みます。いずれも利用できない場合は、自動的にソースから Python 3.10.14 をコンパイルします(約 5~15 分)。 - リポジトリをクローンし、仮想環境を作成して、Python の依存関係をインストールします
open-seo-crawler.serviceを登録し、起動のたびにクローラーを開始しますopen-seo-crawler-update.timerを登録し、起動の 2 分後とその後毎日、git pull+再起動を実行します(失敗時は自動でロールバックします)- アクセス URL(
http://localhost:5002/および LAN IP)を表示し、デスクトップ環境の場合はブラウザーを自動で開きます - 後で確認できるよう、URL を
~/open-seo-crawler/ACCESS_URLS.txtに保存します
インストール後に便利なコマンド:
systemctl status open-seo-crawler # is it running?
sudo systemctl restart open-seo-crawler # restart
sudo systemctl disable open-seo-crawler # stop autostarting on boot
./install.sh --update-now # force a git-pull + restart now
systemctl list-timers | grep open-seo-crawler # when's the next auto-update?
journalctl -u open-seo-crawler-update.service -n 50 # update history
sudo systemctl disable --now open-seo-crawler-update.timer # turn auto-update off
tail -f /var/log/open-seo-crawler.log # live app logs
macOS でワンライナーインストール
Intel と Apple Silicon、macOS 11 Big Sur 以降で動作します。Homebrew と launchd を使用します。
ターミナルを開き(⌘+Space → 「ターミナル」)、次を貼り付けます。
curl -fsSL https://raw.githubusercontent.com/puneetindersingh/open-seo-crawler/master/install-macos.sh -o install-macos.sh && chmod +x install-macos.sh && ./install-macos.sh
事前チェックのドライラン:
curl -fsSL https://raw.githubusercontent.com/puneetindersingh/open-seo-crawler/master/install-macos.sh -o install-macos.sh && chmod +x install-macos.sh && ./install-macos.sh --check
インストーラーの処理内容:
- 前提条件(macOS、Python 3.10 以降、ディスク容量、空きポート 5002、インターネット接続)を確認します
- Homebrew がない場合はインストールします(パスワードの入力を求められます)
[email protected]とgitがない場合は、Homebrew 経由でインストールします- リポジトリをクローンし、仮想環境を作成して、Python の依存関係をインストールします
io.openseocrawler.appLaunchAgent を登録します(ログイン時に起動し、クラッシュ時に再起動します)io.openseocrawler.updateLaunchAgent を登録します(ログインの 2 分後と毎日 03:30 に実行し、自動ロールバックにも対応します)- デフォルトのブラウザーで
http://localhost:5002/を開きます
インストール後に使える便利なコマンド:
launchctl list | grep openseocrawler # is it running?
launchctl kickstart -k gui/$(id -u)/io.openseocrawler.app # restart
launchctl bootout gui/$(id -u)/io.openseocrawler.app # stop
rm ~/Library/LaunchAgents/io.openseocrawler.app.plist # disable autostart
./install-macos.sh --update-now # force update now
tail -f ~/Library/Logs/OpenSEOCrawler/app.log # live app logs
tail -f ~/Library/Logs/OpenSEOCrawler/update.log # update history
Windows 10 / 11 でワンライナーインストール
winget とスタートアップフォルダーのショートカットを使用します。管理者権限は必要ありません。
PowerShell を開き(スタートメニュー →「powershell」と入力 → Enter)、次を貼り付けます。
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; iwr https://raw.githubusercontent.com/puneetindersingh/open-seo-crawler/master/install-windows.ps1 -OutFile install.ps1; powershell -ExecutionPolicy Bypass -File .\install.ps1
事前チェックのドライラン:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; iwr https://raw.githubusercontent.com/puneetindersingh/open-seo-crawler/master/install-windows.ps1 -OutFile install.ps1; powershell -ExecutionPolicy Bypass -File .\install.ps1 -Check
Tls12のプレフィックスは、最新の TLS ハンドシェイクを強制します。これがないと、一部のマシンでは Windows PowerShell 5.1 が TLS 1.0/1.1 をデフォルトで使用し、GitHub からのダウンロードが "Could not create SSL/TLS secure channel." というエラーで失敗します。
インストーラーの処理内容:
- 前提条件(Windows、Python 3.10 以降、ディスク容量、空きポート 5002、インターネット接続)を確認します
- Python 3.12 と Git がない場合は、
winget経由でインストールします(--source wingetに固定することで、msstore ソースの証明書エラーが発生しないようにします) - 実際の
python.exeを直接(レジストリと標準のインストール先から)特定するため、Microsoft Store のpythonエイリアススタブが新たにインストールされた Python を誤って隠すことはありません - リポジトリを
%USERPROFILE%\open-seo-crawlerにクローンし、仮想環境を作成して、Python の依存関係をインストールします - ヘルパースクリプト(
Run.ps1、Stop.ps1、Update.ps1、Autostart.ps1)をインストールフォルダーに書き込みます - スタートメニューとデスクトップにショートカットを追加します。また(
-NoAutostartを指定しない場合)、ログオンするたびに最新のコードを取得してから、コンソールウィンドウを表示せずpythonw.exe経由でアプリをバックグラウンド起動する、スタートアップフォルダーのショートカットも追加します - クローラーを起動し、デフォルトのブラウザーで
http://localhost:5002/を開きます
フラグ:-Check(事前チェックのみ)、-UpdateNow(プルして依存関係を再インストール)、-NoAutostart(ログオン時のスタートアップショートカットを省略)。
インストール後に使える便利なコマンド(PowerShell):
& "$env:USERPROFILE\open-seo-crawler\Run.ps1" # run in this window
& "$env:USERPROFILE\open-seo-crawler\Stop.ps1" # stop whatever is on port 5002
& "$env:USERPROFILE\open-seo-crawler\Update.ps1" # pull latest + reinstall deps if changed
Get-Content "$env:USERPROFILE\open-seo-crawler\autostart.log" -Tail 50 -Wait # tail autostart/update log
ログオン時の自動起動を無効にするには、%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup から Open SEO Crawler (Autostart) ショートカットを削除します。
PowerShell の実行ポリシーによってスクリプトの実行がブロックされる場合は、上記の
-ExecutionPolicy Bypassプレフィックスで対処できます。管理者権限は不要です。winget --scope userとユーザーレベルのスタートアップショートカットは、どちらも UAC を使わずに動作します。
JS レンダリング(SPA とノーコードビルダー向け)
React / Vue / Wix / Bubble / 負荷の高い Squarespace サイトで必要です。クロールする前に Render JS にチェックを入れてください。初回は、クローラーが自身の Python 環境に Playwright と Chromium をインストールします(1 回限りのダウンロードで、数分かかります。進行状況は隅に表示されます)。メニューが <a href> リンクのないクリック可能な要素でできているサイト(Bubble など)は、ヘッドレスブラウザーでクリックして巡回し、そのような各ページには「JS-only navigation」のフラグが付けられます。検索エンジンは実際のリンクのみをたどるためです。
自動セットアップに失敗した場合(インターネット接続がない、Python がロックダウンされているなど)、クローラーに理由が表示されます。クローラーの Python 環境に手動でインストールしてから、再起動してください。
python -m pip install playwright
python -m playwright install chromium
使い方
- Webサイトの URL を入力します
- (任意)初期設定を調整します:1500 ページ、5 ワーカー、ホストごとの待機時間 0.4 秒、深さ 10。サイトマップ分析と**類似コンテンツ(類似度 90%以上)**は事前に選択されているため、新しいクロールを開始すると両方の事後分析が自動的に実行されます。
- クロールを開始をクリックします
最初のリクエストで対象の CMS を検出し、適切な除外パターンとワーカー数を設定するワンクリックの推奨設定を適用ボタンを表示します。
クロール中は概要タブが自動的に開き、ページが追加されるたびにリアルタイムで更新されます。クロールが完了すると、次の情報を確認できます。
- 重要度別の内訳(エラー/警告/情報)とリアルタイムの件数
- 一般的な SEO 監査項目すべての一括レポート(すべてのタイトル、重複タイトル、リダイレクトチェーンなど)
- 任意の URL のページ詳細ドック(行をクリック):メタデータ、問題、インリンク、アウトリンク
- 上部バーのサイトマップと XLSX のエクスポートボタン
AI アシスタント(MCP)またはコマンドラインから使う
リポジトリにある 2 つのファイルを使うと、ポート 5002 で実行中のクローラーを他のプログラムから利用できます。
mcp_server.pyは MCP サーバーです。AI アプリがローカルプログラムとして起動し、標準入力と標準出力を介して通信するため、ポートを開く必要もログインする必要もありません。osc.pyは同じツールをターミナルコマンドとして実行できるもので、スクリプト向けにすべてのコマンドで--jsonを指定できます。
どちらもクローラーが実行中である必要があります(ワンライナーのインストーラーを使えば実行状態が維持されます)。必要なのは Python の標準ライブラリだけです。
このサーバーは、公式のMCP レジストリに io.github.puneetindersingh/open-seo-crawler として登録されているため、レジストリを参照する MCP アプリやディレクトリから見つけることができます。
AI アプリに接続する
最も手早い方法は、上部バーのAI で使うをクリックし、AI アプリに接続を開いてセットアッププロンプトをコピーすることです。使用中のマシンに合わせた正確なコマンドとパスが含まれています。お使いのコンピューターでコマンドを実行できる AI アプリに貼り付けると、そのアプリが専用のコマンドで MCP サーバーを追加し、接続を確認して、再起動が必要かどうかを知らせます。
手動で設定する場合は、次のコマンドを 1 回実行します。使用中のマシンに合わせた正確なコマンドと設定ブロックを表示し、クローラーが起動しているかどうかも知らせます。
~/open-seo-crawler/venv/bin/python3 ~/open-seo-crawler/osc.py setup
Windows の場合:%USERPROFILE%\open-seo-crawler\venv\Scripts\python.exe %USERPROFILE%\open-seo-crawler\osc.py setup
Claude Code(stdio 経由の MCP)の場合、コマンドは 1 つです。
claude mcp add --scope user open-seo-crawler -- ~/open-seo-crawler/venv/bin/python3 ~/open-seo-crawler/mcp_server.py
次に Claude Code で /mcp を実行すると、open-seo-crawler が接続済みとして表示されます。「example.com を 100 ページクロールして、最も重要な修正点を 10 個教えて」のように依頼してください。
Claude Desktop、ワンクリック(MCP 拡張機能):最新の MCP リリースから open-seo-crawler-mcp.mcpb をダウンロードし、「Settings」、「Extensions」、「Advanced settings」、「Install Extension」の順に開いてインストールします。PATH に Python 3.10 以降があり、クローラーが実行中である必要があります。クローラーのアドレスを尋ねられますが、通常のインストールであればデフォルトのままで構いません。
Claude Desktop、手動設定(MCP 設定ファイル):Settings、Developer、Edit Config の順に開き、osc.py setup で表示されたフルパスを使って、サーバーを claude_desktop_config.json に追加します。
{
"mcpServers": {
"open-seo-crawler": {
"command": "/home/you/open-seo-crawler/venv/bin/python3",
"args": ["/home/you/open-seo-crawler/mcp_server.py"]
}
}
}
Claude Desktop を再起動すると、MCP サーバーが読み込まれます。Windows では、パスは C:\\Users\\you\\open-seo-crawler\\venv\\Scripts\\python.exe のようになり、JSON 内ではバックスラッシュを 2 つにします。Settings の Connectors ではなく、設定ファイルを使ってください。コネクターはインターネット経由で接続しますが、このサーバーはコンピューター上でのみ実行されます。
その他の MCP アプリ(Cursor、VS Code、Windsurf など):アプリの設定で、同じコマンドと引数をローカル(stdio)の MCP サーバーとして追加します。多くのアプリでは上記の mcpServers ブロックをそのまま使用できます。追加場所については、お使いのアプリの MCP ドキュメントを確認してください。
クローラーが別のポートまたは別のマシンで実行されている場合は、サーバーの環境変数に OSC_URL(例:http://office-pc:5002)を設定します。
アシスタントでできること
| ツール | 説明 |
|---|---|
start_crawl | アプリのエンジン、設定、デフォルト値でサイトをクロールします。ジョブ ID をすぐに返します |
crawl_status、stop_crawl | クロールの進行状況を確認します。Stop ボタンと同様に、取得済みのデータを保持したまま停止します |
list_crawls | アプリまたはここから実行した、過去 30 日間の保存済みクロールを一覧表示します |
crawl_summary | 概要タブのデータを返します。重要度別の問題とページ数、サンプル URL、重複、リダイレクトチェーン、サイトマップの欠落、類似重複、ボットの読み取りやすさを確認できます |
get_pages、get_page | 問題、重要度、ステータスコード、URL、インデックス登録の可否でページを絞り込みます。1 つの URL の詳細と、そのページへのインリンクを表示します |
get_brief | AI ブリーフを Markdown で取得します |
compare_crawls | サイトの 2 つのクロール間で変更された内容を確認します |
bot_check | クロールせずに、任意の URL で AI クローラーの読み取りやすさを確認します |
check_robots、detect_cms | 任意の URL の robots.txt と、そのサイトの CMS を確認します |
export_xlsx | 指定したパスに .xlsx エクスポートを書き出します |
保存済みのクロールの AI ブリーフを読み込む seo_audit プロンプトもあります。MCP プロンプトに対応したアプリでは、スラッシュコマンドとして表示されます。
AI アプリから開始したクロールは、ブラウザーから開始したクロールとまったく同じように実行されます。同じエンジンとデフォルト値を使用し、その後にサイトマップ分析、類似重複の検出、ボットの読み取りやすさの確認を行い、同じ方法で自動保存されるため、アプリの Load に表示されます。あなた、またはあなたの依頼を受けた AI が無効にしない限り、robots.txt の指示に従います。自分が所有していないサイトをアシスタントにクロールさせる前に、責任ある利用をお読みください。
コマンドライン
cd ~/open-seo-crawler
venv/bin/python3 osc.py crawl https://example.com --max-pages 200 # crawl, save, print the summary
venv/bin/python3 osc.py summary latest # issue counts for a saved crawl
venv/bin/python3 osc.py pages latest --issue "Missing H1" # which pages have it
venv/bin/python3 osc.py page latest https://example.com/about/ # one page and its inlinks
venv/bin/python3 osc.py brief latest --out brief.md # the AI brief as a file
venv/bin/python3 osc.py compare <older crawl> <newer crawl> # what changed
venv/bin/python3 osc.py bots https://example.com/ # AI crawler readability
venv/bin/python3 osc.py export latest crawl.xlsx
venv/bin/python3 osc.py list
クロールの名前には、latest、osc.py list で表示されるファイル名、またはサイト名の一部を指定します(最新の一致が選ばれます)。どのコマンドにも --json を追加すると、機械可読形式で出力できます。デプロイパイプラインでは、osc.py crawl <staging URL> --fail-on error を実行すると、いずれかのページでエラーが発生した場合に終了コード 1 を返し、デプロイを停止できます。終了コード 2 は、クローラーが実行されていない場合など、コマンド自体が失敗したことを示します。
ユースケース
- 公開前の監査:ステージングサイトをクロールし、リダイレクトの切り替え前にすべてのエラーを修正します。
- 公開後の検証:移行後に再クロールし、リダイレクトチェーン、レスポンスコード、Hreflang レポートを移行前のクロールと比較します。
- 定期的なテクニカル SEO の健全性チェック:メインドメインを毎週クロールし、canonical、重複したタイトル、壊れた内部リンクの問題を検出します。
- 競合調査:競合サイトの robots.txt を尊重し、責任を持ってクロールすることで、内部リンク、コンテンツの深さ、構造化データの網羅状況を把握します。
- メタデータの一括監査:すべてのタイトルまたはすべてのメタデータをエクスポートし、書き換え用に XLSX をコンテンツチームに渡します。
- Hreflang のデバッグ:地域別のサブフォルダーやサブドメインを持つ多言語サイトで、すべての hreflang アノテーションをワンクリックで検証できます。
- サイトマップの健全性管理:サイトマップにのみ存在し、実際にはサイトからリンクされていない URL、孤立したページ(リンクはされているがサイトマップにないページ)、404 / 301 を返す古い URL を検出します。
設定リファレンス
| 設定 | デフォルト | 備考 |
|---|---|---|
| 最大ページ数 | 1500 | クロールする URL の合計上限(1~5000 + 無制限) |
| ワーカー数 | 5 | 同時に動作する HTTP ワーカー(1~20) |
| ホストごとの遅延 | 0.4 s | 同じホストへの 2 回のリクエスト間の最小間隔。0.4 s 未満に設定すると警告が表示されます |
| 最大深度 | 10 | 起点 URL からのクリック数 |
| JavaScript をレンダリング | オフ | SPA で有効にします(Playwright が必要です) |
| JavaScript なしの HTML と比較 | オフ | JavaScript をレンダリングがオンの場合:各ページを両方のモードでクロールし、差分によって JavaScript のみのコンテンツのうち JavaScript なしのクローラーから見えないものを検出します |
| robots.txt を無視 | オフ | デフォルトでは Disallow ルールに従います |
| noindex を無視 | オフ | デフォルトでは noindex ページを重複/孤立ページのレポートから除外します |
| サイトマップ分析 | オン | クロール後に、サイトマップにないページ、孤立ページ、サイトマップにのみあるページ、200 以外のページ、サイトマップ内のリダイレクトを検出します |
| 類似コンテンツの検出 | 90% でオン | 本文コンテンツに対する Shingle Jaccard。類似度が 90% 以上のペアを検出します(80/85/90 または任意の値に変更可能) |
| ボットの読み取り可能性チェック | 10 ページでオン | クロール後にページをサンプルし、ブラウザーとして、および各クローラーとして JavaScript あり/なしでリクエストして比較します。ホストごとの遅延設定では、1 ページあたり約 11 件のリクエストが発生します |
| インクルード/除外パターン | 空 | *?variant=*、*/cart/* などの Glob ワイルドカード |
共有/マルチツール構成で使用できるオプションの環境変数:
| 変数 | 用途 |
|---|---|
SITE_CRAWLER_EXTRA_CRAWL_DIRS | クロール保存リストに読み取り専用で結合する追加フォルダー(コロン区切り)。これにより、1 つのインスタンスに他のツールが保存したクロールが表示されます |
SITE_CRAWLER_USER_MAP | IP → 表示名を対応付ける JSON 辞書のパス(デフォルトは ~/.site-crawler-users.json)。保存されたクロールに IP ではなく実行者の名前を表示します |
パフォーマンス
Shopify ストアでテスト済み:
- 3.3 秒で 10 ページ(ワーカー数 5、遅延 0.1 s)
- シングルスレッドのクローラー(遅延 1 s)より約 3 倍高速
- 1500 ページの WordPress サイトを 3 分未満でクロール(ワーカー数 5、デフォルトの遅延)
同時実行数は約 8 ワーカーまでは線形に向上し、それ以降は対象サーバーのレート制限がボトルネックになります。
プライバシー
すべての処理はお使いのマシン上で実行されます。API 呼び出し、アカウント、テレメトリーはありません。実行される HTTP リクエストは、クロール対象のサイトと api.github.com へのものだけです。後者には、このリポジトリの最新コミット SHA をページがリクエストします(更新バッジの表示に使用し、頻度は最大 10 分に 1 回です)。クロールに関する情報が送信されることはありません。
MCP サーバーと osc.py は、お使いのマシン上のクローラーとだけ通信します。AI アプリを接続すると、ツールが返す内容(URL、タイトル、見出し、問題点、一部のページテキスト)は、そのアプリおよびアカウントで利用する AI プロバイダーに送信されます。クロールしたサイトのテキストは指示ではなくデータとしてラベル付けされますが、それでも他者のウェブサイトに由来するものです。クロールを開始したりファイルを書き込んだりするツールでは、AI アプリの承認プロンプトを有効にしておいてください。
責任ある利用
クロール対象については利用者が責任を負います。所有していないサイトをこのツールでクロールする前に、次の点にご注意ください。
robots.txtを尊重してください。 既定で有効になっているのには理由があります。所有していないサイトで無効にすると、そのサイトの利用規約に違反するおそれがあります。- レート制限を尊重してください。 デフォルトのホストごとの遅延
0.4 sと、ワーカー数 5 の同時実行設定は控えめです。本番サイトをクロールする場合は、この設定を維持するか、遅延を増やしてください。サーバーに過剰な負荷をかけると、悪用とみなされる場合があります。 - 対象サイトの利用規約を遵守してください。 自動クロールを明示的に禁止しているサイトもあります。スキャンする前に利用規約を確認してください。
- 個人データ/プライベートデータ。 クロールしたページに個人データが含まれる場合、そのデータを使って後から行うことには、適用されるプライバシー法(GDPR/UK GDPR/Australian Privacy Act/CCPA など)が適用される場合があります。このツールは結果をローカルのブラウザー/プロセスにのみ保存します。その後の利用は利用者の責任です。
作者は不正利用について一切の責任を負いません。免責事項の全文については LICENSE をご覧ください。
商標
Screaming Frog、Sitebulb、Ahrefs、Shopify、WordPress、Yoast SEO、Rank Math、Webflow、Wix、Squarespace、Kajabi、Ghost、Drupal、HubSpot、Joomla は、それぞれの所有者の商標です。このプロジェクトは独立したオープンソースツールであり、これらのいずれとも提携、承認、または後援関係にありません。これらの名称への言及は、説明のための比較または互換性の一覧に限られます。
概要
Open SEO Crawler は、実際のサイトで毎週このツールを使用している SEO 担当者のPuneet Singhが開発・保守しています。バグ報告はGitHub Issuesにお寄せください。それ以外のお問い合わせは、LinkedInでご連絡ください。
同じ開発者による無料の SEO ツールも公開しています。SEO Side Panel Chrome 拡張機能や WordPress プラグインなどがあります:puneetindersingh.github.io
ライセンス
MIT。詳細はLICENSEをご覧ください。
コントリビューション
PR を歓迎します。クローラー全体は、読みやすい単一の Flask ファイル(app.py)と最小限のフロントエンドで構成されており、簡単に拡張できます。
FAQ
無料の SEO クローラーはありますか?
はい。Open SEO Crawler は、ページ数の制限がない、MIT ライセンスの無料 SEO クローラーです。クローンして python3 app.py を実行すれば、アカウント、API キー、クレジットカードなしで、任意のウェブサイトをローカルでクロールできます。
無料で使える最高の Screaming Frog 代替ツールは何ですか? Open SEO Crawler は、多くの人が Screaming Frog で行っている技術 SEO の基本的なクロール(タイトル、メタディスクリプション、H1、canonical、リダイレクト、リンク切れ、hreflang、重複コンテンツ、サイトマップ、構造化データ)に対応しており、無料プランで URL 数が無制限、ワンクリックで XLSX にエクスポートできます。Screaming Frog の無料プランは 500 URL が上限ですが、こちらには上限がありません。
この SEO クローラーは大規模なウェブサイトにも対応できますか? はい。ホストごとのレート制限を適用しながら、並行してクロールします(ワーカー数 1~20)。デフォルト設定では、1,500 ページのサイトを 3 分以内にクロールできます。より大きなサイトでは、ページ上限を Unlimited に設定してください。
このウェブサイトクローラーは Shopify、WordPress、Webflow で動作しますか? はい。10 種類の CMS プラットフォーム(Shopify、WordPress + Yoast / Rank Math、Webflow、Wix、Squarespace、Kajabi、Ghost、Drupal、HubSpot、Joomla)を自動検出し、それぞれに適したクロール設定を適用します。
本当に無料でオープンソースですか? はい。MIT ライセンスのセルフホスト可能なツールで、すべてお使いのマシン上で動作します。テレメトリも、外部への自動通信も、URL ごとの課金もありません。
1 ページをチェックする Chrome 拡張機能はありますか? はい。同じ開発者による無料のSEO Side Panelがあります。クローラーはお使いのマシンからサイト全体を監査します。拡張機能は、ページの横に表示されるパネルで現在開いているページをチェックし、AI クローラーが読み取れる内容と読み取れない内容も確認します。
関連する検索語
SEO クローラー、無料 SEO クローラー、ウェブサイト SEO クローラー、無料 SEO クローラーツール、オープンソース SEO クローラー、無料 SEO スパイダー、オンライン SEO クローラー セルフホスト可能、オープンソース SEO スパイダー、無料 Screaming Frog 代替ツール、セルフホスト可能な SEO 監査ツール、技術 SEO クローラー、SEO 向けウェブサイトクローラー、無料サイト監査ツール、オープンソース SEO サイトクローラー、Shopify SEO クローラー、WordPress SEO 監査ツール、Webflow SEO 監査、無料重複コンテンツチェッカー、無料重複タイトルチェッカー、無料重複メタディスクリプションチェッカー、無料重複 H1 チェッカー、無料リンク切れチェッカー、無料リダイレクトチェーン検出ツール、無料 hreflang バリデーター、無料 XML サイトマップアナライザー、GDPR 対応 SEO クローラー、登録不要の SEO ツール、API キー不要の SEO クローラー、CMS 対応クローラー、並行ウェブクローラー、ローカル SEO スパイダー、MIT ライセンスの SEO ツール、Python SEO クローラー、Flask SEO クローラー、SEO 監査 XLSX エクスポート、重大度別 SEO 問題、クロール後の SEO サマリーダッシュボード、自動更新 SEO ツール
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。