OpenAIのクローラーを解説:GPTBot、OAI-SearchBot、ChatGPT-User
OpenAIは、モデルの学習に使われる可能性のあるコンテンツの収集にGPTBot、ChatGPT検索のためのページのインデックスにOAI-SearchBot、ユーザーが依頼した訪問にChatGPT-Userを使っています。GPTBotをブロックしても、オプトアウトされるのは学習だけです。OAI-SearchBotをブロックすると、ChatGPTの検索回答から外れます。ChatGPT-Userにはrobots.txtが適用されない場合があります。
同じ会社の3つの異なるユーザーエージェントに、それぞれ別のrobots.txtトークンがあるため、混乱が多く生じています。GPTBotが登場した際に多くのサイトがブロックし、その後、広範なファイアウォールのルールなどによって、ChatGPTが引用できるかどうかを決めるクローラーまでブロックしていたことに気づいたサイトもあります。この記事では、OpenAI自身のドキュメントに沿って、各エージェントを順に見ていきます。
このページの内容
GPTBotは何をするのか
GPTBotは、OpenAIの生成AI基盤モデルの学習に使われる可能性のあるコンテンツをクロールします。OpenAIのドキュメントによると、GPTBotを禁止することは、そのサイトのコンテンツをモデルの学習に使わないでほしいという意思表示になります。
ユーザーエージェントにはGPTBotというトークンが含まれます。たとえばMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbotです。OpenAIはバージョン番号が変わる場合があると述べているため、文字列全体ではなくトークンで照合してください。IPレンジはopenai.com/gptbot.jsonで公開されています。
許可するかどうかは、方針の問題です。コンテンツを学習データに含めたい発行者もいれば、そうでない発行者もいます。ブロックしても、ChatGPT検索には影響しません。別のクローラーだからです。後で考えを変えた場合は、Disallowの行を削除するだけで済み、登録や申請は必要ありません。
OAI-SearchBotは何をするのか
OAI-SearchBotはOpenAIの検索クローラーで、ChatGPTの検索機能にウェブサイトを表示させる役割を担います。OpenAIは、OAI-SearchBotをオプトアウトしたサイトはChatGPTの検索回答に表示されないと明言しています。
ChatGPTにページを引用してほしいなら、robots.txtでもファイアウォールでも、このクローラーを許可する必要があります。IPレンジはopenai.com/searchbot.jsonで公開されており、ファイアウォールでリクエストが本当にOpenAIからのものか検証できます。
ChatGPT-Userは何をするのか
ChatGPT-Userは、一般的な意味でのクローラーではありません。ChatGPTのユーザーやカスタムGPTが依頼したときに、ページを取得します。たとえば、チャットにあなたのURLを貼り付けて要約を頼んだときなどです。OpenAIは、ウェブの自動クロールには使われないと説明しています。
OpenAIのドキュメントには、ここで重要な点が2つあります。1つ目は、これらの動作はユーザーの操作で行われるため、robots.txtのルールが適用されない場合があることです。2つ目は、ChatGPT-Userはコンテンツを検索に表示してよいかの判断には使われないことです。検索で意味を持つ設定はOAI-SearchBotです。
それぞれをブロックするとどうなる?
GPTBotをブロックした場合:コンテンツは学習に使わないものとして扱われます。OAI-SearchBotが許可されていれば、ChatGPT検索での表示や引用は引き続き可能です。OAI-SearchBotをブロックした場合:ページはChatGPTの検索回答に表示されなくなります。学習はGPTBotで別に制御されます。- robots.txtで
ChatGPT-Userをブロックした場合:OpenAIによると、これらの訪問にはrobots.txtが適用されない場合があるため、効果は保証されません。ファイアウォールでブロックすれば取得は止まりますが、リンクを貼ったユーザーには、コンテンツではなくエラーが表示されます。 - 3つすべてをファイアウォールでブロックした場合:ChatGPTはページのインデックスも取得もできなくなり、引用できる内容がなくなります。
- 3つすべてを許可した場合:ページは検索のためにインデックスされ、依頼に応じて取得され、
GPTBotを通じて学習にも使われる可能性があります。
OpenAIはまた、GPTBotとOAI-SearchBotの両方が許可されている場合、二重にクロールしないよう、1回のクロール結果を両方の目的に使うことがあると述べています。
OpenAIのクローラーにはどんなrobots.txtを使うべき?
ChatGPTの回答に表示されたいほとんどのサイトでは、検索クローラーを許可し、学習については別に判断します。次のファイルは、検索を許可して学習をオプトアウトするものです。
User-agent: OAI-SearchBot
Allow: /
User-agent: GPTBot
Disallow: /
User-agent: *
Allow: /
Disallow: /admin/
RFC 9309の細かな点に注意してください。クローラーは自分を指定したグループに従い、*のグループは無視します。上の例では、OAI-SearchBotのグループにDisallow: /admin/の行がないため、このクローラーは/admin/に入れてしまいます。非公開にしたいパスは、名前を指定した各グループに繰り返し書いてください。OpenAIによると、検索への反映には約24時間かかることがあります。
ファイアウォールが通していることを確認するには?
robots.txtは方針を示すだけです。各リクエストに実際に何を返すかを決めるのは、ファイアウォールやCDNです。各クローラーのユーザーエージェントでページをリクエストし、ステータスコードと本文のサイズをブラウザのリクエストと比べます。クローラーには403、429、チャレンジページが返り、ブラウザには通常のページが返るなら、ファイアウォールがrobots.txtを上書きしています。
AISeeWhyは、OpenAIの3つのエージェントについてこの比較を一度に実行します。OAI-SearchBotとChatGPT-Userのブロックは引用を失うためP1とし、GPTBotのブロックはエラーではなく方針の選択としてP3に分類します。
よくある質問
GPTBotはChatGPTと同じもの?
違います。GPTBotは学習データ用のクローラーです。ChatGPT検索にはOAI-SearchBotが使われ、ユーザーが依頼したリアルタイムの訪問はChatGPT-Userから行われます。
ChatGPT検索は許可し、学習はブロックできる?
できます。robots.txtでOAI-SearchBotを許可し、GPTBotを禁止します。OpenAIは、この2つの設定は独立していると説明しています。
OpenAIをIPアドレスでブロックすべき?
IPでブロックすると、クローラーがrobots.txtを読めなくなり、方針を変更しにくくなります。通常は、方針をrobots.txtで示し、公開されているIPレンジはOpenAIのクローラーをブロックするためではなく、検証するために使うほうが適切です。
完全なユーザーエージェントではなくトークンで照合するのはなぜ?
OpenAIは、ユーザーエージェントに含まれるバージョン番号が変わる場合があり、公開されているサンプルの文字列もクローラーごとに異なると述べています。GPTBotやOAI-SearchBotで照合するルールは更新後も機能しますが、完全な文字列で照合するルールは、気づかないうちに一致しなくなることがあります。