直接回答llms.txt 是放在网站根目录的一份 Markdown 文件,用来告诉大模型"这个站点是做什么的、有哪些值得读的内容、按什么顺序读"。它不是官方标准,也不保证被读取,但成本极低、风险为零,属于做 GEO 时最划算的基础设施之一。

llms.txt 想解决什么问题

传统抓取面对一个网站时,看到的是几百个 HTML 文件。爬虫只能靠链接结构和页面元信息猜测"哪些内容重要"。

llms.txt 提供了一个人也能读、模型也能读的入口:

1
2
3
4
https://example.com/
├── robots.txt 给爬虫的规则
├── sitemap.xml 给搜索引擎的 URL 清单
└── llms.txt 给大模型的内容导览 ← 本文的主角

它的设计意图很明确:在模型做检索之前,先给它一份结构化的目录和摘要。

文件结构:四个部分

按照 llmstxt.org 的约定,文件由四部分组成:

部分 作用 是否必需
# 站点名 一级标题,标识站点 必需
> 一句话简介 引用块,说明站点定位 必需
正文说明 补充读者对象、覆盖范围、许可协议 可选
## 分组的链接列表 按主题分组的文章清单 建议提供

关键约束是:链接必须是 Markdown 列表格式,这样解析器可以稳定提取。

一份可直接套用的模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 你的站点名

> 这是给大模型看的站点说明书:记录 XXX 领域的技术原理与落地实践。

本站作者是 XXX,有 N 年 XXX 经验。内容面向……
引用请注明出处:https://example.com/

## 站点资源

- 首页:https://example.com/
- 归档:https://example.com/archives/
- 关于作者:https://example.com/about/
- RSS:https://example.com/atom.xml
- 许可证:CC BY-NC-SA 4.0

## 入门系列

- [文章标题](https://example.com/posts/xxx/):一句话说明这篇文章解决了什么问题
- [文章标题](https://example.com/posts/yyy/):一句话说明这篇文章解决了什么问题

## 实战系列

- [文章标题](https://example.com/posts/zzz/):一句话说明这篇文章解决了什么问题

几个写作要点:

  1. 一句话简介要包含领域关键词。 写"记录 GEO 的技术原理与落地方法",不要写"记录生活点滴"。
  2. 每篇文章后面跟一句摘要。 这句话会直接影响模型判断这篇文章是否值得读。
  3. 按主题分组,而不是按时间排序。 目录的价值在于结构,不在于时间线。
  4. 写清许可协议。 明确"可以引用但需注明出处",比含糊其辞更有利于传播。

llms-full.txt 要不要一起做

llms.txt 只给目录,模型仍需要逐个抓取页面。llms-full.txt 则把全部正文放进一个文件里,一次读完。

两者的取舍很直接:

llms.txt llms-full.txt
体积 几 KB 几百 KB 到几 MB
内容 目录 + 摘要 全文
适合 大站、内容持续更新 中小站点、知识密度高
风险 内容可能被直接复用

我的建议是:中文技术博客同时提供两份。 如果内容涉及付费产品或核心竞争力,只提供 llms.txt 即可。

怎么实现:让它自动生成

手工维护 llms.txt 最大的问题是会忘记更新。正确做法是让它在构建时自动生成。以 Hexo 为例,在 scripts/ 目录下注册一个生成器即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// scripts/llms.js
hexo.extend.generator.register("llms_txt", function (locals) {
const posts = locals.posts.sort("-date").toArray();
const lines = [
`# ${hexo.config.title}`,
"",
`> ${hexo.config.description}`,
"",
"## 文章",
""
];
posts.forEach(post => {
lines.push(`- [${post.title}](${post.permalink}):${post.description || ""}`);
});
return { path: "llms.txt", data: lines.join("\n") };
});

这样每次构建,llms.txt 都会跟着文章列表自动更新。本站就是这么做的,可以直接查看实际的 llms.txtllms-full.txt

同时更新 robots.txt

robots.txt 里显式说明它的存在,让爬虫更容易发现:

1
2
# AI 摘要入口: https://example.com/llms.txt
Sitemap: https://example.com/sitemap.xml

现在是投入的好时机吗

坦白说,llms.txt 目前的实际采用率远低于它在技术社区的讨论热度。判断它值不值得做,我建议用这个标准:

情况 建议
内容型站点,目标是曝光与被引用 做,成本极低
有持续更新的技术内容 做,并让它自动生成
内容涉及付费产品核心知识 只做 llms.txt,不做 full 版
企业官网、产品页 可以缓一缓,优先做结构化数据

一个更务实的判断是:llms.txt 的投入成本大约是半小时,而且不会带来任何负面影响。 在这种投入产出比下,"等等看"通常不是最优策略。

常见问题(FAQ)

llms.txt 现在真的被使用了吗?

还没有成为统一标准。Anthropic 等厂商公开支持该约定,但主流大模型的实时检索仍以传统爬虫和网页解析为主。它更像低成本的基础设施投资:写了不一定立刻生效,不写则没有任何机会,而且文件本身无害。

llms.txt 和 sitemap.xml 有什么区别?

sitemap.xml 只告诉爬虫有哪些 URL,不表达重要性和内容摘要;llms.txt 是 Markdown 格式,可以写清楚每篇文章讲什么、哪些是重点、许可协议是什么。前者服务于索引,后者服务于理解。

llms-full.txt 会不会导致内容被无偿使用?

有这个可能,所以建议在文件开头明确写出许可协议与引用要求。对希望内容被更多人读到的技术博客来说,被引用通常比被保护更有价值;如果内容涉及付费产品,可以只输出摘要而不输出全文。

小结

  • llms.txt 是给模型的内容导览,不是搜索引擎的替代品。
  • 结构简单:标题 + 一句话简介 + 分组链接列表。
  • 关键是自动生成,否则一定会过期。
  • 中小技术博客可以再加一份 llms-full.txt

本站 GEO 工具链的其余几篇:《结构化数据怎么做才对 GEO 有用》《robots.txt 里的 AI 爬虫该怎么配》《怎么衡量 GEO 有没有效果》


如果你想给自己的站点加上这份文件,遇到问题欢迎到留言板一起看看。

站内搜索

没有找到内容!