2026-09-25 · 原文发布日
简历自动筛选打分:Gmail收CV、OpenAI解析、Slack通知
收到带附件的Gmail邮件(或指定Drive文件夹新增文件)时触发,按PDF/DOCX提取简历文本;OpenAI把简历解析成经历、技能、教育等结构化字段并丢弃受保护属性;从Airtable的Config表取在招职位描述,让OpenAI对照打分,输出分数、优势、短板、建议和筛选问题。结果写入Pipeline表:入围和待复核的发Slack,入围者另发预约链接邮件,被拒的只存档。每周一还把近七天数据汇总成周报发Slack。模板免费。
原文要点
这是n8n官方模板库中Intuz发布的免费工作流(模板页19925)。触发端为Gmail新邮件带附件,或可选的Google Drive指定文件夹新增文件;按PDF/DOCX分别提取简历文本;OpenAI先把简历解析成经历、技能、教育、项目等结构化JSON并丢弃受保护属性;再从Airtable的Config表读取唯一一条active=1的在招职位描述(可带booking_link),让OpenAI对照打分,产出分数、优势、短板、建议和筛选问题;结果写入Pipeline表(Name、Email、Score、Recommendation、Status、Applied At等字段);按建议分流:入围与待复核发Slack,入围者另发含预约链接的Gmail邮件,被拒者只存档不通知;每周一早上汇总近7天Pipeline记录算总数和平均分,发Slack周报。需要的凭据是Gmail、OpenAI、Airtable个人访问令牌、Slack。
这次做成什么
在本站照做搭出一条简历自动筛选流水线:候选人把简历发到指定邮箱后,自动解析、对照职位打分、写库、按结果分流通知,并每周一出汇总。模板本体免费,从n8n模板页导入后按下面步骤接线即可。
准备什么
- 一个n8n实例(云端或自托管均可),能打开模板库并导入模板
- Gmail账号并能在n8n中配置Gmail OAuth2凭据
- OpenAI API密钥(解析与打分按token计费,需自行承担)
- Airtable账号及个人访问令牌(PAT),已建好一个Base
- Slack工作区及一个招聘通知频道,已配置Slack凭据
- 一份测试用合成简历PDF或DOCX(不要投递真实候选人隐私数据)
具体怎么做
导入免费模板并连接四类凭据
在n8n模板库搜索页打开编号19925的模板,点导入到自己的实例。模板免费,不需要购买。打开工作流后逐个节点绑定凭据:Gmail节点选Gmail OAuth2,OpenAI节点填入API密钥,Airtable节点用个人访问令牌,Slack节点选工作区授权。任何一类没连好都会在测试执行时报凭据错误。
在Airtable建Config表和Pipeline表
在同一个Base里建两张表。Config表字段:active(数字)、job_description(长文本)、booking_link(可选,单行文本),只放一条记录并把active设为1,多于一条会导致取错职位。Pipeline表字段:Name、Email、Score、Recommendation、Status、Applied At、Strengths、Gaps。如果你的Base ID或表名与模板默认值不同,在Airtable节点里改成本站的实际值。
选定唯一的简历入口
模板提供两个触发器:Gmail触发器监听带附件的新邮件,Google Drive触发器监听指定文件夹新增文件。只保留一个启用:用邮箱收简历就保持Gmail触发器激活、Drive触发器停用;反之在Drive触发器里填入要监听的文件夹ID并激活。两个同时开会重复处理同一份简历。
配置解析与打分两处OpenAI提示词
打开第一个OpenAI节点,把本站提供的解析提示词(见材料一)贴入,确认输出为JSON格式字段。打开第二个OpenAI节点,贴入打分提示词(见材料二),确认它同时接收解析结果和Config表取出的job_description,输出分数、优势、短板、建议与筛选问题。具体节点内的字段名以导入后的模板为准逐一核对。
核对分流与通知设置
检查打分后的分支逻辑:建议为入围或待复核的发Slack到招聘频道;建议为入围的再走Gmail节点向候选人邮箱发送含booking_link的预约邮件;建议为拒绝的只写入Pipeline表不通知。在Slack节点里把频道改成你实际的频道名。预约链接只来自Config表的booking_link字段,模板不接Calendly凭据。
用合成简历跑通端到端测试
激活工作流后,用测试邮箱向监听地址发送一封带合成简历PDF(材料三内容另存)的邮件。依次确认:Pipeline表新增一行且Score、Status有值;Slack收到入围或待复核消息;入围时测试邮箱收到预约邮件。周一的周报由独立定时触发器驱动,可在该节点手动执行一次,确认能拉取近7天记录并在Slack发出总数与平均分。
可直接复制的材料
简历结构化解析提示词(第一个OpenAI节点用)
本站独立编写的示例提示词。{{简历提取文本}}在n8n中替换为上游文本提取节点的输出变量;字段名如需与模板已有映射一致,以导入后的模板为准调整。
你是一名简历解析器。请把下面的简历原文解析为JSON,只输出JSON,不要输出任何解释文字。
要求:
1. 输出字段固定为:name(姓名)、email(邮箱)、experience(工作经历数组,每项含company、title、years)、skills(技能数组)、education(教育经历数组,每项含school、degree、major)、projects(项目数组,每项含name、summary)。
2. 丢弃并禁止输出以下受保护属性:性别、年龄、出生日期、婚姻状况、生育状况、民族、宗教、政治面貌、照片、户籍、身份证号。
3. 原文没有的字段填空字符串或空数组,不要编造。
4. years用数字表示年限,无法判断填null。
简历原文如下:
{{简历提取文本}}对照职位描述打分提示词(第二个OpenAI节点用)
本站独立编写的示例提示词。两个占位符分别替换为上游解析输出和Airtable Config查询结果;recommendation的三个取值要与分流节点的判断值完全一致。
你是一名招聘筛选助手。请根据候选人结构化资料和职位描述进行匹配评估,只输出JSON,不要输出解释文字。
输出字段固定为:score(0到100的整数)、strengths(优势数组,最多5条)、gaps(短板数组,最多5条)、recommendation(只能取以下三个值之一:shortlisted、needs_review、rejected)、screening_questions(针对该候选人的筛选问题数组,3到5条)。
评分口径:技能与岗位要求直接匹配占50分,相关经验年限与深度占30分,教育与项目背景占20分。不使用性别、年龄、婚姻等受保护属性参与评分。
候选人资料:
{{解析节点输出的JSON}}
职位描述:
{{Config表job_description字段}}Airtable Pipeline表测试数据(合成CSV)
本站合成的练习数据,邮箱均为虚构测试地址。用于对照Pipeline表字段结构,也可直接导入Airtable验证周报汇总逻辑(3条记录、平均60.3分)。
Name,Email,Score,Recommendation,Status,Applied At,Strengths,Gaps
林晓舟,linxz-test@example.com,86,shortlisted,入围,2026-09-21 10:30,"5年后端经验;熟悉Python与PostgreSQL;主导过招聘系统开发","未接触过本团队用的消息队列;英语读写待确认"
陈雨桐,chenyt-test@example.com,61,needs_review,待复核,2026-09-22 14:05,"实习经历与岗位相关;SQL基础扎实","仅1年经验;无线上系统运维经历"
王建业,wangjy-test@example.com,34,rejected,已拒,2026-09-23 09:12,"沟通表达清晰","技术栈完全不匹配;无后端开发经验"输入与输出示例
本站虚构端到端演示,分数与分流结果为本站设定的示意值,未实际运行模板,也不代表原作者的输出。
输入
用测试邮箱发送一封主题为应聘后端工程师的邮件,附合成简历PDF,正文空白;简历内容:林晓舟,邮箱linxz-test@example.com,5年Python后端经验,熟悉PostgreSQL,主导过招聘系统开发,本科计算机专业,未提消息队列经验。Config表唯一active=1记录为后端工程师职位,要求Python、数据库、3年以上经验,booking_link填https://booking.example.com/mock-slot。对应输出
Pipeline表新增一行:Name=林晓舟,Email=linxz-test@example.com,Score=86,Recommendation=shortlisted,Status=入围,Strengths=[5年后端经验;熟悉Python与PostgreSQL;主导过招聘系统开发],Gaps=[未接触过消息队列]。Slack招聘频道收到一条入围提醒含姓名与分数;测试邮箱linxz-test@example.com收到一封含https://booking.example.com/mock-slot的预约邮件。周一手动执行周报节点,Slack收到:近7天共3份简历,平均分60.3,入围1、待复核1、已拒1。做完检查这些
- Pipeline表在发送测试邮件后自动新增一行,且Score为0到100的整数、Status与Recommendation对应一致
- 建议为入围或待复核时Slack频道收到通知,建议为拒绝时Slack无任何新消息
- 入围场景下候选人邮箱收到的预约邮件中链接与Config表booking_link完全一致
- Config表保持恰好一条active=1记录,改动job_description后下一份简历的打分口径随之变化
- 周报节点手动执行一次能在Slack发出近7天总数与平均分,数字与Pipeline表实际记录吻合
容易卡住的地方
- Config表若有多条active=1记录会取错职位描述,全部分数失真,建表后先核对唯一性
- Gmail和Drive两个触发器同时激活会对同一份简历重复打分重复通知,必须二选一
- OpenAI解析与打分按token计费,批量导入历史简历前先估算费用
- 预约链接只是Config表里的文本字段,模板不含Calendly等调度服务凭据,链接失效不会在流程里报错
- 被拒候选人没有任何通知,若团队需要拒信,要在拒绝分支自行加邮件节点
- Airtable字段名与模板映射不一致会导致写入失败或字段为空,导入后先逐字段核对
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Screen and rank CVs using Gmail, OpenAI, Airtable, and Slack
- 原作者
- Intuz
- 原始发布日期
- 2026-09-25T06:58:33.025Z
- 来源
- https://n8n.io/workflows/19925