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

2026-09-11 · 原文发布日

n8n模板:新邮件自动分类并打Gmail标签

免费模板,每分钟监听Gmail新邮件,把主题、发件人和截断后的正文发给OpenAI分类,解析返回的JSON得到类别、紧急度和一句话摘要,解析失败时默认归为noise,再按预设映射给原邮件打上对应Gmail标签。搭建只需配好Gmail凭据、OpenAI密钥,并先在Gmail建好标签、把标签ID填进映射表。适合收件箱量大、想自动分拣的人。

原文要点

来源是n8n.io上的免费模板(作者Jon Baynham,lite版),流程为:Gmail触发器每分钟轮询新邮件;用Set节点设定OpenAI模型、分类提示词和“类别→Gmail标签ID”映射;HTTP请求节点调用OpenAI Chat Completions,发送主题、发件人和截断后的正文;解析返回JSON得到category、urgency、summary,解析失败默认归为noise;最后用Gmail节点给原邮件加对应标签。配置需要Gmail凭据(触发器和加标签两处)、OpenAI密钥用HTTP Header Auth,并先在Gmail建好标签、复制标签ID替换映射占位值。完整付费版另加Sheets日志、AI起草回复和紧急提醒,本站不涉及。

这次做成什么

在自己的n8n里搭一个“新邮件自动分类并打Gmail标签”的最小流程,并用一封虚构邮件完成端到端验证。

准备什么

  • 一个可运行的n8n实例(云版或自托管均可),能创建新工作流
  • 一个Gmail账号,并已在Gmail设置里手动建好拟用标签(如AI-账单、AI-紧急、AI-噪音)
  • 在n8n中配置好的Gmail OAuth2凭据,触发节点和打标签节点各用一次
  • 一个OpenAI API密钥,在n8n里以HTTP Header Auth(Authorization: Bearer)形式保存
  • 知道如何查看Gmail标签ID:可通过Gmail API的labels.list或在n8n的Gmail节点下拉选择标签时查看

具体怎么做

  1. 建Gmail触发器

    新建工作流,添加Gmail Trigger节点,事件选“收到新邮件”,轮询间隔保持每分钟。用测试模式点“Fetch Test Event”拉一封真实收件箱邮件,确认能拿到subject、From和正文snippet字段。

  2. 用Set节点定义模型、提示词与映射

    添加Set节点,建三个字段:model(如gpt-4o-mini这类聊天模型名,按你账号可用的填)、classificationPrompt(粘贴下方提示词全文)、labelMapping(一个JSON对象,键是类别名,值是Gmail标签ID)。标签ID先用占位符,后面替换。

  3. 调用OpenAI分类

    添加HTTP Request节点,POST到OpenAI Chat Completions接口,认证选之前保存的Header Auth。请求体messages里第一条放提示词,第二条用户消息用表达式拼入触发器传来的主题、发件人和截断到约500字符的正文(正文截断是为了控制token消耗)。开启JSON响应格式(response_format设json_object)让输出可解析。

  4. 解析结果并兜底

    添加Code或Set节点解析返回的JSON,取出category、urgency、summary三个字段。用try/catch或IF判断:解析失败或category不在映射表的键里时,把category强制设为noise,避免流程中断。

  5. 按映射打标签

    添加Gmail节点,操作选“给邮件添加标签”,邮件ID用表达式引用触发器节点的message id,标签ID用表达式从labelMapping里按category查出来。先拿占位标签ID跑通会报错,此时回到Gmail复制真实标签ID替换Set节点里的占位值。

  6. 端到端测试并激活

    给自己的邮箱发三封测试邮件:一封账单类、一封紧急求助、一封广告。激活工作流后等每分钟轮询触发,检查每封邮件是否被打上预期标签,被打错时回看OpenAI返回的JSON调整提示词。

可直接复制的材料

邮件分类提示词(粘贴进Set节点的classificationPrompt)

本站独立编写,可增删类别,但类别名必须与标签映射的键一致。

你是一个邮件分类助手。根据用户提供的邮件主题、发件人和正文节选,把邮件分到以下类别之一:billing(账单与付款)、support(需要处理的问题或求助)、urgent(明确需要立即处理的紧急事项)、newsletter(订阅与营销内容)、noise(无价值或可忽略)。
只输出一个JSON对象,不要输出任何其他文字,格式为:{"category":"类别名","urgency":"low|medium|high","summary":"不超过30字的一句话中文摘要"}
拿不准时category填noise。

类别→标签ID映射示例(Set节点labelMapping字段)

值是占位符,必须替换成你自己Gmail账号的真实标签ID,否则打标签步骤会失败。

{"billing":"Label_101","support":"Label_102","urgent":"Label_103","newsletter":"Label_104","noise":"Label_105"}

OpenAI请求用户消息拼装表达式示例

字段名以你触发器实际输出为准,在n8n表达式编辑器里从左侧拖拽生成最稳妥。

主题: {{$node["Gmail Trigger"].json.subject}}
发件人: {{$node["Gmail Trigger"].json.From}}
正文: {{$node["Gmail Trigger"].json.snippet.substring(0,500)}}

输入与输出示例

本站虚构演示,非原作者运行结果,实际分类取决于模型与提示词。

输入

主题:您的3月云服务器账单已生成,金额¥286.40,请于3月20日前支付;发件人:billing@example-cloud.cn;正文节选:尊敬的用户,您本月用量已出账,包含计算实例与存储费用,逾期将暂停服务……

对应输出

OpenAI返回:{"category":"billing","urgency":"medium","summary":"3月云账单286.40元待支付"};流程按映射给该邮件加上Label_101(AI-账单)标签。

做完检查这些

  • 给测试邮箱发一封虚构账单邮件后,该邮件在Gmail中出现AI-账单标签
  • 把OpenAI请求暂时改坏(如删掉JSON格式要求)导致解析失败时,邮件被归入noise并打上噪音标签,流程不报错中断
  • Set节点的labelMapping中所有占位标签ID都已替换为真实ID,无Label_开头的残留
  • Gmail Trigger每分钟轮询一次且激活后持续触发,不是只在测试模式手动拉取
  • OpenAI节点返回的JSON包含category、urgency、summary三个键

容易卡住的地方

  • Gmail标签必须先手动在Gmail里创建,工作流只打标签不建标签,标签ID不是标签名称
  • 触发器与打标签两个节点都要绑定Gmail凭据,只配一个会导致另一步报权限错误
  • 正文不截断直接全文发送会显著增加token费用,来源设计就是截断后发送
  • 提示词里改了类别名但映射表没同步改,会全部落到兜底noise或查不到标签ID
  • OpenAI调用为付费API,费用随邮件量增长,来源未给出具体价格,本站不估算

原文与作者资料 ↗

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

原文标题
Classify and label new Gmail messages with OpenAI GPT-4o-mini
原作者
Jon Baynham
原始发布日期
2026-09-11T02:49:40.449Z
来源
https://n8n.io/workflows/19459