---
title: 给博客补上面向AI的入口
published: 2026-05-18
tags: [AI, 前端, 笔记]
category: 教程
draft: false
---

## 给博客补上 llms.txt

最近给博客补了一点面向大语言模型的入口，也就是 [`llms.txt`](https://llmstxt.org/)。

llms.txt 是一个为大型语言模型（LLM）设计的网站文件标准，目的是让 AI 在需要时能快速、准确地理解并利用网站内容。用一份简洁的 Markdown 文件告诉模型：这个网站是什么、哪些页面比较重要、哪些内容适合优先阅读。按照规范，它通常放在站点根路径 `/llms.txt`，内容尽量清晰、克制，不需要把整个网站都塞进去。

这次我给博客补了两类入口：站点根目录的 `/llms.txt`，以及每篇文章对应的 Markdown 原文地址，比如 `/posts/docker.md`。这样正常读者还是看原来的博客页面，而模型、阅读工具或者其他自动化程序，可以直接读取更干净的文本内容。

一开始直接引入astro现成库 [`@nuasite/llm-enhancements`](https://www.npmjs.com/package/@nuasite/llm-enhancements)。但是过程中发现和我当前这个 Astro 项目不太合拍：它对 Vite、TypeScript 的版本要求过高，还会因为可选依赖解析导致本地开发服务启动失败。

为了不强行升级整套 Astro 生态，最后还是改成自己写一个很小的 Astro integration。开发环境里通过中间件提供 `/llms.txt` 和 `/posts/*.md`；正式构建时，再把这些文件写进最终产物。内容直接来自 `src/content/posts`，所以不用手动维护，也不用把生成文件提前塞进 `public`。

文章页也顺手加了两个小入口：复制 MD 链接，以及打开 MD 版本。位置放在文章元信息下面，不太显眼，但需要的时候能很快找到。

中间还遇到一个小坑：博客用了Swup做页面切换，而 `.md` 是纯文本资源，不是普通 HTML 页面。如果让 Swup 接管这个链接，返回时页面状态可能会乱，样式也会像丢了一样。最后给 MD 链接加了 `data-no-swup`，让浏览器原生打开这个资源，问题就解决了。
