(Journal) — AI検索対策

AIクローラーとrobots.txt|許可・拒否の考え方(ChatGPT向けを含む)

公開日
情報確認日
カテゴリ
AI検索対策
シリーズ
技術的な対策

AIクローラーをrobots.txtで管理する考え方を、検索用・学習用・利用者の操作の用途別に整理。ChatGPT向けのOAI-SearchBot・GPTBotの設定例、noindexとの違い、設定後の確認方法も解説します。

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を伝えるファイルです。アクセスを許可・拒否する設定はできますが、認証やセキュリティ対策の代わりにはなりません。

設定する前に、次の点を押さえておきます。

AIクローラーは用途で分けて考える

AIクローラーは、検索結果への掲載、モデルの学習、利用者の操作に応じたページ取得など、説明されている用途を確認してから設定します。名前だけで一括して扱うと、目的に合わない許可・拒否につながることがあります。

クローラー名会社各社が説明する用途robots.txtで扱う際の注意
OAI-SearchBotOpenAIChatGPTの検索機能で、検索結果にサイトを表示するために使われます。拒否したサイトはChatGPTの検索回答に表示されません。許可は表示・引用の保証ではありません。
GPTBotOpenAI生成AI基盤モデルの改善・安全性向上に使われます。拒否は、サイトの内容を基盤モデルの学習に使わないという意思表示になります。
ChatGPT-UserOpenAIChatGPTやCustom GPTsでの一部の利用者操作に使われます。利用者の操作に起因するため、robots.txtの規則が適用されないことがあります。
Claude-SearchBotAnthropic利用者向けの検索結果の品質向上のためにWebを巡回します。Anthropicが検索用途として説明しています。
ClaudeBotAnthropicモデルの学習に寄与し得るWebコンテンツを収集します。Anthropicが学習に関連する用途として説明しています。
PerplexityBotPerplexityPerplexityの検索結果にサイトを表示・リンクします。Perplexityは、基盤モデルの学習用クロールには使わないと説明しています。
Google-ExtendedGoogleGoogleがサイトから収集した内容を、将来の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は別の層にあるため、当社では両方を点検対象にしています。

当社の点検手順は次のとおりです。

  1. 公開中のrobots.txtを開き、意図した規則になっているかを確認します。
  2. CloudflareのAIボット設定やWAFルール、robots.txtの管理機能がクローラーを止めていないかを点検します。Cloudflareは、AIボットを挙動に基づいてブロックする機能を提供しています。CloudflareのAIボット設定⁠(新しいタブで開きます)
  3. 各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)'

確認するときの注意点は次のとおりです。

まとめ

まず検索・学習・利用者操作のどの用途を許可するかを決め、その目的に合うUser-agentの規則を設定します。検索結果からページを外す場合はnoindexを使い、設定後はrobots.txtだけでなくCDNやWAFの状態も確認します。

AI検索の全体像はAI SEOの全体像で紹介しています。個別の設定やサイト改善については、AI検索対策の支援をご覧ください。

本文の仕様や数値は、OpenAI・Google・Anthropic・Perplexity・Cloudflareの公開資料、RFC 9309、および当社サイトの設定・点検手順に基づきます。独自の調査・効果検証の結果は含みません。

(Contact)

Free first hearing

記事の内容について、お気軽にご相談ください。

初回ヒアリングは無料。全国・オンラインで対応します。

初回のご相談

課題が曖昧なままでも、お気軽にご相談ください。業務の困りごとや、実現したいことをお聞かせください。

First call
初回ヒアリング無料
Area
全国・オンライン
Reply
通常2営業日以内

ご入力いただいた情報は、ご相談への対応・連絡に使用します。メール送信にはResendを、自動送信の防止にはCloudflare Turnstileを利用します。送信によりプライバシーポリシーに同意したものとします。

通常2営業日以内にご返信します。