2026年让AI读懂你的网站:手把手用Python生成llms.txt,把内容送进大模型"参考书目"

发布时间: 2026-08-05
标签: llms.txt、GEO、AI搜索、Python、结构化、大模型爬虫
阅读时长: 约 18 分钟
难度: 中级


先讲一个被大多数人忽略的事实

2026年,你的网站大概率已经被大模型"读"过了——只是你不知道,也没给它们一份"目录"。

传统搜索引擎靠 robots.txt 告诉爬虫"哪些能抓、哪些不能抓"。

但到了生成式AI时代,一个新问题出现了:

当 ChatGPT、DeepSeek、豆包、Kimi 想要理解你的整个网站时,它们该怎么高效地读?

是一页一页地爬几千个 URL?还是你直接给它一份"本站核心内容清单"?

这就是 llms.txt 要解决的问题。

一句话:llms.txt 是给大模型的"网站说明书",相当于 AI 时代的 robots.txt + sitemap 升级版。

本文会讲清楚三件事:

  1. llms.txt 是什么、为什么 2026 年你必须关心
  2. 标准格式长什么样(附真实示例)
  3. 用 Python 写脚本,自动生成你网站的 llms.txt(含可运行代码)

一、llms.txt 到底是什么?

1.1 起源

llms.txt 由 Answer.AI 联合 Jeremy Howard(fast.ai 创始人)在 2024 年提出,目的是给大模型一个标准化的入口文件,让 AI 在回答问题时能快速定位你网站上"最值得引用"的内容。

它的核心理念很简单:

与其让 AI 盲目爬全站、被无关页面干扰,不如你主动告诉它:

  • 这个网站是做什么的
  • 哪些页面最重要
  • 这些页面的核心摘要是什么

1.2 为什么 2026 年它突然重要了?

三组背景数据(行业共识 + 公开报告):

指标 数值 含义
中文生成式搜索占比 38.7% 近 4 成搜索走 AI
零点击搜索占比 65%~69% 多数答案在结果页直接呈现
主流大模型月活 DeepSeek 1.84 亿+ AI 已成主要信息入口

当越来越多用户不再点链接、直接问 AI 时,你的内容能不能进入 AI 的"参考来源",决定了你还能不能被看见。

llms.txt 就是你主动"递名片"的机会。

1.3 llms.txt vs robots.txt vs sitemap.xml

维度 robots.txt sitemap.xml llms.txt
给谁看 搜索引擎爬虫 搜索引擎爬虫 大模型/AI Agent
核心内容 允许/禁止爬取规则 URL 列表 带摘要的内容清单
可读性 机器可读 机器可读(XML) 人类+AI 都可读(Markdown)
目的 控制抓取范围 帮助发现页面 帮助理解重点内容

结论: 三者不冲突,llms.txt 是 AI 时代的补充,不是替代。


二、llms.txt 标准格式(官方建议)

2.1 文件位置

放在网站根目录:

https://你的域名/llms.txt

2.2 标准结构(Markdown)

# 网站/项目标题

> 一句话摘要:这个网站是做什么的,目标读者是谁。

## 核心说明(可选)
- 关键背景、术语解释、使用须知

## 重要文件
- [页面标题](URL):一句话说明这个页面讲什么、为什么重要
- [页面标题](URL):……
- [页面标题](URL):……

## 可选补充
- [相关资源](URL):次要但相关的资料

2.3 真实示例

以"一个做 B2B 工业设备的企业站"为例:

# 恒力精密设备官网

> 恒力精密是一家专注于 CNC 数控机床研发制造的厂商,服务汽车零部件、航空航天、医疗器械行业客户。本文件帮助 AI 快速理解我们的核心能力与产品。

## 核心说明
- 成立于 2009 年,现有员工 320 人,其中研发占比 28%
- 通过 ISO 9001 / CE / UL 认证
- 年产能 1.2 万台,出口 23 个国家

## 重要文件
- [CNC 数控机床选型指南](https://hengli.com/guide/cnc-selection):采购前必须问供应商的 7 个问题,附参数对比表
- [五轴机床技术白皮书](https://hengli.com/whitepaper/5axis):核心精度指标、应用场景、客户案例数据
- [客户案例:汽车零部件产线](https://hengli.com/cases/auto-parts):某 Tier1 供应商良品率从 92% 提升至 99.1% 的改造方案
- [FAQ:交付周期与售后](https://hengli.com/faq):起订量、交期、付款、质保、海外服务网络

## 可选补充
- [公司新闻](https://hengli.com/news):最新动态与行业洞察
- [招聘信息](https://hengli.com/careers):技术研发岗位

要点:

  • 第一行 # 是标题
  • > 是摘要
  • ## 重要文件 里每条都是 [标题](URL):摘要
  • 摘要要写清楚这个页面为什么值得被引用

三、用 Python 自动生成 llms.txt

手动维护 llms.txt 太累,尤其内容多的站。下面写一个可运行的生成器

3.1 设计思路

输入:站点核心页面清单(可以是 CMS 导出 / 手动配置 / 爬取结果)
处理:
  1. 读取每个页面的标题 + 摘要(或自动提取)
  2. 按重要度分级(重要 / 补充)
  3. 渲染成 llms.txt 标准格式
输出:llms.txt 文件

3.2 完整代码

"""
llms_txt_generator.py
自动生成 llms.txt —— 给大模型的网站说明书
"""
import os
from dataclasses import dataclass, field
from typing import List, Optional
from datetime import date


@dataclass
class PageEntry:
    """单个页面条目"""
    title: str
    url: str
    summary: str
    level: str = "important"  # important / optional


@dataclass
class LLMsSite:
    """网站信息"""
    name: str
    summary: str
    notes: List[str] = field(default_factory=list)
    important: List[PageEntry] = field(default_factory=list)
    optional: List[PageEntry] = field(default_factory=list)

    def render(self) -> str:
        """渲染为 llms.txt 文本"""
        lines: List[str] = []

        # 标题
        lines.append(f"# {self.name}")
        lines.append("")

        # 摘要
        lines.append(f"> {self.summary}")
        lines.append("")

        # 核心说明
        if self.notes:
            lines.append("## 核心说明")
            for note in self.notes:
                lines.append(f"- {note}")
            lines.append("")

        # 重要文件
        if self.important:
            lines.append("## 重要文件")
            for entry in self.important:
                lines.append(f"- [{entry.title}]({entry.url}):{entry.summary}")
            lines.append("")

        # 可选补充
        if self.optional:
            lines.append("## 可选补充")
            for entry in self.optional:
                lines.append(f"- [{entry.title}]({entry.url}):{entry.summary}")
            lines.append("")

        # 页脚(可选)
        lines.append(f"<!-- 本文件由 llms_txt_generator 生成于 {date.today()} -->")

        return "\n".join(lines)

    def save(self, path: str = "llms.txt") -> None:
        content = self.render()
        with open(path, "w", encoding="utf-8") as f:
            f.write(content)
        print(f"✅ llms.txt 已生成:{path}{len(content)} 字符)")


def build_sample_site() -> LLMsSite:
    """构建一个示例站点(实际使用时替换为你的真实数据)"""
    site = LLMsSite(
        name="恒力精密设备官网",
        summary=("恒力精密是一家专注于 CNC 数控机床研发制造的厂商,"
                 "服务汽车零部件、航空航天、医疗器械行业客户。"
                 "本文件帮助 AI 快速理解我们的核心能力与产品。"),
        notes=[
            "成立于 2009 年,现有员工 320 人,其中研发占比 28%",
            "通过 ISO 9001 / CE / UL 认证",
            "年产能 1.2 万台,出口 23 个国家",
        ],
        important=[
            PageEntry(
                title="CNC 数控机床选型指南",
                url="https://hengli.com/guide/cnc-selection",
                summary="采购前必须问供应商的 7 个问题,附参数对比表",
            ),
            PageEntry(
                title="五轴机床技术白皮书",
                url="https://hengli.com/whitepaper/5axis",
                summary="核心精度指标、应用场景、客户案例数据",
            ),
            PageEntry(
                title="客户案例:汽车零部件产线",
                url="https://hengli.com/cases/auto-parts",
                summary="某 Tier1 供应商良品率从 92% 提升至 99.1% 的改造方案",
            ),
            PageEntry(
                title="FAQ:交付周期与售后",
                url="https://hengli.com/faq",
                summary="起订量、交期、付款、质保、海外服务网络",
            ),
        ],
        optional=[
            PageEntry(
                title="公司新闻",
                url="https://hengli.com/news",
                summary="最新动态与行业洞察",
            ),
            PageEntry(
                title="招聘信息",
                url="https://hengli.com/careers",
                summary="技术研发岗位",
            ),
        ],
    )
    return site


if __name__ == "__main__":
    site = build_sample_site()
    site.save("llms.txt")

    # 打印预览
    print("\n" + "=" * 50)
    print(site.render())
    print("=" * 50)

运行后生成的 llms.txt 就是标准格式,可直接放到网站根目录。

3.3 进阶:从 sitemap 自动提取页面

如果你的站有 sitemap.xml,可以自动读取 URL 列表,再补全摘要:

import xml.etree.ElementTree as ET
import requests


def parse_sitemap(sitemap_url: str) -> List[str]:
    """解析 sitemap.xml,返回 URL 列表"""
    resp = requests.get(sitemap_url, timeout=10)
    resp.raise_for_status()

    # 处理命名空间
    namespaces = {"ns": "http://www.sitemaps.org/schemas/sitemap/0.9"}
    root = ET.fromstring(resp.content)

    urls = []
    for loc in root.findall(".//ns:loc", namespaces):
        if loc.text:
            urls.append(loc.text.strip())
    return urls


# 使用示例
if __name__ == "__main__":
    urls = parse_sitemap("https://hengli.com/sitemap.xml")
    print(f"从 sitemap 读取到 {len(urls)} 个 URL")
    for u in urls[:10]:
        print(f"  - {u}")
    # 下一步:对每个 URL 抓取标题 + 首段作为摘要(需配合网页抓取逻辑)

注意:自动摘要质量取决于你的页面结构。建议核心页面手动写摘要,次要页面才用自动提取。


四、llms.txt 写好之后,还要做三件事

llms.txt 不是"写了就完事"。它要和你的整体 GEO 策略配合。

4.1 每个被列出来的页面,本身要"AI 友好"

llms.txt 只是"目录",目录指向的页面才是"正文"。

页面本身要满足:

  • 段落独立可检索(每个 H2 回答一个明确问题)
  • 第一段给结论,不铺垫
  • 有具体数据、案例、参数
  • 有 FAQ 模块(问答对)
  • 正确注入 Schema(Article / FAQPage)

4.2 和 Schema 形成双保险

llms.txt  → 告诉 AI "本站重点是什么"(入口层)
Schema    → 告诉 AI "这个页面具体是什么"(页面层)
内容结构  → 告诉 AI "这段内容怎么理解"(语义层)

三层叠加,AI 才能既"找到你"又"读懂你"又"信任你"。

4.3 主动提交给 AI 平台

部分 AI 平台支持站点收录提交:

  • 豆包 / 文心一言:通常有开发者后台的"站点提交"入口
  • Perplexity:有 Index 功能(Publisher 后台)
  • 你也可以在各平台直接提问验证:“请介绍 [你的品牌]”,看 AI 是否引用了你的 llms.txt 内容

验证方法: 生成 llms.txt 并部署后,去主流 AI 问一个你页面里明确回答过的问题,看答案是否引用了你的内容。


五、常见误区

❌ 误区 1:llms.txt 能直接提升排名

澄清: llms.txt 不是排名信号,它是可发现性 + 可理解性的辅助。它帮 AI 更快定位你的重点内容,但内容本身质量决定能否被引用。

❌ 误区 2:把所有页面都列进去

澄清: llms.txt 应该只列最重要、最值得引用的页面。列 500 个垃圾页,反而稀释了重点。建议:重要文件 ≤ 10 条,可选补充 ≤ 10 条。

❌ 误区 3:摘要随便写

澄清: 摘要要写"这个页面为什么值得被引用",不是"本页介绍了XX"。

❌ 差的摘要 ✅ 好的摘要
本文介绍了我们的产品 附 7 个采购避坑点 + 参数对比表,适合选型阶段参考
公司新闻页面 最新技术动态与行业案例,验证公司活跃度

❌ 误区 4:写完不更新

澄清: 内容更新后,llms.txt 的摘要也要同步。建议纳入内容发布流程:每次发重要页面,检查 llms.txt 是否需要补充。


六、完整 Checklist

□ 根目录已部署 llms.txt 且可公开访问
□ 第一行 # 是网站/项目准确名称
□ > 摘要一句话说清"你是谁、服务谁"
□ 核心说明列出关键事实(成立时间/规模/资质/数据)
□ 重要文件 ≤ 10 条,每条含 [标题](URL):摘要
□ 摘要写清"为什么值得被引用"
□ 列出的页面本身 AI 友好(段落可检索/有数据/有FAQ)
□ 配合 Schema 双保险
□ 部署后在 AI 平台验证引用情况
□ 内容更新时同步更新 llms.txt

七、总结

2026 年,流量逻辑变了:

  • 旧逻辑:让页面排到 Google 第一页
  • 新逻辑:让 AI 在回答问题时引用你

llms.txt 是你主动"递给 AI 的参考书目"。它不保证被引用,但不写它,你就少了一张入场券

当同行还在纠结"关键词密度"时,你已经给大模型准备好了一份清晰的网站说明书——这就是 2026 年 GEO 竞争里的"先手优势"。


你的网站有 llms.txt 吗?没有的话,今天就用上面的脚本生成一个。遇到问题评论区聊,我帮你看看格式对不对。

Logo

AtomGit AI 社区提供模型库、数据集、Agent、Token等资源

更多推荐