# Obsidian Todo Collector

> 从 Obsidian 知识库中扫描指定时间范围内未完成事件，生成/更新未完成事件整理文档

- Skill: `gabrielmoreira/obsidian-todo-collector` (Agent Skill)
- Install (CLI): `npx skillmds@latest add gabrielmoreira/obsidian-todo-collector`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gabrielmoreira/obsidian-todo-collector/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- License: Apache-2.0
- Author: gabrielmoreira (https://skillmd.com/u/gabrielmoreira)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/gabrielmoreira/obsidian-todo-collector

---


# Obsidian 未完成事件整理

此技能用于在指定时间范围内，从 Obsidian 笔记中提取并汇总所有未完成的事件和规划性事项，生成一个统一的「未完成事件整理」文档，便于后续跟踪和管理。

## 处理流程

按照以下步骤执行：

### 步骤1 - 确定范围与目标
- **输入**：用户指定的时间范围。仓库文档文件名前面必然是 YYYY-MM-DD(-hh)，可以以通过文件名来筛选出指定时间范围内的文档。
- **目标文档**：新建名为 `YYYY-MM-DD-HH 📅 未完成事件整理.md` 的文档。该文档的结构是

```md
## 文档生成说明
- 生成原因：整理指定时间范围内的未完成事件，便于后续跟踪和管理。
- 时间范围：{{时间范围}}

## 当前状态
所有待处理文档列表：
- [ ] {{待处理文档列表，每个文档使用 [[文件名]] 链接，处理完成后更新为已完成 [x] 状态}}

## 未完成事件列表
{{未完成事件列表，每个都是 ### 🟥 名称。若已经完成，则更新为 ### 🟩 名称}}

## 未完成规划性事项列表
{{未完成规划性事项列表，每个都是 ### 🟥 名称，若已经完成，则更新为 ### 🟩 名称}}
```

当前状态部分要在下面的循环中实时更新，显示已经处理到哪个日期的文档，以及剩余待处理的文档列表。

其中，「未完成事件」和「未完成规划性事项」的每一项都使用三级标题（###）进行标注，便于在文档中清晰展示。

「未完成事件」指的是具体工作，包括计划的、正在进行中的、未完成的任务。每个事件都应该包含以下信息：
- 名称
- 出现在哪些文档（可能是多份文档列表）
- 当前状态

「未完成规划性事项」指的是更加抽象的规划性事项，例如项目规划、战略规划等，虽然没有具体的截止日期，但仍然需要跟踪和管理。每个规划性事项也应该包含以下信息：
- 名称
- 出现在哪些文档（可能是多份文档列表）
- 当前状态

### 步骤2 - 处理主循环

执行下列循环，以依次处理「未完成事件整理」文档「当前状态」中的每个文档：

步骤2.1. 确定当前批次的「当前文档」：从未完成处理的文档中取出一批，每批最多 3 个文件。

步骤2.2. 预检该批文档：使用 Skill 提供的 Python 脚本进行预检，确保文档符合处理条件。
    ```bash
    python3 scripts/pre_check.py [file] ... --lines 15
    ```

步骤2.3. 通过上述命令的结果，判断
    - 文档是否属于「文档摘录」，「语音转写」这两种
    - 或文档是否太大（超过 64KB）或太长（超过 1000 行）
    如果是，使用 Ask User，询问用户是否跳过（默认选项是跳过）。
    如果用户选择跳过，进入下一个文档的处理。

步骤2.4. 阅读文档全文。关注以下内容：
    - 是否包含未完成事件或工作（尤其是以 🟥 标记的未完成事项）。
    - 是否包含未完成规划性事项（尤其是以 🟥 标记的未完成规划性事项）。
    - 如果包含，提取相关信息（事情描述；出现的文档；当前状态），并将其添加到「未完成事件整理」文档的相应部分。无须过度处理信息，保持原文的描述即可。
    - 如果文档中提及的事项显然已经完成（例如，以 🟩 标记），则更新「未完成事件整理」文档中该事项的状态为完成（🟩）。如果不确定是否完成，可以保留原状态（🟥），以便后续跟踪。

步骤2.5. 对「未完成事件整理」文档用多次批量编辑的方式，更新 未完成事件列表 和 未完成规划性事项列表，并编辑状态有更新的事项。**注意，必须要更新待办事项部分**。

步骤2.6. 在更新了待办事项之后，更新「未完成事件整理」文档的「当前状态」部分，给已经处理完成的文档打已完成 [x] 。这样可以清晰地知道已经处理了哪些文档，哪些文档还未处理。

步骤2.7. 跳回 步骤2.1（确定当前批次的「当前文档」），继续处理下一批文档，直到处理完指定时间范围内的所有文档。

## 编写要求

- 描述平实、清晰、直接。尽量摘录原始内容，保持原汁原味。
- 用链接 `[[target-doc]]` 引用来源，确保可追溯性。
- 编辑文件的时候，用多次批量 `replace` 工具进行增量更新，禁止使用 `write_file` 全量覆盖，以确保不会误删之前已经记录的内容。
- 编辑文件时，倾向于「追加更新」而不是修改已有内容。我会自己判断每个事项的最终状态。
- 对于「未完成事件整理」文档，在你不确定内容时，尽量先读再写。我会在合适时机 compress 或断点续传，你无须节省 token。
- 如果断点续传，在读取「未完成事件整理」的全文之后，直接从「处理主循环」开始。
- 必须在每一批文件处理后，更新文档中的待办和规划待办。不要提前看下一批文件，即使内容相关。你必须按照批次处理，逐步更新文档。

