日报除了告诉我今天有什么,还要把报名、申报、考试、答辩这类会过期的事项提出来。
做每日简报时,我最容易低估的一类信息是截止事项。它不像热门项目或长文章那么显眼,但错过以后很难补。
它们不一定最有趣,但最容易过期。
学校通知、报名公告、申报入口、答辩安排、考试时间,看起来都只是信息流里的普通条目。不过它们和普通资讯不一样:错过了就直接失效。
所以 daily-open-source-brief 里后来加了一个很朴素的能力:从公开网页和 RSS 条目里抽取截止日期,把它们从“可读信息”提升成“需要处理的事项”。
公开仓库在这里:
https://github.com/GitLaughs/daily-open-source-brief日报不是另一个收件箱
如果日报只是把 GitHub、RSS、公开网页通知聚合到一起,它很容易变成另一个收件箱。
收件箱的问题通常不是没有信息,而是所有信息看起来都在同一层。一个有趣的开源项目、一条课程通知、一篇行业新闻、一个明天截止的报名入口,混在一起时,人会自然先看标题更吸引人的那几条。
但从行动价值看,截止事项应该被提前。
这也是我不想只靠摘要模型“顺便提一下”的原因。截止日期要先被结构化识别出来,再交给摘要、渲染、周报和后续提醒使用。
先用规则抓强信号
截止日期抽取没有一上来就做复杂 NLP。第一版更接近确定性规则:
报名截止 2026年6月5日答辩时间:6月10日2026-06-05 前完成确认这些模式并不覆盖所有自然语言,但它们覆盖了最值得优先处理的强信号。
代码里把标题、摘要和详情正文分成不同字段扫描。标题命中的置信度最高,摘要次之,详情正文再低一些。没有年份的 6月10日 会用当前年份补齐,但置信度会被压到较低水平。
这个取舍很实际:越靠近标题,越可能是通知的主时间点;越靠近正文,越可能是辅助说明。系统不需要假装它百分百理解,只要把置信度表达出来。
过期事项不能继续吓人
截止事项还有一个特殊状态:过期。
如果今天是 2026-05-25,一条“报名截止 2026年5月1日”的内容即使被规则命中,也不该再作为高优先级提醒出现。它可以保留为历史记录,但不能继续占据日报最前面。
所以抽取结果会标记状态:
pending -> 还没过期,可以提醒expired -> 已经过期,只保留证据过期事项的置信度也会被压低。这样做不追求数学上精确,主要是让排序和展示更符合人的直觉:已经错过的事情应该进入回看,不该继续像待办一样催促。
抽取结果要进数据库
只在当次日报里插入几行文字还不够。
截止事项应该进入独立的 deadline_events 表,至少保存这些字段:
- 关联的原始 item。
- 标题。
- 事件类型。
- 截止日期。
- 置信度。
- 来源链接。
- 当前状态。
这样它才可以被后续流程复用。今天的日报可以置顶它,HTML 归档可以展示它,周报可以列出未来 7 天内的截止事项,后续也可以把高置信度事项同步到任务或日历。
如果只把它写进一段摘要文本,信息就死在当天了。结构化保存之后,它才变成可以查询、去重、提醒和回看的资产。
放在 enricher 阶段更合适
在插件流水线里,deadline 不属于 collector。
collector 的职责是把外部来源抓回来,变成统一 item。截止日期抽取发生在 item 已经存在之后,它是对内容的派生增强,所以更适合放在 enricher 阶段。
大致流程是:
web/RSS item -> deadline enricher -> deadline_events -> digest/render/weekly这个范围让系统更好维护。以后如果要换抽取规则、加地点识别、加日历同步,不需要改网页采集器,也不需要让摘要器承担结构化解析职责。
摘要要优先看行动项
确定性模板摘要里,如果存在未过期的截止事项,会先生成“今日优先处理”。
这点很关键。很多信息流工具会把时间敏感内容和普通资讯混排,最后用户还是要自己扫一遍标题找重点。日报系统既然已经识别出了截止事项,就应该明确改变输出结构。
我希望打开日报时,第一眼看到的是:
哪件事有截止日期什么时候截止原始链接在哪里而不是先看一堆“今日值得阅读”的内容,再从中猜哪些需要行动。
HTML 和周报也要复用同一份数据
同一份 deadline_events 不只服务文本摘要。
HTML 归档里有单独的“截止事项”区域,展示事件类型、日期、标题、链接和置信度。周报则会拉取未来 7 天内的截止事项,放进“未来 7 天截止事项”。
这样每日和每周两个视角不会割裂:
今天:先处理当前看到的强时点事项本周:回看未来 7 天还有哪些事项临近它不是完整 GTD 系统,但已经比“我记得日报里好像看过”可靠很多。
测试覆盖的是行为边界
这类功能最怕悄悄误抽取,所以测试除了函数能不能运行,还要覆盖几个范围:
- 完整日期能抽取出正确 ISO 日期。
- 只有月日时使用当前年份,并降低置信度。
- 已经过期的事项会标记为 expired。
- deadline 插件会把事件写入数据库。
这些测试不保证规则覆盖所有语言表达,但保证最重点的行为不会被后续重构破坏。
对个人自动化工具来说,这种测试尤其重要。因为它每天跑,很多错误不会立刻炸掉,只会悄悄把重点漏掉。
最后形成的经验
做信息流工具时,“帮我总结”只是第一层需求。
更深一层是:
帮我判断哪些东西会过期帮我把它们放到更靠前的位置帮我保留原始链接和结构化记录帮我在周报里再次提醒这也是我越来越喜欢把个人工具做成小而确定的流水线。模型可以负责表达,但行动字段最好先被明确抽出来。
一个日报系统如果只会讲今天发生了什么,它只是阅读工具。
能把截止事项提出来,它才开始像一个日常助手。
继续读