使用AI自动化从Gmail到Airtable的简历筛选和申请人评分
高级
这是一个HR, AI Summarization领域的自动化工作流,包含 16 个节点。主要使用 Set, Merge, Airtable, GmailTrigger, ExtractFromFile 等节点。 使用AI自动化从Gmail到Airtable的简历筛选和申请人评分
前置要求
- •Airtable API Key
- •Google 账号和 Gmail API 凭证
- •Google Gemini API Key
使用的节点 (16)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "689fa22e68cd4198e4ae37f3cc44f498087edd235a867e22515be823bab694c7",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "ba543316-f00d-452d-bdcb-929d264e2c30",
"name": "Google Gemini 聊天模型",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-464,
400
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.5-flash-preview-04-17"
},
"credentials": {
"googlePalmApi": {
"id": "oN60i7iTnOJLvzUZ",
"name": "said latihan"
}
},
"typeVersion": 1
},
{
"id": "7a05b84b-ed92-4e55-b932-390725dd9cb2",
"name": "Google Gemini聊天模型1",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
464,
400
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.5-flash-preview-04-17"
},
"credentials": {
"googlePalmApi": {
"id": "oN60i7iTnOJLvzUZ",
"name": "said latihan"
}
},
"typeVersion": 1
},
{
"id": "6cc4f324-dcfe-4e9f-8af3-34074306d37b",
"name": "结构化输出解析器",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
640,
416
],
"parameters": {
"jsonSchemaExample": "{\n\t\"score\": 100,\n\t\"fit_summary\": \"Los Angeles\"\n}"
},
"typeVersion": 1.2
},
{
"id": "b6b4e893-d011-43d8-9453-cb27fa1a54ab",
"name": "监控新申请",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
-1280,
16
],
"parameters": {
"simple": false,
"filters": {
"q": "has:attachment OR has:document"
},
"options": {
"downloadAttachments": true,
"dataPropertyAttachmentsPrefixName": "CV_"
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"credentials": {
"gmailOAuth2": {
"id": "bz2ymQsAeALCEssA",
"name": "Ryan Google Credentials"
}
},
"typeVersion": 1.2
},
{
"id": "57948245-8761-4b3d-9493-7ec14bdcbfcb",
"name": "提取职位代码",
"type": "n8n-nodes-base.set",
"position": [
-624,
-224
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "4f8f7c3f-3f03-4b99-8332-c1131e7807b1",
"name": "=Job Code",
"type": "string",
"value": "={{ ($json.subject.match(/([A-Z]{2}-\\d{3})/) || [])[1] || null }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "026ad70e-f96a-4547-88cb-e95d07bb8d1a",
"name": "查找职位发布",
"type": "n8n-nodes-base.airtable",
"position": [
-224,
-224
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "apppwpxrdT85fG31V",
"cachedResultUrl": "https://airtable.com/apppwpxrdT85fG31V",
"cachedResultName": "UMKM"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblLM8M41XkSaTLxw",
"cachedResultUrl": "https://airtable.com/apppwpxrdT85fG31V/tblLM8M41XkSaTLxw",
"cachedResultName": "Job Posts"
},
"options": {},
"operation": "search",
"filterByFormula": "={Job Code} = '{{ $json[\"Job Code\"] }}'"
},
"credentials": {
"airtableTokenApi": {
"id": "FKcJ1ogNuXHNGNcb",
"name": "Fahmi UMKM"
}
},
"typeVersion": 2.1,
"alwaysOutputData": true
},
{
"id": "31e468c3-3876-4789-bed7-ef9f274d4b0d",
"name": "读取简历(PDF)文本",
"type": "n8n-nodes-base.extractFromFile",
"position": [
-688,
272
],
"parameters": {
"options": {},
"operation": "pdf",
"binaryPropertyName": "CV_0"
},
"typeVersion": 1
},
{
"id": "995b95ca-ee4d-446a-886e-2500c34830c5",
"name": "AI 简历解析器",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
-464,
272
],
"parameters": {
"text": "=CV Text: {{ $json.text }}\n\nEmail Subject: {{ $('Watch for New Applications').item.json.subject }}",
"options": {
"systemPromptTemplate": "=You are a professional CV parsing and information extraction agent, specialized in structured data extraction for job applications.\nYour task is to extract only the **relevant attributes** from the applicant's CV text. Return the extracted information in **structured JSON format**, using the keys provided below.\nIf an attribute is not found or not confidently identifiable, you may **omit** that key from the response.\n\n### Extract the following attributes (if available):\n* `job_code`: the code of the job from the Email Subject\n* `name`: Full name of the applicant\n* `email`: Email address\n* `phone`: Phone number\n* `address`: Location or city (optional)\n* `education`: Highest education or relevant qualifications\n* `experience_years`: Estimated total years of relevant work experience\n* `skills`: List of relevant skills\n* `last_position`: Most recent job title or role\n* `last_company`: Most recent company worked at\n* `language`: List of languages spoken (optional)\n* `certifications`: Relevant certificates or training (optional)\n\n### Output Rules:\n* Only include fields that are clearly present in the CV and Email Subject.\n* Format your response as a clean, valid JSON object.\n* Do not include any explanations or extra text—**only return JSON**."
},
"schemaType": "fromJson",
"jsonSchemaExample": "{\n \"job_code\": \"AB-001\",\n \"name\": \"Siti Nurhaliza\",\n \"email\": \"siti.nurhaliza@example.com\",\n \"phone\": \"+62 812-3456-7890\",\n \"address\": \"Jakarta Selatan, Indonesia\",\n \"education\": \"Sarjana Teknik Industri, Universitas Indonesia\",\n \"experience_years\": 3.5,\n \"skills\": [\n \"Meracik Kopi\",\n \"Latte Art\",\n \"Customer Service\",\n \"Manajemen Waktu\"\n ],\n \"last_position\": \"Barista Senior\",\n \"last_company\": \"Kopi Kita Coffeehouse\",\n \"language\": [\n \"Bahasa Indonesia\",\n \"Inggris\"\n ],\n \"certifications\": [\n \"Sertifikat Barista dari SCA\",\n \"Pelatihan Latte Art Profesional\"\n ]\n}"
},
"typeVersion": 1.1
},
{
"id": "d36f4b59-cffc-4fa9-bb92-070630555882",
"name": "合并职位和简历数据",
"type": "n8n-nodes-base.merge",
"position": [
32,
192
],
"parameters": {
"mode": "combine",
"options": {},
"advanced": true,
"mergeByFields": {
"values": [
{
"field1": "Job Code",
"field2": "output.job_code"
}
]
}
},
"typeVersion": 3.2
},
{
"id": "17a29a4a-c659-48ba-be25-2a38de28cc58",
"name": "AI 申请人评分器",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
448,
192
],
"parameters": {
"text": "=You are given the following job requirements and a candidate's CV data.\nPlease evaluate the match and return a score from 1 to 100, along with a brief summary of your reasoning.\n\n---\n\n Job Post Data:\n- Job Title: {{ $json['Job Title'] }}\n- Required Skills: {{ $json['Required Skills'].join(', ') }}\n- Minimum Experience: {{ $json['Minimum Experience (Years)'] }} years\n- Job Description: {{ $json['Job Description'] }}\n\n---\n Applicant CV Data:\n- Name: {{ $json.output.name }}\n- Email: {{ $json.output.email }}\n- Phone: {{ $json.output.phone }}\n- Education: {{ $json.output.education }}\n- Experience: {{ $json.output.experience_years }} years\n- Skills: {{ $json.output.skills.join(', ') }}\n- Last Position: {{ $json.output.last_position }}\n- Last Company: {{ $json.output.last_company }}\n- Language: {{ $json.output.language.join(', ') }}\n- Certifications: {{ $json.output.certifications }}",
"batching": {},
"messages": {
"messageValues": [
{
"message": "=You are a professional job application evaluator and recruitment assistant. Your role is to assess the suitability of job applicants based on their CV data and compare it with the job's requirements. You must return a structured JSON response with the following keys: - `score`: A number between 1–100 that reflects how well the applicant matches the job. - `fit_summary`: A short, clear explanation (max 2 sentences) of why you gave that score. Scoring is based primarily on: - Skill match (technical and soft skills) - Relevant experience (including job titles and industries) - Education or certification (if required) - Language and communication skills (optional) Be objective and consistent in your evaluations and use BAHASA INDONESIA. Only give high scores to applicants that strongly match the role requirements. Do not include any extra commentary — only return JSON."
}
]
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.7
},
{
"id": "ad1babe0-ccfb-4941-9b86-cf59ad6c77ca",
"name": "保存申请人",
"type": "n8n-nodes-base.airtable",
"position": [
1136,
192
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "apppwpxrdT85fG31V",
"cachedResultUrl": "https://airtable.com/apppwpxrdT85fG31V",
"cachedResultName": "UMKM"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblkWxuaAvw0GmeCT",
"cachedResultUrl": "https://airtable.com/apppwpxrdT85fG31V/tblkWxuaAvw0GmeCT",
"cachedResultName": "Applications"
},
"columns": {
"value": {
"Notes": "={{ $json.output.fit_summary }}",
"Score": "={{ $json.output.score }}",
"Job Post": "={{ $('Combine Job & CV Data').item.json['Job Code'] }}",
"Email Address": "={{ $('Combine Job & CV Data').item.json.output.email }}",
"Applicant Name": "={{ $('Combine Job & CV Data').item.json.output.name }}",
"Years of Experience": 0
},
"schema": [
{
"id": "Application ID",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Application ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Post",
"type": "array",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Job Post",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Applicant Name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Applicant Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Address",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Email Address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "CV File",
"type": "array",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "CV File",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Parsed Skills",
"type": "array",
"display": true,
"options": [],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Parsed Skills",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Years of Experience",
"type": "number",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Years of Experience",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Score",
"type": "number",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "options",
"display": true,
"options": [
{
"name": "Pending",
"value": "Pending"
},
{
"name": "Shortlisted",
"value": "Shortlisted"
},
{
"name": "Rejected",
"value": "Rejected"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Received At",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Received At",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Raw Subject",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Raw Subject",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Notes",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Notes",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Auto ID",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Auto ID",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"id": "FKcJ1ogNuXHNGNcb",
"name": "Fahmi UMKM"
}
},
"typeVersion": 2.1
},
{
"id": "25eb8342-394c-4165-9696-3d15097beae2",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2272,
-1104
],
"parameters": {
"width": 656,
"height": 1152,
"content": "## 使用 AI 自动化从 Gmail 到 Airtable 的简历筛选和申请人评分"
},
"typeVersion": 1
},
{
"id": "5782b22a-f17c-4dd3-bf59-c1929d3d70fe",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1456,
-32
],
"parameters": {
"width": 368,
"height": 224,
"content": "## 监控带有附件的邮件"
},
"typeVersion": 1
},
{
"id": "7a32ee3d-51b3-48a5-88f6-6b1de399f318",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-736,
-336
],
"parameters": {
"width": 688,
"height": 272,
"content": "## 在 Airtable 中获取职位发布"
},
"typeVersion": 1
},
{
"id": "17e071af-7f26-4c72-a528-9fa8cc026aca",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-768,
176
],
"parameters": {
"width": 688,
"height": 352,
"content": "## 提取和解析简历信息"
},
"typeVersion": 1
},
{
"id": "8edcc4d8-58ec-422b-b6c2-df7b883f83cc",
"name": "便签说明4",
"type": "n8n-nodes-base.stickyNote",
"position": [
368,
64
],
"parameters": {
"width": 448,
"height": 496,
"content": "## 使用 AI 为申请人评分"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"995b95ca-ee4d-446a-886e-2500c34830c5": {
"main": [
[
{
"node": "d36f4b59-cffc-4fa9-bb92-070630555882",
"type": "main",
"index": 1
}
]
]
},
"026ad70e-f96a-4547-88cb-e95d07bb8d1a": {
"main": [
[
{
"node": "d36f4b59-cffc-4fa9-bb92-070630555882",
"type": "main",
"index": 0
}
]
]
},
"57948245-8761-4b3d-9493-7ec14bdcbfcb": {
"main": [
[
{
"node": "026ad70e-f96a-4547-88cb-e95d07bb8d1a",
"type": "main",
"index": 0
}
]
]
},
"31e468c3-3876-4789-bed7-ef9f274d4b0d": {
"main": [
[
{
"node": "995b95ca-ee4d-446a-886e-2500c34830c5",
"type": "main",
"index": 0
}
]
]
},
"17a29a4a-c659-48ba-be25-2a38de28cc58": {
"main": [
[
{
"node": "ad1babe0-ccfb-4941-9b86-cf59ad6c77ca",
"type": "main",
"index": 0
}
]
]
},
"d36f4b59-cffc-4fa9-bb92-070630555882": {
"main": [
[
{
"node": "17a29a4a-c659-48ba-be25-2a38de28cc58",
"type": "main",
"index": 0
}
]
]
},
"ba543316-f00d-452d-bdcb-929d264e2c30": {
"ai_languageModel": [
[
{
"node": "995b95ca-ee4d-446a-886e-2500c34830c5",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"6cc4f324-dcfe-4e9f-8af3-34074306d37b": {
"ai_outputParser": [
[
{
"node": "17a29a4a-c659-48ba-be25-2a38de28cc58",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"7a05b84b-ed92-4e55-b932-390725dd9cb2": {
"ai_languageModel": [
[
{
"node": "17a29a4a-c659-48ba-be25-2a38de28cc58",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"b6b4e893-d011-43d8-9453-cb27fa1a54ab": {
"main": [
[
{
"node": "57948245-8761-4b3d-9493-7ec14bdcbfcb",
"type": "main",
"index": 0
},
{
"node": "31e468c3-3876-4789-bed7-ef9f274d4b0d",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 人力资源, AI 摘要总结
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
使用Gemini AI和Decodo爬虫自动匹配简历与职位
使用Gemini AI和Decodo爬虫自动匹配简历与职位
Set
Gmail
Merge
+
Set
Gmail
Merge
20 节点Fahmi Fahreza
人力资源
使用AI、Gmail、GoogleDrive和Airtable
使用AI、Gmail、GoogleDrive和Airtable的自动简历筛选与评分
Set
Code
Merge
+
Set
Code
Merge
23 节点usamaahmed
人力资源
第一轮 Telegram 和 LinkedIn 快速通道 AI 招聘助手
AI候选人筛选流程:LinkedIn到Telegram,集成Gemini与Apify
If
Set
Code
+
If
Set
Code
55 节点Dean Pike
人力资源
使用Decodo和Gemini分析Trustpilot和Sitejabber情感
使用Decodo和Gemini分析Trustpilot和Sitejabber情感并保存到Sheets
Set
Merge
Form Trigger
+
Set
Merge
Form Trigger
18 节点Fahmi Fahreza
市场调研
Gemini LLM、Gmail和Notion职位档案的自动化简历评分
Gemini LLM、Gmail和Notion职位档案的自动化简历评分
Wait
Gmail
Merge
+
Wait
Gmail
Merge
22 节点Agentick AI
人力资源
在可视化参考库中探索n8n节点
在可视化参考库中探索n8n节点
If
Ftp
Set
+
If
Ftp
Set
113 节点I versus AI
其他