ByteScope

AI Crawler Log

どのAIクローラーが来て、何を読み、どのページを素通りしたか。

ログはこのブラウザー内で解析し、アップロードしません。サイトマップの URL を貼ったときだけ、その URL を当サイトの Worker 経由で取得します。保存するのは成功・失敗の匿名カウントだけです。

1. アクセスログ

ログファイルかフォルダーごとドロップしてください。読める形式:Cloudflare Logpush、nginx / Apache combined、Caddy JSON、Vercel・Netlify のログドレイン。.gz はバックグラウンドの Worker で展開します。

またはファイル・フォルダーをここにドロップ

2. サイトマップと照合

サイトマップの URL を貼るか XML をアップロードすると、このログの中で AIクローラーが一度も取りに来ていないページを一覧にします。Worker に送るのは URL だけで、アップロードしたファイルは手元から出ません。

わかること・わからないこと

  • user-agent は偽れます。ここで見ているのはトラフィックで、身元の確認ではありません。本物かどうかは IP の逆引きが必要で、このツールはそれをしません。
  • ログをリアルタイムで流し込むことはできません(サーバーが必要なため)。ファイルに書き出してからドロップしてください。
  • ログはこのブラウザー内で解析し、アップロードしません。サイトマップの URL を貼ったときだけ、その URL を当サイトの Worker 経由で取得します。保存するのは成功・失敗の匿名カウントだけです。

このツールについて

アクセスログのファイル、またはログが入ったフォルダーごとドロップすると、どのAIクローラーがいつ何回来て、どのページを取っていったかがわかります。ボットごとにリクエスト数と日別の推移、よく取られたページ、ステータスコード、平均応答時間、訪問の間隔(中央値)を表示。サイトマップを読み込めば、いちばん役に立つ表「登録してあるのにAIクローラーが一度も取りに来ていないページ」も出せます。

読めるログ形式

Cloudflare Logpush の http_requests(JSON Lines)、nginx と Apache の combined 形式(両者は1バイトも違わないので同じパーサーで読みます。末尾に $request_time や %D があれば応答時間として使います)、Caddy の JSON アクセスログ、Vercel と Netlify のログドレイン。形式はファイルごとに先頭20行(空行を除く)から判定するので、形式の違うファイルが同じフォルダーに混ざっていても大丈夫です。access.log.2.gz のようなローテート済みの .gz もブラウザー内で展開します。1回に読めるのは2,000ファイルまで。

クローラーの見分け方

user-agent を決まった順に照合します。OpenAI は OAI-SearchBot・ChatGPT-User・GPTBot、Anthropic は Claude-SearchBot・Claude-User・ClaudeBot。続いて Perplexity、DuckDuckGo、Mistral、Meta、Amazon、ByteDance、Common Crawl、Cohere、Diffbot、You.com、検索エンジンとして Googlebot、Bingbot、Applebot、Yandex、Baidu、Petal。AIクローラーは「学習用」「検索用」「ユーザー操作によるアクセス」に分けて数えます。どれを止めるかで意味がまったく変わるからです。ボットらしいのにどれにも当てはまらないものは「その他のボット」として user-agent をそのまま並べます。

わからないこと

user-agent は自己申告で、証明にはなりません。ヘッダーに GPTBot と書くだけなら誰にでもできます。ここで見ているのはトラフィックであって、身元の確認ではありません。本物かどうかを確かめるには IP の逆引きが必要ですが、このツールはそこまでしません。ログをリアルタイムで流し込む機能もありません(サーバーが必要になるため)。ファイルに書き出してからドロップしてください。ログはブラウザーの外に出ません。読むのは時刻・メソッド・パス・ホスト・ステータス・user-agent・応答時間だけで、IP アドレスやリファラー、Cookie は読みません。サーバーに送るのは、貼り付けたサイトマップの URL だけです。

よくある質問

nginx のアクセスログで GPTBot を探すには?

ログファイルをここにドロップするだけです。1行ずつブラウザー内で解析し、user-agent に GPTBot を含むリクエストを OpenAI の学習用クローラーとして、ページ・ステータスコード・訪問時刻ごとに集計します。ChatGPT 検索の OAI-SearchBot と、ユーザーの依頼で取りに来る ChatGPT-User は別に数えます。

ログファイルはどこかにアップロードされますか?

されません。解析はこのタブの Web Worker で行い、画面に届くのは集計結果だけです。IP アドレスはそもそも読みません。サーバーに届くのは、サイトマップの URL を貼り付けたときのその URL だけで、ブラウザーのクロスオリジン制限を越えて取得するために Worker を使います。アップロードしたサイトマップファイルは手元に残ります。

ボットは user-agent を偽れますか?

偽れますし、実際に偽るスクレイパーもいます。ここに出る数字は、リクエストが名乗ったとおりの集計です。本物か確かめるには IP を逆引きして、各社が公開している IP 範囲と照らし合わせる必要があります。このツールはそこまでしないので、急に増えた数字は「確認すべき手がかり」として扱ってください。

AIクローラーが一度も来ていないページはどれ?

ログを解析したあとで、サイトマップの URL を貼るか XML をアップロードしてください。サイトマップの各 URL をパスに直し、AIクローラーが取りに来たパスと照合して、一度も来ていないものを一覧にします。テキストファイルでダウンロードもできます。サイトマップインデックスなら、子サイトマップを1つずつ最大20個まで読み込めます。

「不正な行」や「スキップした行」とは?

不正な行は、そのファイルで判定した形式として読めなかった行です。途中で切れた JSON や、別形式の行などが当たります。影響はその1行だけです。スキップした行は形式は合っているもののリクエストではない行で、Caddy のアクセス以外のログや Vercel のビルドメッセージなどです。どちらも件数を表示するので、黙って消える行はありません。