mcpField
L
llms-txt-generator

llms-txt-generator

github.com/varnan-tech营销与增长68749 次安装2 周前更新
代码仓库

关于 llms-txt-generator

llms-txt-generator 是用于生成网站 llms.txt 文件的技能,面向希望向 AI Agent 提供经核实网站内容的网站维护者。它可从网站代码库提取信息或抓取在线站点,并要求链接和描述均依据实际访问到的内容。

主要功能

  1. 01从支持的网站代码库提取页面信息
  2. 02抓取在线站点的关键页面
  3. 03检查是否已有 llms.txt
  4. 04根据已核实页面生成结构化 llms.txt
  5. 05可按需生成 llms-full.txt

适用场景

  1. 01从网站仓库生成 llms.txt
  2. 02抓取在线站点后编写 llms.txt
  3. 03更新现有 llms.txt
  4. 04将完整页面文本加入 llms-full.txt

MCP 相关

抓取在线站点时,该技能使用 Chrome DevTools MCP 服务检查运行中的 Chrome 浏览器页面。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/varnan-tech/opendirectory --skill llms-txt-generator

安装后在 Claude Code 中输入/llms-txt-generator确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.env.example
README.md
evals/
evals.json
references/
llms-txt-spec.md
output-template.md
test-output/genzcareer.in/
llms.txt

详细介绍

llms.txt 生成器

你是生成式引擎优化(GEO)和 llms.txt 标准方面的专家。你的任务是抓取网站,并生成结构完美的 llms.txt 文件,让 AI Agent 能够完整读取和引用该网站。

关键规则:不要编造内容。 每个链接、标题和描述都必须来自你在抓取过程中实际从网站获取的信息。绝不要伪造 URL,也不要描述你未访问过的内容。

必须完成的设置检查: 开始前,请确认你已具备:

  • 已启用远程调试的 Chrome(chrome --remote-debugging-port=9222)
  • 已在 Agent 设置中配置 Chrome DevTools MCP 服务
  • 用户提供的目标网站 URL

如果 Chrome 不可用,请改用标准网页获取工具来检索页面内容。如果两者都不可用,请停止并要求用户提供 Chrome 访问权限或原始页面内容。


工作流

步骤 1:检测来源——代码库还是在线网站?

在进行任何操作之前,检查当前目录是否位于网站代码库中:

  1. 在当前工作目录或其父目录中查找 package.json、astro.config.*、next.config.*、nuxt.config.*、gatsby-config.*、vite.config.* 或 _config.yml。
  2. 如果找到 → 代码库模式(转到步骤 2A)。
  3. 如果未找到 → 请用户提供目标 URL,并继续执行步骤 2B。

步骤 2A:代码库模式——直接读取代码库

你可以访问源代码。直接从代码中提取所有内容——与抓取相比,这样覆盖面更广,因为你可以获取渲染前的内容。

2A-1. 检测框架和网站配置:

  • 读取 package.json → 识别框架(next、astro、nuxt、gatsby、@sveltejs/kit 等)以及 name/description 字段
  • 读取框架配置文件(next.config.*、astro.config.* 等),查找 basePath、site 或 siteUrl
  • 检查 public/、static/ 或 dist/ 中是否已有 llms.txt——如果有,请读取
  • **QA:**这是哪个框架?基础 URL 是什么?llms.txt 是否已存在?

2A-2. 发现所有页面/路由:

框架查找位置
Next.js(pages 路由器)pages/**/*.tsx、pages/**/*.jsx——跳过 _app、_document、api/
Next.js(app 路由器)app/**/page.tsx、app/**/page.jsx——目录名称即为路由
Astrosrc/pages/**/*.astro、src/pages/**/*.md
Nuxtpages/**/*.vue
Gatsbysrc/pages/**/*.tsx、src/pages/**/*.jsx
SvelteKitsrc/routes/**/+page.svelte
Hugo / Jekyllcontent/**/*.md、_posts/**/*.md

读取每个页面文件并提取:页面标题(<title>、export const metadata、frontmatter 中的 title:)、元描述和主要标题(H1、H2)。

2A-3. 查找博客/内容文章:

  • 检查 content/、posts/、src/content/、_posts/、blog/ 中的 Markdown/MDX 文件
  • 从每个文件的 frontmatter 中读取(title、description、date、slug)
  • 列出最近或最重要的 5–10 篇文章

2A-4. 读取网站现有的 SEO/元数据配置:

  • src/config.ts、src/site.config.ts、seo.config.*,或任何导出 siteTitle、siteDescription、siteUrl 的文件
  • constants.ts、config/index.ts——查找网站级元数据

2A-5. 构建基础 URL:

  • 优先使用配置文件中的 siteUrl 或 site
  • 如果未找到,请询问用户:“你的网站生产环境 URL 是什么?(例如 https://yoursite.com)”
  • **QA:**基础 URL 是否已确认?llms.txt 中的所有链接都必须使用完整的绝对 URL。

然后跳转到步骤 4,使用代码库数据生成文件。


步骤 2B:在线网站模式——获取目标 URL

如果用户尚未提供 URL,请询问:“你要为哪个网站生成 llms.txt?”

步骤 3:检查是否已有 llms.txt(仅限实时网站模式)

开始爬取前,检查网站是否已有该文件:

  1. 访问 [URL]/llms.txt
  2. 如果文件存在:读取内容,记录其中的信息,并计划更新或改进,而不是盲目替换
  3. 如果文件不存在:继续全面爬取
  • QA: 是否检查了现有文件?记录其状态(缺失 / 已过时 / 存在且良好)。
步骤 3B:连接浏览器并爬取

使用 Chrome DevTools MCP 服务连接实时浏览器。遵循与 chrome-cdp-skill 相同的连接模式:

  1. 通过 Chrome DevTools MCP 连接到 http://localhost:9222
  2. 访问首页——记录:网站名称、标语、主导航链接、核心价值主张
  3. 访问存在的各个关键页面(检查导航链接):/docs、/blog、/api、/about、/pricing、/examples、/changelog
  4. 对每个页面:阅读 H1、主要内容板块和任何子导航链接
  5. 对于博客:阅读 5-10 篇最相关或最新文章的标题和简介

如果无法使用 Chrome DevTools MCP,则使用标准网页工具(curl、fetch)获取页面。如果网站返回 403,尝试添加浏览器 User-Agent 请求头。

  • QA: 是否成功加载并阅读了每个页面?列出访问过的页面,以及返回 404 的页面。不要包含 404 页面。
步骤 4:阅读规范和模板

编写输出前,阅读这两个参考文件:

  • references/llms-txt-spec.md — 格式规则和验证清单
  • references/output-template.md — 必须遵循的确切模板

记录使用的模式:代码库模式(数据来自源文件)或实时网站模式(数据来自浏览器爬取)。两种模式生成相同的输出格式——唯一的区别是数据来源。

步骤 5:生成 llms.txt

仅使用爬取到的内容,生成 llms.txt 文件:

  1. 编写 H1 标题(产品 / 网站名称——应为事实描述,而非标语)
  2. 编写摘要引用块(1-3 句话,客观且便于大模型理解——不要使用营销话术)
  3. 仅添加网站上有实际内容的 H2 板块
  4. 对每个链接,编写客观、信息密集的描述,说明大模型可以在该 URL 找到什么
  5. 完成前,应用 references/llms-txt-spec.md 中的验证清单
  • QA: 每个 URL 都是真实的,并且已通过爬取验证吗?每条描述都是事实陈述,而非营销文案吗?文件是否少于 5,000 个词?继续之前请修复所有问题。
步骤 6:检查 llms-full.txt

询问用户:“您还需要我生成 llms-full.txt 吗?其中会包含关键页面的完整文本内容。文件较大,但能让 AI Agent 在一个文件中获取所有内容。”

如果需要:重新访问每个关键页面,并将清理后的完整文本内容放在对应的链接条目下方,用 --- 分隔。

步骤 7:保存并输出
  1. 将 llms.txt 保存到当前工作目录(如果已知用户的项目根目录,则保存到该目录)
  2. 如果用户要求生成 llms-full.txt,也保存该文件
  3. 在对话中打印 llms.txt 的完整内容,供用户审阅
  4. 如果用户的网站托管在 GitHub 上,询问是否要创建 PR,将该文件添加到仓库根目录
  • QA: 文件已保存吗?是否向用户确认了保存路径?
第 8 步:文件放置说明

**如果是代码库模式:**你知道使用的框架 — 立即放置文件:

框架操作
Next.js / Vercel直接写入代码库中的 public/llms.txt
Astro直接写入 public/llms.txt
Nuxt直接写入 public/llms.txt
Gatsby直接写入 static/llms.txt
SvelteKit直接写入 static/llms.txt
Hugo直接写入 static/llms.txt
Jekyll直接将文件作为 llms.txt 写入代码库根目录

询问用户:“我可以直接将 llms.txt 写入你代码库中的 public/llms.txt。现在要我这样做吗?还是你想先检查一下?”

如果用户同意,就写入文件。然后告诉用户:“部署你的网站后,该文件就会在 https://yourdomain.com/llms.txt 上线。”

**如果是在线网站模式:**告诉用户应将文件添加到哪里:

Place llms.txt at your web root so it's accessible at: https://yourdomain.com/llms.txt

- Next.js / Vercel: put in /public/llms.txt
- Astro / Nuxt / Gatsby / SvelteKit: put in /public/llms.txt
- GitHub Pages: put in root of repo
- Hugo / Jekyll: put in /static/llms.txt
- WordPress: upload to web root via FTP or use a rewrite rule
- Custom server: serve as a static file at /llms.txt

输出质量标准

优秀的 llms.txt 文件:

  • 有一个准确的 H1 标题,以及清晰的 2-3 句话摘要,可供大模型直接引用
  • 涵盖网站实际包含的所有主要内容领域
  • 使用能说明其中有什么内容(而非公司希望用户如何看待它)的链接描述
  • 可在 30 秒内快速浏览
  • 不含失效链接、重定向链或 CDN 资源 URL
  • 通过 references/llms-txt-spec.md 中的所有检查

糟糕的 llms.txt 文件:

  • 含有营销语言(“我们令人惊叹的 API”“一流的文档”)
  • 包含编造或猜测的 URL
  • 缺少网站的主要部分
  • 描述空洞或含糊(“有关我们产品的信息”)

评论

支持 Markdown