Skip to content

为你的 Astro 网站生成 llms.txt 文件

Published: at 11:30 AM

每天越来越多的人使用 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 端点,它:

  1. 从你的博客集合中获取所有文章
  2. 创建一个以你的博客标题开头的文本文件
  3. 对于每篇文章,包括:
    • 文章标题作为标题
    • 文章的链接
    • 文章的完整内容

构建、运行和部署

像往常一样使用 pnpm devpnpm build 命令构建和运行你的网站/博客。

生成的文件将在 https://yourdomain.com/llms.txt 可用。

就是这样。这再简单不过了。一种真正简单的方式让你的网站内容对 LLMs 可用。


Previous Post
代理应用中新兴的用户交互模式
Next Post
提示词工程——构建可靠智能体工作流的必备技能