説明
OpenAIのドキュメントでは、次のユーザーエージェントの用途を区別しています。
OAI-SearchBotはChatGPT検索機能に表示されるためのクロールに使われます。GPTBotはモデルの学習に使われる可能性のあるコンテンツをクロールします。この設定はOAI-SearchBotとは独立しています。ChatGPT-UserはChatGPT/カスタムGPT内のユーザー操作によって開始されたリクエストを表します。自動クローラーではなく、検索での表示を制御するシグナルでもありません。robots.txtのルールが適用されない場合があります。
User-Agent文字列は偽装できるため、リクエストがOpenAIクローラーから来た証明にはなりません。リクエストを確認するにはアクセスログの送信元IPを記録し、現在の公式 searchbot.json の範囲、またはCDN/WAFの検証済みボットシグナルと比較します。レスポンスステータス、URL、時刻、防御システムの判定を記録してください。User-Agentが一致しただけでWAFルールを変更しないでください。アクセスを許可しても、システムがページにアクセスできる可能性が生まれるだけで、選択や引用が保証されるわけではありません。
架空の例
演習ページ /robots の架空のアクセスログに OAI-SearchBot User-Agentを持つリクエストがありますが、IPは公開されている範囲と一致しません。これは未検証のクローラーです。「OAI-SearchBotを名乗るUser-Agent、送信元は未検証」と記録し、それだけを根拠にアクセスを許可しないでください。その後、現在の公式IP範囲に含まれるIPからのリクエストがWAFで 403 になりました。これは、その時点で検証済みネットワーク送信元がブロックされた証拠です。所有者はそのルールを別途検討できます。
架空の .test ドメインは、実際のChatGPT Search確認には使えません。システムが取得できる自分の公開テストドメインがある場合だけクエリを実行してください。そのような確認ができない、製品を利用できない、またはクエリを実行していない場合は「情報源なし」ではなく「未確認」と記録します。特定の結果でURLが引用されたかを確認できるのは、クエリを実行してレスポンスを保存した場合だけです。
実際のアクセスログを使う場合、タスクに必要な期間だけ送信元IPを保持し、適用されるプライバシー/保存ポリシーに従ってください。
実習
- プラットフォームの公式ドキュメントを読み、検索機能に対応するクローラーを特定します。
- 架空のログでUser-Agentと送信元IPを比較し、現在の公式範囲またはCDN/WAFの検証済みボットシグナルを確認します。HTTPステータスと防御システムの判定を記録してください。User-Agentを偽装したリクエストを送り、それをクローラーの証拠として扱わないでください。
- ライブ確認では自分の公開テストドメインだけを使います。用意できない、またはAI Searchを利用できない場合は「未確認」と記録します。確認可能な場合は指定した言語と地域で中立的な質問を3つ入力し、クエリ、日付、モード、完全なレスポンス、情報源URLを保存します。
- 1回のレスポンスから継続的な可視性を推測しないでください。
チェックリスト
OAI-SearchBot、GPTBot、ChatGPT-Userを混同していない。- User-Agentを認証として使っていない。
- 送信元IPを現在の公式リストまたはCDNの検証済みボットシグナルと照合した。
- サイトへのアクセスと回答に引用が表示されるかを別にしている。
- 利用できない検索は「未確認」と記録している。
よくある間違い
「GPTBotを許可したからChatGPTで引用された」と結論づけたり、ログ中の OAI-SearchBot という文字列をすべて本物とみなしたりすること。OpenAIは検索クロールに OAI-SearchBot を使います。ネットワークリクエストはIP/プラットフォームで確認し、引用は実際のレスポンスで調べてください。