---
name: wenqu-library
description: >-
  面向中文内容创作的证据驱动素材收集与整理流程，涵盖规划、搜索、下载、索引与可复用
  素材库维护，适用于文章、报告、教程、项目介绍和说明材料。当用户要求“收集素材”“整理资料”
  “建立素材库”“抓取网页”或“收集网页素材”，或使用 "collect research", "build a source
  library", "save this webpage", "web scraping" 等英文表达时使用。
slug: wenqu-library
displayName: 文曲·文库
version: 0.1.12
summary: 中文内容素材收集四步流程：规划→搜索→下载→整理，原生搜索为主、可选 CLI 增强，支持网页与公众号抓取。
license: MIT
homepage: https://github.com/gogoingai/wenqu-skills
metadata:
  openclaw:
    homepage: https://github.com/gogoingai/wenqu-skills/tree/master/wenqu-library
---

# 文库（Library）Skill

> 📦 项目仓库与源码：<https://github.com/gogoingai/wenqu-skills>

## 用户输入工具

当本技能需要用户确认选择、补充必要信息或授权有副作用的操作时：

1. 优先使用当前运行时提供的原生用户输入工具，例如 `AskUserQuestion`、`request_user_input`、`clarify`、`ask_user` 或等价能力。
2. 若没有此类工具，使用带编号或字母选项的文本问答。
3. 同一决策阶段中彼此独立的问题可合并提问；后一个问题依赖前一回答时，按优先级逐个问。
4. 已由用户当前指令、调用方或文章偏好提供的信息，不重复询问。
5. 文中出现的具体工具名均为示例；应替换为当前运行时的等价能力。

## 定位

文曲创作流程的第一环--博观积累。在动笔写文章之前，先收集和整理素材，让创作有据可依、有米可炊。

文库不是“见什么都存”的素材仓库，而是**带着写作意图做收集**：当选题、写作目标和大致范围开始清楚后，再去找真正有用的相似文章与相关资料，避免把大量弱相关材料堆进来。

文库不是单篇文章的素材库（那由 `wenqu-write` 在写作时于文章存储 `wenqu-skills/{文件名}/references/materials/` 建立），而是一个**跨文章、可长期沉淀**的个人知识库：

- 收集技术资料、案例、观点与灵感
- 整理零散信息，形成可复用素材
- 沉淀个人知识资产
- 为后续文章创作（`wenqu-write`）提供内容基础

## 触发识别

| 用户信号 | 流程 |
|---------|------|
| "收集素材"、"整理资料"、"建素材库" | 四步收集流程 |
| "沉淀知识"、"积累案例" | 沉淀与分类 |
| "抓取这个网页"、"把这篇公众号存下来" | 下载 + 整理（流程第 3、4 步） |

## 存储位置

两级存储，职责不同：

### 全局文库（跨文章长期资产）

`$HOME/.gogoingai/wenqu-skills/library/`，按主题/领域分文件：

- `{主题}.md` -- 每个主题一个文件，内含该主题的素材条目
- 条目格式：`| 编号 | 来源 | 内容 | 标签 |`（编号 L1、L2……）
- 只存**提炼后的条目和原始链接**，不存抓取的原始文件

### 本篇素材目录（单篇文章工作台）

`{项目根目录}/wenqu-skills/{文件名}/references/materials/`，由 `wenqu-write` 在写作流程中建立和使用：

```text
materials/
├── index.md      # 素材索引（检索与管理的唯一入口）
├── local/        # 本地素材：源码大段摘录、本地文档导出
├── articles/     # 网页文章：博客、公众号、新闻、教程
├── papers/       # 论文、研究报告
└── docs/         # 官方文档、deep-crawl 整站抓取产物
```

分类按**内容类型**分目录；同类文件多时可再按来源站点建二级子目录（如 `articles/mp.weixin.qq.com/`）。

**index.md 索引格式**（每条一行）：

```markdown
| 编号 | 摘要 | 来源类型 | 来源 | 检索渠道 | 文件路径 | 用途 | 标签 | 关联章节 | 日期 |
| M1 | xxx 机制源码摘录 | 实现事实 | src/cache.py:42 | 本地文件 | local/cache-lru.md | 事实素材 | 缓存,LRU | 2.1 | 2026-07-25 |
| M2 | 某公众号文章：XX 系统实践 | 外部研究 | https://mp.weixin.qq.com/s/xxx | agent-native、open-websearch:sogou | articles/mp.weixin.qq.com/xx.md | 写法参考 | 架构 | 待定 | 2026-07-25 |
```

登记规则：

1. **来源必填**：网页素材填完整原始 URL（不是域名，是能回到原文的那条链接）；本地素材填 `path:line`；确实没有来源的标「用户口述/粘贴」
2. **来源类型**沿用 provenance 词汇：实现事实 / 团队选择 / 外部研究 / 合理推断 / 简化场景 / 待确认（边界见 `wenqu-write` 的 `references/planning/content-provenance.md`）
3. **编号唯一**：M1、M2…… 全篇唯一，骨架和审查引用这个编号
4. **检索渠道必填**：填 `agent-native`、`open-websearch:{engine}`、`crwl-serp:{engine}`、`用户提供` 或 `本地文件`；同一 URL 被多路找到时合并填写，不丢渠道信息
5. **文件路径相对 materials/ 填写**；只登记不落文件的短素材（几行数字、一句话事实）该列填 `-`
6. **用途二分**：`写法参考`（相似文章，不能当事实来源）/ `事实素材`（支撑正文的机制、数字、案例）
7. **标签**：2~4 个关键词，方便 grep 检索；素材多了以后按标签/目录检索，不靠通读
8. **关联章节**：收集阶段先填「待定」，骨架定稿后回填章节号
9. 素材有实体文件时才进目录；小片段直接写在 index.md 摘要列即可，不为每条都建文件

index.md 在主索引表之外保留两个专项区（R0 审查要读）：「冲突裁决」（冲突 claim、各方来源、采用依据、裁决结果、受影响章节）和「评测设计」（评测对象、比较条件与口径、指标含义、可证明/不可外推范围），格式见 `wenqu-write` 的 `references/planning/questionnaire.md`「写入 materials/index.md」一节。

## 流程

素材收集分四步：**规划 -> 搜索 -> 下载 -> 整理**。在 wenqu-write 的规划阶段（Step 1/1.5 完成后）执行；用户单独喊"收集素材"时同样走这四步。

每一步的执行细则 → 查 `references/collection-playbook.md`；外部 CLI 按工具分目录：搜索补充查 `references/open-websearch/README.md`，浏览器检索恢复与下载增强查 `references/crawl4ai/README.md`。

### 1. 规划

根据写作规划产出**收集清单**：要找哪些相似文章（写法参考）、哪些相关素材（事实素材）、中英文搜索关键词组合、预计抓取数量。清单列给用户确认后开始执行（**内容范围的唯一确认点**）；可选 CLI 缺失时，另行征得用户明确授权后才由 agent 安装。

### 2. 搜索

**每轮都先用 agent 自带的联网搜索工具**按关键词逐组搜索，产出基础候选 URL 清单；不能用 `open-websearch` 替代或跳过这一步。若可选的 `open-websearch` CLI 可调用，再以同一组关键词补充多引擎候选。对直连失败或空结果的引擎，仅在有对应 `crwl` 浏览器食谱时执行一次受限的检索恢复；完整分流见 `references/crawl4ai/search-recovery.md`。合并全部候选、统一去重与分级后才进入下载；用户直接提供 URL 的，保留为 `用户提供` 渠道且可跳过检索。

### 3. 下载

优先用 `crwl`（Crawl4AI CLI）抓取，产物直接落到本篇素材目录对应分类下：

- 未安装或不可用时，agent 先说明将安装的可选全局 CLI、浏览器运行环境与用途；得到用户明确授权后自行安装、设置并验证。用户拒绝、安装或验证失败时，agent 直接降级为 agent 自带抓取，不要求用户执行命令或配置环境
- 单页、整站 deep-crawl（`--max-pages` 必须显式限制）、微信公众号直达与同会话发现的食谱见 `references/crawl4ai/site-recipes.md`
- 边抓边登记（先记 URL + 路径，摘要后补）；失败的 URL 登记「抓取失败：原因」，不静默跳过

### 4. 整理

通读下载产物写摘要，按登记规则写入 index.md；与全局文库去重；把可跨文章复用的条目提炼回收进全局文库（L 条目，只存条目和链接，原始文件留本篇）；收尾向用户一句话汇报成果与失败清单。

## 收集顺序

当用户已经有明确写作任务，或 `wenqu-write` 已完成初步规划时，文库按下面顺序工作：

1. **先接收规划结果**：至少拿到题目方向、写作目标、目标读者、范围边界、暂不覆盖内容中的一部分
2. **先找相似文章**：找已经存在的文章、博文、官方长文、案例拆解，重点看它们的角度、结构、切口，而不是照抄结论
3. **再找相关素材**：围绕已确认的角度补充源码、文档、论文、发布记录、数据、讨论与案例
4. **最后回收进文库**：把相似文章和相关素材都沉淀成可复用条目，供后续多篇文章复用

## 文库输出

文库对写作流程提供两类输出：

1. **相似文章候选**
   - 用来帮助判断切入角度、章节组织方式、读者预期
   - 只能作为“写法参考”，不能直接当事实依据

2. **相关素材清单**
   - 用来支撑正文里的机制、数字、案例、对比与背景
   - 必须保留原始来源（URL 或 `path:line`），供 `wenqu-write` 写入本篇 index.md

## 与 wenqu-write 的衔接

`wenqu-write` 在 **完成 Step 1 / Step 1.5 的初步规划后**，进入 Step 2 素材收集时调用本技能的四步流程，而不是直接开始大范围扫资料。调用时至少带上：

- 主题 / 题目方向
- 写作目标
- 目标读者
- 范围锁定（尤其是不打算展开的部分）
- 当前已经明确的关键词 / 模块名

文库收到这些信息后，先查全局文库有没有现成条目（避免重复收集），再执行四步流程，产出写入本篇 `references/materials/`（文件 + index.md 登记），返回两组结果：

1. **相似文章**：帮助确定切入角度、章节组织、叙事方式
2. **相关素材**：帮助补机制、事实、数字、案例与对比

全局文库条目标成 L1、L2……；本篇素材目录条目标成 M1、M2……。**L 条目是长期资产，M 条目是本篇工作台。**

## 核心原则

1. **素材可追溯**：每条素材必须在 index.md 登记来源（完整 URL 或 `path:line`），没有来源的素材不进正文
2. **跨文章复用**：全局文库是长期知识库，只存提炼条目和链接；原始文件留在本篇素材目录
3. **分类落盘**：网页素材按内容类型分目录存放（articles/papers/docs/local），index.md 统一索引，素材再多也可检索
4. **与 wenqu-write 分工**：文库管收集与长期积累，本篇 index.md 管本篇素材；文库条目可被多篇文章引用
5. **规划驱动收集**：先有题目方向和大致范围，再决定收什么，不做无边界囤积；`--max-pages` 等限量参数显式设置
6. **相似文章先于零散资料**：先看别人怎么切题，再决定还缺哪些资料
7. **失败可见**：抓取失败的 URL 登记并标注原因，不静默跳过
8. **CLI 只作增强**：agent 原生搜索每轮必跑；`open-websearch` 只补充候选，`crwl` 只在已定义食谱的引擎上恢复浏览器检索或增强下载，两者均不能阻断收集
9. **agent 负责安装**：检测到可选 CLI 未安装时主动说明并请求用户明确授权；获授权后由 agent 完成全局安装、浏览器设置和健康验证，绝不让用户自行执行命令
