「うちのサイトに、AIのクローラーは来ているんでしょうか」。そう聞かれて、GA4を開いてみた。それらしい数字は、どこにも見当たらない。

ここで「来ていない」と結論を出してしまうと、実はかなり大きく外します。AIクローラーの多くは、GA4に記録が残らない仕組みで動いているからです。訪問の痕跡は、別の場所に残っています。サーバーログです。

この記事は、AIクローラーの訪問を自分の目で確かめたい方に向けて書きました。専門用語は出てきたその場で言い換えます。ログから抜き出すコマンド、名乗りが本物かを確かめる検証、そして多くのサイトがつまずく落とし穴まで、順番に置いていきます。

こんなふうに調べていませんか

  • GA4を見てもAIクローラーの記録がなく、来ているのかどうか判断できない
  • 「サーバーログ AIクローラー 解析」で検索して、実際に打つコマンドを探している
  • GPTBotを名乗るアクセスがあるが、本物かどうかの確かめ方が分からない

この記事を読み終えたときに手に入るもの

  • GA4とサーバーログで見える範囲の違いを、社内で説明できるようになります
  • ログからAIクローラーだけを抜き出す手順が分かります
  • なりすましを見抜く検証を、着手の順番つきで組み立てられます

結論30秒でわかる、この記事の結論

  • AIクローラーの多くはJavaScriptを実行しません。 そのためGA4のようなJavaScriptを前提にした解析ツールでは、その訪問を検知できません。
  • サーバーログはリクエストを受けた時点の生の記録なので、AIクローラーの訪問もそのまま含まれます。
  • ただしUser-Agentは誰でも自由に名乗れます。 各社が公開しているIPアドレスの範囲との照合が、実務での基本になります。
AIクローラーの足あとは、ログに残っていますGA4に出ないのは、来ていないからではありませんAIクローラーの足あとは、ログに残っていますGA4訪問が残らないJavaScriptが動かないと記録されないログ訪問がそのまま残るリクエストを受けた時点の生の記録注意名乗りだけでは判定できないUser-Agentは誰でも名乗れる鈴木さんGA4に出ないのは、来ていないからではありません
AIクローラーの足あとは、ログに残っています — GA4に出ないのは、来ていないからではありません

この記事では、あるマーケティング部の会話をはさみながら進めます。若葉さんはWeb担当で仕組みから知りたい立場、高梨課長は運用の手間と担当者を気にする立場、鈴木さんはAIO/SEOの専門家で答える役です。ご自身に近い立場の質問から読んでいただいて構いません。

01AI検索対策なのに、なぜサーバーログの解析からAIクローラーを見るんですか?

若葉さん
若葉さんの発言

GA4を見ても、AIのクローラーらしきものが見当たらないんです。まだ来ていない、ということでしょうか。

鈴木さん
鈴木さんの発言

いえ、来ていても映らないということが起こります。GA4は、ページの中で動く小さなプログラムが起動して、はじめて記録が残る仕組みなんですよ。

若葉さん
若葉さんの発言

そのプログラムが動かないと、来たこと自体が残らない…?

鈴木さん
鈴木さんの発言

はい。そして多くのAIクローラーは、そのプログラムを動かしません。だから別の場所を見にいきます。

サイトへの訪問を記録する場所は、1つではありません。GA4のようなJavaScript(ページの中で動く小さなプログラム)を前提にした計測と、サーバーがリクエストを受けた時点で自動的に書く記録では、そもそも残る条件が違います。

たとえるなら、建物の入口の記録と、館内で配ったアンケートの違いです。アンケートに答えた人しか名簿に残らないなら、答えずに通った人は「来ていない」ことになってしまいます。

建物の記録にたとえると、こうなります見えない訪問が、どうして生まれるのか建物の記録にたとえると、こうなります見えない訪問が、どうして生まれるのか建物でいうとサイトでいうと入口を通った全員が残る受付の記録サーバーログ館内アンケートに答えた人だけの名簿GA4のタグ名前を書いただけの来訪者User-Agentの自己申告身分証を見せてもらうIPアドレスの検証
建物の記録にたとえると、こうなります — 見えない訪問が、どうして生まれるのか

この章のまとめ

AIクローラーの訪問は、GA4ではなくサーバーログに残ります。まず、見にいく場所を変えるところから始めます。

02そもそもサーバーログ解析とは、AI検索最適化では何を見る作業ですか?

サーバーログ解析とは、サーバーが記録したアクセス記録からAIクローラーの訪問状況を抽出・検証する手法です。

サーバーログには、HTTPリクエスト(ブラウザやプログラムがページを取りに来るときのやり取り)の生データが並びます。記録されるのは、リクエスト元のIPアドレス、User-Agent(名乗り)、リクエストされたURL、タイムスタンプ、レスポンスコードなどです。

ログの1行に、これだけ書かれています絞り込みの手がかりは、この3つに分けられますログの1行に、これだけ書かれています絞り込みの手がかりは、この3つに分けられます誰がIPアドレスとUser-Agentどこから来て、何と名乗ったかどこをリクエストされたURLどのページを取りに来たかいつ時刻とレスポンスコードいつ来て、どう返したか
ログの1行に、これだけ書かれています — 絞り込みの手がかりは、この3つに分けられます

一方で、手間はかかります。Apache・Nginxなど標準的なWebサーバーのログは、テキスト形式で1行1リクエストずつ記録される仕様です。AIクローラーの訪問だけを取り出すには、User-Agentでの絞り込みが要ります。

この章のまとめ

サーバーログは、訪問の生の記録です。漏れは少ない代わりに、そのままでは読めません。絞り込みの作業が要ります。

03AIクローラーが来ているのに、AI検索の計測ツールに出てこないのはなぜですか?

GA4は基本的に、JavaScriptのタグが起動することを前提にした計測ツールです。GPTBot・ClaudeBot・PerplexityBotなど、AI企業が運用する多くのクローラーは、そのJavaScriptを実行しません。

そのため、AIクローラーがページにアクセスしても、GA4のタグ自体が起動しません。起動しなければ、訪問の記録も残らない。ここまでが一続きです。

記録が残る経路と、残らない経路同じ訪問でも、通る道がまるで違います記録が残る経路と、残らない経路同じ訪問でも、通る道がまるで違います人がブラウザで開いたときページの中のJavaScriptが起動するGA4のタグが動くGA4に訪問として残るふだん見ている数字はこちらAIクローラーが来たときJavaScriptを実行しないGA4のタグが動かないサーバーログにだけ残るGA4では見えない訪問鈴木さん「GA4に出ない」は、「来ていない」とは違うんですよ
記録が残る経路と、残らない経路 — 同じ訪問でも、通る道がまるで違います

Search Consoleの生成AIに関するレポートも、事情は似ています。こちらはGoogle自身が把握しているインプレッションのデータに限られます。GPTBotやClaudeBotなど、他社クローラーの直接的な訪問状況までは反映されません。

この章のまとめ

GA4もSearch Consoleも、それぞれ見える範囲が決まっています。AIクローラーの訪問そのものは、別の情報源が要ります。

04サーバーログからAIクローラーを抜き出す解析は、AI検索対策としてどう進めるんですか?

高梨課長
高梨課長の発言

専用のツールを買わないと始められない話でしょうか。予算をすぐには取れません。

鈴木さん
鈴木さんの発言

いえ、まずはコマンドだけで始められます。 手を動かして中身を見てから、続け方を決めるほうが失敗が少ないと思います。

基本の流れは、次の4ステップです。

ログから見つけるまでの4ステップ最後の1つを飛ばすと、名乗りを信じたままになりますログから見つけるまでの4ステップ最後の1つを飛ばすと、名乗りを信じたままになります1ログを取得するWebサーバーかCDNから書き出す2User-Agentで絞る既知のクローラー名を含む行を抜く3URLと頻度を集計するどこへ何回来ているかを数える4IPで真贋を検証する公開されているIPリストと照合する
ログから見つけるまでの4ステップ — 最後の1つを飛ばすと、名乗りを信じたままになります
  1. ログファイルを取得する — Webサーバー(Apache・Nginx)、またはCDN(Cloudflare等)のアクセスログをエクスポートします
  2. User-Agentで絞り込む — GPTBot・ClaudeBot・PerplexityBotなど、既知のAIクローラー名を含む行を抜き出します
  3. リクエスト先URL・頻度を集計する — どのページに、どれくらいの頻度で来ているかを数えます
  4. IPアドレスで真贋を検証する — 抜き出した行のIPアドレスが、各社の公開IPリストに含まれるかを確かめます

このうち手順2と手順3は、コマンド1行ずつで実行できます。Apache・Nginxの標準的なアクセスログ(access.log)を対象にした例が、次のとおりです。

# 手順2: 主要AIクローラーの行だけを抜き出す
grep -E 'GPTBot|OAI-SearchBot|ClaudeBot|PerplexityBot|Perplexity-User' access.log > ai-crawlers.log

# 手順3: クローラー別のアクセス件数を数える
grep -oE 'GPTBot|OAI-SearchBot|ClaudeBot|PerplexityBot|Perplexity-User' ai-crawlers.log | sort | uniq -c | sort -rn

# 手順3: どのURLに何回来ているかを上位20件まで集計する(ログ形式が変わる場合は列番号を調整)
awk '{print $7}' ai-crawlers.log | sort | uniq -c | sort -rn | head -20

awk$7は、Apacheの標準的なcombinedログ形式でリクエストURLにあたる列です。ログ形式を独自に変更している場合は、1行を目で見てから列番号を合わせてください。

この章のまとめ

抜き出しはコマンドで済みます。ただし、この段階で分かるのは「そう名乗るアクセスがあった」ところまでです。

05主要なAIクローラーの名前は、AI検索最適化としてどこまで押さえればいいですか?

絞り込みに使う名前と、真贋の確認に使うIPアドレスの公開先は、次のとおりです。

AIクローラーUser-Agent(抜粋)IPアドレス公開エンドポイント
GPTBot(OpenAI)GPTBot/1.4https://openai.com/gptbot.json
OAI-SearchBot(OpenAI)OAI-SearchBot/1.4https://openai.com/searchbot.json
ClaudeBot(Anthropic)ClaudeBothttps://claude.com/crawling/bots.json
PerplexityBot(Perplexity)PerplexityBot/1.0https://www.perplexity.com/perplexitybot.json
Perplexity-User(Perplexity)Perplexity-User/1.0https://www.perplexity.com/perplexity-user.json

OpenAIのように、1社で複数のクローラーを公開しているケースがあります。それぞれの役割の違いは、別記事で比べています。

クローラーの一覧は、取り直して使います一度写して固定すると、いつのまにか合わなくなりますクローラーの一覧は、取り直して使います一度写して固定すると、いつのまにか合わなくなります1公開されているエンドポイントから最新を取る各社が随時更新しています2ログ解析のルールへ反映する絞り込みの条件と、照合先を更新します3新しい名前が出たら行を足す新しいクローラーは継続的に登場します
クローラーの一覧は、取り直して使います — 一度写して固定すると、いつのまにか合わなくなります

大事なのは、この表を一度写して終わりにしないことです。これらのJSONエンドポイントは各社が随時更新しています。定期的に最新のIP範囲を取得し直す運用が要ります。

この章のまとめ

クローラーの名前とIPの公開先は、更新される前提で扱います。一度きりの写しではなく、取り直す運用にします。

06AIクローラーを名乗るだけのボットを、AI対策としてどう見分けるんですか?

若葉さん
若葉さんの発言

ここまでで、GPTBotが来ていることは分かりました。これって、本物ですよね?

鈴木さん
鈴木さんの発言

そこが、この記事のいちばん大事なところです。User-Agentは、誰でも自由に名乗れます。 名乗りだけでは、本物かどうかは判定できないんですよ。

若葉さん
若葉さんの発言

では、どうやって確かめるんでしょう。

鈴木さん
鈴木さんの発言

名前ではなく、どこから来たかを見ます。IPアドレスのほうです。

User-Agentは自己申告の文字列にすぎません。悪意のあるボットが、人気のAIクローラーを名乗ってアクセスすることもあり得ます。偽装は技術的に容易です。

Googleは自社のクローラーについて、逆引き・正引きDNSによる検証手順を公式に案内しています。同じ考え方は、他社のAIクローラーの検証にも応用できます。手順は2段階です。

なりすましを見抜く、2段階の検証名前ではなく、どこから来たかを見ますなりすましを見抜く、2段階の検証名前ではなく、どこから来たかを見ます1逆引きするログのIPアドレスからドメイン名を取る2正引きするそのドメイン名をIPアドレスに戻す3一致を確かめる元のIPと同じなら本物と判定する鈴木さん一致しなければ、名乗っているだけ、ということになります
なりすましを見抜く、2段階の検証 — 名前ではなく、どこから来たかを見ます
  1. 逆引きDNS — ログに記録されたIPアドレスに対してhostコマンドで逆引きを行い、ドメイン名を取得します
  2. 正引きDNS — 取得したドメイン名をhostコマンドで正引きし、得られたIPアドレスが元のログのIPと一致するかを確かめます

実際に打つコマンドは2行です。1行目で得たドメイン名を、2行目にそのまま渡します(コマンド例はGoogle公式ドキュメントの記載に沿ったものです)。

host 66.249.66.1              # 逆引き: IPアドレス → ドメイン名
host crawl-66-249-66-1.googlebot.com   # 正引き: ドメイン名 → IPアドレス

2行目の結果が1行目に入力したIPアドレスと一致すれば本物、一致しなければなりすましと判定します。Googlebotの場合は、逆引きの結果がgooglebot.comgoogle.comgoogleusercontent.comのいずれかであることが条件です。GoogleもIP範囲のリストを公開しており、DNS検証の代わりにIPリストとの照合で判定する方法を併記しています。

この章のまとめ

名乗りは入口にすぎません。どこから来たかを確かめて、はじめて「本物のAIクローラーが来た」と言えます。

07ClaudeBotやPerplexityBotのようなAIクローラーは、AI検索対策でどう検証しますか?

事業者によって、案内されている確かめ方に違いがあります。DNSをたどる方法のほかに、公開されているIPリストと照合するだけの、より簡便な方法もあります。

確かめ方は、ひとつではありません案内されている方法は、事業者によって違います確かめ方は、ひとつではありません案内されている方法は、事業者によって違いますDNSをたどる逆引きでドメイン名を取る正引きでIPアドレスに戻す元のIPと一致するかを見るGoogleが案内している手順IPリストと照合する公開されているIP範囲を取得するログのIPが含まれるか調べる含まれていれば本物と判定するより簡便に済ませられる
確かめ方は、ひとつではありません — 案内されている方法は、事業者によって違います

ClaudeBotの場合、Anthropicは公開IPリストとの照合という方法を案内しています。同社は、クローラーの送信元IPアドレスがこのリストに含まれていれば、そのクローラーはAnthropicから来ていることを示す、と説明しています。

Perplexityも同様にIPリストを公開したうえで、公式JSONエンドポイントの最新のIP範囲を常に使い、これを信頼できる情報源とすること、と案内しています。

自動化する場合は、これらのIPリストを定期的に取得し、ログ解析のルールへ反映させる運用が実務的です。

この章のまとめ

検証のやり方は1つではありません。IPリストとの照合で済むなら、そのほうが運用に乗せやすい選択です。

08CDNの下では、AI検索対策のサーバーログ解析はどこでつまずくんですか?

ここで多くのサイトがつまずきます。CDNやリバースプロキシ(サイトの前に立って通信を中継する仕組み)を経由している場合、オリジンサーバーのログに記録されるのは、クローラーのIPアドレスではないことがあるためです。

記録されるのは、CDN側のIPアドレスです。この状態で公開IPリストと照合すると、どのクローラーも「なりすまし」と判定されてしまいます。検証の手順は正しいのに、答えだけが全部ひっくり返る。 いちばん気づきにくい形の失敗です。

CDNの下では、答えだけがひっくり返ります手順は正しいのに、結果が全部変わりますCDNの下では、答えだけがひっくり返ります手順は正しいのに、結果が全部変わりますそのまま照合するオリジンのログにCDNのIPが残る公開IPリストと一致しないどのクローラーもなりすまし判定になるリクエスト元で判定するCDN側のログを一次データにするまたは転送元IPをログ形式に含める本来のリクエスト元で照合できる
CDNの下では、答えだけがひっくり返ります — 手順は正しいのに、結果が全部変わります

対処は2つあります。

  • CDN側が提供するログを一次データとして使う — ログ配信の機能やダッシュボードから、CDNが受け取った時点の記録を取ります
  • 転送元IPを伝えるヘッダーを、ログ形式に含める — オリジン側でも、本来のリクエスト元IPを記録できるようにします

この章のまとめ

CDN配下かどうかの確認が、着手の順番としては最初です。1件だけ手で見れば、その日のうちに分かります。

09ログが増えたとき、AIクローラーの解析はAI検索最適化としてどう続けますか?

高梨課長
高梨課長の発言

一度やってみるのは分かりました。これを続けるとなると、どこかで手作業では回らなくなりますよね。

鈴木さん
鈴木さんの発言

はい。判断の軸はログの量です。量と体制で、向いているやり方が変わります。

一度手を動かしたうえで、続け方を決めます。目安は次のとおりです。

ログの規模・体制向いている方式理由
月数万リクエスト程度・担当者1名前の章のコマンド+スプレッドシート集計追加コストがかからず、数字の意味を担当者が把握できる
月数百万リクエスト以上ログ解析ツールまたはBigQuery等への取り込みコマンドでは処理時間とメモリが現実的でなくなる
CDN配下で複数オリジンを運用CDN側のログ配信機能を一次データにするオリジン側のログではリクエスト元IPを追えない場合がある
続け方は、ログの量で決まります体制に合わない方式を選ぶと、続きません続け方は、ログの量で決まります体制に合わない方式を選ぶと、続きません小さいコマンドと集計シート担当者が数字の意味を把握できる大きいログ解析ツールへ取り込む手元のコマンドでは処理が現実的でなくなるCDN配下CDN側のログ配信を使うオリジンではリクエスト元IPを追えない
続け方は、ログの量で決まります — 体制に合わない方式を選ぶと、続きません

ツールを検討するときは、次の3点を確かめてください。①User-Agentのフィルタを自分で追加できるか、②IPアドレスの検証を自動化できるか、③CDN経由のログを取り込めるか。

とくに①が効きます。新しいAIクローラーは継続的に登場するため、運用担当者が自力で名前を足せない製品は、半年後には使えなくなる可能性があります。

この章のまとめ

続け方はログの量で決まります。ツールを選ぶなら、名前を自分で足せるかどうかを最初に見てください。

10AIクローラーの記録を残す運用は、AI対策として何を決めておくんですか?

運用として回すために、決めておくことがあります。

運用に乗せる前に、ここを確かめます取り直しと、区別。この2つが鍵になります運用に乗せる前に、ここを確かめます取り直しと、区別。この2つが鍵になりますログを定期的に取得できる状態にしているサーバーからでも、CDNからでも構いません記録されているIPの出どころを確認したCDNのものか、リクエスト元のものかIPアドレスのリストを取り直す運用がある各社が随時更新しています逆引き・正引きを、最低1回は実施した手順を一度は通しておきますGA4・Search Consoleの数字と混ぜて記録している後から読み分けられなくなります
運用に乗せる前に、ここを確かめます — 取り直しと、区別。この2つが鍵になります
  • サーバーまたはCDNから、アクセスログを定期的に取得できる状態にしている
  • ログに記録されているIPが、CDNのものかリクエスト元のものかを確認した
  • 主要なAIクローラーのUser-Agent文字列で、ログを絞り込める
  • 各社が公開するIPアドレスのリストを、定期的に取得し直す運用がある
  • 逆引き・正引きDNSでの検証手順を、最低1回は実施したことがある
  • User-Agentだけでなく、IPアドレスでの検証も組み合わせている
  • ログ解析の結果を、GA4・Search Consoleのデータと区別して記録している

最後の項目が、意外と抜けます。ログで分かるのは「クローラーが来た」ことであって、「人が来た」ことではありません。

この章のまとめ

運用に乗せる鍵は、取り直しと区別の2つです。IPリストは取り直し、ログの数字は他の計測と混ぜません。

11LLMOの数字として、AIクローラーのサーバーログ解析はどこまで言えますか?

高梨課長
高梨課長の発言

数字が出たら、社内には何と報告するのがよいでしょうか。

鈴木さん
鈴木さんの発言

「訪問があった」までです。 そこから先の成果につながっているかどうかは、この記録だけでは分かりません。そこは正直に線を引いておくほうが、後で困りません。

同じ形の誤りが、繰り返し起きています。先に挙げておきます。

同じ形の誤りが、繰り返し起きていますどれも「よかれと思って」起きます同じ形の誤りが、繰り返し起きていますどれも「よかれと思って」起きますUser-Agentだけで本物と判定してしまう偽装は技術的に容易ですIPリストを一度取得したきり更新しない正当なクローラーを誤って除外しますサーバーログの存在自体を忘れてしまうGA4だけ見て「来ていない」と判断します名乗りとIPの両方で確かめるここまでやって、はじめて数字になります
同じ形の誤りが、繰り返し起きています — どれも「よかれと思って」起きます

User-Agentだけで本物と判定してしまう。 偽装は技術的に容易です。重要な判断をするときは、IPアドレスでの検証もあわせて行ってください。

IPアドレスのリストを、一度取得したきり更新しない。 各社のIP範囲は随時更新されるため、古いリストのままでは、正当なクローラーを誤って除外してしまう可能性があります。

サーバーログの存在自体を忘れてしまう。 GA4やSearch Consoleの数字だけを見て「AI経由のアクセスがない」と判断してしまう例があります。JavaScriptを実行しないクローラーは、そもそもGA4に記録されない構造です。

報告できる範囲にも、線を引いておきます。サーバーログで分かるのは、AIクローラーがアクセスしたという事実です。実際の成果につながっているかどうかは、別記事で扱った指標とあわせて確かめる必要があります。

この章のまとめ

ログが答えるのは「来たかどうか」までです。そこから先は、別の指標の仕事だと分けて考えます。

12よくある質問

サーバーログは、どれくらいの期間保存すればよいですか?

公式に推奨される保存期間の基準は確認できていません。ただし前年同月比を出すには13か月分が必要になります。生ログの保存が容量的に難しい場合でも、クローラー別・URL別の月次集計値だけは13か月以上残す運用をおすすめします。

User-Agentを偽装したアクセスは、どのくらい起きているんですか?

発生頻度についての公表データは確認できていません。ただし技術的に偽装が容易である以上、重要な意思決定にログの数字を使う場合は、IPアドレスの検証を省略しないことをおすすめします。

サーバーログ解析だけで、AI経由の成果まで把握できますか?

できません。サーバーログで分かるのは、AIクローラーがアクセスしたという事実のみです。実際の成果につながっているかどうかは、指標の設計を扱った別記事の内容とあわせて確認する必要があります。

ログ解析ツールを選ぶときは、何を見ればよいですか?

User-Agentのフィルタを自分で追加できるか、IPアドレスの検証を自動化できるか、CDN経由のログを取り込めるかの3点です。とくに1つ目は、新しいクローラーが登場したときに自力で対応できるかを左右します。

13まとめ|今日やる3つのこと

AIクローラーの訪問は、GA4ではなくサーバーログに残ります。専用のツールを買う前に、コマンドだけで着手できます。ただしUser-Agentでの抽出は入口にすぎず、IPアドレスでの検証を省略すると、なりすましを含んだ数字で意思決定することになります。

着手の順序としては、CDN配下かどうかの確認を最初に置いてください。ここを飛ばすと、すべて「なりすまし」と判定される結果になります。この1点さえ先に潰しておけば、残りの手順はこの記事のコマンドをそのまま流用できます。

もう一度、今日やる3つ

  1. CDN配下かどうかを確かめる

    記録されているIPがリクエスト元のものか、1件だけ手で見ます

  2. User-Agentでログを絞る

    主要なAIクローラー名を含む行を抜き出します

  3. IPアドレスで真贋を確かめる

    公開IPリストとの照合、または逆引き・正引きで判定します

AI検索では、こう聞かれています

  • AIクローラーが自社サイトに来ているか、どうすれば分かりますか?

    「サーバーログからAIクローラーを抜き出す解析は、AI検索対策としてどう進めるんですか?」の章に、そのまま打てるコマンドがあります

  • GPTBotを名乗るアクセスが本物かどうか、どう確かめますか?

    「AIクローラーを名乗るだけのボットを、AI対策としてどう見分けるんですか?」の章で、逆引きと正引きの手順を説明しています

  • GA4にAIクローラーのアクセスが出てこないのはなぜですか?

    「AIクローラーが来ているのに、AI検索の計測ツールに出てこないのはなぜですか?」の章で、記録が残る条件の違いを図で示しています

次に読むなら、この記事です