2026-09-21 · 原文发布日
每 15 分钟跑的个人行政助理
流程每 15 分钟并行检查 Gmail 未读、未来 24 小时日历、近 15 分钟 Slack 提及和是否到 7 点。邮件由 OpenAI 分级并起草回复,先发 Slack 审批或存草稿,同时生成 ClickUp 任务;日历冲突会拟改期说明,批准后才改事件;Slack 提及可直发或审批后发。早 7 点汇总今日 ClickUp、未读邮件和日程,经 Gmail 与 Slack 发晨报。
原文要点
原作者流程每 15 分钟触发一次,并行做四项检查:Gmail 未读邮件、未来 24 小时 Google 日历事件、近 15 分钟 Slack 提及、当前是否早上 7 点。邮件由 OpenAI 分级并起草回复,可选择先发 Slack 审批再回复,或直接存为 Gmail 草稿,同时按 AI 生成的标题与描述建 ClickUp 任务。日历重叠时由 OpenAI 拟改期说明,经 Slack 批准后才更新事件。Slack 提及可立即回复或审批后回复。若到 7 点,汇总今日到期 ClickUp 任务、未读邮件与当日日程,经 Gmail 和 Slack 发晨报。配置需四处 OAuth2 凭据、ClickUp API、替换 YOUR_CLICKUP_LIST_ID 和 Slack 频道 ID(原值为 C0AN1UGL0RM)。
这次做成什么
搭一个可手动演练的 15 分钟行政助理练习版:先打通“未读邮件→OpenAI 分级→Slack 审批→存草稿→建 ClickUp 任务”这一条主链路,再按同样模式接日历冲突与晨报分支。
准备什么
- 可长期运行的 n8n 实例(7 点晨报分支依赖持续激活)
- Gmail、Slack、Google Calendar 三组 OAuth2 凭据及 OpenAI API 密钥
- 一个 ClickUp 工作区及其 API token 和目标列表 ID
- 一个专用 Slack 测试频道用于审批与发帖,勿用真实工作频道
具体怎么做
建触发与并行入口
放一个 Schedule Trigger 设为每 15 分钟;练习阶段先手动执行。触发后分四路:Gmail 搜索未读、Calendar 取未来 24 小时事件、Slack 读测试频道近 15 分钟消息、IF 节点判断当前小时是否为 7。
配凭据与占位参数
在 n8n 添加 Gmail、Slack、Calendar、OpenAI 四组凭据;ClickUp 用 HTTP Request 节点并在 Header 放 Authorization: 你的 API token;在 Set 节点集中放 clickup_list_id、slack_channel_id、approver_slack_user 三个参数,替换掉原模板占位值。
打通邮件分级主链路
Gmail 未读邮件 → OpenAI 节点用下文提示词输出 priority、summary、draft_reply、task_title、task_description → Switch:priority 为 high 走 Slack 审批消息(含草稿预览),批准后 Gmail 发送回复;其余直接创建 Gmail 草稿。两条路径都接着用 HTTP Request 调 ClickUp 创建任务接口 POST /api/v2/list/{listId}/task,body 用 name=task_title、description=task_description。
接日历冲突分支
Calendar 节点取事件后,用 Code 节点两两比较 start/end 找重叠对;发现冲突 → OpenAI 拟一段改期说明 → Slack 发审批 → 批准后用 Calendar 更新事件时间。练习时先在测试日历造两个重叠会议验证。
接晨报分支
IF 判断为 7 点时,HTTP Request 拉 ClickUp 今日到期任务(due_date 过滤),连同未读邮件摘要和当日事件交给 OpenAI 汇总成晨报文本,再经 Gmail 发给自己并 post 到 Slack 测试频道。
可直接复制的材料
邮件分级与起草提示词
本站独立编写的示例提示词;原作者只说明用 OpenAI 分级并起草,未公开原提示词,字段名为本站设定,可按需要增删。
你是行政助理。分析下面这封未读邮件,只输出 JSON。
字段:
priority:high / normal / low。需要本人当天答复、涉及截止期或金钱的为 high;需回复但不急为 normal;通知类、营销类为 low。
summary:一句话中文摘要(不超过 40 字)。
draft_reply:可直接发送的中文回复草稿,语气礼貌简洁;若无需回复则为 null。
task_title:对应跟进任务的短标题。
task_description:任务描述,含邮件关键信息与建议动作。
发件人:{{ $json.from }}
主题:{{ $json.subject }}
正文:{{ $json.snippet }}流程集中参数配置
本站设计的练习配置,对应原模板中的 YOUR_CLICKUP_LIST_ID 与频道 ID(原值 C0AN1UGL0RM)占位;全部替换为你自己的测试值。
{
"slack_channel_id": "C012TEST000",
"approver_slack_user": "U012TEST000",
"clickup_list_id": "9012TEST00",
"gmail_unread_query": "is:unread newer_than:1d",
"calendar_window_hours": 24,
"briefing_hour": 7
}合成未读邮件测试数据
本站虚构合成邮件,用于手动喂给 OpenAI 节点做分级练习,不含真实个人信息。
[
{
"from": "li.wei@example-client.com",
"subject": "请确认周五演示会议时间",
"snippet": "你好,原定周五下午 3 点的产品演示,我们这边需要提前到上午 10 点,是否可以?另外请带上最新报价单。"
},
{
"from": "newsletter@example-shop.com",
"subject": "本周特惠:全场八折",
"snippet": "限时促销,点击查看更多优惠信息……"
}
]输入与输出示例
本站虚构演示,为按设计规则的示意输出,非原作者运行结果,未实际调用服务。
输入
上文合成邮件第一条:li.wei@example-client.com 请求把周五演示从下午 3 点提前到上午 10 点并索要报价单对应输出
OpenAI 输出:{"priority":"high","summary":"客户要求周五演示提前至上午10点并索要报价单","draft_reply":"李老师您好,时间可以调整到周五上午10点,我会带上最新报价单,届时见。","task_title":"准备周五演示及报价单","task_description":"客户将演示改至周五上午10点,需更新日历并准备最新报价单"}。因 priority=high,流程向 Slack 测试频道发审批消息;批准后 Gmail 发送该回复,并以 task_title/task_description 在 ClickUp 列表建任务。第二条营销邮件判为 low,直接存草稿。做完检查这些
- high 优先级邮件先出现在 Slack 审批频道,批准后才会真正发送回复
- normal/low 邮件不打扰审批流,只生成 Gmail 草稿和 ClickUp 任务
- ClickUp 任务的标题与描述与 OpenAI 输出的 task_title、task_description 完全一致
- 构造两个重叠日历事件时,改期说明先经 Slack 批准,事件时间才会被更新
- 把 briefing_hour 设为当前小时后手动触发,晨报同时到达 Gmail 收件箱与 Slack 频道
容易卡住的地方
- 晨报依赖工作流持续激活且时区正确,自托管实例默认 UTC 时 7 点判断会偏移 8 小时
- ClickUp 是 HTTP Request 节点而非官方节点,接口路径 /api/v2/list/{listId}/task 以 ClickUp 当前文档为准,练习前先在文档核对
- Slack 审批按钮走 n8n webhook,本地 localhost 实例收不到回调,需公网地址或隧道
- 每 15 分钟四路并行都会消耗 OpenAI 额度,练习期建议拉长间隔或先只启用邮件一路
- 日历更新是不可逆写操作,务必用测试日历验证冲突检测逻辑后再接真实日历
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Run a personal executive assistant with Gmail, Slack, Calendar, ClickUp, and OpenAI
- 原作者
- Rahul Joshi
- 原始发布日期
- 2026-09-21T11:23:06.051Z
- 来源
- https://n8n.io/workflows/19791