## llms.txtとは？

llms.txtは、ドメインのルート（`/llms.txt`）で配信されるプレーンテキストのMarkdownファイルで、大規模言語モデルに対してサービスを人間が読める散文形式で説明します。[OpenAPI](/kb/ja/openapi)が機械に構造化された仕様を提供し、[robots.txt](/kb/ja/robots-txt)がクローラーに取得すべきURLを伝えるのに対し、llms.txtはLLMがあなたのサービスが何をするのか、エージェントがいつ使うべきか、どのエンドポイントが重要かを理解するために必要な*ナラティブな文脈*を、LLMが最も得意とする形式で提供します。

仕様は2024年9月にJeremy Howard（fast.ai、Answer.AI）によって提案されました。意図的に軽量です：スキーマ検証なし、JSONパースなし、バージョニングなし。H1見出しと一行サマリーを持つMarkdownファイルです。シンプルさが特徴です — 誰でも5分で書くことができ、どのLLMでも特別なツールなしで読めます。

## なぜllms.txtが重要なのか

Webを閲覧するLLMにはトリアージ問題があります。現代のサイトの1ページは200KBのHTMLになることがあり、意味のあるテキストのほとんどがエージェントのフェッチャーがレンダリングできないJavaScriptの背後にあります。エージェントがJSをレンダリングできる場合でも、信号対雑音比は悪く、ナビゲーション、広告、Cookieバナー、トラッキングスクリプトがバイトの大部分を占めます。

llms.txtはその逆です：単一のドキュメント、プレーンテキスト、数KBに収まり、重要なことから始まります。`https://example.com/llms.txt`を取得するエージェントは以下を得ます：

- サービスが何であるか、一文で
- 重要なエンドポイントまたはページのリスト
- 認証/支払いルールを散文で
- エージェントがコピーできる呼び出し例

これは「エージェントがあなたのサイトを理解しなければならない」と「エージェントが1回のフェッチでサイトが関連するかどうかを判断できる」の違いです。ChatGPT、Claude、Perplexity、または検索拡張システムから引用されたいサイトにとって、llms.txtは最も安価なアフォーダンスです。

## 仕組み

プロトコルネゴシエーションはありません。エージェントは`/llms.txt`を`/robots.txt`と同じ方法でリクエストし、`text/markdown`または`text/plain`が返されることを期待し、Markdownをパースします。ファイルはH1見出しで始まる必要があります；それ以外はすべて慣習です。

最小限の有効なllms.txt：

```markdown
# あなたのサービス名

> サービスが何をするかの一行説明。

## 概要

サービスが何のためにあるか、2-3文で。あなたの会社の歴史ではなく、
エージェントが気にするユースケースから始めましょう。

## エンドポイント

- `GET /api/search?q=` — カタログを検索（無料）
- `POST /api/order` — 注文を行う（有料: x402）
- `GET /api/status` — ヘルスチェック（無料）

## 認証

無料エンドポイントは認証不要。有料エンドポイントはx402支払いチャレンジ
を含むHTTP 402を返します。Base上のUSDCで決済します。

## 例

靴を検索：
  GET /api/search?q=shoes

注文：
  POST /api/order {"sku": "ABC123", "qty": 1}
```

これが仕様の全てです。H1を超える見出しはオプションです。箇条書きリスト、フェンス付きコードブロック、リンクはMarkdownなので動作します — エージェントはすでに使用しているMarkdownライブラリでそれらをパースします。

## llms.txt vs 他のエージェント可読性ファイル

| ファイル | 目的 | 形式 | 読者 |
|---|---|---|---|
| `/llms.txt` | LLM用のナラティブな文脈 | Markdown | LLM、ブラウジングエージェント |
| `/llms-full.txt` | 完全なテキストコーパス、一つのファイル | Markdown / プレーンテキスト | RAGパイプライン、組み込みエージェント |
| `/robots.txt` | クロール権限 | プレーンテキストディレクティブ | クローラー、ボット |
| `/sitemap.xml` | クローラー用URLインデックス | XML | 検索エンジン |
| `/openapi.json` | プログラマティックAPI仕様 | JSON/YAML | コードジェネレーター、APIクライアント |
| `/.well-known/mcp` | ツールサーバープロトコル | JSON-RPC | MCP対応エージェント |

llms.txtはこれらのいずれも置き換えません — robots.txt（機械ディレクティブ）とOpenAPI（機械仕様）の間のギャップを、サイトが何のためにあるかを推論する必要がある*言語*モデルに最適化されたレイヤーで埋めます。

## コンパニオン: llms-full.txt

llmstxt.org仕様はオプションの兄弟ファイルを定義します：[llms-full.txt](/kb/ja/llms-full-txt)。慣習は同じです — Markdown、ルートで配信 — しかしコンテンツは異なります。llms.txtは*ディレクトリ*（ポインタ付きの簡潔な概要）です。llms-full.txtは*コーパス*（サイトの完全な連結テキストコンテンツを1つのファイルに）です。

なぜ両方？2つの異なる消費者：

- **ブラウジングエージェント**は限られたコンテキストウィンドウを持ち、ディレクトリを欲します — llms.txtに基づいて次に何を取得するか選択します。
- **非ブラウジングエージェント**（RAGパイプライン、ワンショット検索、モバイルアプリの組み込みエージェント）はコーパスを欲します — llms-full.txtを一度取り込み、それ以上HTTPリクエストせずに質問に答えます。

可能であれば両方を出荷してください。llms.txtはマーケティングフロント；llms-full.txtはナレッジベースです。

## llms.txtを公開している企業

採用はAIインフラ、開発者ツール、コンテンツプラットフォームで広がっています：

- **Anthropic**は[docs.anthropic.com/llms.txt](https://docs.anthropic.com/llms.txt)で開発者ドキュメントの全ページをリストするllms.txtを公開しています。
- **Cloudflare**は[developers.cloudflare.com/llms.txt](https://developers.cloudflare.com/llms.txt)でWorkersとプラットフォームドキュメント用に公開しています。
- **Stripe**はAPIリファレンス用に公開しています。
- **Vercel、Mintlify、Netlify、Supabase、Fly.io**はすべて開発者ドキュメント用にllms.txtを公開しています。
- **多くのオープンソースプロジェクト**はドキュメント生成ツール経由でllms.txtを自動配信しています（MintlifyとDocusaurusの両方にプラグインがあります）。

現れたパターン：ドキュメントプラットフォームは*ドキュメント*用にllms.txtを公開し、プロダクトサイトは*API表面*用にllms.txtを公開します。両方とも有用です — 初めてプロダクトを発見するエージェントはマーケティングのllms.txtを読み、統合の詳細が必要になるとドキュメントのllms.txtに深く潜ります。

## サービスにllms.txtを追加する方法

### 1. エージェントが知る必要があるものを決める

エージェントが必要としないものはすべて省略してください：会社の物語、設計思想、マーケティングコピー。サービスが*何をする*か、どのエンドポイントが存在するかから始めます。サマリーを一文で書けないなら、サービスが広すぎます — 分割してください。

### 2. ファイルを作成する

`/llms.txt`をプレーンMarkdownとして作成します。必須：最初の行のH1見出しとblockquoteサマリー。推奨：「エンドポイント」セクション、「認証」セクション、2-3個の例リクエスト。ファイル全体を10KB以下に保ちます。

### 3. ルートで配信する

ファイルは`/llms.txt`にある必要があります — `/.well-known/llms.txt`ではなく、`/docs/llms.txt`でもありません。エージェントはルートを直接プローブします。ほとんどの静的サイトホストでは、`public/`または`static/`にファイルをドロップして、そのまま配信できます。

`Content-Type: text/markdown`または`text/plain`を設定します。一部のエージェントは`application/octet-stream`を拒否します。

### 4. ホームページからリンクする

エージェントとクローラーが発見できるように、HTMLヘッドに`rel="alternate"`リンクを追加します：

```html
<link rel="alternate" type="text/markdown" href="/llms.txt" title="LLMフレンドリーな説明">
```

### 5. llms-full.txtも出荷する

ドキュメントページを`/llms-full.txt`で単一のMarkdownファイルに連結します。ほとんどのドキュメントジェネレーターはこれを出力できます。手作業の場合、MarkdownソースをウォークしてH1セパレーターで結合するビルドステップで十分です。

## よくあるエラーとデバッグ

- **ファイルがHTMLとして配信される。** 静的ホストは時々テキストファイルをテンプレートでラップします。`curl https://your-domain.com/llms.txt`が生のMarkdownを返すことを確認してください、それを含むHTMLページではなく。
- **最初の行にH1がない。** 仕様はドキュメントが`#`で始まることを要求します。blockquote、フロントマター、HTMLコメントで始まるファイルはH1を期待するパーサーで失敗します。
- **コンテンツネゴシエーションがオーバーライドする。** 一部のサーバーはブラウザにHTMLを、エージェントにMarkdownを返します — しかし`Accept`ヘッダーが間違っていると、エージェントはHTMLを取得します。ファイルを直接配信してください；コンテンツネゴシエーションでゲートしないでください。
- **古いllms.txt。** 著者はファイルを一度公開し、二度と更新しません。スケジュールで再取得するエージェントは古いエンドポイントを見ます。llms.txtをビルドアーティファクトとして扱ってください — APIが変更されたら再生成します。
- **長すぎる。** 50KBを超えるファイルは一部のエージェントによって切り詰められます。llms.txtがそれほど長い場合、実際にはllms-full.txtが欲しい — ディレクトリとコーパスに分割します。

agentgradeのスキャナーは`/llms.txt`を直接プローブし、ファイルが存在し、H1で始まり、自明でないコンテンツがあることを確認します。

## よくある質問

### llms.txtはrobots.txtと同じですか？

いいえ。robots.txtは*クローラー*向けのディレクティブ（取得できるURL）です。llms.txtはLLM向けの*文脈*（サービスが何であるか、どう使うか）です。サイトは両方を公開できますし、すべきです。

### 検索エンジンはllms.txtを読みますか？

いくつかは非公式に読みます。Googleは公式に何も約束していません。主な消費者はLLM搭載ツール — ChatGPTブラウジング、Web検索付きClaude、Perplexity、Cursorの@web — であり、サービスを要約または引用する際にllms.txtを取得します。

### llms.txtを手書きすべきか生成すべきか？

トップレベルのllms.txtは手書きしてください — 短く（10〜50行）、編集判断が重要です。docsビルドパイプラインからllms-full.txtを生成してください — 長く機械的です。

### サービスに有料エンドポイントがある場合はどうしますか？

支払いを散文で説明してください（「有料エンドポイントはx402支払いチャレンジでHTTP 402を返します」）。llms.txtで支払いメタデータをエンコードしようとしないでください — それは[x402](/kb/ja/x402)と[OpenAPI](/kb/ja/openapi)の`x-payment-info`が担当することです。

### llms.txtはOpenAPIに代わるものですか？

いいえ。OpenAPIは厳密な機械仕様です — コードジェネレーターが直接消費します。llms.txtはナラティブです — LLMがそれを読んで意図を理解します。両方出荷してください：ツーリング用のOpenAPI、文脈用のllms.txt。

### llms.txtはSKILL.mdとどう違いますか？

[SKILL.md](/kb/ja/skills)は*指示的*です — エージェントがタスクを実行するために従うプレイブックです。llms.txtは*記述的*です — サービスが何のためにあるかについての文脈です。SKILLはエージェントランタイム（Claude Code、Cursorなど）内に存在し、エージェントに*どう動作するか*を伝えます。llms.txtはあなたのサイトに置かれ、*どんな*LLMにも*あなたが何であるか*を伝えます。

### ファイルはMarkdownでなければなりませんか？

仕様はMarkdownと言っています。実際には、プレーンテキストでも機能します — ほとんどのLLMはとにかくMarkdown構文を無視します。しかしMarkdownが推奨される形式です。なぜなら見出しがエージェントが関連セクションにスキップするために使用できる構造を与えるからです。

### llms.txtを公開するとSEOの助けになりますか？

間接的に。従来の検索エンジンはllms.txtの存在でページをランク付けしません。しかしAI Overviews、Perplexity、ChatGPT検索、BingのジェネレーティブAnswerはますますソースを引用しており — 明確で構造化されたllms.txtはあなたをより引用可能なソースにします。それがGEO（ジェネレーティブエンジン最適化）であり、LLM搭載検索とともに出現したAEO隣接の実践です。

## 仕様の成熟度

**コミュニティ標準。** 2024年9月、Jeremy Howardによって[llmstxt.org](https://llmstxt.org/)で定義されました。正式なガバナンス機関はありませんが、主要なAIインフラプロバイダー（Anthropic、Cloudflare、Stripe、Vercel）とdocsプラットフォーム（Mintlify、Docusaurus）によって広く採用されています。仕様は短く安定しています — 破壊的変更は予想されません。

## さらに学ぶ

- [llmstxt.org](https://llmstxt.org/) — 仕様
- [llms-full.txt](/kb/ja/llms-full-txt) — 完全コンテンツのコンパニオン
- [Anthropic llms.txt](https://docs.anthropic.com/llms.txt) — リファレンス実装
- [Agent Readiness](/agent-readiness) — llms.txtが広い landscape にどう適合するか


## クロスリファレンス {#cross-references}

サイトが OpenAPI、MCP、SKILL.md、x402、A2A、WebMCP も提供している場合は、`llms.txt` の中でそれらに言及してください。llms.txt の目的は、エージェントがサービス内容を理解するために読む*唯一のドキュメント*になることです。読んでも有料 API や MCP エンドポイントの存在が分からなければ、エージェントは well-known パスを当て推量で叩くしかなく、ほとんどはそうしません。

良いクロスリファレンスは、エージェントが取得できる URL を含む 1 行の箇条書きです：

- `POST /api/order` — 注文を作成（x402 経由の有料 — `/.well-known/x402.json` を参照）
- MCP サーバー: `/mcp`
- RAG 用のフルコーパス: `/llms-full.txt`
- OpenAPI スペック: `/openapi.json`
- SKILL.md（エージェント手順書）: `/skill.md`
- A2A エージェントカード: `/.well-known/agent.json`
- WebMCP マニフェスト: `/.well-known/webmcp.json`

専用セクションは不要で、本文中の言及でもカウントされます。AgentGrade のスキャンは、サイトが公開している各リソースごとに任意のサブチェックを 1 つ発行します。スキャナーが `/mcp` エンドポイントを検出したのに `llms.txt` に "mcp" の語が一切なければ、ギャップを示すソフトな失敗となります。

これらは任意のチェックです。総合スコアは下がりませんが、読み手のエージェントにとって llms.txt が*本来発揮できるほど有用ではない*箇所を可視化します。


## 「意味のあるコンテンツ」の判定基準 {#meaningful-content}

llms.txt 仕様は H1 のみを必須としていますが、タイトルだけのファイルではエージェントは何も学べません。AgentGrade の *Meaningful content* チェックは、エージェントが行動できる手がかりとなる、次の 3 つの構造的シグナルのうち少なくとも 1 つがファイルに含まれていることを確認します：

1. **Markdown リンクの一覧** — `- [タイトル](url)` 形式の箇条書きが 3 つ以上。これは Anthropic、Stripe、Cloudflare、Vercel、Mintlify など多くのプラットフォームの llms.txt が採用するドキュメント・ディレクトリ型の形です。各リンクは、エージェントが取得して読める実際のコンテンツを指し示します。
2. **フェンス付きコードブロック** — トリプル・バックティックで囲まれた任意の内容。`curl` の例、サンプル JSON レスポンス、認証方法を示すスニペットなど。これは API サーフェス型の形で、1 つのファイルが 1 つのサービスを動作する例とともに記述します。
3. **名前付き操作セクション** — `## Endpoints`、`## API`、`## Routes`、`## Authentication`、`## Examples`、`## Usage`、`## Quick Start` のような H2 見出し。これらの名前は、マーケティング文ではなく「エージェント向けの操作コンテンツ」であることを示します。

3 つのうち **いずれか 1 つ** あれば合格です。きちんと書かれた llms.txt のほとんどは少なくとも 2 つを満たします。

### 失敗する例

llms.txt のふりをしたマーケティング・フッター：15 行ありますが、Markdown リンクなし、コードブロックなし、操作セクションなし。これを読んだエージェントは Acme の存在は分かりますが、ナビゲートできる先がありません。*Meaningful content* チェックは失敗します。

### なぜリンクが重要か

llms.txt はルーティング・ファイルであり、コンテンツ・ファイルではありません（それは [llms-full.txt](/kb/llms-full-txt) の役割です）。その仕事は、エージェントが次に取得すべき URL を指し示すことです。`- About` のようなプレーンテキストの箇条書きは、URL のないラベルしか与えず、エージェントは追跡できません。`- [About](/about) — 会社情報` のような Markdown リンクは、URL に加えて 1 行の説明を与え、エージェントがそのページを取得する価値があるかを判断できるようにします。

このチェックが失敗したときの最も簡単な修正方法：プレーンテキストの箇条書きを Markdown リンクに変えるか、エージェントがサービスを呼び出す方法を示すフェンス付きのサンプルを 1 つ追加してください。
