---
title: 给 AI 开一扇门：llms.txt、Markdown 出口与爬虫放行
url: https://vabora.dev/posts/llms-txt-markdown-endpoint
author: Vabora
published: 2026-08-30 10:00:00
updated: 2026-09-27 10:33:42
category: 技术分享
tags: 架构设计, SEO, GEO
canonical: https://vabora.dev/posts/llms-txt-markdown-endpoint
license: 转载与引用请注明出处并保留原文链接
---

# 给 AI 开一扇门：llms.txt、Markdown 出口与爬虫放行

> 结构化数据解决"AI 能不能读懂"，但还需要解决"AI 拿不拿得到"。这篇讲实现层：llms.txt 与 llms-full.txt 怎么组织、每篇文章的 Markdown 出口怎么开、14 个 AI 爬虫怎么放行与观测。
## 背景

上一篇讲 GEO 的原理（让内容被 AI 正确引用）。原理落到代码上有三个具体问题：

1. AI 抓取时拿到的是一堆 HTML 标签，正文与导航混在一起，**信噪比低**；
2. 主流 AI 爬虫的 UA 与普通爬虫不同，**robots 一刀切会误伤或误放**；
3. 你不知道它们到底来没来、拿了什么 —— 没有反馈就没法优化。

## 做法

### 1. 两个文本出口：索引与全文

`/llms.txt` 给"目录"，`/llms-full.txt` 给"全文"——这是社区约定，好处是纯文本、无标签、AI 直接可读：

```text
# Vabora 开发极客

> 全栈开发：官网、小程序与 App、企业系统、AI 应用与自动化集成。

## 核心页面
- [对外服务](https://vabora.dev/services): 六项服务的范围与报价
- [作品案例](https://vabora.dev/cases): 12 个可量化结果的真实项目

## 最新文章
- [SQLite 并发写入实测](https://vabora.dev/posts/sqlite-wal-concurrency): 100 并发零丢失
```

两个文件都从数据库实时生成（有一分钟缓存），不手工维护——手工维护的清单必然过期。

### 2. 每篇文章都有 Markdown 出口

`/posts/{slug}/md` 返回**原始 Markdown**（`text/markdown; charset=utf-8`）。这一步比 llms.txt 更关键：AI 想引用具体做法时，拿到的是干净源码而不是渲染后的 HTML。

```bash
curl -s https://vabora.dev/posts/sqlite-wal-concurrency/md | head -5
```

顺带一个好处：写文档、喂给模型做上下文时，你自己也用得上这个出口。

### 3. 爬虫放行要按 UA 精确匹配

```text
# robots.txt 片段
User-agent: GPTBot
Allow: /

User-agent: ClaudeBot
Allow: /

User-agent: Bytespider
Allow: /
```

按**具体 UA 段**写，而不是 `User-agent: *` 全放开：前者可以单独收紧某一家（比如某爬虫频率失控时只封它），也不会把普通搜索引擎的抓取策略搞乱。

### 4. 抓取要能看见

后台「GEO → 抓取观测」记录每个 AI 爬虫的访问：UA 归一化后的名称、路径、时间、次数。验证方式很直接：

```bash
grep -c "GPTBot" storage/logs/*.log
```

看不到就别急着优化内容——先检查 robots、检查服务器是不是在 CDN 层把非浏览器 UA 拦了。

## 结果

- `/llms.txt` 与 `/llms-full.txt` 随内容自动更新；
- 每篇文章同时存在 HTML 与 Markdown 两种出口，canonical 指向 HTML 版本（避免重复内容判定）；
- 爬虫放行与观测同源：放行了谁，就能看到谁来了。

## 取舍

- **不做 UA 伪装探测**：有站点通过 JS 判断"是不是 AI"再返回不同内容，我们不这么做——一样的内容对人和机器，才符合"可被抓取"的初衷，也没有 cloaking 风险。
- **llms.txt 不是标准**：它只是目前的事实约定，各家的支持程度不一。所以结构化数据 + 语义化 HTML + 纯文本出口**三件都做**，任何一条路都能走通。
- **不加访问门槛**：把全文锁在登录后确实能提高"被引用的稀缺性"，但对一个靠作品获客的站点，被引用本身就是价值。
