AI駆動のGPT-4o-mini採用プロセス:レジュメからインタビュー手配まで
上級
これはHR, AI Summarization分野の自動化ワークフローで、21個のノードを含みます。主にSlack, Filter, Webhook, Airtable, EmailSendなどのノードを使用。 GPT-4o-miniを使ってAirtableで採用業務を自動化:履歴書削除からインタビュー scheduling まで
前提条件
- •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-Powered GPT-4o-mini Recruitment Pipeline: CV Screening to Interview Scheduler",
"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チャットモデル",
"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": "## Introduction\nAutomate candidate evaluation from CV submission to interview booking. Perfect for HR teams and recruiters.\n## How It Works\nWebhook receives CVs, extracts Airtable data, AI assesses qualifications, filters candidates, sends emails, schedules Google Calendar interviews, and updates records.\n## Workflow Template\nWebhook → Airtable (Get Data) → AI Extract CV → AI Assessment → Filter Qualified → Generate Email → Send Email → Filter Interview Candidates → Schedule Calendar → Update Airtable → Slack Notification → Respond\n## Workflow Steps\n1. Receive & Store: Webhook receives CVs, saves to Airtable.\n2. Fetch & Download: Gets job criteria, downloads CVs.\n3. AI Assessment: Parses skills, scores candidates.\n4. Filter & Email: Routes qualified, sends messages.\n5. Schedule & Update: Books interviews, updates Airtable.\n6. Notify: Alerts via Slack, confirms status.\n## Setup Instructions\n1. **Webhook & Airtable:** Set URL, create tables, add credentials.\n2. **AI Configuration:** Add OpenAI key, define schema, customize scoring.\n3. **Communication:** Connect Gmail, Calendar, and Slack.\n"
},
"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": "\n## Prerequisites\n- Airtable account\n- OpenAI API key\n- Gmail and Google Calendar\n- Slack workspace (optional)\n\n## Customization\n- Multi-stage scheduling\n- ATS integration (Greenhouse, Lever)\n\n## Benefits\n- Reduces screening time by 90%\n- Ensures uniform evaluation\n- Cuts time-to-hire by 60%"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "32b604ba-da3d-49a1-89dc-7e8a37f787b7",
"connections": {
"0fdb2b79-b63d-42be-9ddc-2cee4cf5a83c": {
"ai_languageModel": [
[
{
"node": "477e1bb2-ddce-4655-b148-5eddff7a0672",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"477e1bb2-ddce-4655-b148-5eddff7a0672": {
"main": [
[
{
"node": "529064ba-9f1e-4a4c-aa5e-ccbae81f2e57",
"type": "main",
"index": 0
}
]
]
},
"2a69b990-5536-4825-81e2-682ef75fe7a2": {
"main": [
[
{
"node": "6e476a4e-e2bb-4298-9ddc-5829aeb8306f",
"type": "main",
"index": 0
},
{
"node": "56b8fd3c-8f51-44c5-a39c-80c002da4cc7",
"type": "main",
"index": 0
}
]
]
},
"558ed33e-f2e1-41a6-af31-699ba4324675": {
"ai_languageModel": [
[
{
"node": "eb06c596-bfed-4bd2-8d5d-6eec33740b1b",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"c68e5f48-5033-45f5-b7a7-75bfa8f472b6": {
"ai_outputParser": [
[
{
"node": "529064ba-9f1e-4a4c-aa5e-ccbae81f2e57",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"eb06c596-bfed-4bd2-8d5d-6eec33740b1b": {
"main": [
[
{
"node": "12222fa6-a277-4af1-8cbb-7b27c67ea2d0",
"type": "main",
"index": 0
}
]
]
},
"993a2d90-9ec0-4ba5-9c3f-0704704dd8ae": {
"main": [
[
{
"node": "9d640257-d798-4d6a-97ad-0e1344c459b9",
"type": "main",
"index": 0
}
]
]
},
"6e476a4e-e2bb-4298-9ddc-5829aeb8306f": {
"main": [
[
{
"node": "ea434fe7-5922-4413-9d94-a1bb049a1a13",
"type": "main",
"index": 0
}
]
]
},
"56b8fd3c-8f51-44c5-a39c-80c002da4cc7": {
"main": [
[
{
"node": "477e1bb2-ddce-4655-b148-5eddff7a0672",
"type": "main",
"index": 0
}
]
]
},
"259d8989-fd79-402d-8993-00eafc43e86c": {
"main": [
[
{
"node": "dda61fa4-8d96-40d3-aa9f-2feac1b03fe9",
"type": "main",
"index": 0
},
{
"node": "993a2d90-9ec0-4ba5-9c3f-0704704dd8ae",
"type": "main",
"index": 0
}
]
]
},
"2f34882a-fce9-4f89-9563-438f9aa82795": {
"ai_languageModel": [
[
{
"node": "529064ba-9f1e-4a4c-aa5e-ccbae81f2e57",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"72a2753a-535f-4e77-9901-a4007124c76a": {
"main": [
[
{
"node": "0a7e25e8-767a-4e1f-ae2e-c398efabca7c",
"type": "main",
"index": 0
}
]
]
},
"dda61fa4-8d96-40d3-aa9f-2feac1b03fe9": {
"main": [
[
{
"node": "eb06c596-bfed-4bd2-8d5d-6eec33740b1b",
"type": "main",
"index": 0
}
]
]
},
"ea434fe7-5922-4413-9d94-a1bb049a1a13": {
"main": [
[
{
"node": "529064ba-9f1e-4a4c-aa5e-ccbae81f2e57",
"type": "main",
"index": 0
}
]
]
},
"12222fa6-a277-4af1-8cbb-7b27c67ea2d0": {
"main": [
[
{
"node": "72a2753a-535f-4e77-9901-a4007124c76a",
"type": "main",
"index": 0
}
]
]
},
"529064ba-9f1e-4a4c-aa5e-ccbae81f2e57": {
"main": [
[
{
"node": "259d8989-fd79-402d-8993-00eafc43e86c",
"type": "main",
"index": 0
}
]
]
},
"7d6c9426-4719-4516-b8f5-dcd5e86170f3": {
"main": [
[
{
"node": "9d640257-d798-4d6a-97ad-0e1344c459b9",
"type": "main",
"index": 0
}
]
]
},
"0a7e25e8-767a-4e1f-ae2e-c398efabca7c": {
"main": [
[
{
"node": "7d6c9426-4719-4516-b8f5-dcd5e86170f3",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - 人事, AI要約
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
AI駆動の同僚レビュー作業システム with 自動採点基準生成
GPT-4-nano、Slack、メール通知を使用したペアレビュー割り当ての自動化
Set
Code
Slack
+
Set
Code
Slack
22 ノードCheng Siong Chin
文書抽出
Sonar Pro AI作業評価と複数の締切提醒
Sonar Pro AIとマルチチャネル期限提醒を使用したペアレビュー割り当ての自動化
Set
Filter
Discord
+
Set
Filter
Discord
23 ノードCheng Siong Chin
文書抽出
AI駆動のGPT-4-Turboによる課題採点と複数形式出力
GPT-4-Turboで作業の採点を自動化かつ、複数形式のレポートを生成
Set
Code
Webhook
+
Set
Code
Webhook
15 ノードCheng Siong Chin
文書抽出
n8nノードの探索(可視化リファレンスライブラリ内)
n8nノードを可視化リファレンスライブラリで探索
If
Ftp
Set
+
If
Ftp
Set
113 ノードI versus AI
その他
AI 駆動型の Grok-3 早期警告システム(家族への通知機能付き)
Grok-3 AI分析に基づいた健康モニタリングシステム、家族/医師メールアラート付き
If
Set
Merge
+
If
Set
Merge
17 ノードCheng Siong Chin
個人の生産性
GPTリアルタイム航空券優遇分析器:自動取得、評価、WordPress へ公開
GPT、Google 航班、WordPress を使用した航班特売分析ツール(天気データ付き)
Set
Html
Slack
+
Set
Html
Slack
19 ノードCheng Siong Chin
コンテンツ作成
ワークフロー情報
難易度
上級
ノード数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で表示 →
このワークフローを共有