llms.txt 支持
llms.txt 是一种新兴的文档标准,旨在帮助大语言模型(LLM)更好地理解和索引网站内容。VitePress 支持生成 llms.txt 文件。
什么是 llms.txt
llms.txt 是一个 Markdown 格式的文件,位于网站根目录,为 AI 助手提供:
- 网站结构概览
- 重要页面链接
- 内容分类信息
- 可选的详细内容
为什么需要 llms.txt
- AI 搜索优化:让 AI 助手更准确地引用网站内容
- 内容发现:帮助 LLM 找到相关文档
- 结构化信息:提供比 sitemap 更丰富的上下文
- 未来趋势:随着 AI 搜索普及越来越重要
文件格式
基本结构
markdown
# 网站名称
> 网站简介描述
## 必选内容
- [页面标题](/页面链接): 页面描述
- [另一个页面](/另一个链接): 另一个描述
## 可选内容
- [详细文档](/详细链接): 详细描述完整示例
markdown
# VitePress 学习指南
> 从零开始学习 VitePress,掌握静态网站生成技术。提供完整的中文教程、实战案例和最佳实践。
## 入门指南
- [什么是 VitePress](/guide/what-is-vitepress): 介绍 VitePress 的核心概念和优势
- [安装与环境配置](/guide/installation): 快速搭建开发环境
- [项目结构解析](/guide/project-structure): 了解 VitePress 项目的文件组织方式
- [创建第一个页面](/guide/first-page): 实践创建一个完整的文档页面
## 基础功能
- [Markdown 扩展语法](/basics/markdown): VitePress 支持的 Markdown 增强功能
- [导航栏配置](/basics/navbar): 配置顶部导航菜单
- [侧边栏配置](/basics/sidebar): 设置文档侧边栏
- [路由详解](/basics/routing): 理解 VitePress 的文件路由系统
## 主题定制
- [默认主题配置](/theme/default-theme): 配置默认主题的各项功能
- [自定义主题](/theme/custom-theme): 开发独特的网站主题
- [CSS 变量覆盖](/theme/css-variables): 通过 CSS 变量定制样式
## 高级功能
- [组件使用](/advanced/components): 使用内置组件和自定义组件
- [数据加载](/advanced/data-loading): 加载远程或本地数据
- [多语言支持](/advanced/i18n): 国际化配置指南
## 最佳实践
- [性能优化](/best-practices/performance): 提升网站加载速度
- [SEO 优化](/best-practices/seo): 搜索引擎优化指南
- [CI/CD 自动化部署](/best-practices/cicd): 自动化构建和部署
## 实战案例
- [博客搭建](/examples/blog): 从零搭建个人博客
- [组件库文档](/examples/component-docs): 为组件库编写文档
- [个人作品集](/examples/portfolio): 创建在线作品集在 VitePress 中生成
方法一:手动创建
创建 docs/public/llms.txt 文件:
markdown
# 你的网站名称
> 网站描述
## 分类名称
- [页面标题](/页面链接): 描述方法二:自动生成脚本
创建生成脚本:
ts
// docs/.vitepress/scripts/generate-llms-txt.ts
import { writeFileSync } from 'fs'
import { createContentLoader, type ContentData } from 'vitepress'
interface LlmsTxtOptions {
title: string
description: string
sections: Record<string, string[]> // 分类 -> 路径前缀数组
}
export async function generateLlmsTxt(options: LlmsTxtOptions) {
const { title, description, sections } = options
// 加载所有页面
const pages = await createContentLoader('**/*.md', {
excerpt: true
}).load()
// 按分类组织页面
const categorizedPages: Record<string, ContentData[]> = {}
for (const [section, prefixes] of Object.entries(sections)) {
categorizedPages[section] = pages.filter(page =>
prefixes.some(prefix => page.url.startsWith(prefix))
)
}
// 生成内容
let content = `# ${title}\n\n`
content += `> ${description}\n\n`
for (const [section, sectionPages] of Object.entries(categorizedPages)) {
if (sectionPages.length === 0) continue
content += `## ${section}\n\n`
for (const page of sectionPages) {
const title = page.frontmatter.title || page.url
const desc = page.excerpt?.slice(0, 100) || ''
content += `- [${title}](${page.url}): ${desc}\n`
}
content += '\n'
}
// 写入文件
writeFileSync('docs/public/llms.txt', content)
console.log('llms.txt 生成完成!')
}在构建时执行
ts
// docs/.vitepress/config.mts
import { defineConfig } from 'vitepress'
import { generateLlmsTxt } from './scripts/generate-llms-txt'
export default defineConfig({
// ...其他配置
buildEnd: async () => {
await generateLlmsTxt({
title: 'VitePress 学习指南',
description: '从零开始学习 VitePress,掌握静态网站生成技术',
sections: {
'入门指南': ['/guide/'],
'基础功能': ['/basics/'],
'主题定制': ['/theme/'],
'高级功能': ['/advanced/'],
'最佳实践': ['/best-practices/'],
'实战案例': ['/examples/']
}
})
}
})高级配置
添加可选内容
markdown
## Optional
### 详细信息
你可以在可选部分添加更多详细信息,如配置示例、API 文档等。
### 使用建议
提供 AI 助手使用本文档的建议。过滤敏感页面
ts
export async function generateLlmsTxt(options: LlmsTxtOptions) {
const pages = await createContentLoader('**/*.md').load()
// 过滤不需要的页面
const filteredPages = pages.filter(page => {
// 排除草稿
if (page.frontmatter.draft) return false
// 排除私密页面
if (page.frontmatter.private) return false
// 排除特定路径
if (page.url.includes('/internal/')) return false
return true
})
// ...后续处理
}添加页面权重
markdown
- [核心概念](/guide/what-is-vitepress) ⭐: 最重要的入门概念
- [安装配置](/guide/installation): 基础安装步骤验证 llms.txt
检查文件可访问性
bash
# 构建后检查
curl https://your-domain.com/llms.txt使用工具验证
bash
# 安装验证工具
npm install -g llms-txt-validator
# 验证文件
llms-txt-validate docs/public/llms.txtSEO 配合使用
robots.txt 配置
txt
# docs/public/robots.txt
User-agent: *
Allow: /
# 允许 AI 爬虫访问
User-agent: GPTBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: Claude-Web
Allow: /
# 站点地图和 llms.txt
Sitemap: https://your-domain.com/sitemap.xmlmeta 标签配置
ts
export default defineConfig({
head: [
// 指向 llms.txt
['link', { rel: 'llms-txt', href: '/llms.txt' }]
]
})最佳实践
1. 保持更新
每次内容更新后重新生成:
ts
// package.json
{
"scripts": {
"docs:build": "vitepress build docs && npm run generate:llms",
"generate:llms": "ts-node scripts/generate-llms-txt.ts"
}
}2. 描述简洁
每个页面描述保持在 100 字符以内:
ts
const desc = page.excerpt?.slice(0, 100) + '...' || ''3. 合理分类
按逻辑结构组织内容:
- 入门指南
- 核心功能
- 高级特性
- 参考资料
4. 包含关键信息
确保包含:
- 网站名称和描述
- 主要页面链接
- 内容分类