[控场AI]
· 7 分钟阅读· 3,674 字

用 n8n 搭建 Telegram 记账机器人:每条仅需 0.01 美元

用 n8n 搭建 Telegram 记账机器人:每条仅需 0.01 美元

把记账搬进 Telegram,用 15 节点无 AI 工作流做到一行文字记账、51 条实测零失败。

文章剖析了一个把记账从独立 App 迁移到 Telegram 的 n8n 工作流。它指出所有记账应用真正败在手动录入的摩擦,因此改用一行文本消息作为输入界面。工作流共 15 个节点,核心是一个纯 JavaScript 启发式解析器:正则抽金额、关键词映射类目,能处理带或不带美元符号、小数与整数的多种写法。设计上刻意克制——识别不了的商户归入 other 而不硬塞,消息没有金额时反问而不猜测。51 条消息实测零失败,46 条带金额消息 100% 正确,响应最慢 1.53 秒。作者公开 mislog,指出上线前需把启发式换视觉模型、本地账本换 Sheets/Airtable、模拟 Telegram 端换 BotFather token。

记账应用的死穴:手动输入

每月月底打开银行 App,余额总比预期的少。847 美元不见了——咖啡、Uber、凌晨一点下的亚马逊订单,你根本说不清钱花在哪。这个场景太熟悉了。市面上所有记账应用都败在同一个地方:它们需要你手动录入数据。买杯咖啡,你得打开 App、点添加、输入金额、选分类、保存。一周四十次,没人坚持得下来。于是应用里只躺着年初的三笔记录,而钱继续无声蒸发。真正的摩擦不是预算管理本身,而是打字。

YouTube 上一位创作者给出了不同的思路:与其找个更好的 App,不如干脆不用 App。你本来每天就在发消息,那就把记账工具放在你拇指已经习惯的位置——Telegram。一行文字,没有表单,没有分类选项,工作流自己负责解析。「Groceries 67」自动变成杂货类目、67 美元,一秒内记录并确认。

15 个节点的工作流拆解

为了让演示可度量而非玄学,创作者坦白了几个前提:实验室里没有 Telegram bot token,所以 Telegram 端是模拟的,他直接把 Telegram 会发送的原始 JSON 载荷喂给工作流,并明确指出你的 token 该插在哪里——BotFather 免费,两分钟搞定。核心大脑是关键词启发式规则,不是实时 AI 模型,用纯 JavaScript 匹配金额和类目关键词。账本存成本地文件,而非 Google Sheets。其余部分全部是真的:真实 webhook、真实执行、真实计时。

工作流解析与账本节点

工作流共 15 个节点,大约 45 分钟搭建完成,其中大部分时间花在整理类目关键词列表上:

Webhook 节点是前门。消息以 JSON 载荷到达,包含发送者、文本和时间戳。IF 过滤器在任何昂贵操作之前先清掉空消息和垃圾标记。代码节点是启发式大脑,读取「Uber 1820」并抽出三样东西:金额 1820、商户 Uber、根据关键词映射得到类目 transport。它能处理带或不带美元符号、带或不带小数点、整数金额的各种写法。

接下来的路由逻辑很关键:命令检查判断是否为「/week」,是则跳过记账直奔摘要。金额检查处理没有金额的消息,比如一句光秃秃的「lunch?」,它不猜,而是反问你要数字。然后账本节点把支出追加到本地文件,并读回今日累计。确认回复形如「Logged. Uber 1820 Transport. Today so far, $41.10」。摘要路径则拉取过去七天数据,按类目汇总,与上一个七天对比,回复完整明细。

确认回复与过滤节点

Webhook 是一种让外部服务主动向你的程序推送数据的机制。传统 API 需要你不断轮询(polling)服务器"有没有新消息",而 webhook 相当于你留下一个网址,Telegram 一旦收到消息就立刻把 JSON 数据 POST 到这个地址。文中提到的 JSON 载荷就是这种推送的数据格式,形如 {"sender":"...","text":"Groceries 67","timestamp":...},工作流后续所有解析都基于这个结构。BotFather 是 Telegram 官方的机器人管理入口,在对话中发送 /newbot 即可免费创建机器人并获取一串 token,这串 token 就是你的程序调用 Telegram 接口、接收消息的身份凭证,文中把它插入 n8n 的 Telegram 触发器即可完成对接。

解析器的克制设计

解析器是大多数演示作弊的地方,而这里的处理方式值得细看。金额正则能捕获 $4.50、$18.20、67,带不带美元符号、带不带小数都行。类目映射覆盖餐饮、交通、杂货、订阅、住房、购物、健康等约 40 个关键词。

设计上有一处刻意的取舍:任何无法识别的商户都归入「other」,而不是硬塞进某个错误类目。创作者的理由是,错误分类比没有分类更糟,它会无声地污染你的数据。同理,当消息里完全没有金额时,机器人会反问你,而不是瞎编。一个会凭空编造金额的记账工具是负债,不是资产。

这种克制在整个产品里贯穿始终。他反复强调,一个会幻觉你消费记录的工具,比没有工具更危险。

启发式规则(heuristic) 指的是不依赖机器学习模型、而是靠人工编写的经验性判断来解析数据的方法。本文用的是关键词映射加正则表达式:正则负责从文本中抽取金额(例如匹配 \$?\d+(\.\d+)?),关键词表负责把「Uber」「Starbucks」这类词对应到 transport、food 等类目。这种方案的优势是零模型成本、可预测、响应快(毫秒级),代价是只能处理你预先教过的写法——遇到没见过的句式、拼写变体或多币种就可能出错。这也是作者明确要求上生产前换成视觉模型的原因:启发式适合格式固定的文本输入,视觉模型才能处理小票照片这类非结构化信息。

51 条消息的实测结果

这是全篇最有说服力的部分。创作者构造了 51 条测试消息,涵盖各种写法:小写随性风格、带美元符号、不带美元符号、小数、整数、商户在前、金额在前,以及边界情况——没有金额的「lunch?」、没有数字的「coffee」、几条垃圾消息,还有「/week」摘要命令。

实测的响应时间与典型案例

结果:零失败。每条消息都返回 HTTP 200。在 46 条带金额的消息中,46 条都记录了正确的金额和正确的类目,解析准确率 100%。没有金额的消息被正确地反问。垃圾消息被过滤,没有回复。零虚构金额,没有一笔记录是消息里没有的。

响应时间方面:最快 0.53 秒,中位数 0.82 秒,最慢 1.53 秒。用他的话说,「每一条回复都在一秒之内」。两个他最喜欢的案例:一条晚上 11 点的「Uber dollar 1820」,带美元符号的金额、商户、深夜时间戳全部解析成功,归入交通类目;以及那句光秃秃的「lunch?」——没有金额,没有猜测,机器人反问「try coffee 450」。这种克制就是整个产品的价值所在。

成本对比与上生产前的三处改动

成本是标题里的卖点。作为参照,一个每月 8 美元的记账应用订阅,如果你每月记 100 笔,光订阅摊到每笔就是 0.08 美元,还没算手动录入的时间。而这个工作流每笔是不到一美分的零头,录入方式只是一条文本消息。

创作者没有隐藏任何短板,明确列出上线前要改的三件事:

  1. 解析器是启发式的。它只能处理被教过的格式。真实部署中面对杂乱的小票照片,需要视觉模型,而这要按图片计费。
  2. 账本是本地文件。你会把这个节点指向 Google Sheets 或 Airtable,形状一样,换成真实存储。
  3. Telegram 端是模拟的。上线只需 BotFather 免费建机器人两分钟,把 token 粘进 n8n 的 Telegram 触发器,用自己的触发器替换 webhook 节点。工作流逻辑不变,只换前门。

为什么这个演示值得信任

创作者专门点了一句:「你大概看过那种一次就完美运行的自动化视频。这里是你不会在那些视频里看到的东西。」他公开了自己的 mislog——每一个启发式解析出错的例子、每一个边界情况、包括最慢那次的精确响应时间。他的判断标准很犀利:如果一次演示没有 mislog,那它就没有测量。

这恰恰是这段内容与其他「AI 自动化」视频的区别。它标注了哪些是实测、哪些是估算、哪些是模拟,坦白地告诉你哪些部分还没上生产。对一个面向普通用户的工具演示来说,这种诚实本身就是稀缺品。

如果你也想复刻,starter kit 就是那个工作流 JSON,导入 n8n,换上你的 bot token,把账本指向 Sheets,15 个节点、一个晚上,就再也不用琢磨钱去哪了。

mislog 是创作者自造的词,指记录"失败与偏差"的日志,与常见的成功演示截图相对。在自动化与 AI 演示中,一个只展示顺滑结果的视频往往隐藏了两类信息:一是失败率(多少条消息没解析对),二是延迟分布的尾部(最慢那次到底多慢)。公开 mislog 相当于把这两类信息摊开,让观看者能自行估算真实场景下的表现。文中那句"如果一次演示没有 mislog,那它就没有测量",本质是在区分演示(demo)与测量(measurement):演示只证明可能性,测量才给出成功率、延迟分位数、失败模式这些可用于决策的量化指标。

#n8n 工作流#Telegram 机器人#记账自动化#AI 自动化#无代码自动化#个人理财工具#关键词解析
分享:

相关推荐