| name | read-weread-coach |
| description | 微信读书教练 — 把读过的书"用起来"。三种用法:(1) 推荐 - 想搞懂一个领域时,先判段位再给阶梯书单;(2) 引用 - 写作时基于已读划线给出可引用的书与原话;(3) 回顾 - 每天推送一条历史划线,自动去重,支持手动与定时触发。触发词:"我想搞懂 XX"、"入门书单"、"阶梯书单"、"我想引用一本书"、"这个观点哪本书讲过"、"今日笔记"、"推一条划线给我"、"读书回顾"。 |
weread-coach — 微信读书使用教练
把读过的书"用起来"。覆盖三个真实场景:学新东西、写东西要引用、把读过的东西反复激活。
前置依赖
weread-skills 已安装
- 环境变量
WEREAD_API_KEY 已配置
- 缓存目录:
/tmp/read-weread-coach/(数据缓存 24 小时)
- 状态目录:
~/.claude/skills/read-weread-coach/state/
功能 1:推荐 · 阶梯书单
触发词
- "我想搞懂 XX / 入门 XX / 学 XX"
- "给我一个 XX 阶梯书单"
- "XX 从哪本书读起"
流程
步骤 1:判段位(必问)
你目前对【XX】的水平?
a. 完全新手,零基础
b. 听说过、读过零星文章,没系统
c. 有一定基础,想突破到前沿
d. 已经熟练,想找冷门好书
步骤 2:拉用户书架数据
调 /user/notebooks + /shelf/sync 获取已读+在读书单。
步骤 3:生成 5 层阶梯书单
| 层级 | 用途 | 数量 |
|---|
| ① 引子 | 一篇文章或一本薄书破除门槛 | 1 |
| ② 入门 | 体系化的基础书 | 1-2 |
| ③ 经典 | 该领域绕不开的奠基作 | 1-2 |
| ④ 前沿 | 近 3-5 年的代表作 | 1-2 |
| ⑤ 实践 | 把知识转化为行动的工具书 | 1 |
步骤 4:标注
- 用户已读 → 标 ✅ + 标记 "你已读 X% / Y 条划线"
- 在书架但没读 → 标 📚 "已在书架"
- 完全新书 → 标 🆕
根据段位调整起点:a 从 ① 开始,b 从 ② 开始,c 从 ③ 起跳,d 直接到 ④⑤。
步骤 5:给出 1 条建议
基于阶梯的第一个未读项,告诉用户:本周读哪本,预计多久,读完做什么。
功能 2:引用 · 从已读书中找证据
触发词
- "我在写关于 XX 的内容,能引用哪本书"
- "这个观点哪本书讲过"
- "我想引用一个关于 XX 的观点"
流程
步骤 1:确认引用主题
让用户用一句话说清楚:要论证的观点 / 文章的角度。
步骤 2:在用户已读语料中检索
执行:
python3 ~/.claude/skills/read-weread-coach/scripts/fetch_corpus.py
脚本会缓存 /tmp/read-weread-coach/corpus.json(24h 内复用)。
然后扫描两个语料库:
marks_corpus:所有划线原文
reviews_corpus:所有想法/书评
按关键词 + 语义匹配,找出 5-8 条最相关的划线/想法。
步骤 3:输出
每条引用包含:
- 划线原文(≤ 50 字)
- 书名 + 作者
- 划线时间
- 建议用法:直接引用 / 作为论据 / 反向引用(用作对照) / 改写后用
步骤 4:若已读不够用
当用户已读语料中找不到 3 条以上强相关时,额外推荐 2-3 本未读但相关的书(来自 weread 商城或经典推荐)。
功能 3:回顾 · 每日推送一条划线
触发词
- "今日笔记 / 推一条划线 / 读书回顾 / 给我一条今日 review"
- 或由
/loop / OpenClaw cron / Claude Code schedule 定时触发
流程
步骤 1:保证缓存最新
执行 scripts/fetch_corpus.py(自动跳过 24h 内缓存)。
步骤 2:调脚本挑选并写入历史
python3 ~/.claude/skills/read-weread-coach/scripts/pick_review.py
脚本逻辑:
- 加载所有划线(来自 corpus.json)
- 过滤掉
state/review_history.jsonl 中已出现过的 bookmarkId
- 按时间反向加权(越老的越可能被选中,激活遗忘的内容)
- 输出 JSON:bookmarkId / 书名 / 作者 / 章节 / 划线原文 / 划线时间
- 追加到
state/review_history.jsonl
步骤 3:包装输出
格式示例:
📖 今日回顾 · 2026-05-19
《书名》— 作者
🔖 第 X 章 · 划线时间 YYYY-MM-DD
> 划线原文(最长 100 字)
💭 一句话激活提问:
基于这条划线给一个引导性问题,让用户回到当时的思考语境。
步骤 4:去重保证
review_history.jsonl 每行一个 JSON:{"bookmarkId":"...","shown_at":"YYYY-MM-DD HH:MM"}
- 当所有划线都已被推送过一遍后,清空历史重新轮(脚本会在没有未推送项时自动重置,并提示"已完成全集一轮,开始第 N 轮")
定时推送配置
选项 A:Claude Code /loop
在终端执行:
/loop 1d 推一条今日读书回顾给我
选项 B:OpenClaw / cron
crontab 加一行(每天早 8 点):
0 8 * * * /usr/bin/python3 ~/.claude/skills/read-weread-coach/scripts/pick_review.py --notify
脚本带 --notify 时会调用 macOS osascript -e 'display notification' 发送系统通知。
选项 C:Claude Code schedule skill
/schedule create "每天 8 点推送一条微信读书回顾" --cron "0 8 * * *"
通用注意事项
- 不重复抓取:三个功能共享
/tmp/read-weread-coach/corpus.json,24 小时内不重抓
- 去重严格:回顾功能必须用
bookmarkId 作为唯一键,不能因为划线内容相同而误判
- 加密风险:API Key 不要写入任何缓存文件,只从环境变量读
- 回顾的"激活提问"质量:不要敷衍写"你怎么看"。要结合划线内容设计具体问题,例如对斯多葛划线问"今天哪件事最适合用这条原则"
- 引用功能避免幻觉:只输出真实存在于用户语料里的划线原文,不要编造