OpenAIのボットと人のクリックを分ける方法

OpenAIのクローラーのアクセスと、ChatGPTから来た人のクリックを分ける方法を解説します。ユーザーエージェント、公開されたIPアドレスの範囲、サーバーのログ、GA4での確認方法を紹介します。

共有
サーバーのログとクローラーの追跡を描いた水彩画

OpenAIのボットのアクセスと、ChatGPTから来た人のクリックを分けるには、アクセスログでGPTBot、OAI-SearchBot、ChatGPT-Userのユーザーエージェントを分け、OpenAIを名乗るアクセスを公開されたIPアドレスの範囲で確認します。 人のクリックは、アクセス解析でchatgpt.comの参照元や「utm_source=chatgpt.com」を使って別に数えます。GA4のJavaScriptのタグは、タグを動かさない取得を記録しませんが、サーバーのログには残ります。

人の訪問の数字から外すOpenAIのアクセス

OpenAIのクローラーの説明によると、GPTBotは学習用、OAI-SearchBotは検索用、ChatGPT-Userはユーザーの操作による取得用です。3つとも自動のアクセスで、回答を読んでいる人のブラウザでの訪問ではありません。

いちばん間違えやすいのはChatGPT-Userです。人がChatGPTにページを読むよう頼んでも、実際にページを取得するのはChatGPTで、その人はサイトを開かないかもしれません。この取得は人のセッションから外し、別のアクセスのレポートに残します。

ダッシュボードを整えるために、元のログを消してはいけません。アクセスのエラーや分類の間違いを調べられるよう、記録は残します。アクセスの数とセッションの数は別の問いに答えるもので、合計が違うのは自然なことです。

それぞれのデータで分かること

データ分かること確認する場所
GPTBot、OAI-SearchBot、ChatGPT-Userの名前自動のアクセスが名乗っている名前アクセスログのユーザーエージェント
対応する公開範囲の中のIPアドレスOpenAIからのアクセスである根拠信頼できるCDNやサーバーのログ
chatgpt.comやchat.openai.comの参照元参照元として報告されたホスト参照元の項目、アクセス解析の参照元
utm_source=chatgpt.comURLにChatGPTの参照元のラベルが付いているランディングページのURL、キャンペーンの参照元
ブラウザでのページのイベントとその後の操作計測されたブラウザのセッションの根拠(スパムの可能性は残る)GA4などのアクセス解析

1つの行だけで、売上や引用は証明できません。参照元のパラメーターはコピーされることがあり、ユーザーエージェントは偽装できます。いくつかのデータを組み合わせ、不確かな部分はそのとおりに記録しましょう。

ユーザーエージェントでサーバーのログを分ける

Nginxのcombined形式のアクセスログでは、ダブルクォートで区切ると、ユーザーエージェントは6番目の項目です。次の読み取り専用のコマンドで、3つの名前を名乗るアクセスを表示できます。

awk -F '"' '$6 ~ /(GPTBot|OAI-SearchBot|ChatGPT-User)/ {print}' /var/log/nginx/access.log

残りの記録を見るには、条件を逆にします。

awk -F '"' '$6 !~ /(GPTBot|OAI-SearchBot|ChatGPT-User)/ {print}' /var/log/nginx/access.log

どちらも記録を表示するだけで、ログを変更したり、人のセッションを数えたりはしません。2つ目には、ほかのクローラー、死活監視、画像などのファイルへのアクセス、偽装されたアクセスも含まれます。期間を絞り、ページへのアクセスを確認してから判断しましょう。

ログの形式に合わせて項目を変えます。ログの閲覧ツールでは、ユーザーエージェントの項目で絞り込み、IPアドレス、日時、パス、ステータス、参照元を表示したままにします。行全体を検索すると、URLに含まれる文字に一致してしまうことがあります。

GPTBotのアクセスが本物か確かめる方法

GPTBotの確認とは、アクセス元の信頼できるIPアドレスを、OpenAIのクローラーの説明からリンクされているGPTBotのIPアドレスの範囲と照らし合わせることです。GPTBotを含むユーザーエージェントは偽装できるので、それだけではOpenAIからのアクセスとは言えません。

OpenAIは、ボットごとにIPアドレスの範囲をJSONで公開しています。GPTBot、OAI-SearchBot、ChatGPT-Userの一覧です。名乗っている名前に対応する一覧を使い、IPv6も含めて、アドレス全体をCIDRの範囲と照合します。文字列の先頭が一致するだけでは、範囲の確認になりません。一覧は写したままにせず、更新しましょう。

元のIPアドレスは、信頼できるCDNや正しく設定したリバースプロキシの記録を使います。サーバーのログには、CDNのアドレスしか残っていないことがあります。アクセスしてきた側が付けた転送用のIPアドレスのヘッダーを、そのまま信じてはいけません。元のアドレスが分からなければ、「未確認」と記録します。

確認の結果は、日時、パス、HTTPステータス、信頼できるIPアドレスと一緒に残します。逆引きのDNSは補助の根拠にはなりますが、公開された範囲の代わりにはなりません。それらしいホスト名だけでは不十分で、調べる場合は、そのホスト名を正引きして元のIPアドレスに戻るかを確認します。

GPTBotを名乗るのに範囲の外のアクセスがあれば、まずプロキシの設定と一覧の新しさを確認します。それでも合わなければ「未確認」として扱い、自社のアクセスの方針に沿ってWAFで拒否します。OpenAIのアクセスとしても、人の訪問としても数えません。OpenAIを名乗るのに確認できないアクセスは「OpenAIを名乗る取得」として、人の数字の外に置いたまま調べます。名前の判定にはAIクローラーのユーザーエージェント判定も使えますが、名前の確認だけでは本物かは分かりません。

数字を使う前にフィルターを見直す

同じ期間の、残した記録と外した記録をいくつか確認します。ユーザーエージェントの項目に値が入っているか、日時のタイムゾーンが正しいか、IPアドレスの項目が元のアクセス元を表しているかを見ます。ユーザーエージェントが空のアクセスは、人の訪問とせず、不明のままにします。

名乗っている取得を、名前とHTTPステータスでまとめます。成功、拒否、リダイレクトは別の結果なので、アクセスを調べるときは分けたままにします。人の訪問は、ログのHTML、画像、スクリプトへのアクセスを足すのではなく、アクセス解析のセッションで数えます。あとでルールを変えても比較が崩れないよう、フィルターの定義をレポートと一緒に残しましょう。

GA4でChatGPTからの人のクリックを確認する

「レポート」→「集客」→「トラフィック獲得」で「セッションの参照元」を選び、chatgpt.comで絞り込みます。chat.openai.comが表示されたら、別に確認します。ランディングページ、セッション、キーイベントを確認し、必要なら「セッションの参照元 / メディア」と比べます。

実際のChatGPTのリンクの行き先のURLも確認します。OpenAIの説明では、「utm_source=chatgpt.com」が付くリンクがあり、付かずにブラウザの参照元だけのこともあります。リダイレクトでもキャンペーンの値が消えないようにしましょう。ChatGPTで引用されたページに来たというだけで、参照元の分からない訪問をChatGPTからと付け替えてはいけません。

GA4は既知のボットのトラフィックを自動で除外しますが、すべての自動のアクセスが除かれる保証ではありません。通常のブラウザのタグでは、タグを動かさないボットはページのイベントを送りません。サーバーサイドで計測している場合は動きが違うことがあるので、自社の設定を確認してから数字を比べます。

ログのアクセスとGA4のセッションが合わない理由

1回のページの訪問で複数のファイルへのアクセスが発生し、クローラーはブラウザのセッションを作らずにページを取得します。反対に、同意の拒否、JavaScriptのブロック、タグの失敗で、ブラウザの訪問がアクセス解析に残らないこともあります。1つのアクセスが1つのセッションになるとは考えないようにしましょう。

AIのアプリからのクリックは、参照元やキャンペーンの値がなく、「direct(直接)」になることもあります。近くにChatGPT-Userのアクセスがあっても、失われた参照元は戻りません。取得とその後の訪問は、関係がないかもしれません。

参照元の設定はChatGPTからの流入を計測する方法、クローラーの役割はOpenAIのクローラーの違いで解説しています。SearchSealは回答の根拠を保存します。クローラーのアクセスはサーバーのログで、人の訪問と成果はアクセス解析で確認しましょう。

よくある質問

ChatGPT-Userのアクセスは人の訪問ですか?

いいえ。人の操作がきっかけでも、HTTPのアクセスをしているのはChatGPTです。そのあとにブラウザからのクリックがあれば、アクセス解析で別に数えます。

GA4にGPTBotのアクセスは記録されますか?

通常のGA4のブラウザのタグは、タグを動かさないアクセスを記録しません。GA4は既知のボットも除外します。取得の確認はサーバーのログで行い、サーバーサイドの計測は個別に確認します。

OpenAIのユーザーエージェントだけで、本物のボットと言えますか?

いいえ。ユーザーエージェントは偽装できます。信頼できるIPアドレスを、OpenAIが公開している対応する範囲と照らし合わせ、確認できたかどうかを記録します。

utm_source=chatgpt.comがあれば、人のクリックと言えますか?

いいえ。参照元のラベルなので、コピーで残ることも、ほかのアクセスが付けることもあります。ブラウザのセッションの根拠とボットの除外と合わせて確認しましょう。

GPTBotのアクセスはどう確認しますか?

信頼できるIPアドレスを、OpenAIのクローラーの説明からリンクされている最新のGPTBotの範囲と照らし合わせます。ユーザーエージェントは偽装でき、逆引きのDNSだけでは不十分です。合わない場合は、まずプロキシの設定と一覧の新しさを確認し、解決しなければ未確認として、方針に沿ってWAFで拒否します。

出典

AI検索で次に取れる成果を見つけましょう

サイトをチェック