Skip to content

llms.txt 支持

llms.txt 是一种新兴的文档标准,旨在帮助大语言模型(LLM)更好地理解和索引网站内容。VitePress 支持生成 llms.txt 文件。

什么是 llms.txt

llms.txt 是一个 Markdown 格式的文件,位于网站根目录,为 AI 助手提供:

  • 网站结构概览
  • 重要页面链接
  • 内容分类信息
  • 可选的详细内容

为什么需要 llms.txt

  1. AI 搜索优化:让 AI 助手更准确地引用网站内容
  2. 内容发现:帮助 LLM 找到相关文档
  3. 结构化信息:提供比 sitemap 更丰富的上下文
  4. 未来趋势:随着 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.txt

SEO 配合使用

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.xml

meta 标签配置

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. 包含关键信息

确保包含:

  • 网站名称和描述
  • 主要页面链接
  • 内容分类

相关资源

下一步

贡献者

加载中...

想要成为贡献者?

在 CNB 上参与贡献