Skill: ludiansheng/reading-assistant-skill (version 1.0.0)

--- name: reading-assistant description: 新一代读书辅助工具，支持智能标签管理、全文搜索、批量导入导出和阅读统计；当用户输入"读书"开头的内容记录摘录、说"读完了"结束阅读、搜索笔记内容或导出阅读记录时使用 dependency: python: - python-dateutil==2.8.2 --- # 读书辅助工具 ## 任务目标 本 Skill 用于：帮助用户高效管理阅读摘录，构建个人知识库 能力包含：书籍管理、智能摘录整理、标签系统、全文搜索、批量导入导出、阅读统计 触发条件：用户输入"读书"开头的文本或语音，自动记录到当前在读书籍 ## 前置准备 ### 依赖说明 ``` python-dateutil==2.8.2 ``` ### 数据目录结构 在用户工作目录下创建以下结构： ``` ./reading-notes/ ├── current.json # 当前在读书籍信息 └── books/ ├── 书名1.json # 书籍档案 └── 书名2.json ``` ## 操作步骤 ### 一、快速记录摘录（核心流程） #### 1.1 自动记录 **触发**：用户输入"读书"开头的文本或语音 **示例**： - "读书 第1章讲到了系统1和系统2的概念..." - "读书 这个观点很有意思，认知偏差会影响我们的决策..." - "读书 作者在这里提出了一个反直觉的结论..." **执行流程**： 1. **检查当前书籍**：读取 `current.json`，确认是否有在读的书籍 2. **如果当前有在读书籍**： - 直接处理摘录内容（章节识别 → 标签提取 → 深层分析） - 保存到当前书籍档案 - 确认保存成功 3. **如果当前没有在读书籍**： - 询问书名 - 创建书籍档案 - 更新 `current.json` - 处理摘录内容并保存 **章节识别**：调用 `scripts/chapter_parser.py` 识别章节信息 **章节识别规则**：参考 [references/chapter-rules.md](references/chapter-rules.md) #### 1.2 补充记录 **触发**：用户明确提到书名，即使这本书已经标记为"已完成" **示例**： - "《思考快与慢》里有个观点：系统1是快速的..." - "刚才在《原则》中看到一句话..." **执行流程**： 1. 识别书名 2. 检查书籍档案是否存在 3. 如果不存在，询问是否创建 4. 如果存在（无论状态），直接补充记录 5. 确认保存成功 **注意**：补充记录不会改变书籍状态，也不会更新 `current.json` ### 二、书籍生命周期管理 #### 2.1 开始阅读 **触发**：用户输入"读书"开头的文本，且当前没有在读的书籍 **执行**： 1. 询问书名 2. 询问作者（可选） 3. 创建书籍档案：`./reading-notes/books/{书名}.json` 4. 更新当前在读：`./reading-notes/current.json` 5. 书籍状态设为 `reading` 6. 处理用户输入的摘录内容 **数据结构**：参考 [references/data-structure.md](references/data-structure.md) #### 2.2 结束阅读 **触发**：用户说"读完了"、"这本书看完了"、"读完了《XXX》"等 **执行**： 1. 确认要结束的书籍（如果是当前在读，直接处理；如果不是，询问书名） 2. 更新书籍状态为 `completed` 3. 清空 `current.json` 4. 生成阅读摘要（可选） 5. 确认结束阅读 **注意**：结束阅读后，用户输入"读书"开头的内容将不会记录到这本书，除非： - 用户明确提到这本书的书名（补充记录） - 用户重新开始读这本书（会创建新的档案或询问是否继续） #### 2.3 切换书籍 **触发**：用户说"切换到《XXX》"或"开始读《XXX》" **执行**： 1. 检查书籍是否存在 2. 如果存在且状态为 `completed`，询问是否继续阅读（重新开始） 3. 如果不存在，创建新档案 4. 更新 `current.json` 5. 书籍状态设为 `reading` 6. 确认切换成功 #### 2.4 删除书籍 **触发**：用户说"删除《XXX》" **执行**： 1. 确认删除操作 2. 删除书籍档案文件 3. 如果是当前在读书籍，清空 `current.json` 4. 确认删除成功 ### 三、标签管理 #### 3.1 自动标签 智能体根据摘录内容自动提取标签，包括： - 核心概念（如"认知偏差"、"系统思维"） - 人物名称 - 关键理论 - 方法论 #### 3.2 手动标签 **触发**：用户说"给这条摘录添加标签：XXX"或"打标签" **执行**： 1. 识别最近的摘录 2. 添加用户指定的标签 3. 确认标签添加成功 #### 3.3 查看标签 **触发**：用户说"查看所有标签"或"有哪些标签" **执行**： 1. 读取当前书籍的所有标签 2. 按使用频率排序显示 3. 显示每个标签对应的摘录数量 ### 四、笔记搜索 #### 4.1 全文搜索 **触发**：用户说"搜索XXX"或"查找关于XXX的笔记" **执行**：调用 `scripts/search_notes.py` 搜索 **参数说明**： - `keyword`（必需）：搜索关键词 - `book_name`（可选）：指定书籍，不填则搜索所有书籍 - `tag`（可选）：按标签筛选 - `chapter`（可选）：按章节筛选 **输出**： - 匹配的摘录列表 - 高亮显示关键词 - 显示书籍、章节、标签信息 #### 4.2 按标签筛选 **触发**：用户说"查看标签XXX的笔记" **执行**： 1. 调用搜索脚本，传入标签参数 2. 显示该标签下的所有摘录 #### 4.3 按章节筛选 **触发**：用户说"查看第X章的笔记" **执行**： 1. 调用搜索脚本，传入章节参数 2. 显示该章节的所有摘录 ### 五、导出笔记 #### 5.1 导出当前书籍 **触发**：用户说"导出笔记"、"导出为XXX格式" **执行**： 1. 询问导出格式（Markdown/HTML/PDF） 2. 询问是否包含深层分析（默认包含） 3. 调用 `scripts/export_notes.py` 生成文件 4. 提供下载路径 **导出模板**：参考 [references/export-templates.md](references/export-templates.md) #### 5.2 导出所有笔记 **触发**：用户说"导出所有笔记" **执行**： 1. 询问导出格式和输出目录 2. 为每本书生成独立的笔记文件 3. 生成索引文件 4. 显示导出结果统计 ### 六、阅读统计 #### 6.1 单书统计 **触发**：用户说"统计《XXX》"或"阅读报告" **执行**：调用 `scripts/stats.py` 生成统计报告 **输出内容**： - 摘录总数 - 章节覆盖情况 - 标签分布 - 时间线（按日期统计） - 阅读天数 #### 6.2 全局统计 **触发**：用户说"统计所有书籍"或"总体阅读报告" **执行**： 1. 遍历所有书籍档案 2. 汇总统计数据 3. 生成可视化报告 **输出内容**： - 书籍总数（在读/已完成/已归档） - 总摘录数 - 阅读时间跨度 - 最常使用的标签 - 阅读活跃度 ### 七、笔记查看 #### 7.1 查看当前书籍 **触发**：用户说"查看笔记"或"显示笔记" **执行**： 1. 读取当前在读书籍的档案 2. 按章节组织显示 3. 显示摘录内容、标签、时间 #### 7.2 查看指定书籍 **触发**：用户说"查看《XXX》的笔记" **执行**： 1. 读取指定书籍档案 2. 按章节组织显示 ### 八、批量导入 **触发**：用户说"导入笔记"或"批量导入" **执行流程**： 1. 询问导入来源（微信读书/Kindle/其他） 2. 请求用户提供文件路径 3. 调用 `scripts/import_notes.py` 解析文件 4. 显示导入预览（摘录数量、章节分布） 5. 用户确认后批量保存 6. 显示导入结果统计 **支持格式**：参考 [references/import-formats.md](references/import-formats.md) ### 九、智能推荐（进阶） #### 9.1 相关摘录推荐 **触发**：用户说"找相关的笔记" **执行**： 1. 分析最近一条摘录的关键词 2. 搜索相似标签的摘录 3. 推荐相关内容 #### 9.2 知识关联发现 **触发**：用户说"发现知识关联"或"跨书籍搜索" **执行**： 1. 分析所有书籍的标签 2. 识别跨书籍的共同主题 3. 展示知识网络 ## 资源索引 ### 必要脚本 - [scripts/chapter_parser.py](scripts/chapter_parser.py)：章节识别，从文本中提取章节信息 - [scripts/search_notes.py](scripts/search_notes.py)：全文搜索，支持关键词、标签、章节筛选 - [scripts/import_notes.py](scripts/import_notes.py)：批量导入，支持微信读书和Kindle格式 - [scripts/export_notes.py](scripts/export_notes.py)：多格式导出，支持Markdown、HTML、PDF - [scripts/stats.py](scripts/stats.py)：阅读统计，生成统计报告 ### 领域参考 - [references/data-structure.md](references/data-structure.md)：数据结构完整定义（创建/修改书籍档案时参考） - [references/chapter-rules.md](references/chapter-rules.md)：章节识别规则（处理摘录时参考） - [references/import-formats.md](references/import-formats.md)：导入格式规范（批量导入时参考） - [references/export-templates.md](references/export-templates.md)：导出模板说明（导出笔记时参考） ### 输出资产 - [assets/export_html.html](assets/export_html.html)：HTML导出模板 - [assets/export_markdown.md](assets/export_markdown.md)：Markdown导出模板 ## 注意事项 ### 数据管理 - 所有书籍档案存储在用户工作目录的 `./reading-notes/` 下 - 删除操作需要用户确认 - 建议定期备份 `reading-notes/` 目录 ### 交互原则 - **简洁优先**：用户输入"读书"开头的内容时，直接记录，不要过多询问 - **智能推断**：能从上下文推断的信息不要重复询问 - **确认机制**：重要操作（删除、批量导入）需要用户确认 ### 标签规范 - 标签应简洁明确，避免过长 - 优先使用通用概念，便于跨书籍关联 - 避免同义词标签（如"认知偏差"和"认知偏误"应统一） ### 章节识别 - 如果脚本无法识别章节，智能体应根据内容推断 - 支持用户手动指定章节 - 记录章节识别失败的情况，用于改进规则 ### 书籍生命周期 - `reading` 状态的书籍可以接受"读书"开头的输入 - `completed` 状态的书籍不接受"读书"输入，除非用户明确提到书名 - `archived` 状态的书籍不接受任何自动输入，仅供查看和搜索 ## 使用示例 ### 示例1：开始阅读并记录摘录 ``` 用户：读书 第1章讲到了系统1和系统2的概念，系统1是快速的直觉系统，系统2是慢速的理性系统。 智能体：检测到您当前没有在读的书籍，请问这本书的名字是？ 用户：思考，快与慢 智能体：已创建《思考，快与慢》的书籍档案，现在可以记录摘录了。 已识别章节：第1章 已提取标签：系统1、系统2、双系统理论 深层含义：作者揭示了人类思维的二元结构，快思考负责直觉判断，慢思考负责理性分析，两者相互配合又时常冲突。 应用建议：在决策时，可以刻意激活系统2进行慢思考，避免系统1的直觉陷阱。 摘录已保存到《思考，快与慢》。 ``` ### 示例2：持续记录摘录 ``` 用户：读书 锚定效应是一种常见的认知偏差，人们在做判断时容易受第一印象的影响。 智能体：已识别章节：第11章 已提取标签：认知偏差、锚定效应、决策陷阱 深层含义：锚定效应是一种强大的认知偏差。即使我们知道锚点无关，仍然会受其影响。 应用建议：在谈判、购物、估值等场景中，警惕锚定效应的影响。 摘录已保存到《思考，快与慢》。 ``` ### 示例3：结束阅读 ``` 用户：读完了 智能体：确认结束阅读《思考，快与慢》吗？这本书已记录 45 条摘录。 用户：确认 智能体：已将《思考，快与慢》标记为已完成。 阅读摘要： - 摘录数量：45 条 - 阅读天数：15 天 - 主要标签：认知偏差、决策、系统思维 您可以随时说"读书"开始新的阅读，或补充《思考，快与慢》的内容（需要明确提到书名）。 ``` ### 示例4：补充已完成的书籍 ``` 用户：《思考，快与慢》里还有个观点：可得性启发法也是一种认知偏差。 智能体：已识别章节：未分类 已提取标签：认知偏差、可得性启发 深层含义：人们倾向于根据记忆中容易想到的例子来判断事件的概率，而不是基于客观数据。 应用建议：在做判断时，问自己"我是否因为最近看到了相关新闻而高估了概率？" 摘录已补充到《思考，快与慢》（这本书已标记为完成，补充记录不会改变状态）。 ``` ### 示例5：搜索笔记 ``` 用户：搜索关于"认知偏差"的笔记 智能体：（调用搜索脚本）找到 3 条相关笔记： 1. 《思考，快与慢》第11章 内容：锚定效应是一种常见的认知偏差... 标签：认知偏差、锚定效应 2. 《影响力》第5章 内容：社会认同也是一种认知偏差... 标签：认知偏差、社会认同 3. 《思考，快与慢》第8章 内容：可得性启发法是另一种认知偏差... 标签：认知偏差、可得性启发 ``` ### 示例6：导出笔记 ``` 用户：导出《思考，快与慢》的笔记 智能体：请选择导出格式：Markdown、HTML、PDF 用户：Markdown 智能体：是否包含深层分析？（默认包含） 用户：包含 智能体：（调用导出脚本）已生成笔记文件：./reading-notes/exports/思考，快与慢.md 共包含 45 条摘录，已按章节组织。 ```

path: assets/export_markdown.md
content: # {book_title}

**作者**: {book_author}
**标签**: {book_tags}
**创建时间**: {created_at}
**摘录数量**: {excerpt_count}

---

## 目录

{toc}

---

{content}


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)