2026-10-06 · 原文发布日
拍下购物小票,算出你家自己的通胀率
把官方CPI变成个人体感对比:通过表单或Telegram上传购物小票照片,Gemini提取商店、日期和逐条商品,借助Data Table里沉淀的映射关系把不同写法的商品归一成统一口径,算出单价并入库。积累至少两个月的小票后,工作流按你的消费权重算出个人月度通胀率,同时从美国BLS公开接口拉对应CPI序列做同口径对比,再让Gemini写一段经济学家式点评,可选ElevenLabs生成语音版,按入口回发HTML报告或Telegram消息。
原文要点
原模板入口是n8n Form或Telegram bot;图片由Gemini抽出商店、日期与可购买行项目,先查Data Table复用既有商品映射,新写法再交给Gemini agent给一致product key。它计算单价并upsert到receipt_economist_lines,按设置的美国BLS series拉官方CPI,用最近两个有票月份做消费权重个人通胀并与官方同月变化比较,再由Gemini写点评,可选ElevenLabs语音,按来源回HTML或Telegram。
这次做成什么
做成一个家庭小票实验:表单/Telegram触发→图像抽取→商品名归一→入库→满两个月后计算个人月度通胀并与CPI同口径比较→分入口回报。本站用虚构两个月小票和映射表先跑通计算,不承诺识别真实票据准确率。
准备什么
- n8n带Data Tables,首次运行可自动建receipt_economist_lines
- Google AI Studio Gemini key,用于读图、归一与写点评
- 可选ElevenLabs key用xi-api-key头,不需要语音可跳过
- 可选Telegram BotFather token,不需要机器人入口可只用Form
- Settings里要确认BLS series ID、币种符号、fallback official rate与旁白提示
- 至少准备两个不同月份的小票或合成行项目,单月无法算环比
具体怎么做
建入口与凭据
导入n8n.io/workflows/20532模板到测试实例,先用n8n Form trigger,不急着接Telegram。Gemini节点选Google AI Studio凭据;ElevenLabs与Telegram节点先禁用。运行一次让系统创建receipt_economist_lines。
核对Settings
在Settings设BLS series ID;仅当小票为美元且对比美国CPI时,才用CUUR0000SA0作US CPI-U示例并把label填US CPI-U。若家庭账本用¥或中国口径,不能只改currency_symbol,必须同步把官方指数HTTP Request节点换成对应国家/地区统计口径,并调整Calculate节点的月份与指数差值计算;fallback_official_rate可暂设0.021,narrator_prompt用下面提示词。
准备商品映射
在Data Table预置mapping:raw_text包含全脂牛奶1L、MILK WHOLE 1L都映射product_key=milk_1l;鸡蛋12枚映射egg_12;东北大米5kg映射rice_5kg。新写法进入Gemini agent时必须返回已有key或新建稳定key,禁止按商店改名。
上传两个月合成小票
用示例input的8月与9月行项目分两次提交。工作流应抽出store、date、items,计算unit_price,upsert行项目;9月全部入库后才触发计算分支,取最近两个有票月份2026-08与2026-09。
分入口输出
Form提交返回HTML报告;若启用Telegram,则回复文本加可选语音。报告字段固定为personal_rate、official_rate、gap、top_contributors、economist_note;没有两个月数据时只回已入库提示,不输出通胀结论。
可直接复制的材料
小票抽取与归一提示词
本站编写示例;实际图片模型名、温度与JSON模式请在原Gemini节点核对。
你是家庭账本结构化助手。输入是一张购物小票图片或OCR文本,以及已有product_key映射表。输出严格JSON:store字符串;purchase_date用YYYY-MM-DD,无法判断用null;items数组,每项含raw_text原文、product_key、quantity数字、unit_price数字、line_total数字、currency。归一规则:同商品不同写法复用已有product_key;规格不同必须新建key,例如milk_1l与milk_2l不得合并;赠品、折扣、塑料袋、押金不计入items;line_total缺失时用quantity乘unit_price补齐并标estimated=true;任何无法确定的字段填null,不要编造商店、日期或价格。只输出JSON,不要解释。报告旁白提示词
本站编写示例,用于Gemini写economist note;语音化时再交ElevenLabs。
你是谨慎的家庭经济观察员。输入已经算好personal_rate、official_rate、gap、月份范围、top_contributors与fallback标记。写150字内中文点评:先承认这是家庭小样本,不等于全国通胀;再解释个人权重为何可能高于或低于官方;最后给三条可执行动作,如锁定高频品预算、替换规格、补录缺失小票。不得说已预测未来,不得把fallback_official_rate当成真实官方值,若fallback为true必须提示需检查BLS接口。合成小票与映射CSV
虚构练习数据;上半段是行项目,下半段是归一映射,可导入Data Table测试。
month,store,raw_text,product_key,quantity,unit_price,line_total
2026-08,社区超市,全脂牛奶1L,milk_1l,2,3.50,7.00
2026-08,社区超市,鸡蛋12枚,egg_12,1,4.20,4.20
2026-08,社区超市,东北大米5kg,rice_5kg,1,18.00,18.00
2026-09,社区超市,MILK WHOLE 1L,milk_1l,2,3.80,7.60
2026-09,社区超市,鲜鸡蛋一盒12,egg_12,1,4.80,4.80
2026-09,社区超市,大米5kg东北,rice_5kg,1,18.90,18.90
raw_text,product_key
全脂牛奶1L,milk_1l
MILK WHOLE 1L,milk_1l
鸡蛋12枚,egg_12
鲜鸡蛋一盒12,egg_12
东北大米5kg,rice_5kg
大米5kg东北,rice_5kg输入与输出示例
本站虚构演示,未运行模板;输出数字由上面input手工对应,便于核对Calculate节点。
输入
8月:牛奶1L单价3.50买2,鸡蛋12枚4.20买1,大米5kg18.00买1,合计29.20;9月同规格牛奶3.80买2,鸡蛋4.80买1,大米18.90买1,合计31.30;官方同月变化按fallback设为2.1%。对应输出
以8月消费额为权重:牛奶23.97%、鸡蛋14.38%、大米61.64%。三项涨幅分别8.571%、14.286%、5.000%,加权个人月度通胀约7.19%;official_rate=2.10%,gap=+5.09个百分点。贡献拆分约为大米3.08个百分点、牛奶2.05个百分点、鸡蛋2.05个百分点,因此top_contributors应写大米贡献最大、牛奶与鸡蛋相近,而不是只列大米与鸡蛋。报告应写:家庭样本偏小,本轮主要由米类拉动;若fallback_official_rate=true,需提示BLS接口未成功而非采用真实官方值。做完检查这些
- receipt_economist_lines在首次运行后自动创建且可upsert
- 同一商品不同写法被归到同一product_key,不同规格不合并
- 只有两个月都有行项目时才进入通胀计算分支
- 个人率使用8月消费权重而非简单平均涨幅
- official接口失败时使用fallback并在报告中显式标记
- Form入口回HTML,Telegram入口回文本或语音,不回错渠道
容易卡住的地方
- 单月小票无法得到月度环比,工作流应只入库不出结论
- BLS series与币种、国家口径不一致会让比较失真
- Gemini抽图可能把折扣或押金当商品,提示词必须排除
- 无锁定规格或单位混杂时unit_price不可直接比较
- ElevenLabs与Telegram是可选项,缺凭据不应阻塞核心计算
- 原模板节点名与参数未由本站实测,导入后以画布实际为准
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Compare personal grocery inflation to US CPI with Gemini and Telegram
- 原作者
- Alicia Graham
- 原始发布日期
- 2026-10-06T11:50:04.325Z
- 来源
- https://n8n.io/workflows/20532