每天越来越多的人使用 ChatGPT、Perplexity 和其他 AI 工具来搜索和总结内容。正如我早期关于 SEO to SAO 的帖子中讨论的,这只是时间问题,网站和博客的大部分访问将来自 AI 代理。
当涉及到使你的内容对语言模型可访问时,有一种比复杂的抓取解决方案更简单的方法——特别是对于用 Astro 构建的静态生成站点。在这篇文章中,我将带你了解如何创建一个 llms.txt 文件,以清晰、结构化的格式向 LLMs 公开你的博客内容。
什么是 llms.txt?
llms.txt 文件在概念上类似于 robots.txt,但专门为语言模型设计。它提供内容的文本结构化表示,易于 LLMs 解析和理解。
LLMs 不擅长通过链接在多个页面之间导航,相反,LLMs 非常擅长从单个页面抓取内容并将其存储在内存中。
Crawl4AI 等抓取工具可能有点大材小用
像 Crawl4AI 这样的工具为 LLMs 提供强大的网站抓取能力,它们虽然适合为动态网站生成 LLMs.txt,但对于静态网站来说有点大材小用。
特别是对于 Astro 站点,其中内容通常作为带 frontmatter 的 markdown 文件存储,你已经拥有准备直接公开的完美结构化内容。
在 Astro 中实现 llms.txt 端点
以下是如何为你的 Astro 站点生成 LLMs.txt 文件。
创建文件 src/pages/llms.txt.ts(或 src/pages/api/llms.txt.ts,取决于你的 Astro 配置),并放入以下代码。
import { getCollection } from "astro:content";
import type { APIRoute } from "astro";
export const GET: APIRoute = async () => {
const posts = await getCollection("blog"); // adjust "blog" to your collection name
const content = `# Vinci Rufus Blog\n
${posts
.map(
(post) =>
`# ${post.data.title}\n\n
https://www.vincirufus.com/postss/${post.slug}.md \n
${post.data.description} \n
${post.body}
}`
)
.join("\n\n")}`;
return new Response(content, {
headers: { "Content-Type": "text/plain; charset=utf-8" },
});
};
这段代码创建了一个 API 端点,它:
- 从你的博客集合中获取所有文章
- 创建一个以你的博客标题开头的文本文件
- 对于每篇文章,包括:
- 文章标题作为标题
- 文章的链接
- 文章的完整内容
构建、运行和部署
像往常一样使用 pnpm dev 或 pnpm build 命令构建和运行你的网站/博客。
生成的文件将在 https://yourdomain.com/llms.txt 可用。
就是这样。这再简单不过了。一种真正简单的方式让你的网站内容对 LLMs 可用。