AgentGrade
EnglishEspañolDeutsch日本語中文
← 知识库

Next.js 的 llms.txt

(还)没有官方约定

Next.js 为 robots.txtsitemap.xml 提供了元数据文件约定 —— 从 app/robots.ts 导出一个函数,框架就会提供文件。llms.txt 没有这样的约定(有一个开放的功能请求: vercel/next.js 讨论 #80692),所以要自己接线。两种模式,都很简单:

模式 1: 静态文件

llms.txt 放进 public/。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 是面向开发者的 widget API。',
    '',
    '## 文档',
    ...docs.map(d => `- [${d.title}](/docs/${d.slug}): ${d.summary}`),
    '',
    '## 机器可读表面',
    '- [OpenAPI 规范](/openapi.json): 完整 API schema',
  ].join('\n');
  return new Response(body, {
    headers: { 'Content-Type': 'text/plain; charset=utf-8' },
  });
}

如果内容源开销大,加上 export const revalidate = 3600。想要全文伴生文件,同样的模式也能提供 llms-full.txt

该包含什么

精选胜过完整: 网站是什么(一个 blockquote)、智能体该从哪十几个页面开始(带单行摘要),以及指向机器表面的交叉引用 —— 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 —— 这是文档与快照的区别。

相关