记账这件事,我用 Notion 手工做了好几年,现在几分钟就跑完一年的数据
从手工搬运银行流水到自动化财务报告的重建过程

记账这件事,我用 Notion 手工做了好几年,现在几分钟跑完
每年报税季之前,我都要做同一件事:把过去一年的收支整理清楚。
实际操作时间大概半天。但那一整天基本上就废了——上午想着"今天要做这件事",中午开始进入状态,下午在各个银行账户、PayPal、Wise 之间来回切换,导出流水,复制到 Notion,一条一条对分类,晚上收尾。身体坐在那里,脑子里全是数字。
半天操作,一整天注意力。
今年我把这个流程重新建了一遍,现在是:把 CSV 文件丢进去,跑一条命令,报告直接出现在 Obsidian 里。

Notion 时代是怎么做的
我不是没有系统。用 Notion 记账有好几年了,数据库、视图、分类标签,设计得挺完整。

问题是这套系统完全靠手工喂数据。
流程大概是这样:登录每个银行账户,找到导出功能,下载 CSV,打开 Notion,一行行对照着把收入和支出填进去,然后手动打分类标签——这笔是咨询收入,那笔是工具订阅,这个 PayPal 转账不知道是什么,先留着。
有几个地方特别磨人:一是多账户。我有 ASB 个人账户、ASB 商业账户、Wise 和 PayPal,四个地方的流水格式各不相同,没有办法合并看。二是分类靠记忆。时隔几个月回来看一笔转账,根本想不起来是干嘛的,只能去翻邮件或者猜。三是内容收入完全对不上。从 YouTube、播客平台、社交媒体打过来的钱,经过好几手中间账户才到银行,银行流水里看到的只是一笔匿名转账,跟平台对账要另外手动查。
做完之后数字是有了,但心里永远不确定:有没有漏掉什么?分类准不准?
为什么想重建这个流程
触发点是去年整理数据时发现一条内容收入线的数字严重偏低——后来对账才确认,实际金额跟账本记录差了将近一百倍。
这条线的钱一直在进来,只是每一笔都走了不同的中间账户,Notion 里根本没有对应的入账记录。这不是粗心,是系统结构性的漏洞:当数据要从多个平台汇集到一个地方,纯手工根本跑不赢这个复杂度。
那次之后我就决定认真做一个自动化的版本。
目标很简单:给我一份可信任的报告,不需要我在做之前先"准备好心情"。

新流程是怎么搭的
整个项目用 Python 写,核心逻辑分几层。
第一层是标准化。每个账户导出的 CSV 格式都不一样,有些字段名不同,有些日期格式不同,有些金额有货币符号有些没有。标准化这一步把所有账户的数据统一成同一个 schema,后续处理只需要面对一种格式。
第二层是分类。我维护了一个关键词规则表——比如看到"FIGMA"就归为工具订阅,看到"CAREERFOUNDRY"就归为咨询收入,看到"PAYPAL FEE"就归为平台手续费。规则表覆盖不到的部分,调用 Claude API 做二次判断,置信度低的进入人工审查队列。
第三层是内容收入补录。这是最特殊的一块。播客、YouTube、社交媒体打过来的钱,路径太复杂,从银行流水反推几乎不可能。解决方法是直接读平台的原始导出记录作为权威来源,再用日期和金额做交叉比对,看银行里有没有对应的转账入账。匹配到就标记关联,没匹配到就进审查队列,但收入本身不因为银行流水缺失而漏记。
最后是报告生成。跑完之后生成一个 Markdown 文件,直接写到 Obsidian 的财务文件夹里,打开就能看。
现在的体感
现在的操作流程是:把各个账户的 CSV 导出,放进指定的文件夹,跑一条命令。几分钟之后报告在 Obsidian 里。
改变最大的不是时间,是心理负担。
以前到了要做这件事的时候,总是在拖——不是因为懒,是因为知道一旦开始就要全天投入,而且做完还不一定有把握。现在这件事从"要专门腾出一天"变成了"顺手的事"。
数字可信度也高了。系统跑完会标记所有置信度低的条目,我知道需要人工确认的是哪几条,其余的不需要再怀疑。之前那种"应该差不多对"的模糊感消失了。
接下来想做什么
现在报告是每次手动触发生成的。下一步想把它做成定时任务,每个月自动跑一次,这样就不需要等到"要用数据了才去整理"。
还有一个想法是把月度数据做成趋势图,不只是每次看一个静态快照,而是能看到各条收入线随时间的变化。这对判断哪条线在增长、哪条线在萎缩会有帮助。
你有没有类似的手工流程想用自动化替掉?或者已经有了自己的一套方案?欢迎告诉我,我很想知道其他人是怎么解决这个问题的。





