2026-09-25 · 原文发布日
Telegram语音转任务和日程的n8n模板
触发器监听Telegram新消息,先按白名单核对发送者ID拦截陌生人。语音消息会被下载并用OpenAI转写,文字消息直接进入下一步:由OpenAI聊天模型按你的时区提取摘要、待办和日程的结构化数据,缺省的字段自动补齐、没给结束时间的日程套用默认时长。随后任务逐条追加到Google Sheets,日程写进Google Calendar,最后在Telegram回复一条人类可读的确认清单。模板免费。
原文要点
n8n模板(作者isaWOW,2026年9月25日发布,免费):Telegram触发器监听新消息,先按白名单核对发送者ID拦截陌生人;语音消息下载后用OpenAI转写,文字消息直接进入下一步;OpenAI聊天模型按所设时区提取摘要、待办、日程的结构化数据,缺失字段自动补齐,无结束时间的日程套用默认时长;任务逐行追加到Google Sheets,日程写入Google Calendar,最后在Telegram回复可读确认清单。表格需含Task、Source、Status、Due Date、Priority、Captured At六列。
这次做成什么
搭好这条"Telegram语音/文字→任务进表+日程进日历→回执确认"的工作流。由于原页面只提供模板本身,本站给出逐节点连接方案、字段映射、配置清单和一条测试数据,帮助你在导入模板后逐项核对,而不是凭空运行。
准备什么
- 一个可运行的n8n实例(云端或自托管均可),并能从n8n.io导入该免费模板
- Telegram Bot(通过@BotFather创建)及其API token,以及你本人的Telegram用户ID
- OpenAI API密钥(用于语音转写和聊天模型,调用会产生API费用)
- Google账号,预建一张含指定列的Google Sheet和一个目标日历,并完成OAuth2授权
具体怎么做
导入模板并接好Telegram触发器
在n8n.io/workflows/19928页面把模板导入自己的实例。打开Telegram Trigger节点,凭据选"Telegram Bot API",填入BotFather给的token。工作流激活后,先发一条消息给自己,在触发器输出里找到你的数字用户ID(from.id),把它填进配置区的allowed user ID——这是白名单,陌生人发的消息会在第一步被拦截,不进后续任何AI调用。
接语音转写与文字直通分支
模板内置判断:消息含语音则先走"下载语音文件"节点(用同一个Bot token调Telegram文件接口),再进OpenAI转写节点(填OpenAI凭据);纯文字消息跳过转写直接汇合。在OpenAI聊天模型节点确认时区参数已改成你的时区(如Asia/Shanghai),因为"明天下午三点"这类相对时间全靠它解析。
配置结构化提取与字段补齐
提取节点会输出摘要、任务数组、日程数组。核对规范化节点的默认规则:任务缺字段时自动补齐(如默认状态/优先级),日程没给结束时间时套用默认时长(配置区可改,例如60分钟)。本站建议在提取提示词里显式要求输出JSON数组,字段名与下一步映射一致。
映射Google Sheets与Calendar并回执
Google Sheets节点:选"追加行",目标选你预建的表格与标签页(如Captured Tasks),列映射为 Task←任务标题、Source←Telegram、Status←缺省"待办"、Due Date←解析出的截止日、Priority←优先级、Captured At←当前时间。Google Calendar节点:填目标calendar ID,映射开始/结束时间、标题和可选地点。最后Telegram回复节点用同一Bot凭据,把已保存的任务和日程拼成人话清单发回。
可直接复制的材料
结构化提取提示词(供提取节点核对/改写)
本站独立撰写,用于核对模板提取节点的行为;字段名需与你实际表格列名对齐。
你是个人信息助理。把用户发来的这段文字(可能由语音转写而来,时区Asia/Shanghai,当前时间见系统变量)解析成JSON,只输出JSON:
{"summary":"一句话摘要","tasks":[{"task":"任务标题","due_date":"YYYY-MM-DD或null","priority":"高|中|低"}],"events":[{"title":"日程标题","start":"ISO8601","end":"ISO8601或null","location":"地点或null"}]}
规则:没有截止日期的任务due_date填null;没给结束时间的日程end填null(由后续节点补默认时长);相对时间一律按当前时区换算成绝对时间。测试用合成数据(Telegram消息模拟)
本站虚构数据。123456789替换为你自己的用户ID填入白名单;用触发器的测试输入功能手动喂入,不必真发Telegram。
{"from":{"id":123456789},"text":"明天下午3点和小王在开福区咖啡馆过季度预算,大概一小时;另外提醒我周五前把报销单交了,比较急","date":1760000000}表格列与配置清单
本站根据模板说明整理的配置核对单,具体字段名以导入后的实际节点为准。
Google Sheet标签页建议命名 Captured Tasks,表头六列(顺序建议一致):Task | Source | Status | Due Date | Priority | Captured At
配置区需替换的值:allowed_telegram_user_id=你的数字ID;spreadsheet_id与sheet名;calendar_id;timezone=Asia/Shanghai;default_event_minutes=60。
凭据三件套:Telegram Bot API(触发器+语音下载+回复共用)、OpenAI API(转写+提取)、Google OAuth2(Sheets+Calendar两个节点各选一次)。输入与输出示例
本站虚构演示,未真实运行;时间换算按示例发送日手工推定,用于校准你的实际输出。
输入
白名单内用户发送文字:"明天下午3点和小王在开福区咖啡馆过季度预算,大概一小时;另外提醒我周五前把报销单交了,比较急"(以2026年9月24日周四为发送日演示)对应输出
Sheets追加一行:Task=交报销单 | Source=Telegram | Status=待办 | Due Date=2026-09-25 | Priority=高 | Captured At=2026-09-24 20:15。Calendar新建事件:标题"和小王过季度预算",2026-09-25 15:00–16:00,地点"开福区咖啡馆"。Telegram收到回执:"已保存——任务:交报销单(截止9月25日,优先级高);日程:和小王过季度预算(9月25日15:00-16:00,开福区咖啡馆)。"做完检查这些
- 用白名单外的账号发消息,工作流在第一步即停止,无任何OpenAI调用和表格写入
- 发送测试文字后,Google Sheet新增一行且六列全部有值,Due Date是相对日期换算出的绝对日期
- 没给结束时间的日程在日历中出现,时长恰等于你配置的默认值
- Telegram收到的回执清单里任务和日程条数与实际写入一致
容易卡住的地方
- 白名单ID必须是数字用户ID而非用户名,填错会把本人也拦在门外
- 语音转写和聊天提取都走OpenAI付费API,模板免费不等于运行免费
- 忘改时区会导致"明天三点"解析成UTC时间,日程整体偏移
- Google Sheet表头列名与映射不一致时追加行会错位或报字段缺失
- 官方说明要求激活工作流后触发器才持续监听,测试模式下只响应手动执行
- 本站未持有模板文件,节点名与参数名以你导入后的实际界面为准,不要照搬本站的猜测命名
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Capture Telegram voice notes as tasks and events with OpenAI and Google
- 原作者
- isaWOW
- 原始发布日期
- 2026-09-25T09:20:39.292Z
- 来源
- https://n8n.io/workflows/19928