它是什么
llms.txt 是一个放在域名根目录的纯文本 Markdown 文件,作用是给 AI 引擎提供一份「站点说明书」:
- 这个站是做什么的
- 有哪些核心内容
- 每个重要页面的地址和一句话说明
访问路径固定为:
一个必须说清的前提
它目前不是标准协议,也没有主流 AI 引擎公开承诺会读取它。
所以对它的定位应该是:成本极低的可选优化项,不是「做了就能被引用」的开关。
真正决定 AI 会不会引用你的,仍然是:
- 内容在静态 HTML 里(爬虫不执行 JS)
- 爬虫没被 CDN 拦截
- 内容本身有回答价值
llms.txt 是在这三条之上的一层「便利贴」。
格式规范
基本结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| # 站点名称
> 一句话说明这个站是什么、面向谁。
补充一到两段展开说明,可以包含主要覆盖的主题范围。
## 核心栏目 - [栏目名](https://域名/路径/): 一句话说明 - [另一个栏目](https://域名/路径/): 一句话说明
## 重点内容 - [文章标题](https://域名/文章路径/): 一句话说明这篇讲了什么
## 可选 - [次要内容](https://域名/路径/): 说明
## 关于 - [关于我们](https://域名/about/): 团队与联系方式
|
四条硬性规则
| 规则 |
说明 |
| 必须是 Markdown |
不是 HTML,不是 JSON |
只能有一个 H1 |
就是站点名 |
引用块 > 用于站点简介 |
放在 H1 之后 |
## 分节,- 列条目 |
条目格式为 - [标题](URL): 说明 |
一个容易踩的坑
## Optional 是约定俗成的特殊分节——里面的内容表示「上下文不够时可以跳过」。如果你的重点内容不多,可以不用这个分节。
可直接照抄的模板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| # 示例科技
> 面向跨境电商卖家的独立站建站与 Google SEO 知识库,覆盖建站选型、关键词调研、技术 SEO 与跨境收款。
本站内容以实操为主,每个主题都给出可直接执行的步骤与判定标准,不写泛泛而谈的概念介绍。更新频率约每周一篇。
## 核心栏目 - [建站与选型](https://example.com/columns/site/): WordPress、Shopify 与静态站的选型对比 - [Google SEO](https://example.com/columns/seo/): 关键词调研、技术 SEO、Search Console 实操 - [跨境收款](https://example.com/columns/payment/): PayPal、Payoneer 与虚拟卡使用指南
## 重点内容 - [Google SEO 新站上线清单](https://example.com/google-seo-checklist/): 从 0 到被收录的 21 项检查 - [关键词调研完整流程](https://example.com/keyword-research/): 挖词、判意图、评竞争、定选题四步法 - [AIEO 指南](https://example.com/aieo-guide/): 让 ChatGPT 与 Perplexity 引用你的网站
## 关于 - [关于我们](https://example.com/about/): 团队背景与联系方式 - [商务合作](https://example.com/cooperation/): 广告与内容合作
|
怎么生成
静态站:写个生成脚本
如果站点有文章列表(Markdown 或 JSON),可以用脚本自动生成,避免手工维护:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import os, re
SITE = 'https://example.com' posts = [] for f in sorted(os.listdir('source/_posts')): if not f.endswith('.md'): continue text = open(f'source/_posts/{f}', encoding='utf-8').read() title = re.search(r'^title:\s*"?(.*?)"?\s*$', text, re.M) desc = re.search(r'^description:\s*"?(.*?)"?\s*$', text, re.M) if not title: continue slug = f[:-3] posts.append((title.group(1), f'{SITE}/{slug}/', desc.group(1) if desc else ''))
lines = [ '# 站点名称', '', '> 一句话站点简介。', '', '## 重点内容', '', ] lines += [f'- [{t}]({u}): {d}' for t, u, d in posts] open('source/llms.txt', 'w', encoding='utf-8').write('\n'.join(lines) + '\n')
|
注意:llms.txt 要放在能被直接访问的位置。静态站的 source/ 目录下会被原样拷贝到输出根目录;但如果文件名以 _ 开头会被忽略(这是多数静态站生成器的规则),所以不要命名为 _llms.txt。
动态站:加一个路由
WordPress 可以用 wp_rewrite 或一个轻量插件;其他框架加一个返回 text/plain 的路由即可。
要不要做
按你的情况判断:
| 你的情况 |
建议 |
| 内容站 / 知识库 / 工具导航站 |
✅ 值得做,成本低 |
| 电商站 |
⚠️ 优先级低,先把商品页和结构化数据做好 |
| 企业官网 |
⚠️ 可以做,但重点应放在「关于/资质」类页面的内容质量 |
| 站点还没被正常收录 |
❌ 先解决收录问题,别做这个 |
和 robots.txt 的区别
经常有人搞混。两者职责完全不同:
|
robots.txt |
llms.txt |
| 作用 |
限制爬虫能访问什么 |
推荐AI 优先看什么 |
| 性质 |
访问控制 |
内容索引 |
| 必需 |
是 |
否 |
| 格式 |
自定义文本 |
Markdown |
robots.txt 决定「能不能进」,llms.txt 决定「进去后先看哪里」。 前者没做对,后者写了也没用。
验证
上线后确认能正常访问:
1 2
| curl -s https://你的域名/llms.txt | head -20
|
同时检查 Content-Type。理想是 text/plain; charset=utf-8;如果服务器返回 text/html 也能被读取,但不够规范。
1
| curl -sI https://你的域名/llms.txt | grep -i content-type
|
最后一句
把它当成给 AI 的一页目录,而不是排名手段。做了不亏,但别指望它是决定性的那一步。