安全与风控
当需要逐篇清理 Readwise Reader…
适用于有 Readwise Reader 访问权限、想按每篇一屏方式处理新保存文档并获得为何读/为何跳过建议的场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
当需要逐篇清理 Readwise Rea特定
解决思路
- 检查 Readwise MCP 工具是否可用(如 `mcp__readwise__reader_list_documents`);可用则全程使用 MCP 工具;不可用则改用等价的 `readwise` CLI 命令(如 `readwise list`、`readwise read <id>`、`readwise move <id> <location>`),并将下文中的 MCP 工具名翻译成对应 CLI 命令。
- 检查当前工作目录是否存在 `reader_persona.md`;若存在,读取并用于个性化所有 pitch、优先级和评论,把“why read / why skip”的理由贴合 persona 中描述的兴趣、目标和性格。
- 若没有 `reader_persona.md`,简要说明分诊会不够个性化,并建议先运行 `build-persona` skill,但不要等待,直接继续;若显示这条消息,在其后、收件箱概览之前加上 `· · ·`。
- 用 `mcp__readwise__reader_list_documents` 拉取收件箱文档,参数为 `location="new"`、`limit=10`、`response_fields=["title", "author", "category", "word_count", "reading_time", "summary", "url", "site_name", "published_date", "saved_at"]`;文档按最近保存优先返回。
- 给出收件箱概览,严格使用格式:`**📬 Reader Inbox · {count} documents**`,然后 `Welcome! Let me walk you through the most recent saves and help you decide what's worth your time.`,再用 3-4 句话概括这批文档的主题、模式、内容组合,标注相关阅读聚类或有意思的对比;若有 persona,则个性化点名与其兴趣匹配或形成反差的内容;最后写 `Let's start with the most recent thing in your inbox:`,再写 `· · ·`。
- 进入分诊循环:从最近保存的文档开始,一次只呈现一篇,每篇使用固定格式。
- 渲染文档卡片:在代码块中画 ASCII 框,所有行补齐到相同宽度,使右侧 `│` 边框对齐;结构为 `┌──────────────────────────────────────────────────┐`、`│ {Title — wrap to multiple lines if needed} │`、`├──────────────────────────────────────────────────┤`、`│ {Author} · {site_name} · {category} · {time} │`、`├──────────────────────────────────────────────────┤`、`│ {n} / {total} {relative date} │`、`└──────────────────────────────────────────────────┘`。
- 将 `saved_at` 转换为人类友好的相对日期,如 "Saved today"、"Saved yesterday"、"Saved 3 days ago" 等。
- 卡片后给出 pitch:先用 2-4 句话、用自己的话基于 summary 综合成一段叙述,说明这篇讲什么;不要只是复述 summary 条目。
- 写 "Why read:":给出真实、有观点的推荐理由,说明为什么值得用户花时间;相关时连接到用户收件箱中的其他内容或最近读过的内容;若有 persona,则连接到其兴趣/目标。
- 写 "Why skip:":给出诚实的不必读理由;要真实,不要轻蔑敷衍。
- 呈现固定选项:`**[Read]({url})**` — open in Reader;`**Later**` — move to Later;`**Archive**` — got the gist;`**Something else**` — tag, shortlist, etc.。
- 在选项后写:`*(If you read it, let me know and I'll archive it for you)*`。
- 切换到下一篇文档时,在下一张卡片前使用 `· · ·` 作为视觉分隔符。
- 处理 "I read it" / "read" / "done" / "great" 或类似回复:用 `mcp__readwise__reader_move_documents`,参数 `document_ids=[<id>]`、`location="archive"` 归档该文档,然后进入下一篇。
- 处理 "Later":将文档移动到 `later` 位置,然后进入下一篇。
- 处理 "Archive" / "skip":归档该文档,然后进入下一篇。
- 处理 "Something else":询问用户想做什么(打标签、加入 shortlist 等),执行后继续。
- 处理 "Tell me more" / "What's it about?" 或任何要求更多细节的回复:用 `mcp__readwise__reader_get_document_details` 拉取完整文档内容,基于实际文本给出更深入、更有依据的 pitch,然后重新呈现选项。
- 处理 "PERSONALIZE":告诉用户运行 `build-persona` skill 来构建 persona;构建完成后恢复分诊。
- 当前一批 10 篇处理完后,再拉取下一批 10 篇并无缝继续。
适用边界 · 注意事项
- 没有 Readwise Reader 访问权限、MCP 工具或 `readwise` CLI 时无法执行。
- 用户希望批量自动清理而不逐篇确认或阅读时,这种逐篇交互流程不合适。
- 没有 `reader_persona.md` 时仍可运行,但个性化推荐效果会下降,不应用于强依赖 persona 的场景。