AIクローラーをrobots.txtで管理するときは、各社のクローラーを「検索用」「学習用」「利用者の操作に応じた取得」に分け、目的ごとに許可・拒否を決めます。ChatGPTの検索結果に表示されたい場合、OpenAIはOAI-SearchBotをブロックしないよう案内しています。ただし、許可しても表示や引用が保証されるわけではなく、robots.txtはアクセス制御や検索結果からの確実な除外に使うものではありません。OpenAI Developersのボット解説(新しいタブで開きます) OpenAIのFAQ(新しいタブで開きます) Google検索セントラルの概要(新しいタブで開きます)
この記事では、AI robots.txtの基本、用途ごとのクローラーの違い、ChatGPT向けの設定例を整理します。あわせて、検索結果からページを外したい場合のnoindexとの違いや、設定後にCDN・WAFも含めて確認する方法も取り上げます。
robots.txtでAIクローラーを管理する基本
robots.txtは、クローラーにサイト内でアクセスできるURLを伝えるファイルです。アクセスを許可・拒否する設定はできますが、認証やセキュリティ対策の代わりにはなりません。
設定する前に、次の点を押さえておきます。
- 検索結果から外す手段ではない:Googleは、robots.txtの主な用途をサイトへの過剰なリクエストの回避と説明しています。robots.txtでアクセスを拒否しても、ページが検索結果から確実に除外されるわけではありません。Google検索セントラルの概要(新しいタブで開きます)
- 解釈はクローラーごとに異なり得る:同じ規則でも、クローラーごとに解釈が異なる場合があります。Google検索セントラルの概要(新しいタブで開きます)
- アクセス認可ではない:robots.txtの規則はアクセス認可ではなく、正当なコンテンツセキュリティ対策の代替にもなりません。公開したくない情報を守る場合は、アクセス制御など別の対策が必要です。RFC 9309(新しいタブで開きます)
- ファイルの形式:Googleの仕様では、robots.txtはUTF-8のプレーンテキストで作成し、各行を改行で区切ります。有効な行はフィールド名、コロン、値で構成され、Googleが扱うファイルサイズの上限は500KiBです。Google検索セントラルの仕様(新しいタブで開きます)
AIクローラーは用途で分けて考える
AIクローラーは、検索結果への掲載、モデルの学習、利用者の操作に応じたページ取得など、説明されている用途を確認してから設定します。名前だけで一括して扱うと、目的に合わない許可・拒否につながることがあります。
| クローラー名 | 会社 | 各社が説明する用途 | robots.txtで扱う際の注意 |
|---|---|---|---|
| OAI-SearchBot | OpenAI | ChatGPTの検索機能で、検索結果にサイトを表示するために使われます。 | 拒否したサイトはChatGPTの検索回答に表示されません。許可は表示・引用の保証ではありません。 |
| GPTBot | OpenAI | 生成AI基盤モデルの改善・安全性向上に使われます。 | 拒否は、サイトの内容を基盤モデルの学習に使わないという意思表示になります。 |
| ChatGPT-User | OpenAI | ChatGPTやCustom GPTsでの一部の利用者操作に使われます。 | 利用者の操作に起因するため、robots.txtの規則が適用されないことがあります。 |
| Claude-SearchBot | Anthropic | 利用者向けの検索結果の品質向上のためにWebを巡回します。 | Anthropicが検索用途として説明しています。 |
| ClaudeBot | Anthropic | モデルの学習に寄与し得るWebコンテンツを収集します。 | Anthropicが学習に関連する用途として説明しています。 |
| PerplexityBot | Perplexity | Perplexityの検索結果にサイトを表示・リンクします。 | Perplexityは、基盤モデルの学習用クロールには使わないと説明しています。 |
| Google-Extended | Googleがサイトから収集した内容を、将来のGeminiモデルの学習や、Geminiアプリ・Vertex AIでのグラウンディングに使うかどうかを管理します。 | robots.txt上の制御名です。GoogleはGoogle検索への掲載や順位には影響しないと説明しています。 |
各社の用途説明は、OpenAI、Anthropic、Perplexity、Googleの公式資料に基づいています。OpenAI Developersのボット解説(新しいタブで開きます) Anthropicのクローラー説明(新しいタブで開きます) Perplexityのボット説明(新しいタブで開きます) Googleの一般的なクローラー(新しいタブで開きます)
Cloudflareも、自社のAIボットの設定でAIボットをSearch、Agent、Trainingの3種類に分け、挙動に基づいてブロックする機能を提供しています。こうした分類は用途を整理する参考になりますが、すべてのクローラーを網羅するための一覧ではありません。CloudflareのAIボット設定(新しいタブで開きます)
グループと規則の読まれ方
robots.txtは、User-agentのグループごとに規則を書きます。どのグループが適用されるかは規範とクローラーの実装で説明が異なるため、RFCの規範とGoogleの実装説明を分けて確認します。
RFC 9309の規範
RFC 9309は、次のように定めています。RFC 9309(新しいタブで開きます)
- クローラーは、大文字・小文字を区別せずにUser-agent名を照合します。
- 一致するグループが複数ある場合は、それらの規則を統合します。
- 一致するグループがない場合に限り、
User-agent: *のグループがあればそれに従います。 - URLに複数の規則が一致する場合は、最も具体的な一致、すなわちパスの文字数が最も多いものを使います。
Googleの実装
Googleは、自社のクローラーについて次のように説明しています。Google検索セントラルの仕様(新しいタブで開きます)
- 適用するグループは、最も具体的に一致するUser-agentのグループを1つだけ使います。
- URLへの規則の当てはめでは、パスの長さに基づいて最も具体的な規則を使います。ワイルドカードを含めて規則が競合する場合は、制限の緩い規則を採用します。
- robots.txtは通常最大24時間キャッシュしますが、更新できない状況ではより長くキャッシュすることがあります。
RFCの規範とGoogleの実装説明は、混同しないように注意が必要です。Google以外のクローラーが同じように解釈するとは限らず、Googleもクローラーによって構文の解釈が異なる場合があると説明しています。RFC 9309(新しいタブで開きます) Google検索セントラルの概要(新しいタブで開きます)
当社のrobots.txtの書き方
当社のrobots.txtでは、個別のUser-agentグループを置かず、全クローラーに適用する*の規則だけを記載しています。個別グループを置くと、そのクローラーには*の規則が適用されなくなるため、全ページを許可する方針と矛盾しないようにしています。
User-agent: *
Allow: /
Sitemap: https://d-3.ooo/sitemap-index.xml
ChatGPT向けの設定(OAI-SearchBot・GPTBot・ChatGPT-User)
ChatGPT向けの設定では、検索結果への表示に関わるOAI-SearchBotと、学習に関わるGPTBotを分けて考えます。ChatGPT-Userは利用者の操作に応じた取得に使われ、robots.txtの規則が適用されないことがあります。
OAI-SearchBot(検索用)
OpenAIは、OAI-SearchBotについて次のように説明しています。OpenAI Developersのボット解説(新しいタブで開きます) OpenAIのFAQ(新しいタブで開きます)
- ChatGPTの検索機能で、検索結果にサイトを表示するために使われます。
- OAI-SearchBotを拒否したサイトは、ChatGPTの検索回答に表示されません。
- OpenAIのFAQ(ブラウザでのChatGPTの検索結果やChatGPT Atlasについての回答)では、ChatGPTの要約やスニペットにサイトの内容を含めるには、OAI-SearchBotをブロックしないよう案内しています。
- 検索結果への反映には、robots.txtの更新から約24時間かかることがあります。設定を変更した直後に動作が切り替わるとは限りません。
ただし、許可しても表示や引用が保証されるわけではありません。
GPTBot(学習用)
OpenAIは、GPTBotについて次のように説明しています。OpenAI Developersのボット解説(新しいタブで開きます)
- 生成AI基盤モデルの改善・安全性向上に使われます。
- GPTBotの拒否は、サイトの内容を基盤モデルの学習に使わない意思表示になります。
- OAI-SearchBotとGPTBotの設定は互いに独立しており、OAI-SearchBotを許可して検索結果に表示させながら、GPTBotを拒否して学習に使わない意思を示すことができます。
ChatGPT-User(利用者の操作に応じた取得)
OpenAIは、ChatGPT-Userについて次のように説明しています。OpenAI Developersのボット解説(新しいタブで開きます)
- ChatGPTやCustom GPTsでの一部の利用者操作に使われます。
- 自動的なWebクロールには使われません。
- 利用者の操作に起因するため、robots.txtの規則が適用されないことがあります。「常に適用されない」という意味ではありません。
GPTBotとOAI-SearchBotの用途や設定の違いは、GPTBotとOAI-SearchBotの違いで詳しく整理しています。
目的別の設定例
設定例は、検索・学習のどの用途を許可するかで分けて考えられます。以下はrobots.txtの記述例であり、検索結果への掲載やクロールの動作を保証するものではありません。
すべてのクローラーに全ページを許可する
User-agent: *とAllow: /を使います。当社のrobots.txtもこの方針です。
User-agent: *
Allow: /
学習用のGPTBotだけを拒否する
GPTBot専用のグループを追加します。OpenAIは、GPTBotを拒否すると基盤モデルの学習に使わないという意思表示になると説明しています。
User-agent: *
Allow: /
User-agent: GPTBot
Disallow: /
この例では、RFC 9309のグループの選び方に従うと、GPTBotには個別グループが適用され、OAI-SearchBotには*の規則が適用されます。OpenAIも、OAI-SearchBotとGPTBotの設定は互いに独立しており、OAI-SearchBotを許可したままGPTBotを拒否できると説明しています。ただし、これはrobots.txtの設定の話で、検索結果への表示を保証するものではありません。RFC 9309(新しいタブで開きます) OpenAI Developersのボット解説(新しいタブで開きます)
検索用のOAI-SearchBotも拒否する
次のように記述できます。OpenAIによると、OAI-SearchBotを拒否したサイトはChatGPTの検索回答に表示されません。
User-agent: OAI-SearchBot
Disallow: /
AnthropicのClaudeBotを拒否する
Anthropicが案内する拒否例も、個別グループでDisallow: /を指定する形式です。Anthropicのクローラー説明(新しいタブで開きます)
User-agent: ClaudeBot
Disallow: /
どの設定例を使うかは、検索結果への表示と学習への利用をどう扱いたいかで決まります。なお、Google-Extendedを拒否した場合も、Googleの説明ではGoogle検索への掲載や順位には影響しません。Googleの一般的なクローラー(新しいタブで開きます)
robots.txtとnoindexの違い
ページを検索結果から外したい場合は、robots.txtでクロールを止めるのではなく、noindexを設定します。noindexをクローラーに読ませるには、そのページへのクロールを許可しておく必要があります。
Google検索の場合
Googleは、noindexをメタタグまたはX-Robots-Tagヘッダーで指定できると説明しています。robots.txtでページをブロックするとクローラーはnoindexを確認できず、ページが検索結果に表示され続ける可能性があります。Google検索セントラルのnoindex解説(新しいタブで開きます)
<meta name="robots" content="noindex">
X-Robots-Tag: noindex
ChatGPT Atlasの場合
OpenAIのFAQはChatGPT Atlasについて、次のように説明しています。OpenAIのFAQ(新しいタブで開きます)
- robots.txtで拒否したページでも、第三者の検索プロバイダや他ページからURLを取得し、質問に関連すると判断した場合、リンクとページタイトルだけが表示されることがあります。
- これを避けたい場合はnoindexを使い、クローラーが対象ページを読めるようクロールを許可する必要があります。
この説明はChatGPT Atlasについてのもので、ChatGPTの検索機能全般に同じ挙動があるとは断定できません。
設定後の確認
robots.txtを更新した後は、公開中のファイルの内容に加えて、CDNやWAFの設定も確認します。robots.txtとCDN・WAFは別の層にあるため、当社では両方を点検対象にしています。
当社の点検手順は次のとおりです。
- 公開中のrobots.txtを開き、意図した規則になっているかを確認します。
- CloudflareのAIボット設定やWAFルール、robots.txtの管理機能がクローラーを止めていないかを点検します。Cloudflareは、AIボットを挙動に基づいてブロックする機能を提供しています。CloudflareのAIボット設定(新しいタブで開きます)
- 各User-agentを名乗るリクエストで、ページが
200を返すかを確認します。
3の確認に当社で使っているコマンドは次のとおりです。
for ua in Googlebot Bingbot OAI-SearchBot GPTBot Claude-SearchBot Claude-User ClaudeBot PerplexityBot; do
printf '%-18s ' "$ua"; curl -s -o /dev/null -w '%{http_code}\n' -A "Mozilla/5.0 (compatible; $ua)" https://d-3.ooo/journal/ai-seo/
done
curl -s https://d-3.ooo/robots.txt | grep -E '^(User-agent|Allow|Disallow)'
確認するときの注意点は次のとおりです。
curl -AでUser-agentを名乗るだけのアクセスは、Cloudflareによる検証済みボットの判定と結果が異なることがあります。このコマンドの応答だけで、実際のクローラーからの到達性を確定することはできません。- OpenAIとPerplexityは、クローラーのIPレンジを公開しています。設定後の到達性を判断する際は、IPレンジの確認も含めて各社の案内を参照できます。OpenAIのボット解説(新しいタブで開きます) Perplexityのボット説明(新しいタブで開きます)
まとめ
まず検索・学習・利用者操作のどの用途を許可するかを決め、その目的に合うUser-agentの規則を設定します。検索結果からページを外す場合はnoindexを使い、設定後はrobots.txtだけでなくCDNやWAFの状態も確認します。
AI検索の全体像はAI SEOの全体像で紹介しています。個別の設定やサイト改善については、AI検索対策の支援をご覧ください。
本文の仕様や数値は、OpenAI・Google・Anthropic・Perplexity・Cloudflareの公開資料、RFC 9309、および当社サイトの設定・点検手順に基づきます。独自の調査・効果検証の結果は含みません。