ふくふくHukuhuku Inc.
EP.10GEO / LLMO 13分公開: 2026-09-01

AIクローラーとどう付き合うか ── 許可と拒否の判断

AI に引用されたいなら来てもらう必要があり、コンテンツを守りたいなら止めたい。用途ごとに別のクローラーが来るので、一律に決める必要はありません。

#LLMO#クローラー#robots.txt#運用
執筆 / 監修
松尾 亮合同会社ふくふく 代表社員

データ基盤・データパイプライン構築 / BI / 生成 AI 活用支援を専門とするエンジニア (28 年)。 本記事は AI 利用ポリシーに基づき、生成 AI の補助で執筆 → 人間が監修・編集して公開しています。

プロフィール詳細
シェア

は、生成AIが学習や回答生成のためにWebページを収集するプログラムです。従来の検索用クローラーとは目的も名前も異なります

この回は、来てもらうか、止めるかの判断を扱います。結論を先に言うと、一律に決める必要はありません

1. 用途ごとに別のクローラーが来る

重要な前提として、同じ事業者でも用途ごとに別の名前で来ることがあります。だから用途ごとに判断できます。

用途による違い
用途何のために来るか止めると
学習モデルの訓練データとして収集将来のモデルに含まれなくなる
回答時の参照利用者の質問に答えるため、その場で取得引用されなくなる
検索インデックス検索結果に載せるため検索から消える

2行目が にとって決定的です。回答時の参照を止めると、引用されなくなります。学習には使われたくないが引用はされたい、という場合は用途を分けて判断することになります。この2つは目的がまったく違うため、同じ「AIに使われる」という言葉で一括りにすると判断を誤ります

一括で拒否すると引用も止まる

「AI に使われたくない」という理由ですべてのAIクローラーを一律に拒否すると、回答時の参照も止まります。結果として、競合だけが引用されるという状況になりえます。判断は用途ごとに行ってください。

2. 記述の仕方

に、クローラーごとの許可・拒否を書きます。書き方の基本は従来と同じです。

robots.txt — 用途ごとに分けて書く
Text
# 一般の検索エンジン(従来どおり許可)User-agent: *Allow: /Disallow: /admin/Disallow: /api/
# 例: 学習目的のクローラーは拒否し、回答時の参照は許可する# ※ 実際の User-agent 名は各事業者の公開情報を確認することUser-agent: ExampleAI-TrainerDisallow: /
User-agent: ExampleAI-AnsweringAllow: /
# サイトマップの位置は必ず示すSitemap: https://example.com/sitemap.xml

User-agent の名前は事業者ごとに異なり、変更されることもあります。ここに具体名を書いても古くなるため、各事業者が公開している情報を確認してください。定期的な見直しが要る領域です。

あわせて も検討対象になります(EP.02 で扱いました)。こちらは拒否のためではなく、サイトの内容を要約して伝えるためのものなので、目的が違います。名前が似ているため混同されがちですが、片方は断るため、もう片方は伝えるためのものです。両方を用意しても矛盾しません。

3. 記述には強制力がない

重要な限界です。robots.txt は「お願い」であって、強制力はありません。尊重する事業者もいれば、しない場合もあります。

  • 尊重されない可能性がある — 記述はあくまで意思表示
  • 既に取得された内容は戻らない — 過去の分は対象外
  • 第三者経由の参照は止められない — 引用された先から辿られる
  • 公開している以上、読まれる前提 — 技術的に完全には防げない

本当に読ませたくない情報は、公開しないか、認証の後ろに置くしかありません。 での拒否は、「読まないでほしい」という意思表示として機能するに留まります。ここを誤解して「拒否しているから大丈夫」と考えると、実態と認識がずれます。技術的な保護と、意思表示は別のものです。

それでも書く意味はある

強制力がなくても、尊重する事業者に対しては有効です。また、意思を表明した記録としての意味もあります。書かないという選択は「どちらでもよい」と受け取られます。

4. アクセス負荷への対処

実務的な問題として、AIクローラーのアクセスが負荷になることがあります。従来の検索クローラーより頻繁に来る場合があります。

どのクローラーがどれだけ来ているかを調べる
Bash
#!/usr/bin/env bash# アクセスログから、ボットらしき User-agent を集計する
LOG="${1:-/var/log/nginx/access.log}"
echo "=== ボット別のアクセス数(上位20)==="awk -F'"' '{print $6}' "$LOG" \  | grep -iE 'bot|crawler|spider|gpt|claude|perplexity|ai' \  | sort | uniq -c | sort -rn | head -20
echoecho "=== 全体に占めるボットの割合 ==="total=$(wc -l < "$LOG")bots=$(awk -F'"' '{print $6}' "$LOG" \  | grep -icE 'bot|crawler|spider|gpt|claude|perplexity|ai')echo "全 $total 件中 $bots 件"awk -v t="$total" -v b="$bots" 'BEGIN { printf "  割合: %.1f%%\n", b / t * 100 }'

まず実態を測ってください。「多い気がする」で遮断すると、引用の機会を失います。全体に占める割合と、それが実際に負荷になっているかを確認してから判断します。この順序は パフォーマンスチューニング実践 で扱った「推測でチューニングしない」と同じで、測ってから手を付けるという原則がここでも当てはまります。

負荷への対処
状況対処失うもの
負荷になっていない何もしない
やや多い頻度の制限を試みるほぼなし
過大で、サービスに影響特定のクローラーを遮断そのAIからの引用
明らかに異常な挙動遮断ほぼなし(元々有益でない)

5. 見せる範囲を分ける

全部か全く無しか、ではなく、見せる範囲を分けるという選択もあります。

  • 公開記事は許可 — 引用されたいので来てもらう
  • 会員向けコンテンツは認証の後ろ — そもそも到達しない
  • 管理画面や内部向けは拒否 — 従来と同じ
  • 個人情報を含むページは拒否+そもそも公開しない — 二重に守る

4番目は当然のようですが、robots.txt に書くこと自体がヒントになるという点に注意してください。「`/private-customer-data/` を Disallow」と書くと、そのパスの存在を教えることになります。本当に隠したいものは、記述せず認証で守るのが正解です。

6. 判断の整理

この回の内容を、判断の順に整理します。

  1. 1引用されたいかを決める — されたいなら、回答時の参照は許可する
  2. 2学習の扱いを別に決める — 用途が違うので分けて判断できる
  3. 3実際のアクセスを測る — 負荷の議論は実態から始める
  4. 4負荷があれば、まず頻度制限 — 遮断は最後
  5. 5隠したいものは認証で守る — 記述に頼らない
  6. 6定期的に見直す — クローラーの名前も仕様も変わる

6番目を忘れないでください。この領域は変化が速く、書いた設定は放置すると意味を失います。半年に一度でも見直す機会を作っておくと、実態と乖離しません。新しいクローラーが登場しても、設定を書いていなければ既定の扱いになります。拒否したいものが増えているなら、追記が要ります。

ここまでのまとめ

用途ごとに別のクローラーが来るので、一律に決めなくてよい。回答時の参照を止めると引用されなくなる点に注意。記述に強制力はないが、意思表示として意味はある。負荷は測ってから判断し、遮断は最後の手段。隠したいものは認証で守る(記述はヒントになる)。そして定期的に見直す必要があります。

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp