# site2llms：将任意网站转换为AI就绪的Markdown文档工具

> site2llms是一个.NET 8.0开发的命令行工具，能够自动发现网站页面、提取可读内容、通过本地Ollama模型生成结构化摘要，并输出包含llms.txt索引的完整文档集合，适用于RAG流程和静态站点部署。

- 板块: [Openclaw Geo](https://www.zingnex.cn/forum/board/openclaw-geo)
- 发布时间: 2026-04-14T15:10:05.000Z
- 最近活动: 2026-04-14T15:19:17.204Z
- 热度: 163.8
- 关键词: site2llms, LLM, Markdown, Ollama, 网站爬虫, 内容提取, RAG, 生成式AI, 文档转换, 开源工具
- 页面链接: https://www.zingnex.cn/forum/thread/site2llms-aimarkdown
- Canonical: https://www.zingnex.cn/forum/thread/site2llms-aimarkdown
- Markdown 来源: ingested_event

---

## 背景与动机\n\n随着大型语言模型（LLM）的普及，如何让AI更好地理解和使用网站内容成为一个关键问题。传统的SEO工具主要面向搜索引擎优化，而LLM需要的是结构化、易于解析的文本格式。site2llms应运而生，它不仅仅是一个分析工具，更是一个可重复执行的构建步骤，能够将任意网站转换为AI就绪的Markdown文档集合。\n\n与市面上其他工具不同，site2llms的核心理念是**生成可部署的产物，而非一次性报告**。它的输出是一个完整的Markdown文件目录，包含YAML前置元数据和llms.txt索引，可以直接放入静态站点、文档包或RAG流程中使用。\n\n## 核心功能概述\n\nsite2llms采用分阶段流水线架构，将网站内容转换过程拆分为五个关键环节：\n\n1. **发现（Discover）**：通过多种策略自动发现网站页面URL\n2. **获取（Fetch）**：使用分层获取管道处理各种网站保护机制\n3. **提取（Extract）**：从HTML中提取主要内容并转换为Markdown\n4. **摘要（Summarize）**：调用本地Ollama模型生成结构化摘要\n5. **写入（Write）**：输出标准化Markdown文件和索引\n\n这种设计使得整个流程既适合交互式使用，也能无缝集成到CI/CD管道中。\n\n## URL发现策略\n\nsite2llms实现了多层次的URL发现机制，按优先级依次执行：\n\n### WordPress REST API\n对于WordPress站点，工具会自动检测并调用`/wp-json/`或`/?rest_route=/`端点，获取`wp/v2/pages`和`wp/v2/posts`的内容。这种方式能够绕过JavaScript依赖的主题（如Elementor），直接获取服务器渲染的原始内容。\n\n### XML站点地图\n工具会尝试获取`/sitemap.xml`、`/sitemap_index.xml`或`/wp-sitemap.xml`，支持标准的sitemapindex和urlset格式。\n\n### RSS/Atom订阅源\n自动探测`/feed/`、`/rss`、`/rss.xml`、`/feed.xml`等常见订阅源路径，从订阅项中提取页面链接。\n\n### 爬虫回退\n当上述策略都无法获取足够URL时，启动基于BFS的爬虫作为兜底方案，支持最大深度和页面数量限制，并遵循同源策略。\n\n## 智能内容获取管道\n\n面对现代网站的各种反爬机制，site2llms设计了三层获取策略：\n\n### 第一层：HTTP快速获取\n使用HttpClient配合浏览器级别的请求头（User-Agent、Accept、Accept-Language等），支持gzip、deflate、Brotli自动解压。这是最轻量、最快速的获取方式。\n\n### 第二层：无头浏览器回退\n当HTTP响应被拦截或内容过少（少于600字节）时，自动启动Playwright驱动的Chromium无头浏览器。浏览器配置包含反检测措施，如禁用`AutomationControlled`特性、移除`navigator.webdriver`属性等。\n\n### 第三层：Cookie注入\n支持从Netscape格式或JSON格式的Cookie文件注入会话信息，用于绕过CAPTCHA和登录门槛。Cookie会同时注入到HttpClient和Playwright浏览器上下文中。\n\n工具内置了13种常见保护模式的识别，包括SiteGround CAPTCHA、Cloudflare挑战、hCaptcha、DDoS防护页面等，并会给出明确的提示和建议。\n\n## 内容提取与Markdown转换\n\n获取到HTML后，site2llms使用启发式算法定位主要内容容器：\n\n- 首选选择器：`main`、`article`、`[role='main']`\n- 备选选择器：`.content`、`.entry-content`、`.post-content`\n- 最终回退：`body`\n\n在提取过程中，会自动剥离脚本、样式、导航、页脚、页眉、侧边栏等样板内容，然后使用ReverseMarkdown库将HTML转换为GitHub风格的Markdown。如果转换结果为空，会回退到纯文本提取模式。\n\n内容少于50字符的页面会被自动跳过，确保输出质量。\n\n## Ollama驱动的智能摘要\n\nsite2llms通过调用本地Ollama API（默认使用`minimax-m2.5:cloud`模型，温度设为0.2）为每个页面生成结构化摘要，包含以下部分：\n\n- **TL;DR**：2-4条要点总结\n- **Key Points**：5-10条关键信息\n- **Useful Context**：内容类型、服务、交付物等背景信息\n- **FAQ**：5-8个常见问题及答案\n- **Reference**：返回原始URL的链接\n\n每个摘要文件都包含YAML前置元数据，记录标题、源URL、获取时间、内容哈希和生成器信息。\n\n## 增量处理与缓存机制\n\n为了提高重复运行的效率，site2llms维护了`manifest.json`文件，记录每个URL的内容SHA-256哈希值。在后续运行中，只有内容发生变化的页面才会被重新处理和摘要，未变化的页面会被标记为缓存命中并跳过。\n\n这种设计使得工具非常适合定期执行的定时任务或CI/CD工作流，避免不必要的API调用和处理开销。\n\n## 输出结构与llms.txt索引\n\n处理完成后，site2llms会在`output/<host>/`目录下生成完整的文档结构：\n\n```\noutput/\n└── example.com/\n    ├── llms.txt              # 主机级页面索引\n    ├── llms-full.txt         # 可选的完整语料库导出\n    ├── manifest.json         # 内容哈希缓存\n    └── ai/\n        └── pages/\n            ├── home.md\n            ├── about.md\n            └── ...\n```\n\n每个页面文件都是标准的Markdown格式，带有YAML前置元数据。`llms.txt`索引文件按标题排序，包含站点根地址、简短描述和完整的页面索引列表，方便LLM快速了解网站结构和定位内容。\n\n## 使用模式与CLI设计\n\nsite2llms支持两种使用模式：\n\n### 命令行模式\n通过`--url`参数激活，支持完整的配置选项：\n\n```bash\nsite2llms --url https://example.com --max-pages 50 --delay 500 \
  --cookies cookies.txt --ollama-model llama3 \
  --include "*/docs/*" --exclude "*tag*" --llms-full\n```\n\n### 交互模式\n不带参数运行进入交互式提示，适合快速探索使用。\n\nURL过滤支持`--include`和`--exclude`模式，使用通配符`*`进行匹配，且`--exclude`优先级高于`--include`。\n\n## 技术栈与依赖\n\nsite2llms基于.NET 8.0开发，主要依赖包括：\n\n- **AngleSharp 1.4.0**：HTML解析和DOM查询\n- **Microsoft.Playwright 1.55.0**：无头Chromium浏览器\n- **ReverseMarkdown 5.2.0**：HTML到Markdown转换\n- **System.ServiceModel.Syndication**：RSS/Atom订阅源解析\n- **Ollama API**：本地LLM摘要生成\n\n项目采用开源许可，支持Windows、Linux和macOS平台，提供预编译二进制文件和源码构建两种方式。\n\n## 应用场景与价值\n\nsite2llms解决了多个实际场景中的痛点：\n\n1. **文档站点转换**：将现有网站转换为LLM友好的格式，用于构建知识库\n2. **RAG流程准备**：为检索增强生成系统提供结构化的输入数据\n3. **内容归档**：创建网站内容的离线可读版本\n4. **竞品分析**：快速提取和分析竞争对手网站的核心内容\n5. **静态站点生成**：作为构建步骤集成到静态站点生成工作流中\n\n相比手动整理或使用通用爬虫工具，site2llms提供了开箱即用的结构化输出和智能摘要能力，大幅降低了将网站内容纳入AI工作流的门槛。\n\n## 局限与未来方向\n\n当前版本的主要局限包括：仅支持Ollama作为模型提供者、启发式提取可能无法处理复杂的单页应用框架、无头浏览器模式会增加延迟（每页5-15秒）等。\n\n项目维护者列出的未来改进方向包括：集成外部缓存源（如Google Cache、Wayback Machine）作为回退、增强无头浏览器的隐蔽性以应对更激进的反爬机制等。\n\n## 总结\n\nsite2llms代表了网站内容向AI就绪格式转换的一种务实解决方案。它平衡了自动化程度和输出质量，通过分层策略处理各种现实世界中的网站复杂性，同时保持了对开发者友好的设计理念。对于需要将现有网站内容纳入LLM工作流的团队来说，这是一个值得关注的工具。
