2026-09-15 · 原文发布日
简历自动解析打分与候选人分类通知
小团队招聘可用的n8n模板:候选人通过n8n表单提交联系方式、职位、年限和简历文件后,先生成申请ID并校验必填项,经验过短的直接发拒信。其余申请写入Google Sheets,按职位从另一张JD表取岗位要求,提取简历文本交给Google Gemini返回技能、优势、短板和缺失技能的结构化分析,再按必备技能、经验和加分项算匹配分,分数达标记为Selected并发确认邮件,否则发拒信,全部结果回写表格。
原文要点
原模板用n8n表单收集候选人联系方式、职位、年限和简历文件,生成申请ID并校验必填项,经验5年及以下直接经Gmail发拒信;其余写入Google Sheets的Job Applications表,按职位从Job Descriptions表取JD,提取简历文本交给Google Gemini返回技能、优势、短板、缺失技能的结构化JSON;按必备技能、经验、加分技能和优势算匹配分,80分及以上状态置Selected并发确认邮件,否则发拒信,分析、分数、状态全部回写表格。设置需两张表的凭据与指定列、Gemini(PaLM)凭据、Gmail凭据,并发布表单链接。
这次做成什么
搭一条简历收集到分类通知的流水线:表单收申请、硬性年限过滤、Gemini结构化分析简历、按JD算分、自动发确认或拒信并回写表格。本站提供独立编写的分析提示词、合成JD数据和虚构候选人演示。
准备什么
- 可自建并发布表单的n8n实例及该模板工作流
- 两张Google Sheets(Job Applications与Job Descriptions)及OAuth2凭据
- Google Gemini (PaLM) API凭据
- 用于发通知邮件的Gmail账号及凭据
- 用于练习的PDF格式虚构简历文件
具体怎么做
建表并填列结构
Job Descriptions表建列Position、JD ID、Required Experience、Required Skills、Preferred Skills、Minimum Score,填入下方合成JD行;Job Applications表建列applicationId、Full Name、Email、Phone、Position、Experience、Resume、Score、Skills、Strengths、Weaknesses、Missing Skills、status。
配置表单与年限闸门
发布n8n表单,字段含姓名、邮箱、电话、职位下拉、经验年限和简历文件上传(确认接受PDF/DOC/DOCX);提交后节点生成applicationId和时间戳,校验必填项,用IF节点把Experience小于等于5年的申请直接转Gmail拒信分支。
写表并关联JD
通过闸门的申请追加到Job Applications表;再用Lookup节点按Position在Job Descriptions表取对应JD行,与申请数据合并传给下游。
提取简历文本并送Gemini分析
用文件提取节点读出上传PDF的纯文本,连同JD的Required Skills、Preferred Skills一起填入下方分析提示词发给Gemini,要求返回含skills、strengths、weaknesses、missingSkills的JSON。
算分并定状态
按模板逻辑综合必备技能命中、经验、加分技能与优势计算匹配分(本站练习设最低分门槛80,以JD表Minimum Score为准),分数写入Score列;大于等于门槛状态置Selected,否则Rejected,并把分析JSON各字段回写对应列。
发送结果邮件
Selected分支用Gmail发申请确认邮件,Rejected分支发措辞得体的拒信;两封邮件的称呼用申请表的Full Name,主题含职位名,发送前用合成候选人自测。
可直接复制的材料
简历分析提示词(喂给Gemini)
本站独立编写的分析提示词,{{}}变量需按n8n表达式替换为JD行字段与简历文本;输出字段名要和算分节点一致。
你是招聘初筛助手。根据下面的职位要求和简历文本,输出一个JSON对象,不要输出解释、不要使用代码块。
字段:
- skills: 数组,候选人具备且与职位相关的技能
- strengths: 数组,相对职位要求的突出优势
- weaknesses: 数组,主要短板
- missingSkills: 数组,职位必备但简历中未体现的技能
职位必备技能:{{requiredSkills}}
职位加分技能:{{preferredSkills}}
要求经验年限:{{requiredExperience}}
简历文本:
{{resumeText}}合成Job Descriptions测试数据(CSV)
本站虚构练习数据;技能用逗号分隔放在引号内,导入后确认算分节点能正确拆分。
Position,JD ID,Required Experience,Required Skills,Preferred Skills,Minimum Score
前端工程师,JD-FE-01,6,"JavaScript,React,TypeScript,CSS","Next.js,性能优化,单元测试",80
数据分析师,JD-DA-01,6,"SQL,Python,数据可视化","dbt,AB测试,统计建模",80拒信正文模板(年限不足分支)
本站编写的示例文案,变量替换为表单字段;Selected分支可仿此格式写确认邮件。
主题:关于您应聘{{position}}的申请结果
{{fullName}} 您好:
感谢您的投递。该岗位要求6年以上相关经验,结合您目前的经历,我们暂无法推进本次申请。欢迎您在积累更多经验后再次应聘。
祝求职顺利!输入与输出示例
本站虚构演示,分数为本站按模板逻辑设定的示意值,非Gemini实际输出。
输入
合成候选人:李岚,邮箱lilan@example.com,应聘前端工程师,经验填7年,上传的虚构简历写明熟练使用JavaScript、React、TypeScript、CSS,做过Next.js项目,无单元测试经历。对应输出
Gemini返回JSON:skills=[JavaScript,React,TypeScript,CSS,Next.js],strengths=[框架实战经验丰富],weaknesses=[缺少测试实践],missingSkills=[单元测试]。必备技能4项全中、经验达标、加分项中2项,按模板打分逻辑得分86≥80,状态置Selected,回写Score=86及各分析列,Gmail发出申请确认邮件。做完检查这些
- 提交经验5年及以下的测试申请时,不写Job Applications表且收到拒信
- JD表缺少对应Position时流程能被发现并处理,而不是静默算出错分
- Gemini返回非法JSON时流程不会把空白写回Score列(需在模板中核对解析方式)
- 分数80及以上状态为Selected并发确认邮件,79及以下为Rejected并发拒信
- 回写后Skills、Strengths、Weaknesses、Missing Skills各列内容与分析JSON一致
容易卡住的地方
- 年限硬门槛是小于等于5年直接拒,边界值6年才进入分析,别在IF节点写错比较符
- 两张表的Spreadsheet ID不同,复制节点后容易只改一处导致读写错表
- DOC/DOCX的文本提取与PDF不同,模板说明需自行确认上传节点接受的文件类型
- Minimum Score以JD表为准,若某职位门槛不是80,硬编码80会误判
- 表单必须发布后候选人才可访问,测试链接与正式链接不要混用
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Score and triage job applications with Google Gemini and Google Sheets
- 原作者
- WeblineIndia
- 原始发布日期
- 2026-09-15T08:18:45.415Z
- 来源
- https://n8n.io/workflows/19616