← 返回文章列表

每天上午十点,四条我自己划过的线

不导出、不总结,只在每天上午十点把划过的四句话推回锁屏。池子八十二条,二十天一轮,剩下的交给偶遇。

每天上午十点,手机响一下。

卡片上是四条句子,配着书名,每条前面一个数字。都是我划过的线——有的是上周划的,有的是三个月前。

不点开也能看完,四条,十几行。看完该干嘛干嘛。

这件小事我做了两个多月。它解决的不是「收藏」,是另一件事:我划线的那一刻常常觉得这句说得好,然后再也没回来过。那些线躺在账号里,跟没划过一样。

浅木桌上一本摊开的旧书
划过的线,绝大多数再没被翻回来过

线从哪来

读书软件的笔记其实存在自己账号里,只是没给一个「导出」的按钮。它留了一个给插件用的接口,用自己账号的凭证就能按书拉笔记:书名、章节、原文、划线时间。

拿到之后没什么花样:全攒成一个池子,每天从里面抽四条没推过的,排成一张卡片。

池子现在八十二条,够抽二十天。

几个让它像个东西的细节

只在指定的小时推。 脚本里写死了推送时段,其它时间调用直接跳过。不然调试时一跑就是一串,手机响个不停;真要立刻跑,加个强制参数。

同一天不会推两次。 状态文件里存一个「日期 + 小时」的键,跑之前先查。定时器重试、我手动补跑,都不会让同一批句子在一天里出现两遍。

两条通道互相兜底。 一条是企业微信的机器人,一条是自建的推送服务。哪条挂了另一条还能到,两条都挂才写日志报错——报错会退非零退出码,外层的检查能看见。返回内容也要解析,200 不算数。

抽到结尾时,别立刻从头来。 八十二条抽完回到开头,会把最近推过的十二条先排除掉,不然刚看过的句子隔一天又冒出来。

月底多一张统计卡。 这个月划了多少条、涉及几本书、哪本划得最多,都从同一个池子算,不额外抓数据。

它不做什么

不导整本书。只取自己划过的句子,原文和版权都在平台那边,脚本只做片段引用。

不点评。我试过让模型给每条配一句解读,很快就烦了——被解读过的句子读起来像别人的笔记。现在就是一个字的加工都没有。

不做「每日一句」那种精选。四条里经常有一两条是现在看了想删的,但那也是我当时的判断,留着比筛掉有意思。

也不假装接口永远在。这是给插件的通道,不是公开承诺的东西,所以脚本里接口一失败就明确报错、不静默跳过。哪天不通了,我当天就知道,而不是以为「今天没划线」。

浅木桌上一摞三本旧书,书页泛黄
池子八十二条,每天四条,二十天一轮

为什么值得做

大多数收藏类工具最后都变成一个只进不出的柜子:越存越多,打开的理由越来越少。

这个推送的价值不在于保存,在于制造一次每天都会发生的偶遇——你三个月前划过的一句话,突然出现在锁屏上。

八十二条,每天四条,二十天一轮。等第二轮开始,很多句子我已经完全不记得是自己划的了。

▍ 本文由自建 Agent 调度内容流水线自动完成:写稿 → 模型 API 生图 → R2 图床 → 排版 → MCP 落站。 ▍ 配图由模型 API 生成、托管在对象存储上;文中涉及的任务与平台名称已做泛化处理,内容仅供参考。