GPTBotとは
GPTBotはOpenAIが運用するWebクローラーです。ChatGPTや将来のGPTモデルの学習データ収集・検索機能のインデックス作成を目的として、毎日膨大な数のWebページを巡回しています。User-Agentには GPTBot と明記されており、識別は比較的容易です。
なぜブロックする必要があるのか
あなたのコンテンツがGPTBotに読まれると、そのテキストはOpenAIのモデル学習に使用される可能性があります。ブログ記事・製品説明・価格情報・独自のノウハウなど、労力をかけて作成したコンテンツが無断で使われることは、著作権の観点からも問題があります。
また、GPTBotのクロールはサーバー負荷を増加させる場合もあります。
方法① robots.txtでブロック(最もシンプル)
サイトのルートに robots.txt を設置し、以下を追記するだけです。
User-agent: GPTBot
Disallow: /
特定ページのみ許可したい場合:
User-agent: GPTBot
Allow: /about
Disallow: /
注意:robots.txtはあくまでも「紳士協定」であり、悪意あるクローラーには効果がありません。OpenAIはrobots.txtを遵守すると公言していますが、完全なブロックには次の方法が有効です。
方法② Next.js Middlewareで402を返す
Next.jsを使用している場合、Middlewareで確実にブロックできます。HTTP 402(Payment Required)を返すことで、ライセンスなしのアクセスを拒否するTollgate方式です。
// middleware.ts
const AI_BOT_RE = /GPTBot|OAI-SearchBot/i;
export function middleware(request: NextRequest) {
const ua = request.headers.get("user-agent") ?? "";
if (AI_BOT_RE.test(ua)) {
return new NextResponse("402 Payment Required", { status: 402 });
}
return NextResponse.next();
}
方法③ Nginx設定
if ($http_user_agent ~* "GPTBot") {
return 403;
}
方法④ Cloudflare WAFルール
CloudflareのWAFカスタムルールで http.user_agent contains "GPTBot" の条件でBlockアクションを設定します。CloudflareのBot Management(有料プラン)を使うとより精度の高い検知が可能です。
ブロックしているか確認する方法
以下のcurlコマンドで自サイトの応答を確認できます。
curl -A "GPTBot" https://yourdomain.com/ -I
HTTPステータスが 403 または 402 であればブロック成功です。
AI Access Monitorを使えば計測もできる
GPTBotをブロックする前に、まず「どのくらい来ているか」を把握することが重要です。AI Access Monitorを使えば、GPTBotをはじめとする28種のAIクローラーのアクセス数・頻度・対象URLをリアルタイムで計測できます。1行のコードを追加するだけで即日計測開始可能です。