運用編:llms.txt vs robots.txt の使い分けとエラー監視の重要性
各章へクイックジャンプ:
llms.txt を設置しただけでは、AI時代への対応は完了しません。
長期的にサイトを運用していく中で、記事が増え、サイト構成が変わり、古い情報が削除されることがあります。AIエージェントに常に「正しいコンテキスト」を提供し続けるための運用フローとエラー監視の仕組みを確立しましょう。
1. robots.txt と llms.txt の役割の使い分け
混同されやすいですが、これら2つのファイルは「クローラーに対する目的」が全く異なります。
| 特徴 | robots.txt | llms.txt |
|---|---|---|
| 主な役割 | 足踏み・禁止区域の指定(防御) | 最適なパス・地図の提供(招待) |
| 対象 | 全ての検索エンジン・ボット | LLM、AI検索エンジン、AIエディタ |
| 記述形式 | 独自のDisallow/Allow書式 | Markdown形式(人間も読める) |
⚠️ 整合性のチェックポイントllms.txt で推奨しているリンク先が robots.txt で Disallow されていると、AIは「招待されたのに門が閉まっている」という矛盾した状態になります。これは最も典型的な運用ミスの一つです。
主要AIクローラーのUser-Agentリスト
AI検索エンジンや開発ツールが使用する主要なUser-Agent識別子を把握しておくことで、robots.txt での個別制御や、アクセスログでの行動追跡が可能になります。
| User-Agent | サービス | 用途 |
|---|---|---|
GPTBot | OpenAI | 学習用クロール |
OAI-SearchBot | OpenAI(ChatGPT search) | 検索向けフェッチ |
PerplexityBot | Perplexity AI | 回答生成のためのフェッチ |
ClaudeBot | Anthropic | 学習向けクロール |
Google-Extended | Gemini学習・グラウンディング利用の制御トークン | |
Applebot-Extended | Apple | Applebot収集データの生成AI利用制御 |
⚠️ User-Agent名は用途まで正確に扱う
たとえば OpenAI では GPTBot と OAI-SearchBot の役割が異なります。 また Google-Extended は通常のクローラー名ではなく、GoogleがAI利用可否を制御するための robots.txt トークンです。表記ミスや役割の混同があると、意図しない公開範囲になるので注意してください。
# 全AIボットに対してデフォルトで llms.txt を許可 User-agent: GPTBot Allow: /llms.txt Allow: /llms-full.txt Allow: /docs/ Disallow: /admin/ User-agent: PerplexityBot Allow: /llms.txt Allow: /llms-full.txt Allow: /docs/ Disallow: /admin/ User-agent: ClaudeBot Allow: /llms.txt Disallow: /private/ # 学習データ収集を拒否するが、検索フェッチは許可したい場合の例 # (OAI-SearchBot は検索用、GPTBot は学習用) User-agent: GPTBot Disallow: / # 学習には使わせない User-agent: OAI-SearchBot Allow: / # 検索での引用は許可
2. llms-full.txt 運用の自動化と負荷対策
サイト全体の全文テキストを含む llms-full.txt は、コンテンツが増えるほどファイルサイズが膨大(数MB以上)になります。
ファイルサイズの目安と分割基準
| ファイルサイズ | 状態 | 推奨アクション |
|---|---|---|
| 〜500KB | ✅ 理想的 | ほぼ全てのAIモデルが完全に処理可能。現状維持。 |
| 500KB〜2MB | ⚠️ 要注意 | 一部モデルでは途中切り捨てが発生する可能性。カテゴリ別分割を検討。 |
| 2MB〜 | ❌ 危険域 | ほとんどのAIで処理が不完全になる。必ず分割またはサマリー版を用意する。 |
差分更新と分割の検討
大規模サイトの場合、常に全ページを1ファイルに詰め込むのではなく、以下のような運用が推奨されます。
- 重要セクションの切り出し:
/docs/llms-full.txtのようにディレクトリごとに全文ファイルを用意する。 - ビルド時生成: 実行時生成ではなく、Next.jsの
static genやCI/CDフローの中で静的ファイルを事前生成して配信する。 - Gzip/Brotli圧縮: テキストファイルのため圧縮効率が非常に高いです。サーバー側で適切に圧縮を有効にしてください。
Vercel / Netlify でのContent-Type設定ミスと修正例
PaaS環境では、動的に生成した llms.txt が誤ったContent-Typeで配信されるケースが多く報告されています。
{
"headers": [
{
"source": "/llms.txt",
"headers": [
{ "key": "Content-Type", "value": "text/plain; charset=utf-8" },
{ "key": "Cache-Control", "value": "public, max-age=3600, s-maxage=86400" }
]
},
{
"source": "/llms-full.txt",
"headers": [
{ "key": "Content-Type", "value": "text/plain; charset=utf-8" },
{ "key": "Cache-Control", "value": "public, max-age=86400, s-maxage=604800" },
{ "key": "Content-Encoding", "value": "gzip" }
]
}
]
}⚠️ CDNキャッシュの落とし穴
Vercel EdgeやCloudflareなどのCDNが古い llms.txt を長期間キャッシュし続けることがあります。サイトの大幅な構成変更後は Cache-Control: max-age の値を一時的に短縮するか、デプロイ時にCDNのキャッシュパージAPIを叩くCI/CDフローを組み込んでください。
3. AIOGeoScan によるエラー監視と QAフロー
llms.txt の運用を安定させるため、AIOGeoScanを用いた以下の監視フローの導入を推奨します。デプロイのたびにバリデーションを実行することで、AIエージェントへの情報提供の質を高く維持できます。
/llms.txt が404になっていないか、200 OK で返っているかを定期チェック。特に Vercel や Netlify 等でのリライト設定ミスによる損失を防ぎます。
Markdownのリンク形式( `[]()` )が壊れていないか、HTMLタグが含まれていないかを診断ツールで自動検知。
llms.txt 内に記載されたリンク先がデッドリンクになっていないか、あるいはAIエージェントにとって読み取り可能なプレーンテキスト(.md等)を提供できているかを検証します。
4. 運用チェックリスト:月次・四半期メンテナンス
定期的なメンテナンスは、AIエージェントからの信頼(Trust)を維持するために不可欠です。下記の項目を運用サイクルに組み込むことを推奨します。
まとめ:クローラー制御の未来
「人間用サイト」と「検索用メタデータ」という二重管理の時代は終わりました。これからは llms.txt を通じて、AIと直接対話するようなデータ運用が求められます。
常に最新で、正確で、構造化された情報をAIに提供し続けること。それがAI時代における最強の「運用保守」としてのブランド保護に繋がります。
シリーズ完走おめでとうございます
全5章にわたって、llms.txtの基礎から実践まで学んできました。 ここで学んだ知識は、本シリーズの他のガイドと組み合わせることで、さらに強力なAI検索最適化(AIO/GEO)を実現します。
全5章を通して、AI時代にWebサイトを正しく伝える技術を学びましょう。