AI PLAY玩法更新持续收录
← 回到更新流

2026-09-07 · 原文发布日

学校通知邮件自动提炼成家长摘要

每小时检查Gmail里指定标签的新邮件,下载附件PDF并提取文字,提取失败也有兜底文本;为每份通知生成指纹去重,避免同一通知重复推送。新通知交给Gemini提取日期、费用、待办事项等结构化字段并生成一长一短两份摘要,记录到Google Sheets后把排版好的摘要邮件发给家长邮箱。适合被学校PDF通知淹没的家庭。

原文要点

WeblineIndia在n8n.io发布的免费工作流模板19317:每小时用Gmail触发器检查指定标签新邮件,判断有无附件,下载附件并从PDF提取文字,提取失败时准备兜底文本继续;把最终文本块生成稳定指纹,到Google Sheets查重;新通知交Google Gemini抽取日期、费用、待办等结构化字段并生成短版与详细版两份摘要,追加写入Sheets后用Gmail把排版好的摘要发给家长邮箱。设置需连接Gmail、Gemini、Sheets三份凭据,更新表格ID、表名、列和收件人地址。

这次做成什么

在自己的n8n里搭好这条流程:指定标签的学校通知邮件进来自动去重、结构化提炼、登记并发出家长摘要。免费模板可下载,但原模板节点参数未在页面公开,本文给出独立设计的练习配置与测试数据,界面字段以你导入后所见为准。

准备什么

  • 一个可自托管或云端的n8n实例并能访问模板页n8n.io/workflows/19317
  • 可开启OAuth的Google账号,含Gmail与Google Sheets权限
  • Google AI Studio的Gemini API密钥(Gemini服务可能产生费用)
  • 一个用于练习的Google表格和一个测试用家长收件邮箱

具体怎么做

  1. 导入模板并核对节点链

    在n8n画布右上角菜单选Import from URL,粘贴https://n8n.io/workflows/19317导入。导入后逐节点核对:Gmail Trigger→判断是否含附件→下载附件→提取PDF文字→兜底文本→生成指纹→Sheets查重→Gemini提炼→Sheets追加→Gmail发送。页面未公开节点参数,名称以导入后实际为准,不要凭记忆连线。

  2. 配置Gmail触发器标签

    打开Gmail Trigger节点,连接Gmail OAuth凭据,把Label设为接收学校通知的标签(先在Gmail里建好如SchoolNotices并给测试邮件打上)。保持轮询间隔为每小时,避免频繁拉取。

  3. 配置Sheets查重表

    在Google Sheets新建表格,工作表建列:fingerprint、noticeDate、fee、actionItems、shortDigest、detailedDigest、receivedAt。把电子表格ID(URL里/d/与/edit之间的部分)和两个Sheets节点的表名、列映射改为此表。查重节点按fingerprint列查找,命中则流程终止不推送。

  4. 配置Gemini提炼节点

    在Gemini节点连接API密钥凭据,在节点内选择模型(原文未指定型号,按你账号可用项选),把提示词换成下方材料中的提炼提示词,输入变量接上游拼好的最终文本块,要求输出JSON。

  5. 改收件人并跑测试

    把末尾Gmail发送节点的收件人改成测试家长邮箱,主题与正文模板里引用shortDigest和detailedDigest。给测试邮箱发一封带下方合成PDF文字的通知邮件并打标签,手动Execute Workflow观察各节点输出。

可直接复制的材料

Gemini结构化提炼提示词

本站独立编写;{{ $json.finalText }}需按你上游节点的实际字段名改成对应的n8n表达式。

你是一名帮家长读学校通知的助手。下面是学校通知PDF提取出的文字(可能不完整)。只依据原文,输出一个JSON对象,字段如下:
noticeDate:通知中提到的活动或截止日期,YYYY-MM-DD格式,多个用逗号分隔,没有则填"未提及";
fee:涉及的金额与用途,如"校服费120元",没有则填"无";
actionItems:家长需要做的事,数组,每条一句话,没有则填空数组;
shortDigest:不超过60字的家长摘要,口语化;
detailedDigest:150字以内的详细摘要,保留时间、地点、对象。
不要编造原文没有的信息。只输出JSON,不要加解释或代码块标记。
通知原文:
{{ $json.finalText }}

合成测试通知文本(可粘进PDF练习)

本站虚构的练习输入,学校、金额、日期均为编造,可存成PDF作为附件发测试邮件。

阳光小学教务处通知
各位家长:学校定于2026年10月16日(周五)下午2:00在体育馆举行秋季运动会,请一、二年级学生由一名家长陪同参加。请于10月10日前将回执交回班主任。本次运动会需统一穿着校服,未购买校服的学生请缴纳校服费120元至财务处窗口或扫码支付。运动会当天学校不提供午餐,请为孩子准备饮水和简便食物。

查重登记表列配置

本站设计的字段映射方案;花括号表达式为n8n写法,需按导入模板的实际字段名调整。

{"spreadsheet":"你的Google表格ID","sheetName":"CircularLog","columns":["fingerprint","noticeDate","fee","actionItems","shortDigest","detailedDigest","receivedAt"],"dedupeKey":"fingerprint","appendMapping":{"fingerprint":"{{ $json.fingerprint }}","noticeDate":"{{ $json.gemini.noticeDate }}","fee":"{{ $json.gemini.fee }}","actionItems":"{{ $json.gemini.actionItems }}","shortDigest":"{{ $json.gemini.shortDigest }}","detailedDigest":"{{ $json.gemini.detailedDigest }}","receivedAt":"{{ $now.toISO() }}"}}

输入与输出示例

本站虚构演示输出,模拟Gemini按提示词应返回的JSON结构,非实际调用结果。

输入

标签SchoolNotices下收到一封带附件的通知邮件,PDF提取文字为:阳光小学定于2026年10月16日下午2:00举行秋季运动会,10月10日前交回执,校服费120元。

对应输出

{"noticeDate":"2026-10-16,2026-10-10","fee":"校服费120元","actionItems":["10月10日前将回执交回班主任","未购校服者缴纳120元校服费","运动会当天为孩子准备饮水和简便食物"],"shortDigest":"10月16日下午2点秋季运动会,一二年级需一名家长陪同,10月10日前交回执。","detailedDigest":"学校定于2026年10月16日(周五)下午2:00在体育馆举行秋季运动会,一、二年级学生由一名家长陪同。10月10日前交回回执,需穿校服,未购买者缴校服费120元。当天不提供午餐,请备饮水和食物。"}

做完检查这些

  • 同一封测试邮件再次触发时,查重节点命中fingerprint,流程不发第二封摘要邮件
  • Gemini节点输出是合法JSON且五个字段齐全,noticeDate含2026-10-16
  • Sheets中新追加一行的shortDigest与最终发出的家长邮件正文一致
  • 删掉附件或使PDF无法提取时流程仍走兜底分支不中断报错

容易卡住的地方

  • 模板页未公开节点内部参数,表达式里的finalText等字段名必须以导入后实际数据为准
  • Gmail触发器默认每小时轮询,作者流程本身是每小时检查,别指望即时到达
  • 扫描件PDF无文字层会触发兜底文本,提炼质量会下降,需人工核对
  • Gemini与Google API调用可能产生费用并有配额限制,练习用隔离测试表格

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Summarize school circular emails with Gmail, Gemini, and Google Sheets
原作者
WeblineIndia
原始发布日期
2026-09-07T10:14:21.544Z
来源
https://n8n.io/workflows/19317