AgentGrade
EnglishEspañolDeutsch日本語中文
← ナレッジベース

Next.jsのllms.txt

ファーストパーティの規約は(まだ)ない

Next.jsはrobots.txtsitemap.xmlのメタデータファイル規約を備えています — app/robots.tsから関数をエクスポートすれば、フレームワークがファイルを配信します。llms.txtにはそのような規約が存在しません(オープンな機能リクエストがあります: vercel/next.jsディスカッション#80692)。自分で配線します。2つのパターン、どちらも簡単です:

パターン1: 静的ファイル

llms.txtpublic/に置きます。Next.jsはそこにあるものをルートで配信するので、public/llms.txtyoursite.com/llms.txt。以上です。

主要ページがめったに変わらない場合の正解です。リスクはドリフト: ファイルはサイトがかつて何だったかを語ります。

パターン2: route handler

動くコンテンツ — ドキュメント、商品、投稿 — には、ページと同じ真実の源からファイルを生成します:

// app/llms.txt/route.ts
import { getDocs } from '@/lib/content';

export async function GET() {
  const docs = await getDocs();
  const body = [
    '# Acme',
    '',
    '> Acmeは開発者向けウィジェットAPIです。',
    '',
    '## ドキュメント',
    ...docs.map(d => `- [${d.title}](/docs/${d.slug}): ${d.summary}`),
    '',
    '## 機械可読サーフェス',
    '- [OpenAPI仕様](/openapi.json): 完全なAPIスキーマ',
  ].join('\n');
  return new Response(body, {
    headers: { 'Content-Type': 'text/plain; charset=utf-8' },
  });
}

コンテンツソースが重い場合はexport const revalidate = 3600を追加します。全文コンパニオンが欲しければ、同じパターンでllms-full.txtも配信できます。

何を含めるべきか

網羅性よりキュレーション: サイトが何か(blockquote 1つ)、エージェントが起点とすべき十数ページと1行要約、そして機械サーフェスへのクロスリファレンス — OpenAPI仕様MCPエンドポイントはファイル中で最も価値ある行です。フォーマットの詳細はllms.txtガイドへ。

検証する

デプロイに対してllms.txtバリデーターを実行してください — 存在、パース可能性、ナビゲート可能な構造。あるいはサイトをスキャンしてエージェント対応度の全体像を確認しましょう。

よくある質問

Next.jsにはrobots.tsのようなllms.tsメタデータ規約がありますか?

ありません。メタデータファイル規約はrobots.txt、sitemap.xml、アイコン、OG画像をカバーしますが、llms.txtは対象外です。機能リクエストはオープン中。それまではpublic/llms.txtかroute handlerを使ってください。

route handlerは特別なContent-Typeを設定すべきですか?

UTF-8のtext/plain(またはtext/markdown)で配信してください。エージェントは本文からmarkdown構造をパースします。重要なのは、ルートがコンテンツを直接200で返すことです。

静的ファイルとroute handler、どちらにすべきですか?

主要ページが安定しているなら静的。ファイルに変化するものを載せるならroute handler — ドキュメントとスナップショットの違いです。

関連