GEO対策を進めるうえで、「自社サイトのどのページがAIクローラに読まれているか」を把握することは基本中の基本です。 しかし多くの企業では、AIクローラのアクセスログを体系的に分析していません。
この記事では、サーバーのアクセスログからAIクローラを特定・抽出する方法と、分析結果をGEO施策に活かすアプローチを解説します。
AIクローラとは何か
AIクローラは、AI検索エンジンやLLMプロバイダーがWebページの情報を収集するために運用するボットです。 Googlebotのような従来の検索エンジンクローラと同じく、Webサイトにアクセスしてページの内容を取得します。
従来のクローラとの違いは、収集した情報の使われ方にあります。 Googlebotはインデックスとランキングのためにページをクロールしますが、AIクローラは生成型検索の回答ソースやLLMの学習データとしてページの内容を利用します。
代表的なAIクローラは以下のとおりです。
GPTBot(OpenAI)。 ユーザーエージェント文字列に「GPTBot」を含みます。 OpenAIが運用するクローラで、ChatGPTの検索機能やモデルの学習データ収集に使用されます。
ChatGPT-User(OpenAI)。 ChatGPTのブラウジング機能がリアルタイムでWebページを取得する際に使用されるユーザーエージェントです。 GPTBotとは異なり、ユーザーのクエリに応じてオンデマンドでアクセスします。
ClaudeBot(Anthropic)。 Anthropicが運用するクローラで、ユーザーエージェント文字列に「ClaudeBot」を含みます。
PerplexityBot(Perplexity)。 Perplexityが運用するクローラで、検索回答の引用ソース取得に使用されます。
Bytespider(ByteDance)。 ByteDanceが運用するクローラで、TikTokの検索機能やLLM開発に関連するデータ収集に使用されます。
Google-Extended。 Googleが提供するユーザーエージェントで、Gemini等のAI製品向けのデータ収集を制御するためのものです。 通常のGooglebotとは別に制御できます。
ログからAIクローラを抽出する方法
サーバーのアクセスログは、一般的にApache形式またはNginx形式で記録されています。 いずれの形式でも、リクエストのユーザーエージェント文字列が記録されるため、この情報を使ってAIクローラを特定します。
ステップ1:ログファイルの場所を確認する
Apacheの場合、デフォルトのログ保存先は /var/log/apache2/access.log または /var/log/httpd/access_log です。
Nginxの場合は /var/log/nginx/access.log が一般的です。
CDN(Cloudflare、AWS CloudFront等)を利用している場合は、CDNのログにAIクローラのアクセスが記録されています。 オリジンサーバーのログだけでは、CDNのキャッシュから応答されたリクエストを把握できない点に注意してください。
ステップ2:ユーザーエージェントでフィルタリングする
以下のユーザーエージェント文字列をフィルタ条件として使用します。
GPTBot、ChatGPT-User、ClaudeBot、claudebot、PerplexityBot、Bytespider、Google-Extended、Applebot-Extended、cohere-ai、Meta-ExternalFetcher。
これらの文字列でログを検索すれば、AIクローラのアクセスだけを抽出できます。
具体的なコマンド例としては、grepを使って grep -E "GPTBot|ChatGPT-User|ClaudeBot|PerplexityBot|Bytespider|Google-Extended" access.log > ai_crawler.log のように抽出します。
大量のログを分析する場合は、PythonスクリプトやElasticsearch/Kibanaなどのログ分析基盤を利用する方が効率的です。
ステップ3:抽出データを構造化する
抽出したログデータを分析しやすい形式に変換します。 各レコードから以下の情報を抽出してテーブル化します。
アクセス日時、クローラ名(ユーザーエージェントから判定)、リクエストURL(クロールされたページ)、HTTPステータスコード、レスポンスサイズの5項目です。
この構造化データをスプレッドシートやBIツールに取り込めば、以下の分析が可能になります。
分析1:どのクローラがどれだけ来ているか
最初に確認すべきは、各AIクローラのアクセス量の全体像です。
クローラ別のアクセス数を日次・週次・月次で集計し、以下の点を確認します。
どのクローラのアクセスが最も多いか。 アクセス量の多いクローラが運営するAI検索エンジンでは、自社コンテンツが引用される可能性が相対的に高くなります。
アクセス量の推移はどうなっているか。 増加傾向にあるクローラは、クロール範囲を拡大している可能性があります。 逆に減少しているクローラは、robots.txtの設定変更やサイト側の技術的問題を確認する必要があります。
特定のクローラがまったく来ていないケース。 robots.txtでブロックしている場合を除き、あるAIクローラのアクセスがゼロであれば、そのクローラに自社サイトが発見されていない可能性があります。
分析2:どのページがクロールされているか
次に、ページ別のクロール状況を分析します。 これはGEO施策の優先順位付けに直結する分析です。
リクエストURL別のアクセス数を集計し、上位ページと下位ページを特定します。
頻繁にクロールされるページの特徴を確認する。 クロール頻度の高いページに共通する特徴(コンテンツの種類、更新頻度、内部リンクの数、ページの深さなど)を分析します。
クロールされていない重要ページを特定する。 GEOの観点で引用されてほしいページが、AIクローラにクロールされていない場合は問題です。 原因として考えられるのは、内部リンクの不足、robots.txtでのブロック、JavaScriptレンダリングへの依存などです。
クロール対象の網羅率を算出する。 サイト全体のページ数に対して、AIクローラがクロールしたユニークURL数の割合を計算します。 この割合が低い場合、サイトの大部分がAI検索の情報源として使われていない可能性があります。
分析3:クロールのタイミングとパターン
AIクローラのアクセスパターンを時間軸で分析することで、クローラの動作特性が見えてきます。
時間帯別のアクセス分布。 AIクローラは24時間稼働していますが、アクセスが集中する時間帯があることがあります。 サーバーの負荷管理の観点からも有用な情報です。
再クロールの間隔。 同一URLが再度クロールされるまでの日数を計測します。 再クロール間隔が短いページは、クローラが鮮度の高い情報源として認識している可能性があります。
新規URL発見のパターン。 新しいページを公開してから、AIクローラが最初にアクセスするまでの日数を計測します。 Gao et al.(2024)のRAGに関するサーベイで指摘されるように、情報の鮮度は引用選択に影響します。 新規コンテンツの発見が遅い場合は、XMLサイトマップの更新やサイト内リンク構造の改善が必要です。
分析4:HTTPステータスコードの確認
AIクローラのリクエストに対するHTTPステータスコードの分布を確認します。 200(成功)以外のステータスが多い場合、クローラが正しくページ内容を取得できていない可能性があります。
403(Forbidden)。 WAF(Web Application Firewall)やセキュリティ設定がAIクローラをブロックしている可能性があります。 意図的なブロックでなければ、設定を見直す必要があります。
404(Not Found)。 URLの変更やページの削除後にクローラが旧URLにアクセスしているケースです。 リダイレクト設定の見直しが必要です。
429(Too Many Requests)。 レートリミットに引っかかっている場合です。 AIクローラのアクセス頻度がサーバーの設定値を超えています。
500系(Server Error)。 サーバー側のエラーでコンテンツを返せていない状態です。 特定のページで500エラーが頻発していれば、そのページの技術的な問題を修正する必要があります。
200以外のステータスが全体の10%を超えている場合は、早急な対応を検討してください。
分析結果に基づく改善アクション
ログ分析の結果を、具体的なGEO改善アクションに変換します。
アクション1:クロールされていない重要ページへの導線を作る
GEOの観点で引用されたいページがクロールされていない場合、そのページへの到達性を改善します。
XMLサイトマップへの追加。 AIクローラの多くはXMLサイトマップを参照してクロール対象を発見します。 重要ページがサイトマップに含まれていることを確認してください。
内部リンクの追加。 クロール頻度の高いページから、クロールされていないページへの内部リンクを追加します。 クローラはリンクを辿ってページを発見するため、内部リンク構造の改善はクロール範囲の拡大に直結します。
ナビゲーションへの組み込み。 グローバルナビゲーションやフッターに含まれるページは、クロール頻度が高くなる傾向があります。
アクション2:robots.txtの設定を見直す
robots.txtでAIクローラのアクセスを意図せずブロックしている場合があります。 以下の点を確認してください。
自社のrobots.txtに User-agent: GPTBot や User-agent: ClaudeBot のDisallowルールが設定されていないか確認します。
CMSのデフォルト設定やセキュリティプラグインが自動的にブロックルールを追加していることがあります。
GEO対策を行うのであれば、少なくともGPTBot、ChatGPT-User、ClaudeBot、PerplexityBotについてはクロールを許可する設定にします。 ただし、会員専用ページや管理画面などはブロックを維持してください。
アクション3:クロール頻度の高いページを優先的に改善する
クロール頻度が高いページは、AIクローラが重要視しているページです。 そのページのGEO最適化を優先的に進めることで、引用される確率を効率的に高められます。
具体的には、以下の改善を行います。
冒頭に明確な定義文や要約を配置する。 見出し構造を論理的に整理する。 主張の根拠となるデータや引用元を明記する。 更新日を明示し、情報の鮮度を示す。
アクション4:新規コンテンツの発見を早める
新規ページの公開からAIクローラの初回アクセスまでの時間を短縮するための施策です。
XMLサイトマップを公開と同時に更新し、各クローラが参照するサイトマップURLが最新であることを確認します。 また、アクセス頻度の高い既存ページから新規ページへの内部リンクを設置することで、クローラの巡回経路上に新規ページを配置します。
継続的なログモニタリングの設計
AIクローラのログ分析は、一度実行して終わりではありません。 以下のサイクルで継続的にモニタリングします。
日次:異常検知。 AIクローラのアクセス数が前日比で大幅に増減していないかを自動チェックします。 急激な減少はrobots.txtの設定ミスやサーバー障害のサインです。
週次:クロールカバレッジの確認。 新規公開ページがクローラに発見されているかを確認します。 発見されていないページがあれば、導線の改善を行います。
月次:フル分析。 クローラ別・ページ別・ステータスコード別の詳細分析を実行し、GEOレポートに組み込みます。
ログ分析の自動化には、ELKスタック(Elasticsearch、Logstash、Kibana)やCloudWatch Logs Insightsなどのツールが利用できます。 小規模なサイトであれば、cronで日次集計スクリプトを実行し、結果をスプレッドシートに出力する方法でも十分です。
ログ分析から見えるGEO施策の効果
AIクローラのログ分析は、GEO施策の効果を間接的に測定する手段としても使えます。 サイト構造の改善やコンテンツの更新を行った後に、対象ページのクロール頻度が変化するかを観察します。
ただし、クロール頻度の増加が必ずしも引用の増加に直結するわけではありません。 クロールはあくまで「情報の取得」であり、引用の可否はRAGの検索アルゴリズムやLLMの生成プロセスで決まります。 ログ分析はGEOの入口部分の状態を確認する手段であり、出口(引用結果)の分析と組み合わせて初めて全体像が見えます。
なお、公開を意図していない情報(社内ドキュメント、ステージング環境のページなど)がAIクローラにクロールされていないかの確認も忘れないでください。 該当するアクセスが見つかった場合は、即座にrobots.txtでのブロックまたはアクセス制限の設定を行います。
AIクローラのログ分析は、GEO対策の基盤となる作業です。 どのページがAIに読まれているかを把握しなければ、最適化の方向性を定めることができません。 まずは現状のログを1ヶ月分抽出するところから始めてください。