WorkBuddy + Skills 让你的考试认证全流程自动化

📅 2026/7/23 5:33:39
WorkBuddy + Skills 让你的考试认证全流程自动化
一、业务背景以及痛点介绍1.1. 业务背景通过小鹅通开设了大量在线培训课程每门课程对应专属的电子证书。学员完成课程学习并通过最终的结业考试后需要统一发放认证证书。完整的证书发放流程涉及三个环节1获取名单从小鹅通考试后台导出通过考试的学员名单包含姓名、邮箱、成绩三个字段2生成证书并发送为每位学员生成专属的 PDF 证书并通过邮件逐一发送3入库存档将发证记录录入官方认证查询系统供用户完成证书查询验证此前这些环节由部门内部的一个 Java 脚本项目完成每次发证需要经历以下步骤- 登录小鹅通后台找到对应考试手动下载学员名单 CSV- 手动调整 CSV 的列名和格式使其满足 Java 脚本项目的输入要求- 运行 Java 脚本项目根据本地环境配置路径、安装依赖、调整参数- 项目生成 PDF 证书并通过统一邮箱分别发送给每个学员- 发证完成后再次手动整理数据格式导入证书查询系统进行入库1.2. 痛点介绍-强依赖 Java 运行环境Java 项目需要本机安装 JDK、配置 Maven 或 Gradle 依赖、处理文件路径等。不同电脑的环境差异导致每次部署都需要大量调试只有部门内的技术人员才能操作-流程割裂、重复劳动从下载名单到格式整理从发证到入库每个环节都需要人工介入。尤其是在小鹅通导出名单和证书查询系统入库之间需要两次手动整理表格结构工作量翻倍-错误风险高手动处理 CSV 时容易漏行、错列发证前缺乏统一的预览确认环节一旦参数出错会导致批量错发且难以追溯-无法分担工作由于操作门槛高证书发放工作长期集中在个别技术人员手中其他人无法分担成为部门瓶颈二、Skills 总体框架证书发放 Skill 是一个全流程自动化 Pipeline通过一个 Python 脚本整合了小鹅通 API 对接、CSV/Excel 解析、Word 模板填充、PDF 转换、邮件发送、数据入库等全部环节。2.1. Skills 文件结构SKILL.md — AI 行为指令WorkBuddy 使用README.md — 说明文档人类阅读requirements.txt — Python 依赖清单scripts/certificate_pipeline.py — 核心脚本1250 行26 个函数references/parameters.md — 参数参考手册template/证书.docx — 证书模板2.2. 两种学员信息获取模式及统一处理管道方式 A小鹅通 API推荐用户提供 app_id client_id secret_key脚本自动获取 access_token2 小时缓存运行 --list-exams 列出最近考试供用户选择自动拉取考试结果 学员信息姓名、邮箱、成绩方式 B本地CSV 文件上传备选用户上传 CSV/Excel 名单文件脚本自动解析并映射列名统一处理管道成绩筛选 → 自动编号 → Word 模板填充 → PDF 转换 → 邮件发送 → 数据库入库2.3. Skills 涉及技术栈环节技术实现小鹅通 APIPython urllib.requestHTTP POST/GETCSV/Excel 解析Python 内置 csv openpyxlWord 模板填充python-docx替换文本框占位符PDF 转换Word COM / WPS COM / LibreOffice CLI 自动降级邮件发送smtplib email支持 SSL/TLS数据库入库pymysql自动去重Token 管理本地文件缓存2 小时有效期内复用三、Skills 详解3.1 Skills 脚本源码详解certificate_pipeline.py 共约 1250 行按功能划分为五个模块模块一小鹅通 API 对接~100 行函数功能调用的小鹅通 APIxiaoe_get_token()获取 access_token带本地缓存GET /tokenxiaoe_list_exams()获取考试列表POST /xe.examination.list.get/1.0.0xiaoe_get_exam_results()获取考试结果自动分页POST /xe.examination.result.list/1.0.0xiaoe_batch_get_users()批量获取用户信息自动分批POST /xe.user.batch_by_user_id.get/2.0.0xiaoe_fetch_students()全流程合并组合上述 API自动处理· 认证鉴权app_id client_id secret_key → access_token2 小时缓存· 分页拉取考试结果每页最多 30 条自动翻页· 分批查询用户信息每批最多 50 人自动分批 限速0.5 秒间隔· 数据合并姓名优先级 b_real_name nick_name wx_nickname邮箱优先级 b_email account_email· 关联课程从考试的 goods_info 字段提取课程名称用于邮件正文模块二学员名单解析~100 行函数功能load_students()统一入口自动识别 CSV/Excelparse_csv()CSV 解析自动检测 GBK/UTF-8 编码parse_excel()Excel 解析支持指定 sheetnormalize_columns()中文列名自动映射姓名→nickname邮箱→email支持的中文列名映射姓名、微信昵称、邮箱、最高成绩、成绩、手机、手机号、备用邮箱模块三PDF 证书生成~200 行Word 模板处理· 证书模板 (.docx) → 文本框占位符: nickname / validUntil / certificateNo → 底图: background.png可选替换· python-docx 替换文本框文字 → zipfile 替换底图文件 → 生成临时 .docxPDF 转换自动降级Windows 平台· Word COMwin32com → Word.Application—— 最快· WPS COMwin32com → Kwps/KWPS/WPS.Application· LibreOffice CLIsoffice --convert-to pdf—— 需安装macOS/Linux 平台· WPS CLIwps --convert-to pdf· LibreOffice CLIsoffice --convert-to pdf—— 保底检测命令--detect-pdf。安装命令--install-pdf-tool wps [路径] 或 --install-pdf-tool libreoffice [路径]模块四邮件发送~100 行功能说明SMTP 协议支持 SSL465和 STARTTLS587附件PDF 证书作为附件发送邮件正文HTML 格式支持占位符{username} {courseName} {batch} {sendDate}频控每封邮件间隔 1 秒防 SMTP 限流主题按证书类型自动选择邮件正文示例XX同学你好恭喜你顺利通过 **** 实战训练营(202607期)结业考试获得******** AI Agent 开发工程师认证证书附件为你的电子版的证书请查收。祝你在以后的工作、学习、生活中万事顺意。单位名称*****2026年07月20日模块五认证信息入库~80 行· 使用 pymysql 连接 MySQL· 入库前自动去重按 certificate_name name email 三重校验仅执行 SELECT查重和 INSERT写入不执行任何 DELETE 操作· 编写的证书记录可直接在证书查询系统中检索3.2 自动识别证书类型识别关键字模板文件邮件中显示数据库中记录考试/课程名含认证类型关键字证书.docxAI Agent 开发工程师认证证书AI Agent 开发工程师脚本自动从考试名称/课程名称中识别证书类型无需人工指定。3.3 自动完成证书规则编号FIT-{年月}-{证书类型}-{序号}· 企业缩写-202607-认证缩写-001 → 2026年7月发放的第1张 证书· 企业缩写-202607-认证缩写-003 → 2026年7月发放的第3张 证书自动生成无需手动指定。按学员顺序递增编号。有效期统一设置为发放日期 2 年 - 1 天精确处理闰年。3.4 全自动执行流程以下是直接通过小鹅通 API 获取学员信息模式的标准执行流程【Step 0】用户提供凭证app_id client_id secret_key运行 --list-exams显示最近 10 个有学员参与的考试用户选择考试通过编号或考试名称【Step 1】自动判断证书类型确认及格分数线和自动生成的参数【Step 2】数据映射与证书编号生成【Step 3】运行 pipeline带 --generate-only→ 生成 PDF 并展示 PDF 和邮件正文给用户预览确认【Step 4】用户确认后提供 SMTP 和/或数据库信息运行 pipeline不带 --generate-only→ 发邮件 入库【Step 5】验证结果确认成功/失败统计3.5 关键设计原则安全约束· 禁止 DELETE 操作仅允许 SELECT / INSERT / UPDATE· SMTP 密码和数据库密码均不硬编码每次发证向用户索取· 推荐使用专用数据库账号如 cert_bot仅授予 SELECT INSERT UPDATE 权限防错机制· 必须先 --generate-only 预览用户确认后才能正式发送· 全量读取数据禁止仅预览前几行· 每次用用户新上传的文件禁止复用旧缓存· 一步失败即停止后续处理防止重复/错发AI 约束· AI 必须运行预写脚本不得自行编写代码替代· AI 不得询问证书类型脚本自动识别· AI 不得擅自行动每一步都需要用户确认四、AI 自动化效果演示两种提问方式4.1 基于 WorkBuddy 安装 skill安装该 skill 只需要将该压缩包发送给workbuddy直接让它帮你安装即可。4.2 Skill 执行流程步骤一发送指令安装好之后选择certificate-issuance技能发送帮我发送证书。然后给出小鹅通店铺ID、应用ID和应用Serect。第一种学员信息获取方式或者选择要上传的学员名单学员名单.csv。第二种学员信息获取方式Skill会确认发放计划列举证书类型AI Agent 开发工程师认证这是写死的是根据小鹅通api获取的考试名称/课程名称/上传的学员名单的名称来进行判断比如这里我上传的是XX学员名单.csv就会自动判断为 AI Agent 开发工程师认证证书类型和证书模板会按照 skill 逻辑自动列出。然后 AI 会询问用户及格线是多少来判断哪些学员通过了考试没有通过的不发放证书。步骤二发送小鹅通配置信息将小鹅通 API 配置发送给workbuddyAI 会调用 skill 里的脚本获取考试列表并打印出来供用户选择需要发放证书的考试。步骤三发送考试及格分数线用户选择考试之后AI会根据skill写好的逻辑自行判断证书类型然后询问用户及格分数线是多少。步骤四核对生成内容是否准确然后 AI 会根据及格线判断通过考试的学员然后给通过考试的学员生成相应的证书类型、证书编号前缀、邮件正文以及证书 PDF 预览。用户应该在这一步仔细核对相关信息避免证书制作出现问题没有发现就直接给学员发送了。可以直接点开查看是否生成正确。步骤五确认无误后提供发件人邮箱和入库配置发送证书确认证书生成无误之后发送“没问题”skill 会继续执行后面的步骤发放证书以及入库发放邮件成功4.3 最终实现效果学员收到邮件系统入库成功