EP.01 で の概要を扱いました。本記事では、そのファイルを利用するサービスやエージェントがある場合の実装を扱います。検索順位を上げる設定として紹介していた説明は訂正しました。
Google の AI 最適化ガイドは、llms.txt を Google Search は使用せず、順位や可視性にも影響しないと説明しています。他サービスの利用状況は、それぞれの公式資料や実際の取得を確認してください。公開されたファイルがあるだけでは、そのサービスの検索で使われているとは判断できません。
llms.txt の提案では、概要と必要な資料へのリンクを用意します。現在の提案には Markdown 版への案内も含まれますが、既存の HTML、サイトマップ、クロール制御とは役割が異なります。以下は基本的な生成例です。用途とリンク先を決めてから実装し、必須対策として全サイトへ追加することは勧めません。
1. llms.txt の基本構造 (おさらい)
# サイトタイトル
> 1〜3 行のサイト要約
任意で背景説明を 1 段落
## セクション 1
- [タイトル](URL): 説明- [タイトル](URL): 説明
## セクション 2
- [タイトル](URL): 説明
## Optional
- [タイトル](URL): 補助情報2. サイト形態別の書き分け
| サイト形態 | 重視するセクション | 選ぶ基準 |
|---|---|---|
| コーポレートサイト | サービス / 事例 / 会社情報 | 事業と問い合わせ先を確認できるページ |
| B2B SaaS / プロダクト | 機能 / ドキュメント / API | 利用者が必要な仕様にたどれる資料 |
| メディア / ブログ | 記事一覧 / シリーズ | テーマ別に記事へたどれる入口 |
| EC サイト | 商品カテゴリ / 会社情報 | 公開情報と更新方法が明確なページ |
3. Next.js (App Router) での自動生成
import { ARTICLES } from "@/data/blog";
const BASE = "https://example.com";
export const dynamic = "force-static";
export async function GET() { const lines: string[] = []; lines.push("# サイト名"); lines.push(""); lines.push("> 1 行サイト要約"); lines.push(""); lines.push("## 主要ページ"); lines.push(""); lines.push(`- [トップ](${BASE}): 会社概要`); lines.push(`- [サービス](${BASE}/services): 提供サービス`); lines.push(""); lines.push("## ブログ"); lines.push(""); for (const a of ARTICLES) { lines.push(`- [${a.title}](${BASE}/blog/${a.series}/${a.slug}): ${a.excerpt}`); } return new Response(lines.join("\n"), { headers: { "Content-Type": "text/plain; charset=utf-8" }, });}4. WordPress での実装
add_action('init', function() { if ($_SERVER['REQUEST_URI'] === '/llms.txt') { header('Content-Type: text/plain; charset=utf-8'); echo "# " . get_bloginfo('name') . "\n\n"; echo "> " . get_bloginfo('description') . "\n\n"; echo "## 最新記事\n\n"; $posts = get_posts(['posts_per_page' => 50]); foreach ($posts as $p) { echo "- [" . $p->post_title . "](" . get_permalink($p) . "): " . wp_trim_words($p->post_excerpt, 30) . "\n"; } exit; }});5. 静的サイト (Hugo / Astro 等)
- Hugo:
layouts/index.llms.txtをテンプレで作成 →hugoでビルド時に生成 - Astro:
src/pages/llms.txt.tsで動的生成、ビルド時に静的化 - Jekyll:
_layouts/llms.txt.liquidでテンプレ作成 - Gatsby:
gatsby-node.jsの createPages で生成
6. llms-full.txt の使い分け
| 項目 | llms.txt | llms-full.txt |
|---|---|---|
| 内容 | 見出し+リンク+短い説明 | 本文を Markdown で結合 |
| サイズ | 数 KB-数百 KB | 数 MB-数十 MB |
| 用途 | 対応する利用先への案内 | 全文を必要とする利用先への提供 |
| 保守するもの | 参照先と説明 | 本文の変換と更新同期 |
| 配置 | /llms.txt | /llms-full.txt |
7. 検証方法
curl https://example.com/llms.txtで plain text が返ることを確認curl -IでContent-Type: text/plainを確認- Markdown の構文チェック: 通常の MD パーサで読めることを確認
- サイズ: 利用先の取得上限と応答時間を確認。共通の容量しきい値があるとは扱わない
- 提案の確認: llmstxt.org で書式と利用例を確認
8. 次の話
EP.03 の構造化データガイドでは、 で本文と一致する情報を記述する方法と、Google の検索機能の対応範囲を確認します。