---
name: 提醒事项处理
description: >
  macOS 提醒事项 Reminders.app 处理 Skill。用于用户要求"查提醒事项"、"今日待办"、"未来待办"、
  "下周要做什么"、"按列表处理"、"处理提醒事项"时，拉取未完成事项 → 分类 → 能自动处理的处理 →
  不能处理的汇总问用户。普通链接或内容素材只做分类/转交；批量内容摄入、稍后再看清理、
  多平台总结链路让给"content workflow"。
---

# 提醒事项批量处理

## 触发条件

- "按列表处理"、"批量执行"、"处理提醒事项"
- "今日待办"、"今天有什么"、"查提醒事项"
- "未来待办"、"下周要做什么"
- "扫描一下"、"有新的吗"

不触发本 skill 的近似场景：
- 用户明确说"content workflow"、"清理稍后再看"、"批量摄入链接" → 使用content workflow
- 用户问"今天 AI 圈有什么"、"AI 日报" → 使用 external AI-news provider
- 用户要求安排/查询会议日程 → 使用日程/standup 相关 skill

## 核心原则

**能自动的自动，不能处理的问用户，不确定的暂缓，要人手的标人工处理。**
**每次信息处理后→保存文件→写启发到 memory。**

---

## 依赖

### 必需

`reminders.sh` 脚本（与本 SKILL.md 同目录），封装了 AppleScript 操作 macOS Reminders.app：

```
reminders.sh list                        # 列出所有未完成事项
reminders.sh complete <列表名> <事项名>   # 标记为已完成
reminders.sh delete <列表名> <事项名>     # 删除事项
reminders.sh create <列表名> <事项名>     # 创建事项（列表不存在则自动创建）
```

首次运行会弹出 macOS 系统授权，需引导用户点击「允许」以访问 Reminders.app。

### Reminders.app 卡死时的只读 fallback

如果 `reminders.sh list` 或简单 `osascript -e 'tell application "Reminders"...'` 长时间无输出、报 `Connection invalid`、或卡在系统自动化通道，不要反复等待。直接读取新版 Reminders 的本地 SQLite 数据库，只读查询当前未完成事项：

1. 先确认并清掉卡住的自动化进程：

```bash
pgrep -af 'osascript|reminders.sh'
kill <pid>   # 只杀本次卡住的 osascript/reminders.sh
```

2. 在新版 Reminders 数据目录里找真正有提醒事项的 store：

```bash
for db in "$HOME/Library/Group Containers/group.com.apple.reminders/Container_v1/Stores"/Data-*.sqlite "$HOME/Library/Group Containers/group.com.apple.reminders/Container_v1/Stores/Data-local.sqlite"; do
  [ -f "$db" ] || continue
  printf '%s\t' "$db"
  sqlite3 -readonly "$db" 'select count(*) from ZREMCDREMINDER;' 2>/dev/null || true
done
```

3. 对 `count > 0` 的库执行只读查询：

```bash
sqlite3 -readonly -header -csv "$DB" "
select
  coalesce(l.ZNAME,'(no list)') as list,
  r.ZTITLE as title,
  r.ZNOTES as notes,
  r.ZICSURL as url,
  r.ZCOMPLETED as completed,
  r.ZMARKEDFORDELETION as deleted,
  datetime(r.ZDUEDATE + 978307200, 'unixepoch', 'localtime') as due,
  datetime(r.ZCREATIONDATE + 978307200, 'unixepoch', 'localtime') as created
from ZREMCDREMINDER r
left join ZREMCDBASELIST l on l.Z_PK = r.ZLIST
where coalesce(r.ZCOMPLETED,0) = 0
  and coalesce(r.ZMARKEDFORDELETION,0) = 0
  and coalesce(l.ZMARKEDFORDELETION,0) = 0
order by l.ZNAME, r.ZDUEDATE is null, r.ZDUEDATE;
"
```

注意：不要优先读 `~/Library/Group Containers/group.com.apple.calendar/Calendar.sqlitedb`。那个库会混入节假日、生日、邮件识别事件等日历噪声；只有在排查历史迁移数据时才考虑。

### 可选依赖（链接总结用）

- **全自动总结迭代** skill：统一调度层，所有内容链接的入口。路由到子 skill → 等总结完成 → 强制提炼记忆。确保「摄入→总结→记忆」不断链。
- 小红书总结 skill：处理 `xhslink.com` / `xiaohongshu.com` 链接
- 小宇宙总结 skill：处理 `xiaoyuzhoufm.com/episode/` 链接
- B站视频总结 skill：处理 `bilibili.com/video/BV` 链接
- content workflow内置知乎模块：处理 `zhihu.com/question/` / `zhihu.com/answer/` 链接，支持批量抓取+评分筛选
- 音视频总结 skill：处理 `youtube.com` / `youtu.be` / 本地音视频文件等非特定平台内容
- external AI-news provider skill：处理"AI日报""AI圈""AI资讯"等无链接的AI行业查询
- 全自动总结迭代 skill（含公众号两层降级抓取：Jina Reader → url-md）：处理微信公众号等网页链接

---

## 列表结构（供参考，可按需配置）

```
收件箱          ← 新事项默认入口（默认列表）
暂缓            ← 不急的事 / 创作类 / 方向确定但待条件成熟
人工处理        ← 需要线下操作 / 看原文 / 跟人交流
<其他自定义列表> ← 有特定时间窗口或上下文约束的列表
```

`暂缓` 和 `人工处理` 列表首次使用时会自动创建。

---

## 执行步骤

### 1. 拉取清单

调用 `reminders.sh list` 拉取所有未完成事项。格式：`列表名|事项名|到期日`

如果 AppleScript/Reminders.app 自动化通道卡住，使用上面的 SQLite 只读 fallback。当前实践验证过的有效路径形如：

```bash
$HOME/Library/Group Containers/group.com.apple.reminders/Container_v1/Stores/Data-<UUID>.sqlite
```

核心表为 `ZREMCDREMINDER` 和 `ZREMCDBASELIST`；`ZCOMPLETED=0` 且 `ZMARKEDFORDELETION=0` 表示未完成且未删除。Apple 绝对时间转 Unix 时间要加 `978307200` 秒。

### 2. 分类展示

按列表分组展示，今日到期置顶标 ⏰，无到期日放末尾。

### 3. 逐项分类决策

对每条事项按以下优先级判断：

#### A. 自动执行（匹配 skill 分发）

根据事项关键词匹配对应 skill 并自动触发：

| 关键词 | 分发目标 | 说明 |
|---|---|---|
| 日记 / 写日记 / 数字日记 | `数字日记` | 生成一日数字足迹日记 |
| 出图 / 生图 / 影像化 | `小说影像化` | 文学文本→AI生图→视频化 |
| 摄影 / 生图（当代风格） | `当代摄影生图` | 当代摄影风格生图 |
| 选题 / 拷问 | `选题拷问` | 选题拷问流程 |
| 同事 / 沙盘 / 职场 | `同事沙盘推演` | 职场关系分析 |
| 发布 / 小红书发布 | `小红书发布` | 管理小红书发布队列 |
| 商业片 / 商业摄影 | `商业片出图` | 商业摄影出图 |
| 电话 / 听取意见 | `电话听取意见` | 电话听取意见流程 |
| 镜像 / 小明 | `小明镜像` | 小明镜像交互 |

**分发的 skill 负责自己的执行逻辑**，本 skill 只负责路由。

#### B. 链接总结（自动处理+保存）

含 URL 链接的事项触发对应总结 skill。**所有内容链接统一走 `全自动总结迭代` skill 入口**，确保「摄入→总结→提炼→记忆」不断链。多条同类链接合并为一份文件保存：

| 链接前缀 | 路由链 | 保存位置 |
|---|---|---|
| `xhslink.com` / `xiaohongshu.com` | 全自动总结迭代 → 小红书总结 | `~/Documents/xhs_summaries/` |
| `xiaoyuzhoufm.com/episode/` | 全自动总结迭代 → 小宇宙总结 | `~/Documents/podcast_summaries/` |
| `bilibili.com/video/BV` | 全自动总结迭代 → B站视频总结 | `~/Documents/Codex/summaries/bilibili/` |
| `zhihu.com/question/` / `zhihu.com/answer/` | 全自动总结迭代 → content workflow知乎模块 | `~/Documents/zhihu_filter/` |
| `youtube.com` / `youtu.be` / 本地音视频路径 | 全自动总结迭代 → 音视频总结 | `~/Documents/podcast_summaries/` |
| `mp.weixin.qq.com` | 全自动总结迭代 → 公众号文章处理（Jina Reader → url-md 两层降级） | `~/Documents/article_summaries/` |

**流程**: 展开短链 → 下载内容 → 转录（音视频用 ASR）→ 写总结 → 保存 → 用文本编辑器打开展示。
**分批**: 每批最多 8 条，合并为一份 `summary_{日期}_batch{N}.md`，每条独立成节。
完成后标记为已完成。

#### C. 信息搜索（搜索分析+递进追问+启发）

含行业动态、热点事件、资讯类关键词的事项：

- **AI 行业资讯**（"AI日报""AI圈""AI热点""最近AI"等）→ 直接路由到 `external AI-news provider` skill，走其完整工作流（拉 API → 排版输出 → 观点提炼 → memory 嵌入）
- **其他行业/主题**：搜索相关信息并汇报
- **自动追问 2-3 个递进问题**：因果 → 后续 → 对比 → 与用户的关系
- **保存到文件**: `~/Documents/Codex/summaries/deepdive/{日期}.md`
- **写启发到 memory**
- 完成后标记为已完成

追问方向：
1. 因果追问："为什么发生？驱动因素是什么？"
2. 后续追问："然后呢？受影响的人和行业下一步去哪？"
3. 对比追问："类似事件以前发生过吗？有什么规律？"
4. 关联追问："这跟用户自己的创作/工作/兴趣有什么关系？"

#### D. 暂缓（移入「暂缓」列表）

以下情况移入暂缓：
- 方向明确但当前不紧急
- 需要等某个条件成熟
- 用户说"暂缓"的
- 涉及创作/出图/写作但没空立刻执行的

**操作**: `reminders.sh create "暂缓" "事项名"` + 原事项标记完成

#### E. 人工处理（移入「人工处理」列表）

以下情况移入人工处理：
- 需要线下操作的（复印、取件、缴费等）
- 需要跟人交流的（聊天、约饭等）
- 用户说"我要去看原文"的
- 用户明确说"人手处理"的

**操作**: `reminders.sh create "人工处理" "事项名"` + 原事项标记完成

#### F. 反馈数据录入（自动处理+保存）

含 `[反馈]` 标记的事项，将数据录入 `~/Documents/Codex/workflow/feedback_log.md`：

**触发关键词**：`[反馈]`、`反馈数据`、`本周数据`

**事项格式示例**：
```
[反馈] 小红书 2条 阅读5000 赞200 收藏80 评论12 最高是XXX那篇
[反馈] B站 1条 播放3000 赞150 收藏60 评论25
[反馈] 播客BD 0条
```

**处理流程**:
1. 解析事项文本：提取平台名 + 发布数 + 各项互动数据
2. 读取 `~/Documents/Codex/workflow/feedback_log.md`，找到"本周数据"表格
3. 将数据填入对应平台行（平台匹配：小红书→小红书, B站/B站/bilibili→B站, 播客/BD/播客BD→播客BD）
4. 无法解析的字段填 `-`，在备注列标注"待补充"
5. 完成后标记为已完成

**规则**：
- 单条事项可以只含一个平台的数据，也可以包含多个平台（用换行或分号分隔）
- 数据不完整时先填已有的，缺失字段留 `-`
- 如果本周数据行已有数据（用户之前录入过），追加/覆盖对应字段

#### G. 问用户

以下情况汇总后问用户：
- 无法判断属于哪一类
- 涉及两个以上可能性的
- 用户明确标记"逐项问→分步执行"的
- 涉及高风险操作（保留一次确认）

### 4. 执行与汇报

- **skill 分发类**：调起对应 skill，收集成功/失败/跳过
- **链接总结类**：分批 → 批量处理 → 合并保存 → 文本编辑器打开
- **信息搜索类**：搜索 → 追问 → 保存 → 写启发到 memory
- **反馈数据录入类**：解析 → 填入 feedback_log.md → 标记完成
- **暂缓 / 人工类**：创建对应列表事项
- 按列表分组汇报处理结果，每个事项标注状态（完成 / 暂缓 / 人工 / 跳过）

### 5. 回写

成功执行的事项统一调用 `reminders.sh complete "列表名" "事项名"` 标记为已完成。

---

## 文件输出约定

| 内容类型 | 保存路径 | 文件名规则 |
|---|---|---|
| 小红书总结 | `~/Documents/xhs_summaries/` | `summary_{日期}_batch{N}.md` |
| 小宇宙播客 | `~/Documents/podcast_summaries/` | `summary_{日期}.md` |
| B站视频 | `~/Documents/Codex/summaries/bilibili/` | `summary_{日期}.md` |
| 知乎筛选 | `~/Documents/zhihu_filter/` | `result_{日期}.html` |
| 通用音视频 | `~/Documents/podcast_summaries/` | `summary_{日期}.md` |
| 深读分析 | `~/Documents/Codex/summaries/deepdive/` | `{日期}.md` |
| 启发记录 | memory 目录 | `learnings_{日期}.md` |
| 综合汇总 | 对应目录 | `*_all.md`（多条合并时） |

---

## 注意事项

- 首次运行弹 macOS 授权，引导用户点击允许
- 链接总结分批进行，每组独立保存
- 暂缓 / 人工处理列表首次使用自动创建
- 分发无匹配的事项不要静默跳过，汇总问用户
- 每次信息处理后必须：保存文件 + 写 memory 启发
- 本 skill 的核心价值在于**分类决策框架**和**自动分发机制**——用户可根据自己的 skill 库和列表结构调整映射关系
