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

2026-09-02 · 原文发布日

报名到 AI 批改发证的培训流程自动化

从报名到发证的培训流程模板:n8n 表单收到报名后写入 Google Sheets、发 Gmail 欢迎信并通知 Slack,之后定时发考试提醒和考试链接;新答卷提交后核对报名资格,符合条件的交 OpenAI 自动批改,及格就复制 Google Docs 证书模板导出 PDF 邮件发送,不及格则发通知并在四天后发重考链接。

原文要点

原模板是 n8n 工作流:n8n 表单接收报名,规范化学员信息后写入 Google Sheets、Gmail 发欢迎信、Slack 通知;等待 25 天发考试提醒,再等待后发考试链接;答卷表新增行时按邮箱查报名记录,校验报名起满 30 天才有考试资格;合格者把答卷 JSON 交 OpenAI 批改,解析返回的评估 JSON,发 HTML 成绩报告并回写通过状态;通过则复制 Google Docs 证书模板替换姓名占位符、从 Drive 导出 PDF 邮件发送,不及格发通知并等 4 天发重考链接。

这次做成什么

在 n8n 里搭一条“报名→等待→考试→AI 批改→发证/重考”的自动化流程,并用一条合成学员数据走通从表单到证书邮件的完整链路。本站提供独立练习方案和自写批改提示词,原模板节点细节需在你导入后逐项核对。

准备什么

  • 一个可登录的 n8n 实例(云版或自托管均可)及创建工作流权限
  • Google 账号,能授权 Sheets、Gmail、Drive、Docs 四类 OAuth2 凭据
  • OpenAI API Key(在 n8n 中新建 OpenAI 凭据,调用按官方计费)
  • Slack 工作区及可发消息的应用凭据与一个测试频道
  • 一份含 Date、Name、Email、Test Clearance 列的报名表和一份答卷表
  • 一份 Google Docs 证书模板,正文含统一占位文本如 {your name}

具体怎么做

  1. 搭报名入口与落库通知

    新建工作流,起点放 n8n Form 触发器,字段设为姓名、邮箱、课程名并发布表单;后面接 Set 节点把字段规范成 date、name、email;再接 Google Sheets 的 Append 写入报名表;并行接 Gmail 发欢迎信(正文可放你的群链接占位)和 Slack 节点向测试频道发“新报名:姓名+邮箱”。

  2. 配置两段定时邮件

    在写表后接 Wait 节点,等待 25 天,接 Gmail 发考试提醒;再接第二个 Wait(模板为再次等待后发链接),接 Gmail 发最终考试链接邮件,邮件里的 Google Forms 考试链接替换成你自己的。

  3. 建答卷触发与资格校验分支

    新建第二段流程:Google Sheets Trigger 监听答卷表新增行;接 Google Sheets 查询节点按 email 在报名表里找报名记录;接 IF 节点做两个条件:查到记录,且用表达式比较当前时间与 Date 字段相差是否≥30 天;不满足走“无资格”分支发说明邮件。

  4. 接入 OpenAI 批改并解析结果

    合格分支接 OpenAI 节点,系统提示词用下方材料“AI 批改提示词”,用户消息塞入答卷 JSON;要求模型只返回 JSON;后接 Code 或 Set 节点解析分数、是否通过、点评;再用 Gmail 发 HTML 成绩报告,并用 Google Sheets Update 按邮箱回写 Test Clearance 为 PASS 或 FAIL。

  5. 发证与重考两条出口

    IF 判断 PASS:Google Docs 节点复制证书模板→Docs 的替换文本把 {your name} 换成学员姓名→Drive 导出为 PDF→Gmail 带附件发送。FAIL:Gmail 发未通过通知→Wait 4 天→Gmail 发重考链接。

可直接复制的材料

AI 批改提示词(系统消息,本站独立编写)

按你课程的满分线与及格线修改数字;题名结构需与答卷表列一致。

你是一名严谨的培训考试阅卷助手。用户会给你一份学员答卷的 JSON,包含每道题的题目、参考答案要点和学员回答。请逐题评分并输出且只输出一个 JSON 对象,不要输出任何其他文字,格式如下:{"total_score": 数字0到100, "pass": true或false, "per_question": [{"q": 题号, "score": 得分, "comment": "一句中文点评"}], "summary": "给学员的整体中文反馈,80字以内"}。评分规则:满分100,每题按参考答案要点覆盖度给分;总分60分及以上 pass 为 true,否则为 false;点评要指出具体答对或遗漏的要点,不要空泛表扬。

报名表合成测试数据(CSV)

学员甲报名已超30天可走合格分支,学员乙不足30天用于验证资格拦截;邮箱请换成你自己可控的测试邮箱。

Date,Name,Email,Test Clearance
2026-08-01,测试学员甲,test learner01@example.com,
2026-09-05,测试学员乙,testlearner02@example.com,

答卷触发行合成数据(JSON)

作为 Google Sheets Trigger 行数据的字段参照;testlearner01 与 CSV 中邮箱故意不一致仅示意,实际测试请保持完全一致,否则查不到报名记录。

{"email":"testlearner01@example.com","answers":[{"q":1,"question":"工作流触发器的作用是什么?","key_points":"监听事件并启动流程","answer":"监听新数据然后启动后面的节点"},{"q":2,"question":"为什么发证前要校验报名满30天?","key_points":"保证学习周期,防止未学先考","answer":"为了确认学员学够了时间"}]}

输入与输出示例

本站虚构演示,未真实调用 OpenAI 或发送邮件;分数为示例设定值。

输入

学员“测试学员甲”(testlearner01@example.com)2026-08-01 报名,10月提交答卷:第1题答出“监听新数据并启动流程”,第2题只答“确认学员学够时间”。

对应输出

OpenAI 返回 {"total_score":78,"pass":true,"per_question":[{"q":1,"score":40,"comment":"覆盖监听与启动两个要点"},{"q":2,"score":38,"comment":"答出学习周期但未提防止未学先考"}],"summary":"基础概念扎实,建议补充资格校验的设计目的。"};流程回写 Test Clearance=PASS,发送成绩邮件后复制证书模板导出 PDF 寄出。

做完检查这些

  • 提交表单后报名表新增一行,且欢迎信与 Slack 频道消息均在几分钟内到达
  • 报名不足30天的学员乙提交答卷时被 IF 拦截,收到无资格说明邮件且不进入批改
  • OpenAI 节点输出能被解析为含 total_score、pass、summary 的 JSON,解析失败时有明显报错可定位
  • PASS 分支最终邮箱收到带 PDF 附件的证书邮件,附件打开后姓名为学员名而非 {your name}
  • FAIL 分支能在 Wait 节点列表中看到一条计划 4 天后继续的等待执行

容易卡住的地方

  • 答卷邮箱与报名邮箱大小写或空格不一致会导致查不到记录,规范化节点里要 trim 并统一小写
  • 25 天与 4 天的等待依赖 n8n 实例持续运行,自托管停机可能延迟或丢失等待中的执行
  • OpenAI 偶尔返回带解释文字的非法 JSON,需在解析节点加容错或重试
  • Docs 模板占位符必须与替换节点里写的文本完全一致,多空格就替换失败
  • Gmail 搜索或发送权限范围不足时 OAuth 授权成功但节点运行报错

原文与作者资料 ↗

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

原文标题
Manage student lifecycle and AI exam grading with OpenAI, Google Sheets, and Gmail
原作者
WeblineIndia
原始发布日期
2026-09-02T06:42:13.825Z
来源
https://n8n.io/workflows/19049