给博客补上 llms.txt
最近给博客补了一点面向大语言模型的入口,也就是 llms.txt。
llms.txt 是一个为大型语言模型(LLM)设计的网站文件标准,目的是让 AI 在需要时能快速、准确地理解并利用网站内容。用一份简洁的 Markdown 文件告诉模型:这个网站是什么、哪些页面比较重要、哪些内容适合优先阅读。按照规范,它通常放在站点根路径 /llms.txt,内容尽量清晰、克制,不需要把整个网站都塞进去。
这次我给博客补了两类入口:站点根目录的 /llms.txt,以及每篇文章对应的 Markdown 原文地址,比如 /posts/docker.md。这样正常读者还是看原来的博客页面,而模型、阅读工具或者其他自动化程序,可以直接读取更干净的文本内容。
一开始直接引入astro现成库 @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,让浏览器原生打开这个资源,问题就解决了。
