AIクローラー robots.txt の設定:GPTBot・ClaudeBot・PerplexityBot を許可するか拒否するか
結論: AIクローラー robots.txt の設定は、ボットごとに「その AI システムがサイトを読んでよいか」を決める作業です。ボットは3種類あり、学習用(GPTBot、ClaudeBot)、検索用(OAI-SearchBot、Claude-SearchBot、PerplexityBot)、ユーザーの依頼でページを取得するもの(ChatGPT-User、Claude-User)に分かれます。AI の検索回答で引用される可能性を残したいなら、検索用ボットを許可してください。学習を許可するかどうかは、サイト運営者が決めることです。ファイルは小さくても、書き方を1つ間違えるとルールが効かなくなります。
AIクローラー robots.txt は1行のルールでは足りない
かつては User-agent: * の1行で足りました。AI の場合は粗すぎます。同じ会社が、用途の違う複数のボットを動かしているからです。OpenAI 自身が、各設定は互いに独立していると説明しています。OAI-SearchBot を許可して ChatGPT の検索結果にサイトが表示されうる状態にしつつ、GPTBot を拒否して、コンテンツを基盤モデルの学習に使わないよう求めることができます(OpenAI)。
つまり、ChatGPT から消えたいと考えて GPTBot だけを拒否しても、期待とは別のことが起きます。逆に、念のためすべてを拒否すると、回答の中でサイトを引用しうるボットまで締め出してしまいます。
AIクローラーの3つの種類
| 種類 | ボット | 拒否した場合 |
|---|---|---|
| 学習 | GPTBot(OpenAI)、ClaudeBot(Anthropic)、Google-Extended(Google) | コンテンツを学習に使わないでほしいという意思表示になる。Google 検索には影響しない |
| 検索 | OAI-SearchBot(OpenAI)、Claude-SearchBot(Anthropic)、PerplexityBot(Perplexity) | そのサービスの検索回答に表示されない、または表示が減る |
| ユーザーの依頼 | ChatGPT-User(OpenAI)、Claude-User(Anthropic) | OpenAI では、人が依頼した取得なので robots.txt のルールが適用されない場合がある。Anthropic は Claude-User を制御できるとしており、拒否するとユーザー主導の検索での可視性が下がる可能性がある |
各社が自ら書いていることを、要点だけまとめます。
- OpenAI: OAI-SearchBot を除外したサイトは ChatGPT の検索回答には表示されませんが、ナビゲーション用のリンクとして表示されることはあります。robots.txt を変更してから、システムに反映されるまで約24時間かかることがあります。
- Anthropic: ClaudeBot を制限すると、今後の素材を学習データセットから除外してほしいという意思表示になります。Claude-SearchBot や Claude-User を無効にすると、検索結果での可視性が下がる可能性があります。Anthropic は robots.txt を尊重し、CAPTCHA を回避せず、標準外の
Crawl-delay行に対応しています(Anthropic)。 - Perplexity: PerplexityBot は、Perplexity の検索結果にサイトを表示してリンクするためのボットです。基盤モデル向けのコンテンツ収集には使われず、Perplexity は許可を推奨しています(Perplexity)。
- Google: Google-Extended は別のボットではなく、robots.txt で使うトークンです。Google がクロールしたコンテンツを、将来の Gemini モデルの学習やグラウンディングに使ってよいかを制御します。Google 検索への掲載には影響せず、ランキングシグナルでもありません(Google)。
各社はリストを更新します。ルールをコピーする前に、これらのページを確認してください。
そのまま使える3つの設定例
1. すべて許可し、内部 API だけ閉じる。 seogrinder.com 自身の方式です。複数の User-agent 行を、1組のルールの上に並べます。
User-agent: *
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: OAI-SearchBot
User-agent: Claude-SearchBot
User-agent: PerplexityBot
User-agent: ChatGPT-User
User-agent: Claude-User
Disallow: /api/
Allow: /
Sitemap: https://www.example.com/sitemap.xml
2. 検索は許可し、学習は拒否する。
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
Disallow: /
User-agent: OAI-SearchBot
User-agent: Claude-SearchBot
User-agent: PerplexityBot
Allow: /
これは運営者の判断であり、推奨ではありません。コンテンツをできるだけ広く使ってほしいなら、例1を選んでください。なお Google-Extended は学習だけでなく、Gemini アプリと Vertex AI でのグラウンディングにも関わります。Google 検索や AI による概要には影響しません。
3. AI ボットをすべて拒否する。 上に挙げたすべてのボットの下に Disallow: / を置きます。すると、ChatGPT・Claude・Perplexity の検索回答での表示は減るか、まったくなくなります(ナビゲーション用のリンクや、ユーザーの依頼による取得は残りえます)。Google の AI による概要は、これらの識別子ではなく Googlebot で制御します。本当にそうしたい場合にだけ選んでください。
落とし穴:ボット専用のグループは * のグループを置き換える
RFC 9309 によると、クローラーは自分の名前に一致するグループに従います。専用のグループがあれば、* のグループはそのクローラーには適用されません(RFC 9309)。
例を挙げます。User-agent: * の下に Disallow: /internal/ があるとします。後から GPTBot 専用のグループを作り、中身を Allow: / だけにすると、/internal/ は GPTBot にとって立入禁止ではなくなります。ルールはグループごとに繰り返すか、上の例のように複数の User-agent 行を同じルールの上に並べてください。
同じ仕様には、ルールが衝突したときの決まりがあと2つあります。最も具体的な一致(パスが最も長いもの)が優先され、Allow と Disallow の長さが同じなら Allow が使われます。
利用目的を示す任意の行:Content-Signal
許可と拒否のほかに、Cloudflare が2025年9月に導入した任意の行があります。コンテンツを何に使ってよいかを示すものです。
Content-Signal: search=yes, ai-input=yes, ai-train=no
search は検索インデックスとスニペット、ai-input は AI の回答でのコンテンツの直接利用、ai-train は学習を表します。これは宣言であって鍵ではなく、守るかどうかは相手次第です。Cloudflare は、Content Signals は好みを表すものであって技術的な対抗措置ではなく、無視する企業もありうると述べています(Cloudflare)。
標準化の動きもあります。Google のクローラー文書によると、Google は共通の機械可読な学習用シグナル AIPREF を2027年初めにサポートする意向で、user-agent: __usage_ai-training と書きます(Google)。それまでは、Gemini の学習とグラウンディングを切り替えるスイッチは引き続き Google-Extended です。
robots.txt はアクセス制御ではない
仕様ははっきり述べています。このプロトコルは本物のセキュリティ対策の代わりにはならず、robots.txt に書いたパスは誰にでも見えます。ルールを無視するボットは、このファイルでは止まりません。公開してはいけないコンテンツには、ログインやファイアウォールのルールを使ってください。Anthropic は、IP アドレスでのブロックはオプトアウトの手段として機能しない場合があるとも警告しています。ボットが robots.txt そのものを読めなくなるためです。
SEOgrinder で AIクローラー robots.txt を確認する
- ブラウザーで自分のサイトの robots.txt(
https://example.com/robots.txtの形のアドレス)を開きます。サブドメインごとに別のファイルがあります。 - SEOgrinder を開き、アドレスを入力して分析を開始します。アカウントは不要です。
- レポートの AI 対応 タブを開き、「AI エージェント向けのチェック」の中から「AI ボットを制御する」を探します。満たしていれば、規定されている AI クローラーの数、許可の数、拒否の数が表示されます。未達の場合は、学習にも検索にも明示的なルールが見つからなかったことを示します。
- 満たしている項目は開くことができ、ファイルから見つかったテキストを確認できます。
- エージェント用プロンプトをコピー を押し、コーディングアシスタントに貼り付けます。ルールが足りなければ、何を追加するかがプロンプトに書かれています。すでにルールがある場合は、内容を確認して、誤っている部分だけを直すよう求めます。許可するか拒否するかは、運営者の判断のままです。
- 変更後に 再チェック を押します。レポートは最大24時間キャッシュされ、このボタンは新しい実行を強制します(1時間に数回まで)。
OpenAI と Perplexity のシステムが新しいルールを反映するまで、1日ほど見ておいてください。
実際の訪問を見分ける:ログと IP 範囲
ボットが本当にサイトを訪れているかは、サーバーログの User-agent で確認できます。GPTBot を名乗ることは誰にでもできるため、各社は照合用に IP 範囲を公開しています。OpenAI はボットごとに JSON ファイルで公開しており(例:openai.com/gptbot.json)、Anthropic は独自のリストを案内しています。訪問がこれらの範囲から来ていなければ、名前が一致していても、その会社からのものである可能性はごく低いといえます。訪問を分析したいときや、偽のボットをファイアウォールで止めたいときに役立ちます。ただし Anthropic の警告を忘れないでください。本物のボットを IP アドレスでブロックしないこと。ブロックすると、robots.txt を読めなくなります。
よくある間違い
- すべてのボット向けの
Disallow: /を残したまま公開する。 ステージング環境用のブロックが robots.txt に残ったまま本番公開される例です。公開のたびに確認してください。 - ChatGPT から消えるために GPTBot だけを拒否する。 それで制御できるのは学習であり、検索ではありません。
- グループの途中に空行を入れる。 Python の robotparser など一部のパーサーは、その上にある名前を捨ててしまいます。
User-agent行は続けて書いてください。 - Sitemap 行を相対パスで書く。
https://から始まる完全なアドレスで書きます。 - ファイルを違う場所に置く。 置き場所はルート直下の
/robots.txtです。サブフォルダーでは効きません。 - Content-Signal や llms.txt に期待しすぎる。 どちらも任意で、順位や引用への効果は確認されていません。
よくある質問
AI クローラーは許可すべきですか?
目的によります。AI の検索回答で引用される可能性を残したいなら、検索用ボットを許可してください。学習を許可するか拒否するかは事業上の判断で、2つは別々に設定できます。
Google-Extended を拒否すると Google から消えますか?
いいえ。Google は、Google-Extended は Google 検索への掲載に影響せず、ランキングシグナルでもないと述べています。
変更はどのくらいで効きますか?
OpenAI と Perplexity はどちらも、robots.txt の変更から最大で約24時間かかると述べています。
llms.txt は robots.txt と同じものですか?
いいえ。robots.txt はアクセスを制御します。llms.txt は、言語モデル向けにサイトの概要をまとめる、提案段階のファイルです。二次情報の報道によれば、Google はこれをサポートしていません(Search Engine Roundtable)。効果は確認されていません。詳しくは llms.txt とは?書き方と効果の整理 をご覧ください。
フォルダーごとに違うルールを設定できますか?
できます。グループの中で、パスごとに Disallow と Allow を設定できます。最も具体的な一致が優先されます。
次の一歩
robots.txt を開き、検索用ボットを誤ってブロックしていないか確認してください。そのうえで無料スキャンを実行し、AI 対応タブの「AI ボットを制御する」が満たされているかを見ます。満たされているとは、学習と検索にそれぞれ明示的なルールがあるということです。許可なのか拒否なのかは、検出結果に表示されます。