# Mj Notes Workflow

> Process unprocessed Get笔记 voice notes — fetch new notes, analyze content across notes, extract tasks/diary/knowledge, and generate an execution plan for user confirmation before executing. Trigger whenever the user says /mj-notes-workflow or asks to process their Get笔记 voice notes, organize recent recordings, handle voice notes, process getnote notes, or automate their note workflow.

- Skill: `makerjackie/mj-notes-workflow` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add makerjackie/mj-notes-workflow`
- Raw SKILL.md: https://api.skillmd.com/api/skills/makerjackie/mj-notes-workflow/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: makerjackie (https://skillmd.com/u/makerjackie)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/makerjackie/mj-notes-workflow

---


# Get笔记 语音笔记自动处理

将 Get笔记 中未处理的语音笔记自动拉取、分析、归类，生成执行计划，经你确认后按主题分组并行执行。

## 核心概念

**每条语音笔记都是混合原料** — 一条笔记里可能同时包含日记、待办事项、灵感、聊天记录。Skill 要做的是：

1. 跨笔记整体分析，从混乱中提取信号
2. 按主题合并同类项（而非逐条处理）
3. 先出计划等你确认，再执行
4. 记住处理进度，下次增量处理

## 状态管理

状态文件：`~/.agents/mj-notes-workflow/state.json`

```json
{
  "last_processed_id": "1910042389700031400",
  "last_run_at": "2026-05-16T01:30:00+08:00",
  "processed_ids": ["id1", "id2"],
  "execution_log": [
    {"run_at": "2026-05-16", "count": 5, "summary": "处理了5条笔记"}
  ]
}
```

**首次运行**：如果 state.json 不存在，拉取最近 **3 天** 的笔记。

## 工作流

### Step 1: 增量拉取

```bash
# 有进度记录
getnote notes --since-id <last_processed_id> --limit 50 -o json

# 首次运行（无进度记录）
getnote notes --limit 50 -o json
# 然后用 Python/工具筛选最近 3 天的笔记
```

> 如果返回的笔记数量为 0，报告"没有新笔记"并结束。

### Step 2: 内容量估算 & 智能分拆

获取所有新笔记后，按 **笔记类型** 决定读取策略：

| 笔记类型 (`note_type`) | 处理方式 |
|------------------------|---------|
| `audio` / `local_audio` / `recorder_audio` / `class_audio` / `meeting` | **读完整 `content`** — 你自己的语音记录，包含真实想法和任务 |
| `link` | **只看 `title` + `content` 前 200 字** — 外部参考资料（公众号/B站/小红书），标题就足以判断内容 |
| `plain_text` / `img_text` / 其他 | 按情况处理，`plain_text` 读完整内容，`img_text` 读标题 + content |

**估算策略**：
- 汇总所有需要读取的内容总长度
- 总长度 < **3 万字（约 30,000 字符）** → 1 个 Agent 全量分析
- 总长度 ≥ **3 万字** → 按笔记数量均分为多组，每组由独立 Agent 分析（每组约 15,000 - 20,000 字）
- 如果笔记数量很少（≤ 3 条），即使总长度较大也可以用 1 个 Agent

### Step 3: 跨笔记分析

分析阶段的目标是从所有新笔记中提取出结构化信息：

**对于 `audio` 类笔记（你的语音）**：
- 逐条阅读完整内容（每条笔记的 `title` 是 Get笔记 AI 自动生成的摘要，可辅助理解）
- 提取以下类型的内容：
  - **待办事项/任务指令** — "帮我做XX"、"查一下XX"、"把XX部署一下"等
  - **日记/感想** — 个人记录、今日经历、感受
  - **知识/灵感** — 想到的好点子、值得记录的知识
  - **改进/反馈** — 对产品、流程的改进意见
  - **参考信息** — 聊天记录、别人说的话、临时记录

**对于 `link` 类笔记（外部参考）**：
- 仅根据标题和摘要判断内容类型和归属方向
- 标记为"待归档参考"，无需深度分析

**跨笔记合并**：
- 将分散在不同笔记中的同一主题内容合并
- 例如：3 条笔记都讨论"小程序教程" → 合并为一个主题分组

### Step 4: 生成执行计划

输出格式示例：

```
📋 本次共处理 8 条新笔记

═══════════════════════════════════════
📔 日记/感想（2条）
═══════════════════════════════════════
1. [标题1] — 记录了关于XX的感受
   → 建议：听起来你最近在关注XX方向，建议可以进一步思考YY
   → 处理：润色后更新回 Get笔记

2. [标题2] — 记录了关于YY的日常
   → 建议：...
   → 处理：润色后更新回 Get笔记

═══════════════════════════════════════
📋 待办事项（3条）
═══════════════════════════════════════
1. [标题3] — "查一下50杯OPC比赛进度"
   → 类型：查询任务
   → 处理：执行查询并返回结果

2. [标题4] — "需要做视觉设计规范"
   → 类型：文档任务
   → 处理：写入 01MVP docs

═══════════════════════════════════════
📚 文档/教程（2条）
═══════════════════════════════════════
1. [标题5] — "录制微信知识付费小店搭建教程"
   → 处理：撰写教程，写入 01MVP docs/tools/

═══════════════════════════════════════
📎 外部参考（1条）
═══════════════════════════════════════
1. [标题6] — "用AI开发微信小游戏"
   → 来源：B站链接
   → 处理：归类到参考知识库，暂不执行

═══════════════════════════════════════

是否按以上计划执行？你可以：
- ✅ 确认执行全部
- ✏️ 补充/修改某个任务后再执行
- 🚫 跳过某些任务
- ❌ 取消本次所有操作
```

**关键规则**：
- **必须等待你确认后才能执行任何操作**
- 对于 **日记/感想**：不需要写详细报告，而是总结"最近记录了哪些内容"，并给出你的感受和建议
- 对于 **待办事项**：明确标注需要调用的其他技能（如 mj-writer、mj-deploy、mj-cf-dns 等）
- 计划要有可执行性，每条任务都要有明确的"处理方式"

### Step 5: 按主题分组并行执行

你确认后，按主题分组启动多个 Agent 并行执行：

| 分组 | 处理方式 | 目标 |
|------|---------|------|
| 日记/感想 | 润色语言，补充你的感受和建议，更新回 Get笔记 | `getnote note update <id> --content "..."` |
| 文档/教程 | 写入 01MVP docs（新建或更新） | `~/code/makerjackie/01mvp/apps/01mvp-web/content/docs/` |
| 公众号素材 | 调用 mj-writer 技能 | 生成公众号文章 |
| 查询/调研 | 执行查询，返回结果 | 直接回答或进一步处理 |
| 部署任务 | 调用 mj-deploy 等相关技能 | 执行部署 |
| 参考归档 | 整理到知识库 | 暂存或归类 |

**关于日记/感想**：
- 不要大段重写，保持原始语气和风格
- 做适当润色（修口语、理顺句子）
- **加上你的反馈和建议** — 读到这篇日记你的感受是什么？有什么建议？
- 使用 `getnote note update <id> --content "..."` 更新回原笔记

**关于 01MVP 文档**：
- 路径：`~/code/makerjackie/01mvp/apps/01mvp-web/content/docs/`
- 根据内容判断写入哪个子目录（guide/tools/cases/template 等）
- 可能新建文件，也可能更新已有文件

### Step 6: 更新进度 & 保存摘要

执行完成后：

1. **更新 state.json**：
   - `last_processed_id` 设为本次处理的最后一条笔记 ID
   - 将本次处理的所有 ID 追加到 `processed_ids`
   - 更新 `last_run_at` 和 `execution_log`

2. **保存处理摘要到 Get笔记**：
   ```bash
   getnote save "【语音笔记处理摘要 YYYY-MM-DD】

   本次处理了 N 条笔记：
   - 📔 日记/感想：N 条
   - 📋 待办事项：N 条
   - 📚 文档/教程：N 条
   - 📎 外部参考：N 条

   执行结果：
   - 更新了 N 条日记
   - 写入 01MVP docs 文件 N 个
   - 调用了 [技能名] 执行了 [任务]
   - ..." --tag "语音笔记处理摘要"
   ```

3. **输出最终报告**：

```
✅ 本次处理完成！

📊 处理统计
  • 拉取笔记：8 条
  • 分析归类：6 条语音 + 2 条外部参考
  • 执行完成：5 项

📔 日记更新
  • [标题1] → 已更新到 Get笔记
  • [标题2] → 已更新到 Get笔记

📚 文档写入
  • [标题3] → 已写入 01MVP docs/tools/xxx.mdx

📋 待办执行
  • [标题4] → [执行结果]

📎 处理摘要已保存到 Get笔记
📌 下次将从 ID: xxxxxx 开始处理
```

## 重要规则

1. **必须等确认**：任何时候都不要在确认前写入文件或执行命令，先出计划
2. **音频笔记是你的原创**：`audio` 类的内容是你的原话，要认真对待；`link` 类是外部资料，看一眼标题即可
3. **日记不求详细**：日记类不需要写详细报告，总结"最近记录了啥"+你的建议即可
4. **动态分类**：不预设固定类别，根据本次笔记内容自动生成分类
5. **跨笔记合并**：散落在不同笔记中的同一主题要合并处理，不要重复
6. **智能分拆**：内容少就一个 Agent 搞定，内容多才拆分，别过度工程
7. **处理摘要很重要**：每次执行完一定要保存一条摘要到 Get笔记，方便日后回顾
8. **利用好标题**：Get笔记 AI 自动生成的 `title` 字段已经很准确，可以作为分析的起点

