AI驱动的GPT-4o-mini招聘流程:从简历筛选到面试安排
高级
这是一个HR、AI Summarization领域的自动化工作流,包含 21 个节点。主要使用 Slack、Filter、Webhook、Airtable、EmailSend 等节点。 使用GPT-4o-mini在Airtable中自动化招聘:从简历筛选到面试安排
前置要求
- •Slack Bot Token 或 Webhook URL
- •HTTP Webhook 端点(n8n 会自动生成)
- •Airtable API Key
- •可能需要目标 API 的认证凭证
- •OpenAI API Key
使用的节点 (21 个)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "i7hRouNsQLAJJg4F",
"meta": {
"instanceId": "b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"
},
"name": "AI驱动的GPT-4o-mini招聘流程:从简历筛选到面试安排",
"tags": [],
"nodes": [
{
"id": "2a69b990-5536-4825-81e2-682ef75fe7a2",
"name": "Webhook - 接收简历",
"type": "n8n-nodes-base.webhook",
"position": [
112,
352
],
"webhookId": "21c60b52-4d15-48a2-9a70-d51be54905e1",
"parameters": {
"path": "candidate-cv",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2
},
{
"id": "6e476a4e-e2bb-4298-9ddc-5829aeb8306f",
"name": "Airtable - 存储候选人",
"type": "n8n-nodes-base.airtable",
"position": [
304,
208
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appXXXXXXXXXXXXXX",
"cachedResultName": "Candidates"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblCandidates",
"cachedResultName": "Candidates"
},
"columns": {
"value": {
"Name": "={{ $json.body.name }}",
"Email": "={{ $json.body.email }}",
"Phone": "={{ $json.body.phone }}",
"CV_URL": "={{ $json.body.cv_url }}",
"Status": "New Application",
"Application_Date": "={{ $now.toISO() }}",
"Position_Applied": "={{ $json.body.position }}"
},
"mappingMode": "defineBelow"
},
"options": {},
"operation": "create",
"authentication": "oAuth2"
},
"typeVersion": 2
},
{
"id": "56b8fd3c-8f51-44c5-a39c-80c002da4cc7",
"name": "HTTP请求 - 下载简历",
"type": "n8n-nodes-base.httpRequest",
"position": [
272,
432
],
"parameters": {
"url": "={{ $('Webhook - Receive CV').item.json.body.cv_url }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "477e1bb2-ddce-4655-b148-5eddff7a0672",
"name": "AI - 提取简历数据",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
400,
432
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "0fdb2b79-b63d-42be-9ddc-2cee4cf5a83c",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
400,
592
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "ea434fe7-5922-4413-9d94-a1bb049a1a13",
"name": "Airtable - 获取职位要求",
"type": "n8n-nodes-base.airtable",
"position": [
464,
224
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appXXXXXXXXXXXXXX",
"cachedResultName": "Candidates"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblJobRequirements",
"cachedResultName": "Job Requirements"
},
"options": {},
"operation": "search",
"authentication": "oAuth2",
"filterByFormula": "=AND({Position}='{{ $('Webhook - Receive CV').item.json.body.position }}', {Active}=TRUE())"
},
"typeVersion": 2
},
{
"id": "529064ba-9f1e-4a4c-aa5e-ccbae81f2e57",
"name": "AI代理 - 资格评估",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
704,
352
],
"parameters": {
"text": "=You are a recruitment AI assistant. Analyze if this candidate matches the job requirements.\n\nCandidate Profile:\n{{ $json.text }}\n\nJob Requirements:\n- Position: {{ $('Airtable - Get Job Requirements').item.json.Position }}\n- Required Experience: {{ $('Airtable - Get Job Requirements').item.json.Required_Experience }} years\n- Required Skills: {{ $('Airtable - Get Job Requirements').item.json.Required_Skills }}\n- Education Required: {{ $('Airtable - Get Job Requirements').item.json.Education_Required }}\n- Nice to Have: {{ $('Airtable - Get Job Requirements').item.json.Nice_To_Have }}\n\nProvide:\n1. Match Score (0-100)\n2. Qualification Status (Highly Qualified / Qualified / Potentially Qualified / Not Qualified)\n3. Strengths (3 key points)\n4. Gaps (areas where candidate doesn't meet requirements)\n5. Recommendation (Interview / Phone Screen / Reject)\n\nFormat as JSON: {\"match_score\": number, \"status\": string, \"strengths\": [string], \"gaps\": [string], \"recommendation\": string, \"reasoning\": string}",
"options": {
"systemMessage": "You are an expert recruitment AI that provides objective, fair candidate assessments based on qualifications and job requirements."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.7
},
{
"id": "2f34882a-fce9-4f89-9563-438f9aa82795",
"name": "OpenAI聊天模型评估",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
704,
576
],
"parameters": {
"model": "gpt-4o",
"options": {
"temperature": 0.3
}
},
"typeVersion": 1
},
{
"id": "c68e5f48-5033-45f5-b7a7-75bfa8f472b6",
"name": "结构化输出解析器",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
864,
576
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "259d8989-fd79-402d-8993-00eafc43e86c",
"name": "Airtable - 更新评估结果",
"type": "n8n-nodes-base.airtable",
"position": [
976,
352
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appXXXXXXXXXXXXXX",
"cachedResultName": "Candidates"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblCandidates",
"cachedResultName": "Candidates"
},
"columns": {
"value": {
"Skills": "={{ $('AI - Extract CV Data').item.json.skills.join(', ') }}",
"Status": "={{ $json.recommendation === 'Reject' ? 'Rejected' : 'Qualified' }}",
"AI_Gaps": "={{ $json.gaps.join(', ') }}",
"Education": "={{ $('AI - Extract CV Data').item.json.education }}",
"Match_Score": "={{ $json.match_score }}",
"AI_Reasoning": "={{ $json.reasoning }}",
"AI_Strengths": "={{ $json.strengths.join(', ') }}",
"Years_Experience": "={{ $('AI - Extract CV Data').item.json.years_experience }}",
"AI_Recommendation": "={{ $json.recommendation }}",
"Qualification_Status": "={{ $json.status }}"
},
"mappingMode": "defineBelow"
},
"options": {},
"operation": "update",
"authentication": "oAuth2"
},
"typeVersion": 2
},
{
"id": "dda61fa4-8d96-40d3-aa9f-2feac1b03fe9",
"name": "过滤器 - 合格候选人",
"type": "n8n-nodes-base.filter",
"position": [
1136,
224
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "f8db4e5d-3c5e-4e0a-a0a5-d4c8e2d0a3f1",
"operator": {
"type": "string",
"operation": "notEquals"
},
"leftValue": "={{ $json.recommendation }}",
"rightValue": "Reject"
}
]
}
},
"typeVersion": 2.1
},
{
"id": "eb06c596-bfed-4bd2-8d5d-6eec33740b1b",
"name": "AI代理 - 生成邮件",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1296,
224
],
"parameters": {
"text": "=Generate a personalized recruitment email for this candidate.\n\nCandidate: {{ $('Airtable - Store Candidate').item.json.Name }}\nPosition: {{ $('Webhook - Receive CV').item.json.body.position }}\nMatch Score: {{ $json.match_score }}\nStatus: {{ $json.status }}\nRecommendation: {{ $json.recommendation }}\n\nKey Strengths:\n{{ $json.strengths.join('\\n') }}\n\nEmail should:\n- Be professional and warm\n- Congratulate them on their application\n- Mention 1-2 specific strengths that stood out\n- {{ $json.recommendation === 'Interview' ? 'Invite them for a formal interview' : 'Suggest a preliminary phone screening' }}\n- Include next steps\n- Be concise (150-200 words)\n\nProvide: {\"subject\": string, \"body\": string}",
"options": {
"systemMessage": "You are a professional recruitment communications specialist. Write engaging, personalized emails that make candidates feel valued."
},
"promptType": "define"
},
"typeVersion": 1.7
},
{
"id": "558ed33e-f2e1-41a6-af31-699ba4324675",
"name": "OpenAI聊天模型邮件",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1296,
448
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "OGYj7DgYv5GFLFZk",
"name": "OpenAi account 2"
}
},
"typeVersion": 1
},
{
"id": "12222fa6-a277-4af1-8cbb-7b27c67ea2d0",
"name": "发送邮件 - 候选人联系",
"type": "n8n-nodes-base.emailSend",
"position": [
1584,
224
],
"webhookId": "88019c7f-4d4b-4fda-af01-f3021ccb399c",
"parameters": {
"options": {},
"subject": "={{ $json.subject }}",
"toEmail": "={{ $('Airtable - Store Candidate').item.json.Email }}",
"fromEmail": "recruitment@company.com"
},
"typeVersion": 2.1
},
{
"id": "72a2753a-535f-4e77-9901-a4007124c76a",
"name": "过滤器 - 面试候选人",
"type": "n8n-nodes-base.filter",
"position": [
1760,
224
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "a2c4f6e8-1b3d-4a7c-9e5f-0d8b2c4a6e1f",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('AI Agent - Qualification Assessment').item.json.recommendation }}",
"rightValue": "Interview"
}
]
}
},
"typeVersion": 2.1
},
{
"id": "0a7e25e8-767a-4e1f-ae2e-c398efabca7c",
"name": "Google日历 - 安排面试",
"type": "n8n-nodes-base.googleCalendar",
"position": [
1984,
224
],
"parameters": {
"end": "={{ $now.plus({ days: 3, hours: 1 }).toISO() }}",
"start": "={{ $now.plus({ days: 3 }).toISO() }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": "primary",
"cachedResultName": "Primary"
},
"additionalFields": {}
},
"typeVersion": 1.2
},
{
"id": "7d6c9426-4719-4516-b8f5-dcd5e86170f3",
"name": "Airtable - 更新面试详情",
"type": "n8n-nodes-base.airtable",
"position": [
2208,
224
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appXXXXXXXXXXXXXX",
"cachedResultName": "Candidates"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblCandidates",
"cachedResultName": "Candidates"
},
"columns": {
"value": {
"Status": "Interview Scheduled",
"Interview_Link": "={{ $json.hangoutLink }}",
"Calendar_Event_ID": "={{ $json.id }}",
"Interview_Scheduled": "={{ $json.start.dateTime }}"
},
"mappingMode": "defineBelow"
},
"options": {},
"operation": "update",
"authentication": "oAuth2"
},
"typeVersion": 2
},
{
"id": "993a2d90-9ec0-4ba5-9c3f-0704704dd8ae",
"name": "Slack - 发送通知",
"type": "n8n-nodes-base.slack",
"position": [
1664,
432
],
"webhookId": "e7445fd1-5292-4e82-923a-e979940ba3b3",
"parameters": {
"text": "=🎯 *New Candidate Processed*\n\n*Candidate:* {{ $('Airtable - Store Candidate').item.json.Name }}\n*Position:* {{ $('Webhook - Receive CV').item.json.body.position }}\n*Match Score:* {{ $('AI Agent - Qualification Assessment').item.json.match_score }}%\n*Status:* {{ $('AI Agent - Qualification Assessment').item.json.status }}\n*Recommendation:* {{ $('AI Agent - Qualification Assessment').item.json.recommendation }}\n\n*Key Strengths:*\n{{ $('AI Agent - Qualification Assessment').item.json.strengths.map((s, i) => `${i+1}. ${s}`).join('\\n') }}\n\n{{ $('AI Agent - Qualification Assessment').item.json.recommendation === 'Interview' ? '📅 *Interview Scheduled:* ' + $now.plus({ days: 3 }).toFormat('MMM dd, yyyy HH:mm') : '📞 *Next Step:* Phone screening' }}\n\n<https://airtable.com/appXXXXXXXXXXXXXX/tblCandidates/{{ $('Airtable - Store Candidate').item.json.id }}|View in Airtable>",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C0123456789",
"cachedResultName": "#recruitment"
},
"otherOptions": {}
},
"typeVersion": 2.2
},
{
"id": "9d640257-d798-4d6a-97ad-0e1344c459b9",
"name": "响应 Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
2384,
352
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "={{ {\n \"success\": true,\n \"candidate_id\": $('Airtable - Store Candidate').item.json.id,\n \"name\": $('Airtable - Store Candidate').item.json.Name,\n \"match_score\": $('AI Agent - Qualification Assessment').item.json.match_score,\n \"status\": $('AI Agent - Qualification Assessment').item.json.status,\n \"recommendation\": $('AI Agent - Qualification Assessment').item.json.recommendation,\n \"message\": \"Application processed successfully\"\n} }}"
},
"typeVersion": 1.1
},
{
"id": "1ca1599c-5e50-4231-b384-73e58678fce9",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-400,
-80
],
"parameters": {
"width": 480,
"height": 640,
"content": "## 简介"
},
"typeVersion": 1
},
{
"id": "7c2b3a99-8480-4344-a98f-7a223ad253ef",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
-80
],
"parameters": {
"color": 6,
"width": 448,
"height": 384,
"content": ""
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "32b604ba-da3d-49a1-89dc-7e8a37f787b7",
"connections": {
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI - Extract CV Data",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"AI - Extract CV Data": {
"main": [
[
{
"node": "AI Agent - Qualification Assessment",
"type": "main",
"index": 0
}
]
]
},
"Webhook - Receive CV": {
"main": [
[
{
"node": "Airtable - Store Candidate",
"type": "main",
"index": 0
},
{
"node": "HTTP Request - Download CV",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model Email": {
"ai_languageModel": [
[
{
"node": "AI Agent - Generate Email",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Agent - Qualification Assessment",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"AI Agent - Generate Email": {
"main": [
[
{
"node": "Send Email - Candidate Outreach",
"type": "main",
"index": 0
}
]
]
},
"Slack - Send Notification": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Airtable - Store Candidate": {
"main": [
[
{
"node": "Airtable - Get Job Requirements",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request - Download CV": {
"main": [
[
{
"node": "AI - Extract CV Data",
"type": "main",
"index": 0
}
]
]
},
"Airtable - Update Assessment": {
"main": [
[
{
"node": "Filter - Qualified Candidates",
"type": "main",
"index": 0
},
{
"node": "Slack - Send Notification",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model Assessment": {
"ai_languageModel": [
[
{
"node": "AI Agent - Qualification Assessment",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Filter - Interview Candidates": {
"main": [
[
{
"node": "Google Calendar - Schedule Interview",
"type": "main",
"index": 0
}
]
]
},
"Filter - Qualified Candidates": {
"main": [
[
{
"node": "AI Agent - Generate Email",
"type": "main",
"index": 0
}
]
]
},
"Airtable - Get Job Requirements": {
"main": [
[
{
"node": "AI Agent - Qualification Assessment",
"type": "main",
"index": 0
}
]
]
},
"Send Email - Candidate Outreach": {
"main": [
[
{
"node": "Filter - Interview Candidates",
"type": "main",
"index": 0
}
]
]
},
"AI Agent - Qualification Assessment": {
"main": [
[
{
"node": "Airtable - Update Assessment",
"type": "main",
"index": 0
}
]
]
},
"Airtable - Update Interview Details": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Google Calendar - Schedule Interview": {
"main": [
[
{
"node": "Airtable - Update Interview Details",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
这是一个高级难度的工作流,适用于HR、AI Summarization等场景。适合高级用户,包含 16+ 个节点的复杂工作流
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
AI驱动的同行评审作业系统,带自动评分标准生成
使用GPT-4-nano、Slack和邮件通知自动化同行评审分配
Set
Code
Slack
+9
22 节点Cheng Siong Chin
Document Extraction
AI-GPT-4o-mini驱动的预测性健康监测与警报系统
使用GPT-4o-mini的预测性健康监测与警报系统
If
Code
Redis
+12
26 节点Cheng Siong Chin
Engineering
Sonar Pro AI作业评估与多截止日期提醒
通过Sonar Pro AI和多渠道截止日期提醒自动化同行评审分配
Set
Filter
Discord
+13
23 节点Cheng Siong Chin
Document Extraction
使用 GPT-4o-Mini 驱动智能摘要自动同步 Excel 到事件日历
使用 GPT-4o-Mini 智能摘要将 Excel 事件同步至 Google 日历
Set
Merge
Filter
+9
20 节点Cheng Siong Chin
Personal Productivity
AI驱动的GPT-4-Turbo作业评分与多格式输出
使用GPT-4-Turbo自动化作业评分并生成多格式报告
Set
Code
Webhook
+7
15 节点Cheng Siong Chin
Document Extraction
在可视化参考库中探索n8n节点
在可视化参考库中探索n8n节点
If
Ftp
Set
+93
113 节点I versus AI
Other
工作流信息
难度等级
高级
节点数量21
分类2
节点类型13
作者
Cheng Siong Chin
@cschinProf. Cheng Siong CHIN serves as Chair Professor in Intelligent Systems Modelling and Simulation in Newcastle University, Singapore. His academic credentials include an M.Sc. in Advanced Control and Systems Engineering from The University of Manchester and a Ph.D. in Robotics from Nanyang Technological University.
外部链接
在 n8n.io 上查看 →
分享此工作流