💥 AI駆動型人事ワークフロー: GmailからSheetsへ履歴書分析と評価 - ビデオ
上級
これはHR, AI Summarization分野の自動化ワークフローで、18個のノードを含みます。主にSwitch, GmailTool, GoogleDrive, GmailTrigger, GoogleSheetsなどのノードを使用。 GPT-4o-miniを使ってリゾームのスクリーニング:GmailからGoogle SheetsまでのHR評価システム
前提条件
- •Googleアカウント + Gmail API認証情報
- •Google Drive API認証情報
- •Google Sheets API認証情報
- •OpenAI API Key
使用ノード (18)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "z7quMO0WgEu3Kkyv",
"meta": {
"instanceId": "a2b23892dd6989fda7c1209b381f5850373a7d2b85609624d7c2b7a092671d44",
"templateCredsSetupCompleted": true
},
"name": "💥 AI-Powered HR Workflow: CV Analysis and Evaluation from Gmail to Sheets - vide",
"tags": [],
"nodes": [
{
"id": "2ebf8f4d-1000-4c40-8d5f-e31fa0ada941",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
2540,
-240
],
"parameters": {
"width": 920,
"height": 400,
"content": "# 🟡 Step 1 — Detect and Process New CV from Email"
},
"typeVersion": 1
},
{
"id": "175a65ff-d1c4-404e-bab1-7805123a0ce9",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
2540,
200
],
"parameters": {
"color": 3,
"width": 920,
"height": 500,
"content": "# 🔴 Step 2 — Extract and Store Candidate Data\n"
},
"typeVersion": 1
},
{
"id": "1061bc84-9cb8-4391-a057-04e7d1aac10e",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
3520,
200
],
"parameters": {
"color": 6,
"width": 920,
"height": 500,
"content": "# 🟣 Step 3 — Evaluate and Qualify the Candidate\n"
},
"typeVersion": 1
},
{
"id": "a6395a4c-3c06-4175-8927-3f80bde21bcc",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
3520,
-240
],
"parameters": {
"width": 920,
"height": 400,
"content": " ## AI-Powered HR Workflow: CV Analysis and Evaluation from Gmail to Sheets\n\n### 📋 Before you get started, make sure you have:\n\n- ✅ [n8n installed](https://www.hostg.xyz/SHHOJ) *(self-hosted required for Gmail + OpenAI + Google integrations)*\n- ✅ [OpenAI API Key](https://platform.openai.com/api-keys)\n- ✅ [Google Sheets API enabled](https://console.cloud.google.com/apis/api/sheets.googleapis.com/overview) in Google Cloud Console\n- ✅ [Google Drive API enabled](https://console.cloud.google.com/apis/api/drive.googleapis.com/overview) in Google Cloud Console\n- ✅ [OAuth 2.0 Client ID and Secret](https://console.cloud.google.com/apis/credentials) created in Google Cloud (required for Gmail, Drive, and Sheets nodes)\n\n> Make sure you’ve authorized n8n to access these services using the credentials above before running the workflow.\n"
},
"typeVersion": 1
},
{
"id": "3575cc8d-18b8-436d-a026-b022814fbd3d",
"name": "Gmail: 新規履歴書を監視",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
2640,
-140
],
"parameters": {
"simple": false,
"filters": {
"q": "has:attachment",
"labelIds": [
"UNREAD"
],
"readStatus": "unread"
},
"options": {
"downloadAttachments": true
},
"pollTimes": {
"item": [
{
"mode": "everyHour",
"minute": 1
}
]
}
},
"credentials": {
"gmailOAuth2": {
"id": "rKxQHWZ2F5XLJmwF",
"name": "Gmail account"
}
},
"typeVersion": 1.2
},
{
"id": "e1d682f8-9723-4dd6-ad45-e8959a273d32",
"name": "メール種別を分類",
"type": "@n8n/n8n-nodes-langchain.textClassifier",
"position": [
2860,
-140
],
"parameters": {
"options": {
"systemPromptTemplate": "Classify the user's text into one of the following categories: {categories}.\nFollow the formatting instructions provided below exactly.\nDo not include any explanation — output only the final JSON result."
},
"inputText": "={{ $json.text }}",
"categories": {
"categories": [
{
"category": "Doesn't apply",
"description": "The candidate is not a job application"
},
{
"category": "Apply",
"description": "This is a job application submitted by a candidate applying for a position at our organization, included as an attached file."
}
]
}
},
"typeVersion": 1
},
{
"id": "5f241a19-c30a-4cc4-a2c0-7e9d97711c78",
"name": "OpenAI モデル – メール分類器",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
2860,
20
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "6h3DfVhNPw9I25nO",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "848188ac-52fa-43b7-953f-b2cd45c727f1",
"name": "スキップ (求職応募でない場合)",
"type": "n8n-nodes-base.noOp",
"position": [
3280,
-140
],
"parameters": {},
"typeVersion": 1
},
{
"id": "fe0e8d5c-e3f6-4098-891b-0fb3594b71c8",
"name": "履歴書テキストを抽出 (PDF)",
"type": "n8n-nodes-base.extractFromFile",
"position": [
2900,
520
],
"parameters": {
"options": {},
"operation": "pdf",
"binaryPropertyName": "attachment_0"
},
"typeVersion": 1
},
{
"id": "49107c53-eb76-4082-9d52-88d3fc391153",
"name": "履歴書を Google ドライブに保存",
"type": "n8n-nodes-base.googleDrive",
"position": [
2900,
300
],
"parameters": {
"name": "={{ $('Gmail: Watch for new CV').item.json.from.value[0].address }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive",
"cachedResultUrl": "https://drive.google.com/drive/my-drive",
"cachedResultName": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1G0KjVS_NAnqbqzYlV93KpX3498G5J8b1",
"cachedResultUrl": "https://drive.google.com/drive/folders/1G0KjVS_NAnqbqzYlV93KpX3498G5J8b1",
"cachedResultName": "CV - HR"
},
"inputDataFieldName": "=attachment_0"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "gzeHMd64HAz6HBIe",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "b5d472bf-4acf-4e86-aeb7-5d1604ded5ff",
"name": "求人詳細を取得 (Google シート)",
"type": "n8n-nodes-base.googleSheets",
"position": [
3280,
520
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "id",
"value": "="
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "="
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "51us92xkOlrvArhV",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6,
"alwaysOutputData": true
},
{
"id": "9b09d2ba-7669-4f64-8a77-ee5ff5280d72",
"name": "AIエージェント: 履歴書を評価",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
3620,
300
],
"parameters": {
"text": "=Here is the resume:\n{{ $('Extract Resume Text (PDF)').item.json.text }}\n\nAnalyze the current information from the received candidate and score between 0 to 10 the said candidate, 0 meaning not a good fit for the position, 10 being outstanding for the job.\n\nJob Tile : {{ $json['Title offer'] }}\nJob Description: {{ $json.Description }}\n\nReply by Email : \nSend a reply to the candidate to confirm that we have received their application and that we will get back to them as soon as possible.",
"options": {
"systemMessage": "=You are an invaluable assistant. You were given a resume. You have to help me analyze the resume and give it a score based on the details available in the resume. Also, extract the name, email, phone, location and LinkedIn profile from the resume.\n\nReply by Email : \nSend a reply to the candidate to confirm that we have received their application and that we will get back to them as soon as possible."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.8
},
{
"id": "85edf215-bfa3-4b93-8f4f-7cede1132797",
"name": "OpenAI モデル – 履歴書評価",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
3580,
540
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "o4-mini",
"cachedResultName": "o4-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "6h3DfVhNPw9I25nO",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "90da624b-9653-444f-a36b-9bfe6df4922a",
"name": "確認メールを送信",
"type": "n8n-nodes-base.gmailTool",
"position": [
3760,
540
],
"webhookId": "b56651a5-a82e-4550-ae4e-ffea0304cd52",
"parameters": {
"sendTo": "={{ $('Gmail: Watch for new CV').item.json.from.value[0].address }}",
"message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
"options": {},
"subject": "Application Received"
},
"credentials": {
"gmailOAuth2": {
"id": "rKxQHWZ2F5XLJmwF",
"name": "Gmail account"
}
},
"typeVersion": 2.1
},
{
"id": "119808cc-82fb-43d2-931f-351f8e2e3267",
"name": "履歴書評価結果を解析",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
3900,
540
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"name\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n \"email\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n \"linkedin\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n \"score\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n \"Phone\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n \"Location\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t\t\n\t}\n}"
},
"typeVersion": 1.2
},
{
"id": "e9d2dfb0-0202-422c-a1f1-8d25a19bacc3",
"name": "評価を Google シートに保存",
"type": "n8n-nodes-base.googleSheets",
"position": [
4120,
300
],
"parameters": {
"columns": {
"value": {
"Name": "={{ $json.output.name }}",
"Email": "={{ $('Gmail: Watch for new CV').item.json.from.value[0].address }}",
"Phone": "='{{ $json.output.Phone }}",
"Score": "={{ $json.output.score }}",
"LinkedIn": "={{ $json.output.linkedin }}",
"Location": "={{ $json.output.Location }}",
"Resume text": "={{ $('Extract Resume Text (PDF)').item.json.text }}"
},
"schema": [
{
"id": "Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "LinkedIn",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "LinkedIn",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Location",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Score",
"type": "string",
"display": true,
"required": false,
"displayName": "Score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Resume text",
"type": "string",
"display": true,
"required": false,
"displayName": "Resume text",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Link CV",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Link CV",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Email"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {
"useAppend": true
},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "id",
"value": "="
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "="
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "51us92xkOlrvArhV",
"name": "Google Sheets account"
}
},
"typeVersion": 4.5
},
{
"id": "c931b4a0-a1a4-4c59-85b8-9099064a74d0",
"name": "分岐",
"type": "n8n-nodes-base.switch",
"position": [
2640,
400
],
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "e9debd3b-3fa3-425a-bd61-6bf23a3a652b",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "attachment_0",
"rightValue": ""
}
]
}
},
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "f0eabfca-ff5e-4e5d-9b4e-f3f80c7fa5b4",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "attachment_0",
"rightValue": ""
}
]
}
}
]
},
"options": {
"allMatchingOutputs": true
}
},
"typeVersion": 3.2
},
{
"id": "260dae6d-9234-4bab-bb79-d15b4923d801",
"name": "履歴書を Google シートに保存",
"type": "n8n-nodes-base.googleSheets",
"position": [
3280,
300
],
"parameters": {
"columns": {
"value": {
"Email": "={{ $('Gmail: Watch for new CV').item.json.from.value[0].address }}",
"Link CV": "={{ $('Save Resume to Google Drive').item.json.webViewLink }}"
},
"schema": [
{
"id": "Name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "LinkedIn",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "LinkedIn",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Location",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Score",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Resume text",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Resume text",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Link CV",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Link CV",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {
"useAppend": true
},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "id",
"value": "="
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "="
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "51us92xkOlrvArhV",
"name": "Google Sheets account"
}
},
"typeVersion": 4.5
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "07121905-4a3c-4301-b88e-e1db76c119e3",
"connections": {
"c931b4a0-a1a4-4c59-85b8-9099064a74d0": {
"main": [
[
{
"node": "49107c53-eb76-4082-9d52-88d3fc391153",
"type": "main",
"index": 0
}
],
[
{
"node": "fe0e8d5c-e3f6-4098-891b-0fb3594b71c8",
"type": "main",
"index": 0
}
]
]
},
"e1d682f8-9723-4dd6-ad45-e8959a273d32": {
"main": [
[
{
"node": "848188ac-52fa-43b7-953f-b2cd45c727f1",
"type": "main",
"index": 0
}
],
[
{
"node": "c931b4a0-a1a4-4c59-85b8-9099064a74d0",
"type": "main",
"index": 0
}
]
]
},
"9b09d2ba-7669-4f64-8a77-ee5ff5280d72": {
"main": [
[
{
"node": "e9d2dfb0-0202-422c-a1f1-8d25a19bacc3",
"type": "main",
"index": 0
}
]
]
},
"3575cc8d-18b8-436d-a026-b022814fbd3d": {
"main": [
[
{
"node": "e1d682f8-9723-4dd6-ad45-e8959a273d32",
"type": "main",
"index": 0
}
]
]
},
"90da624b-9653-444f-a36b-9bfe6df4922a": {
"ai_tool": [
[
{
"node": "9b09d2ba-7669-4f64-8a77-ee5ff5280d72",
"type": "ai_tool",
"index": 0
}
]
]
},
"260dae6d-9234-4bab-bb79-d15b4923d801": {
"main": [
[]
]
},
"fe0e8d5c-e3f6-4098-891b-0fb3594b71c8": {
"main": [
[
{
"node": "b5d472bf-4acf-4e86-aeb7-5d1604ded5ff",
"type": "main",
"index": 0
}
]
]
},
"49107c53-eb76-4082-9d52-88d3fc391153": {
"main": [
[
{
"node": "260dae6d-9234-4bab-bb79-d15b4923d801",
"type": "main",
"index": 0
}
]
]
},
"119808cc-82fb-43d2-931f-351f8e2e3267": {
"ai_outputParser": [
[
{
"node": "9b09d2ba-7669-4f64-8a77-ee5ff5280d72",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"85edf215-bfa3-4b93-8f4f-7cede1132797": {
"ai_languageModel": [
[
{
"node": "9b09d2ba-7669-4f64-8a77-ee5ff5280d72",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"5f241a19-c30a-4cc4-a2c0-7e9d97711c78": {
"ai_languageModel": [
[
{
"node": "e1d682f8-9723-4dd6-ad45-e8959a273d32",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"b5d472bf-4acf-4e86-aeb7-5d1604ded5ff": {
"main": [
[
{
"node": "9b09d2ba-7669-4f64-8a77-ee5ff5280d72",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - 人事, AI要約
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
ペットショップ 4
ペットショップ予約AIエージェント
If
Set
Code
+
If
Set
Code
187 ノードBruno Dias
人工知能
HireMind – AI駆動の履歴書インテリジェント処理フロー
HR AI履歴書スクリーニングと評価:GPT-4とGoogle Workspace
If
Code
Slack
+
If
Code
Slack
26 ノードTrung Tran
人事
スマートレジュメ抽出ツール:Google Driveからスプレッドシート + 採用担当者向けSlack更新
AI駆動のレジュメ抽出ツール:GPT-4がGoogle Driveからスプレッドシートを処理し、採用担当者にSlack通知
Code
Slack
Filter
+
Code
Slack
Filter
19 ノードTrung Tran
人事
TalentFlow AI - バッチ履歴書スクリーニングと職位説明とのマッチング
GPT-4を活用したHRチーム向けの大量リソーシェスクリーニングと職位説明書マッチング
If
Code
Merge
+
If
Code
Merge
30 ノードTrung Tran
人事
n8nノードの探索(可視化リファレンスライブラリ内)
n8nノードを可視化リファレンスライブラリで探索
If
Ftp
Set
+
If
Ftp
Set
113 ノードI versus AI
その他
コロンビア領 Invoice 処理
Gmail、GPT-4o、Google Workspaceを使用してコロンビアのインボイスを抽出し、整理する
Xml
Code
Merge
+
Xml
Code
Merge
23 ノードJuan Sanchez
財務
ワークフロー情報
難易度
上級
ノード数18
カテゴリー2
ノードタイプ12
作成者
Dr. Firas
@drfirasAutomation expert and certified trainer. I create hands-on courses to master automation with n8n. Contact me to access my exclusive training and start building powerful workflows today. 🚀
外部リンク
n8n.ioで表示 →
このワークフローを共有