~/tools / AI Bot Log Analyzer
AI Bot Log Analyzer — アクセスログのAIクローラーの訪問を集計します
Webサーバーのアクセスログを貼り付けて、どのAIクローラーが訪れ、何を取得し、サーバーがどう応答したかを確認できます。nginx と Apache のログ、JSON Lines に対応しています。入力した内容はブラウザの外に出ません。
ログを貼り付けると、どのAIクローラーが訪れたかが分かります。
User-Agent は名乗りであり、証明ではありません。誰でも同じ文字列を送れます。
リクエストが本物かを確かめるには、送信元IPアドレスを運営者が公開している範囲と照らし合わせてください。このツールはIPアドレスの照会は行いません。
Google-Extended と Applebot-Extended はログに現れません。どちらも robots.txt 用の制御名で、リクエストは Googlebot と Applebot から届きます。
Apache と nginx の combined 形式、一般的なフィールド名を持つ JSON Lines、User-Agent 文字列のリストを読み取れます。
クローラーの一覧は、2026-10-15に各運営者のドキュメントと照らして確認しました。
すべてブラウザの中で処理します。ログはアップロードされません。
AI企業が運用するクローラーには、学習データを集めるもの、AI検索のためのインデックスを作るもの、人が頼んだときにページを取得するものなど、いくつかの種類があります。robots.txt ではそれぞれを別々に扱えますが、実際に何が届いているかはログでしか分かりません。このツールはアクセスログを読み、User-Agent が AI Crawler robots.txt Generator の一覧にあるクローラーの名前を名乗っているリクエストを探して、クローラー別・目的別に集計します。ユニークなIPアドレス、ステータスコード、robots.txt を取得したかどうか、最もリクエストの多いパスも表示します。User-Agent は名乗りにすぎないため、集計されるのは「そのクローラーだと名乗っているリクエスト」の数です。
こんな時に使う
- robots.txt でブロックしたクローラーが、まだ来ていないか確認する
- AI検索のクローラーが、エラーなくページを取得できているか確認する
- AIの一覧にない、ボットらしい User-Agent を見つける
使い方
- ログの行を貼り付けるか、ログファイルを選びます。ファイルはブラウザの中で読み込まれます。
- 表を確認します。クローラーごとに1行で、目的、リクエスト数、ユニークIP、ステータスコードが並びます。
- ほかのボットらしい User-Agent に、知らない名前がないか見てみましょう。
AIクローラーの3つの種類
| 目的 | 何をするか | 例 | robots.txt |
|---|---|---|---|
| 学習 | モデルを学習させるために、Webのコンテンツを集めます | GPTBot, ClaudeBot, meta-externalagent, CCBot | 運営者は従うと述べています |
| AI検索 | 質問への回答に使うインデックスを作ります | OAI-SearchBot, Claude-SearchBot, PerplexityBot, meta-webindexer | 運営者は従うと述べています |
| ユーザー起点 | 人が頼んだときにページを取得します | ChatGPT-User, Claude-User, Perplexity-User, meta-externalfetcher | OpenAI、Perplexity、Meta は適用されない場合があると述べています。Anthropic は Claude-User が従うと述べています |
1つの種類をブロックしても、ほかの種類はブロックされません。たとえば、学習用のクローラーを止めても、独自のクローラーを持つAI検索から外れるわけではありません。
表の読み方
- リクエスト数とユニークIP: 1つのアドレスからの多数のリクエストと、多数のアドレスからの少数のリクエストは意味が違うので、両方を見てください。
- ステータスコード: 検索用のクローラーに4xxや5xxが返っているなら、ページを取得できていないので、回答に表示されることもありません。
- robots.txt の列: /robots.txt を取得するクローラーは、少なくともあなたのルールを読んでいます。RFC 9309 は、クローラーがファイルをキャッシュしてよいとしていますが、取得できない場合を除き、24時間より古いコピーは使うべきではないと述べています。そのため、一度も取得しに来ないクローラーは、ルールを無視している可能性があります。
- ほかのボットらしい User-Agent: AIの一覧にない名前です。知らないクローラーを探す手がかりになります。
User-Agent は名乗りにすぎない
同じ User-Agent の文字列は誰でも送れるため、名前別の集計は、そのクローラーだと名乗っているリクエストの数です。確かめるには、送信元のIPアドレスを、運営者が公開しているものと照らし合わせてください。
- OpenAI、Perplexity、Anthropic、Common Crawl は、クローラーのIP範囲を公開しています。Anthropic は、IPでブロックしてもオプトアウトを確実にできるとは限らないとして、robots.txt を勧めています。
- Google は2つの確認方法を説明しています。IPの逆引きDNSのあとに、同じアドレスが返る正引きを行う方法と、公開しているIPリストと照合する方法です。
- Apple は Applebot のIPプレフィックスを公開しており、逆引きDNSによる確認も説明しています。
- Meta のクローラーのドキュメントにはIP範囲の記載がなく、User-Agent の文字列かIPアドレスを許可するよう述べています。
ログからは分からないこと
- Google-Extended には独自の User-Agent の文字列がなく、Applebot-Extended はWebページをクロールしません。どちらも、Googlebot と Applebot が集めたデータの使われ方を制御するだけなので、ログに名前として現れることはありません。
- CDNのキャッシュから応答されたリクエストや、サーバーの手前で止められたリクエストは、オリジンのログに残りません。
出典(2026-10-23 確認): OpenAI: Overview of OpenAI crawlers / Anthropic: Does Anthropic crawl data from the web? / Perplexity: Perplexity crawlers / Meta: Web crawlers / Common Crawl: CCBot / Apple: About Applebot / Google: Google's common crawlers / Google: Verifying Googlebot / RFC 9309: Robots Exclusion Protocol
FAQ
どのログ形式に対応していますか?
Apache と nginx の combined 形式、http_user_agent のような一般的なフィールド名を持つ1行1オブジェクトのJSON、そして User-Agent の文字列を1行ずつ並べたリストに対応しています。読み取れない行は数えて報告します。
一致したら、その会社からの訪問だと証明できますか?
いいえ。User-Agent は誰でも設定できるため、GPTBot と名乗るリクエストが別の誰かから来ている可能性もあります。OpenAI、Perplexity、Anthropic、Common Crawl など、いくつかの運営者はクローラーのIP範囲を公開しているので、リクエストの送信元アドレスを確認できます。Metaのクローラーのドキュメントには、IP範囲の記載がありません。このツールはIPアドレスの確認は行いません。
Google-Extended と Applebot-Extended が表示されないのはなぜですか?
どちらも robots.txt 用の制御名であり、クローラーではないからです。Googleは Google-Extended に独自の User-Agent 文字列はないと説明し、Appleは Applebot-Extended がWebページをクロールすることはないと説明しています。リクエストは Googlebot と Applebot から届くため、ログでは区別できません。
目的の区分は何を意味しますか?
「学習」は、モデルを学習させるためのデータ収集です。「AI検索」は、AI検索の回答に使うインデックスの作成です。「ユーザー起点」は、人のリクエストをきっかけとした取得で、運営者によってはこの取得が robots.txt に従わない場合があると述べています。
ほかのツールより件数が少ないのはなぜですか?
ログには、サーバーまで届いたものしか記録されないためです。CDNのキャッシュから応答されたリクエストや、届く前にブロックされたリクエストは、オリジンのログに現れないことがあります。
ログはアップロードされますか?
いいえ。読み込みも集計もブラウザの中で行います。ページの動作が重くならないよう、20万行を超える分は数えません。