ChatGPTは自社サイトを見られる?確認方法
ChatGPTがページを引用できるのは、OpenAIの検索クローラーOAI-SearchBotがそのページを取得でき、ブラウザと同じHTMLを受け取れる場合だけです。確認すべき点は3つです。robots.txtでOAI-SearchBotを禁止していないこと、ファイアウォールやCDNが403やチャレンジページを返していないこと、そして本文が最初に返るHTMLに含まれていることです。
自社の製品についてChatGPTに質問したところ、競合が引用されていて、そもそもChatGPTは自社サイトにアクセスできるのかと疑問に思うサイト運営者は少なくありません。この疑問には、具体的に確かめられる答えがあります。OpenAIはクローラーの名前とそれぞれの役割を公開しているため、robots.txtのルール、サーバーが返す応答、その応答に含まれる内容という流れの各段階を順に確認できます。
このページの内容
ChatGPTの回答に関係するOpenAIのクローラーは?
サイト運営者が目にすることが多いOpenAIのエージェントは、公式ドキュメントでは3つです。役割はそれぞれ異なり、1つをブロックしても他のエージェントはブロックされません。OpenAIは、robots.txtの各設定は互いに独立していると説明しています。
OAI-SearchBotは、ChatGPTの検索機能のためにページを見つけてインデックスします。OpenAIによると、これをオプトアウトしたサイトはChatGPTの検索回答に表示されません。引用されるかどうかを左右するのはこのクローラーです。GPTBotは、OpenAIの基盤モデルの学習に使われる可能性のあるコンテンツを収集します。これを禁止すると、コンテンツを学習に使わないでほしいという意思表示になります。検索回答から外れるわけではありません。ChatGPT-Userは、リンクを貼り付けるなどして、ユーザーがChatGPTに依頼したときにページを訪問します。OpenAIは、ユーザーの操作によるこれらの訪問にはrobots.txtのルールが適用されない場合があること、またこのエージェントはコンテンツを検索に表示するかどうかの判断には使われないことを説明しています。
要点をまとめると、OAI-SearchBotは引用、GPTBotは学習、ChatGPT-Userはユーザーの依頼によるリアルタイムの訪問を担当します。
ChatGPT向けにrobots.txtを確認するには?
ブラウザでhttps://yourdomain.com/robots.txtを開き、OAI-SearchBotを指定しているグループがあるか確認します。なければ、クローラーはUser-agent: *のグループに従います。該当するグループにDisallow: /があると、サイト全体がブロックされます。
ファイルが正しく応答するかどうかも確認してください。RFC 9309では、robots.txtがサーバーエラー(5xx)を返したりアクセスできなかったりした場合、クローラーはサイト全体が禁止されているものとみなす必要があります。404であれば問題ありません。ルールがないという意味になります。robots.txtのURLがステータス200でHTMLページを返しているのはよくある間違いで、クローラーはその中に有効なルールを見つけられません。
ChatGPTの検索には表示されつつ、学習にはオプトアウトする設定は次のようになります。
User-agent: OAI-SearchBot
Allow: /
User-agent: GPTBot
Disallow: /
User-agent: *
Allow: /
OpenAIによると、robots.txtを更新してから検索への反映には約24時間かかることがあります。
robots.txtで許可していても、ファイアウォールがChatGPTをブロックすることはある?
あります。しかもよくある原因です。robots.txtはマナーを守るクローラーへのお願いであり、アクセス制御ではありません。実際に何を返すかを決めるのは、ファイアウォール、CDN、ボット対策です。AIクローラーを不要なボットとみなすと、クローラーには403、429、あるいはCloudflareの「Just a moment...」画面のようなチャレンジページが返されます。一方、ブラウザで見ている人には通常どおりページが表示されます。
外から見ると、誰にでも開かれたサイトに見えます。違いがわかるのは、クローラーとして名乗ったリクエストだけです。この場合、robots.txtは許可、サーバーは拒否となり、サーバーの判断が優先されます。
OAI-SearchBotが受け取る内容をテストするには?
同じURLに2つのリクエストを送ります。1つはブラウザのユーザーエージェント、もう1つはクローラーのユーザーエージェントで、ステータスコードとサイズを比べます。OpenAIは各クローラーのユーザーエージェントの例を公開していますが、含まれるバージョン番号は変わることがあります。
# As a browser
curl -s -o /dev/null -w "%{http_code} %{size_download}\n" \
-A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" \
https://example.com/page
# As OAI-SearchBot
curl -s -o /dev/null -w "%{http_code} %{size_download}\n" \
-A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot" \
https://example.com/page
ブラウザが大きな本文つきの200を受け取り、クローラーが403、429、503、あるいはずっと小さな本文を受け取った場合、ファイアウォールがクローラーを別扱いしています。ただし制約が1つあります。このテストはOpenAIではなく、あなた自身のIPアドレスから行われます。公開されているIPレンジ(OpenAIはopenai.com/searchbot.jsonで公開しています)でクローラーを検証するファイアウォールでは、本物のクローラーは通し、あなたのテストはブロックすることがあります。それでも、このテストでブロックされた場合は、ファイアウォールがそのユーザーエージェントをどう扱うかがわかり、修正する価値があります。
ページは表示されるのに、ChatGPTが役立つ回答をしないのはなぜ?
アクセスはまだ最初のステップにすぎません。届くHTMLが空の枠だけで、中身があとからJavaScriptで埋められる場合、クローラーはほとんどテキストを受け取れないことがあります。curlやブラウザのソース表示で生のHTMLを確認してください。本文がそこになければ、クローラーにもおそらく見えていません。
その次に問われるのがコンテンツのシグナルです。ページ冒頭の明確な短い答え、人々が尋ねる質問に沿った見出し、発行者と著者の明記、見える形の日付などです。これらは引用を保証するものではありませんが、ページが正しく引用されやすくなります。
AISeeWhyはどのように確認するのか
AISeeWhyは、通常のブラウザと並べて、OAI-SearchBot、GPTBot、ChatGPT-User、さらに11種類のクローラーとしてページを取得し、RFC 9309のルールでrobots.txtを読み取り、ブロックやチャレンジを返したファイアウォールを特定します。指摘ごとに貼り付けるだけの修正案がつき、無料チェックではスコアと最初の指摘を確認できます。
よくある質問
GPTBotをブロックすると、ChatGPTの検索から外れる?
外れません。OpenAIは各クローラーの設定を独立したものとして扱っています。GPTBotは学習に関するもので、ChatGPTの検索回答にページを表示できるかどうかはOAI-SearchBotが決めます。片方を禁止し、もう片方を許可することもできます。
ChatGPT-Userはrobots.txtに従う?
OpenAIによると、これらの訪問はユーザーの操作で行われるため、robots.txtのルールが適用されない場合があります。こうした訪問を止めたいなら、robots.txtのルールは確実な手段ではありません。
robots.txtの変更がChatGPTに反映されるまでの時間は?
OpenAIによると、robots.txtを更新してから検索向けのシステムに反映されるまで、約24時間かかることがあります。
アクセスできれば引用されるのか
そうとは限りません。アクセスできることで引用が可能になりますが、引用が保証されるわけではありません。回答に使われるかどうかは、ページの内容と、その伝え方の明確さで決まります。