GPT-4oとエラーハンドリングによる自動リジューム選別 - Google スプレッドシートとクラウドハブワークフロー
上級
これはContent Creation, Multimodal AI分野の自動化ワークフローで、34個のノードを含みます。主にIf, Set, Gmail, Merge, Switchなどのノードを使用。 GPT-4o +エラーハンドリングの自動再履歴スクリーニング - Google テーブルと Google ドラाइブワークフロー
前提条件
- •Googleアカウント + Gmail API認証情報
- •Google Drive API認証情報
- •ターゲットAPIの認証情報が必要な場合あり
- •Google Sheets API認証情報
- •OpenAI API Key
使用ノード (34)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"meta": {
"instanceId": "2000c64071c20843606b95c63795bb0797c41036047055a6586498e855b96efc"
},
"nodes": [
{
"id": "548b4ba3-85c0-4e01-a89d-53c345910b22",
"name": "セットアップガイド",
"type": "n8n-nodes-base.stickyNote",
"position": [
-4752,
-160
],
"parameters": {
"width": 600,
"height": 1152,
"content": "# 🎯 AI Resume Screening & Candidate Pipeline\n\n**Enhanced with Error Handling & Recovery**\n\n**Created by:** **David Olusola**\n\n## 🚀 What This Workflow Does\n\n- **Monitors Gmail** for resume submissions\n- **Processes multiple file formats** (PDF, DOCX, TXT)\n- **Uses AI analysis** with GPT-4o for candidate evaluation \n- **Extracts contact info** automatically\n- **Scores candidates** against job requirements\n- **Logs everything** to Google Sheets dashboard\n- **Handles errors gracefully** with notifications\n\n## ⚡ Error Handling Features\n\n✅ File extraction validation\n✅ AI processing failure recovery\n✅ Email notifications for errors\n✅ Data validation before logging\n✅ Resume quality checks\n✅ Timeout protection\n\n## 📋 Required Setup\n\n- Gmail credentials\n- Google Drive & Sheets credentials \n- OpenAI API key\n- Error notification email\n\n Copy the [Google Sheet Template](https://docs.google.com/spreadsheets/d/1vucZgBrULNToEQMAQrFyWczpOzXxBU6rzCX0waIZyeM/edit?gid=0#gid=0) \nMake a copy of the sheet in your own Google Drive. This is where the workflow will write the parsed data back.\n\n## 🎯 Use Cases\n\n- HR departments screening applicants\n- Recruiting agencies processing candidates\n- Startups managing hiring pipelines\n- Remote teams coordinating interviews"
},
"typeVersion": 1
},
{
"id": "c84f6d81-dec5-458d-b298-617752318f87",
"name": "レジュメ監視",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
-3952,
560
],
"parameters": {
"simple": false,
"filters": {},
"options": {
"downloadAttachments": true
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"credentials": {
"gmailOAuth2": {
"id": "LVRUgE95PAvkE1Mc",
"name": "Gmail account 2"
}
},
"typeVersion": 1.2
},
{
"id": "ddd0aa5e-dd9c-4658-9ccb-eb183bd75062",
"name": "メール監視",
"type": "n8n-nodes-base.stickyNote",
"position": [
-4080,
320
],
"parameters": {
"color": 2,
"width": 350,
"height": 392,
"content": "## 📧 Email Monitoring\n\nWatches Gmail inbox for:\n- Resume attachments\n- Job application emails\n- Candidate submissions\n\nSupports multiple file formats:\n- PDF documents\n- Word documents (.docx)\n- Plain text files (.txt)"
},
"typeVersion": 1
},
{
"id": "e0a4d380-edc6-48c0-b655-f7ffc2d11603",
"name": "ドライブに保存",
"type": "n8n-nodes-base.googleDrive",
"position": [
-3728,
560
],
"parameters": {
"name": "={{ $json.subject.replace(/[^a-zA-Z0-9]/g, '_') }}_resume_{{ $now.format('yyyy-MM-dd_HH-mm') }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "root",
"cachedResultName": "/ (Root folder)"
},
"inputDataFieldName": "attachment_0"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "IPz4dCJVFC8uaoHw",
"name": "Google Drive account 2"
}
},
"typeVersion": 3
},
{
"id": "37bb352f-14f9-4286-9a0b-9b3e3680f733",
"name": "アップロード成功?",
"type": "n8n-nodes-base.if",
"position": [
-3504,
560
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "upload-success",
"operator": {
"type": "boolean",
"operation": "equals"
},
"leftValue": "={{ $json.id !== undefined && $json.webViewLink !== undefined }}",
"rightValue": true
}
]
}
},
"typeVersion": 2
},
{
"id": "6ee6f742-ce91-4bdc-a3ea-769a06cf2512",
"name": "ファイルタイプ別振り分け",
"type": "n8n-nodes-base.switch",
"position": [
-3280,
352
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "PDF",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "pdf-check",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.mimeType }}",
"rightValue": "application/pdf"
}
]
},
"renameOutput": true
},
{
"outputKey": "DOCX",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "docx-check",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.mimeType }}",
"rightValue": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
}
]
},
"renameOutput": true
},
{
"outputKey": "TXT",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "txt-check",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.mimeType }}",
"rightValue": "text/plain"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "899b217d-9258-4fd6-be41-fdd5fe52c5d3",
"name": "PDFテキスト抽出",
"type": "n8n-nodes-base.extractFromFile",
"position": [
-2864,
128
],
"parameters": {
"options": {
"maxPages": 10
},
"operation": "pdf"
},
"typeVersion": 1
},
{
"id": "3f93e040-46e2-4c71-b0b2-548bcfe04235",
"name": "DOCXをDocsに変換",
"type": "n8n-nodes-base.httpRequest",
"position": [
-3056,
368
],
"parameters": {
"url": "=https://www.googleapis.com/drive/v2/files/{{ $json.id }}/copy",
"method": "POST",
"options": {
"timeout": 30000
},
"jsonBody": "{\n \"title\": \"{{ $json.name }}_converted\",\n \"mimeType\": \"application/vnd.google-apps.document\"\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleDriveOAuth2Api"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "IPz4dCJVFC8uaoHw",
"name": "Google Drive account 2"
}
},
"typeVersion": 4.2
},
{
"id": "64cf332a-2691-4181-a244-4cc18f9a1b13",
"name": "Docsをテキスト取得",
"type": "n8n-nodes-base.googleDrive",
"position": [
-2832,
368
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {
"googleFileConversion": {
"conversion": {
"docsToFormat": "text/plain"
}
}
},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "IPz4dCJVFC8uaoHw",
"name": "Google Drive account 2"
}
},
"typeVersion": 3
},
{
"id": "6b5e1a57-2c26-4bbe-b104-99ef776f867c",
"name": "TXTをダウンロード",
"type": "n8n-nodes-base.googleDrive",
"position": [
-3056,
576
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "IPz4dCJVFC8uaoHw",
"name": "Google Drive account 2"
}
},
"typeVersion": 3
},
{
"id": "2255b19e-1842-4e23-9fcf-0c69b036226b",
"name": "TXT内容抽出",
"type": "n8n-nodes-base.extractFromFile",
"position": [
-2832,
576
],
"parameters": {
"options": {},
"operation": "text",
"destinationKey": "resumeText"
},
"typeVersion": 1
},
{
"id": "ee8c0749-6302-420d-9fff-cb57dfef3b9e",
"name": "テキスト抽出成功?",
"type": "n8n-nodes-base.if",
"position": [
-2544,
288
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "text-validation",
"operator": {
"type": "boolean",
"operation": "equals"
},
"leftValue": "={{ ($json.text && $json.text.length > 50) || ($json.data && $json.data.length > 50) || ($json.resumeText && $json.resumeText.length > 50) }}",
"rightValue": true
}
]
}
},
"typeVersion": 2
},
{
"id": "cd20f833-a887-46c4-9702-94e53780552d",
"name": "レジュメデータ標準化",
"type": "n8n-nodes-base.set",
"position": [
-2320,
192
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "resume-text",
"name": "candidateResume",
"type": "string",
"value": "={{ $json.text || $json.data || $json.resumeText }}"
},
{
"id": "original-email",
"name": "originalEmail",
"type": "object",
"value": "={{ $('Monitor Resumes').item.json }}"
},
{
"id": "drive-link",
"name": "driveLink",
"type": "string",
"value": "={{ $('Save to Drive').item.json.webViewLink }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "87bae272-a305-4573-b651-8a0428d13fce",
"name": "レジュメ品質チェック",
"type": "n8n-nodes-base.if",
"position": [
-2096,
192
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "quality-check",
"operator": {
"type": "boolean",
"operation": "equals"
},
"leftValue": "={{ $json.candidateResume && $json.candidateResume.length > 100 && ($json.candidateResume.toLowerCase().includes('experience') || $json.candidateResume.toLowerCase().includes('skills') || $json.candidateResume.toLowerCase().includes('education')) }}",
"rightValue": true
}
]
}
},
"typeVersion": 2
},
{
"id": "0a211848-c56f-4602-a8f5-e0a63e9c0631",
"name": "職務記述書",
"type": "n8n-nodes-base.set",
"position": [
-1872,
80
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "job-description",
"name": "jobDescription",
"type": "string",
"value": "Job Title: Senior Software Engineer\n\nWe are seeking a Senior Software Engineer to join our growing team. The ideal candidate will have:\n\nRequired Skills:\n- 5+ years of software development experience\n- Strong proficiency in JavaScript, Python, or Java\n- Experience with cloud platforms (AWS, GCP, Azure)\n- Database design and optimization experience\n- Agile development methodology experience\n\nPreferred Skills:\n- Full-stack development experience\n- DevOps and CI/CD pipeline experience\n- Team leadership experience\n- Experience with microservices architecture\n\nResponsibilities:\n- Design and develop scalable software solutions\n- Collaborate with cross-functional teams\n- Mentor junior developers\n- Participate in code reviews\n- Contribute to technical decision making"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "53dbdfb5-0e9e-4e03-81d3-ed01714978ba",
"name": "AI採用担当者分析",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-1648,
80
],
"parameters": {
"text": "=**CANDIDATE RESUME:**\n\n{{ $('Extract PDF Text').item.json.text }}\n\n**JOB DESCRIPTION:**\n\n{{ $json.jobDescription }}",
"options": {
"systemMessage": "You are an expert technical recruiter and hiring manager with 15+ years of experience evaluating candidates across technology, business, and creative roles.\n\n# Your Mission\nAnalyze the candidate's resume against the provided job description and deliver a comprehensive, actionable screening report that helps hiring teams make informed decisions quickly.\n\n# Analysis Framework\nEvaluate the candidate across these dimensions:\n1. **Technical Skills Match** - Hard skills, tools, technologies\n2. **Experience Relevance** - Industry background, role progression\n3. **Cultural & Soft Skills Fit** - Leadership, communication, teamwork\n4. **Growth Potential** - Learning ability, adaptability, ambition\n5. **Red Flags** - Gaps, inconsistencies, concerns\n\n# Output Requirements\nProvide your analysis in this exact JSON structure - be specific and reference actual resume content.\n\n# Quality Standards\n- Reference specific resume content, not generalities\n- Consider both immediate needs and long-term potential\n- Balance optimism with realistic assessment\n- Provide actionable insights for hiring managers\n- Score from 1-10 where 8+ means \"definitely interview\""
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2
},
{
"id": "416be5d3-78da-4837-b312-5edd184216b5",
"name": "構造化出力パーサー",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-1504,
304
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"candidate_strengths\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" },\n \"description\": \"List of candidate's key strengths with evidence\"\n },\n \"candidate_weaknesses\": {\n \"type\": \"array\", \n \"items\": { \"type\": \"string\" },\n \"description\": \"List of areas where candidate falls short\"\n },\n \"risk_assessment\": {\n \"type\": \"object\",\n \"properties\": {\n \"level\": {\n \"type\": \"string\",\n \"enum\": [\"Low\", \"Medium\", \"High\"]\n },\n \"explanation\": {\n \"type\": \"string\",\n \"description\": \"Detailed risk analysis\"\n }\n }\n },\n \"opportunity_assessment\": {\n \"type\": \"object\",\n \"properties\": {\n \"level\": {\n \"type\": \"string\", \n \"enum\": [\"Low\", \"Medium\", \"High\"]\n },\n \"explanation\": {\n \"type\": \"string\",\n \"description\": \"Upside potential analysis\"\n }\n }\n },\n \"overall_score\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 10,\n \"description\": \"Overall fit score 1-10\"\n },\n \"score_justification\": {\n \"type\": \"string\",\n \"description\": \"Detailed explanation of the score\"\n },\n \"next_steps_recommendation\": {\n \"type\": \"string\",\n \"description\": \"Recommended next actions\"\n }\n },\n \"required\": [\"candidate_strengths\", \"candidate_weaknesses\", \"risk_assessment\", \"opportunity_assessment\", \"overall_score\", \"score_justification\", \"next_steps_recommendation\"]\n}"
},
"typeVersion": 1.3
},
{
"id": "ea66c7e3-1572-4824-8eae-a5b637e5df33",
"name": "GPT-4oモデル",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-1632,
304
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {
"maxTokens": 2000,
"temperature": 0.3
}
},
"credentials": {
"openAiApi": {
"id": "BXMUxnyGzjtZQOK4",
"name": "OpenAi account Dave"
}
},
"typeVersion": 1.2
},
{
"id": "101a971e-3fae-445e-96ac-878650a6d14a",
"name": "AI分析成功?",
"type": "n8n-nodes-base.if",
"position": [
-1296,
80
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "ai-success",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.output && $json.output.overall_score && $json.output.candidate_strengths.join(\"/n/n\") }}",
"rightValue": true
}
]
}
},
"typeVersion": 2
},
{
"id": "df2d7bc1-4628-4a08-8a55-6de9111eea4c",
"name": "候補者情報抽出",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
-1136,
-160
],
"parameters": {
"text": "={{ $('Standardize Resume Data').item.json.candidateResume }}",
"options": {},
"attributes": {
"attributes": [
{
"name": "full_name",
"required": true,
"description": "Candidate's full name (first and last name combined)"
},
{
"name": "email_address",
"required": true,
"description": "Primary email address of the candidate"
},
{
"name": "phone_number",
"description": "Phone number or mobile number"
},
{
"name": "current_title",
"description": "Current job title or most recent position"
},
{
"name": "years_experience",
"description": "Total years of relevant work experience"
},
{
"name": "key_skills",
"description": "Top 5 technical or professional skills mentioned"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "e5ac2a2d-bbdd-4582-b019-d8ba5ba6c57c",
"name": "最終データ有効?",
"type": "n8n-nodes-base.if",
"position": [
-784,
-160
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "data-validation",
"operator": {
"type": "number",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.output?.full_name && $json.output?.email_address && $('AI Recruiter Analysis').item.json.output?.overall_score }}",
"rightValue": true
}
]
}
},
"typeVersion": 2
},
{
"id": "168334bc-97c8-490b-a1fc-0acb8066912d",
"name": "成功処理を記録",
"type": "n8n-nodes-base.googleSheets",
"position": [
-736,
-336
],
"parameters": {
"columns": {
"value": {
"Date": "={{ $('Save to Drive').item.json.createdTime }}",
"Email": "={{ $json.output.email_address || $json.originalEmail.from }}",
"Resume": "={{ $('Save to Drive').item.json.webViewLink }}",
"Full Name": "={{ $json.output.full_name }}",
"Strengths": "={{ $('AI Recruiter Analysis').item.json.output.candidate_strengths.join(' • ') }}",
"Key Skills": "={{ $json.output.key_skills }}",
"Weaknesses": "={{ $('AI Recruiter Analysis').item.json.output.candidate_weaknesses.join(' • ') }}",
"Overall Fit": "={{ $('AI Recruiter Analysis').item.json.output.overall_score }}",
"Risk Factor": "={{ $('AI Recruiter Analysis').item.json.output.risk_assessment.level }} \n{{ $('AI Recruiter Analysis').item.json.output.risk_assessment.explanation }}",
"Justification": "={{ $('AI Recruiter Analysis').item.json.output.score_justification }}",
"Reward Factor": "={{ $('AI Recruiter Analysis').item.json.output.opportunity_assessment.level }} \n{{ $('AI Recruiter Analysis').item.json.output.opportunity_assessment.explanation }}"
},
"schema": [
{
"id": "Date",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Resume",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Resume",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Full Name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Full Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Strengths",
"type": "string",
"display": true,
"required": false,
"displayName": "Strengths",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Weaknesses",
"type": "string",
"display": true,
"required": false,
"displayName": "Weaknesses",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Risk Factor",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Risk Factor",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Reward Factor",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Reward Factor",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Overall Fit",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Overall Fit",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Justification",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Justification",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Key Skills",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Key Skills",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1vucZgBrULNToEQMAQrFyWczpOzXxBU6rzCX0waIZyeM/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1vucZgBrULNToEQMAQrFyWczpOzXxBU6rzCX0waIZyeM",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1vucZgBrULNToEQMAQrFyWczpOzXxBU6rzCX0waIZyeM/edit?usp=drivesdk",
"cachedResultName": "Resume Screener (file -> make a copy)"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "9bWZzYQ7NvMBs1Xg",
"name": "Google Sheets account 2"
}
},
"typeVersion": 4.6
},
{
"id": "95d4e4e5-63bd-4a2b-bc26-ea15144d76af",
"name": "アップロードエラー設定",
"type": "n8n-nodes-base.set",
"position": [
-560,
752
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "error-type",
"name": "error_type",
"type": "string",
"value": "Upload Failed"
},
{
"id": "error-message",
"name": "error_message",
"type": "string",
"value": "Failed to upload resume to Google Drive"
},
{
"id": "original-data",
"name": "original_email",
"type": "object",
"value": "={{ $('Monitor Resumes').item.json }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "56635bec-8887-4b1d-90fd-a4cf35484f57",
"name": "抽出エラー設定",
"type": "n8n-nodes-base.set",
"position": [
-560,
528
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "error-type",
"name": "error_type",
"type": "string",
"value": "Text Extraction Failed"
},
{
"id": "error-message",
"name": "error_message",
"type": "string",
"value": "Unable to extract readable text from file"
},
{
"id": "file-info",
"name": "file_info",
"type": "object",
"value": "={{ $('Save to Drive').item.json }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "825c2125-1914-4e4b-9d6e-b67a2e3b11ce",
"name": "品質エラー設定",
"type": "n8n-nodes-base.set",
"position": [
-560,
336
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "error-type",
"name": "error_type",
"type": "string",
"value": "Poor Resume Quality"
},
{
"id": "error-message",
"name": "error_message",
"type": "string",
"value": "Resume does not contain sufficient content for analysis"
},
{
"id": "resume-data",
"name": "resume_data",
"type": "string",
"value": "={{ $json.candidateResume?.substring(0, 200) }}..."
}
]
}
},
"typeVersion": 3.4
},
{
"id": "57f8e9fb-3175-4975-9775-e134e94eb6e4",
"name": "AIエラー設定",
"type": "n8n-nodes-base.set",
"position": [
-560,
112
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "error-type",
"name": "error_type",
"type": "string",
"value": "AI Processing Failed"
},
{
"id": "error-message",
"name": "error_message",
"type": "string",
"value": "AI analysis did not complete successfully"
},
{
"id": "ai-output",
"name": "ai_output",
"type": "object",
"value": "={{ $json }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "f7b1385e-6a0a-470c-93cd-55ba1da56ee4",
"name": "検証エラー設定",
"type": "n8n-nodes-base.set",
"position": [
-560,
-80
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "error-type",
"name": "error_type",
"type": "string",
"value": "Data Validation Failed"
},
{
"id": "error-message",
"name": "error_message",
"type": "string",
"value": "Missing required candidate information or AI analysis data"
},
{
"id": "available-data",
"name": "available_data",
"type": "string",
"value": "={{ JSON.stringify({ candidateInfo: $json.output, aiAnalysis: $('AI Recruiter Analysis').item.json.output }) }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "3b4b6746-99e0-4d6b-a620-fc8c89974eee",
"name": "全エラー統合",
"type": "n8n-nodes-base.merge",
"position": [
-336,
352
],
"parameters": {
"mode": "combine",
"options": {}
},
"typeVersion": 3
},
{
"id": "5c692947-9802-43d7-848a-61d9fa01f02a",
"name": "エラー通知送信",
"type": "n8n-nodes-base.gmail",
"position": [
-112,
352
],
"webhookId": "8b233cc7-a903-4afe-9179-14923fcad8a7",
"parameters": {
"sendTo": "your-error-notification-email@company.com",
"message": "=⚠️ **Resume Processing Failed**\n\n**Error Type:** {{ $json.error_type }}\n**Error Message:** {{ $json.error_message }}\n**Timestamp:** {{ $now.format('yyyy-MM-dd HH:mm:ss') }}\n\n**Original Email Details:**\n- From: {{ $json.original_email?.from || 'Unknown' }}\n- Subject: {{ $json.original_email?.subject || 'Unknown' }}\n- Date: {{ $json.original_email?.date || 'Unknown' }}\n\n**Next Steps:**\n- Review the error details above\n- Check file format and quality\n- Manually process if needed\n- Contact IT support if errors persist",
"options": {},
"subject": "=Resume Processing Error - {{ $json.error_type }}"
},
"credentials": {
"gmailOAuth2": {
"id": "Aecq49wES5aLVPPq",
"name": "Gmail account 4"
}
},
"typeVersion": 2.1
},
{
"id": "803eb0cb-f941-44cb-89dc-3813ec26d3c9",
"name": "エラーをシート記録",
"type": "n8n-nodes-base.googleSheets",
"disabled": true,
"position": [
112,
352
],
"parameters": {
"columns": {
"value": {
"Status": "Requires Manual Review",
"File_Link": "={{ $json.file_info?.webViewLink || 'Not available' }}",
"Timestamp": "={{ $now.format('yyyy-MM-dd HH:mm:ss') }}",
"Error_Type": "={{ $json.error_type }}",
"Error_Message": "={{ $json.error_message }}",
"Original_From": "={{ $json.original_email?.from || 'Unknown' }}",
"Original_Subject": "={{ $json.original_email?.subject || 'Unknown' }}"
},
"mappingMode": "defineBelow"
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/your-error-sheet-id/edit#gid=0",
"cachedResultName": "Errors"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "your-error-log-spreadsheet-id",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/your-error-sheet-id/edit",
"cachedResultName": "Error Log Sheet"
}
},
"typeVersion": 4.6
},
{
"id": "52ea629f-2f47-4b03-9498-98701026de61",
"name": "ファイル処理",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3104,
-464
],
"parameters": {
"color": 6,
"width": 400,
"height": 1224,
"content": "## 🔄 File Processing\n\nRoutes different file types:\n- **PDF**: Direct text extraction\n- **DOCX**: Convert to Google Doc first\n- **TXT**: Simple text processing\n\nAll paths converge to standardized text output"
},
"typeVersion": 1
},
{
"id": "82d07dc3-aac4-4d04-94ce-89555c5c5abd",
"name": "エラー処理",
"type": "n8n-nodes-base.stickyNote",
"position": [
-592,
-480
],
"parameters": {
"color": 8,
"width": 400,
"height": 1340,
"content": "## ⚠️ Error Handling\n\n**Multi-layer Validation:**\n- Upload success verification\n- Text extraction validation\n- Resume quality checks\n- AI processing validation\n- Final data verification\n\n**Error Recovery:**\n- Email notifications to admin\n- Error logging to spreadsheet\n- Graceful failure handling\n- Manual review triggers"
},
"typeVersion": 1
},
{
"id": "e14473a9-91b4-43b7-8279-de2e3a47711f",
"name": "AI分析エンジン",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1648,
-512
],
"parameters": {
"color": 5,
"width": 736,
"height": 828,
"content": "## 🤖 AI Analysis Engine\n\n**Powered by GPT-4o**\n\nAnalyzes candidates across:\n- Technical skills alignment\n- Experience relevance \n- Cultural fit indicators\n- Growth potential\n- Risk factors\n\nOutputs structured JSON with:\n- Strengths & weaknesses\n- Risk/opportunity assessment\n- 1-10 scoring with justification\n- Next steps recommendation"
},
"typeVersion": 1
},
{
"id": "087335ab-ae10-46c5-8608-eafa51d47ed7",
"name": "ドキュメント取得",
"type": "n8n-nodes-base.googleDrive",
"position": [
-3088,
128
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {
"googleFileConversion": {
"conversion": {
"docsToFormat": "application/pdf"
}
}
},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "IPz4dCJVFC8uaoHw",
"name": "Google Drive account 2"
}
},
"typeVersion": 3
}
],
"pinData": {},
"connections": {
"087335ab-ae10-46c5-8608-eafa51d47ed7": {
"main": [
[
{
"node": "899b217d-9258-4fd6-be41-fdd5fe52c5d3",
"type": "main",
"index": 0
}
]
]
},
"6b5e1a57-2c26-4bbe-b104-99ef776f867c": {
"main": [
[
{
"node": "2255b19e-1842-4e23-9fcf-0c69b036226b",
"type": "main",
"index": 0
}
]
]
},
"ea66c7e3-1572-4824-8eae-a5b637e5df33": {
"ai_languageModel": [
[
{
"node": "53dbdfb5-0e9e-4e03-81d3-ed01714978ba",
"type": "ai_languageModel",
"index": 0
},
{
"node": "df2d7bc1-4628-4a08-8a55-6de9111eea4c",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"57f8e9fb-3175-4975-9775-e134e94eb6e4": {
"main": [
[
{
"node": "3b4b6746-99e0-4d6b-a620-fc8c89974eee",
"type": "main",
"index": 1
}
]
]
},
"e0a4d380-edc6-48c0-b655-f7ffc2d11603": {
"main": [
[
{
"node": "37bb352f-14f9-4286-9a0b-9b3e3680f733",
"type": "main",
"index": 0
}
]
]
},
"64cf332a-2691-4181-a244-4cc18f9a1b13": {
"main": [
[
{
"node": "ee8c0749-6302-420d-9fff-cb57dfef3b9e",
"type": "main",
"index": 0
}
]
]
},
"0a211848-c56f-4602-a8f5-e0a63e9c0631": {
"main": [
[
{
"node": "53dbdfb5-0e9e-4e03-81d3-ed01714978ba",
"type": "main",
"index": 0
}
]
]
},
"c84f6d81-dec5-458d-b298-617752318f87": {
"main": [
[
{
"node": "e0a4d380-edc6-48c0-b655-f7ffc2d11603",
"type": "main",
"index": 0
}
]
]
},
"ee8c0749-6302-420d-9fff-cb57dfef3b9e": {
"main": [
[
{
"node": "cd20f833-a887-46c4-9702-94e53780552d",
"type": "main",
"index": 0
}
],
[
{
"node": "56635bec-8887-4b1d-90fd-a4cf35484f57",
"type": "main",
"index": 0
}
]
]
},
"37bb352f-14f9-4286-9a0b-9b3e3680f733": {
"main": [
[
{
"node": "6ee6f742-ce91-4bdc-a3ea-769a06cf2512",
"type": "main",
"index": 0
}
],
[
{
"node": "95d4e4e5-63bd-4a2b-bc26-ea15144d76af",
"type": "main",
"index": 0
}
]
]
},
"899b217d-9258-4fd6-be41-fdd5fe52c5d3": {
"main": [
[
{
"node": "ee8c0749-6302-420d-9fff-cb57dfef3b9e",
"type": "main",
"index": 0
}
]
]
},
"3b4b6746-99e0-4d6b-a620-fc8c89974eee": {
"main": [
[
{
"node": "5c692947-9802-43d7-848a-61d9fa01f02a",
"type": "main",
"index": 0
}
]
]
},
"95d4e4e5-63bd-4a2b-bc26-ea15144d76af": {
"main": [
[
{
"node": "3b4b6746-99e0-4d6b-a620-fc8c89974eee",
"type": "main",
"index": 0
}
]
]
},
"e5ac2a2d-bbdd-4582-b019-d8ba5ba6c57c": {
"main": [
[
{
"node": "168334bc-97c8-490b-a1fc-0acb8066912d",
"type": "main",
"index": 0
}
],
[
{
"node": "f7b1385e-6a0a-470c-93cd-55ba1da56ee4",
"type": "main",
"index": 0
}
]
]
},
"825c2125-1914-4e4b-9d6e-b67a2e3b11ce": {
"main": [
[
{
"node": "3b4b6746-99e0-4d6b-a620-fc8c89974eee",
"type": "main",
"index": 1
}
]
]
},
"6ee6f742-ce91-4bdc-a3ea-769a06cf2512": {
"main": [
[
{
"node": "087335ab-ae10-46c5-8608-eafa51d47ed7",
"type": "main",
"index": 0
}
],
[
{
"node": "3f93e040-46e2-4c71-b0b2-548bcfe04235",
"type": "main",
"index": 0
}
],
[
{
"node": "6b5e1a57-2c26-4bbe-b104-99ef776f867c",
"type": "main",
"index": 0
}
]
]
},
"2255b19e-1842-4e23-9fcf-0c69b036226b": {
"main": [
[
{
"node": "ee8c0749-6302-420d-9fff-cb57dfef3b9e",
"type": "main",
"index": 0
}
]
]
},
"101a971e-3fae-445e-96ac-878650a6d14a": {
"main": [
[
{
"node": "df2d7bc1-4628-4a08-8a55-6de9111eea4c",
"type": "main",
"index": 0
}
],
[
{
"node": "57f8e9fb-3175-4975-9775-e134e94eb6e4",
"type": "main",
"index": 0
}
]
]
},
"3f93e040-46e2-4c71-b0b2-548bcfe04235": {
"main": [
[
{
"node": "64cf332a-2691-4181-a244-4cc18f9a1b13",
"type": "main",
"index": 0
}
]
]
},
"87bae272-a305-4573-b651-8a0428d13fce": {
"main": [
[
{
"node": "0a211848-c56f-4602-a8f5-e0a63e9c0631",
"type": "main",
"index": 0
}
],
[
{
"node": "825c2125-1914-4e4b-9d6e-b67a2e3b11ce",
"type": "main",
"index": 0
}
]
]
},
"56635bec-8887-4b1d-90fd-a4cf35484f57": {
"main": [
[
{
"node": "3b4b6746-99e0-4d6b-a620-fc8c89974eee",
"type": "main",
"index": 1
}
]
]
},
"f7b1385e-6a0a-470c-93cd-55ba1da56ee4": {
"main": [
[
{
"node": "3b4b6746-99e0-4d6b-a620-fc8c89974eee",
"type": "main",
"index": 1
}
]
]
},
"53dbdfb5-0e9e-4e03-81d3-ed01714978ba": {
"main": [
[
{
"node": "101a971e-3fae-445e-96ac-878650a6d14a",
"type": "main",
"index": 0
}
]
]
},
"df2d7bc1-4628-4a08-8a55-6de9111eea4c": {
"main": [
[
{
"node": "e5ac2a2d-bbdd-4582-b019-d8ba5ba6c57c",
"type": "main",
"index": 0
}
]
]
},
"5c692947-9802-43d7-848a-61d9fa01f02a": {
"main": [
[
{
"node": "803eb0cb-f941-44cb-89dc-3813ec26d3c9",
"type": "main",
"index": 0
}
]
]
},
"cd20f833-a887-46c4-9702-94e53780552d": {
"main": [
[
{
"node": "87bae272-a305-4573-b651-8a0428d13fce",
"type": "main",
"index": 0
}
]
]
},
"416be5d3-78da-4837-b312-5edd184216b5": {
"ai_outputParser": [
[
{
"node": "53dbdfb5-0e9e-4e03-81d3-ed01714978ba",
"type": "ai_outputParser",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - コンテンツ作成, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
AI履歴書選別:Gmail、GPT-4o、Googleスプレッドシート - 採用プロセスの自動化
AI履歴書選別:Gmail、GPT-4o、Googleスプレッドシート - 採用プロセスの自動化
Set
Switch
Google Drive
+
Set
Switch
Google Drive
23 ノードDavid Olusola
コンテンツ作成
AI驱动のメール分诊与自動回复系统,統合OpenAIエージェントとGmail
AI驱动のメール分诊与自動回复系统,統合OpenAIエージェントとGmail
If
Set
Gmail
+
If
Set
Gmail
68 ノードAbdullahi Ahmed
コンテンツ作成
✨🩷自動化ソーシャルメディアコンテンツ公開工厂 + 系统提示组合
基于动态系统提示とGPT-4oのAI驱动多平台ソーシャルメディアコンテンツ工厂
If
Set
Code
+
If
Set
Code
100 ノードAmit Mehta
コンテンツ作成
適応型メール自動返信(GPT-4、RAG、および人間フィードバックループ)
適応型メール自動返信機能(GPT-4、RAG、人間フィードバックループ)
If
Set
Gmail
+
If
Set
Gmail
38 ノードLeeWei
コンテンツ作成
WordPressブログの自動化プロフェッショナル版(先端研究)v2.1マーケットプラグイン
GPT-4o、Perplexity AI、そして多言語対応を使ったSEO最適化ブログ作成の自動化
If
Set
Xml
+
If
Set
Xml
125 ノードDaniel Ng
コンテンツ作成
Postizを使用してAIニュース動画を自動作成し、ソーシャルメディアへ投稿
GPT-4oとHeyGenを使用してAIニュースビデオを作成し、ソーシャルメディアに配信
Set
Code
Wait
+
Set
Code
Wait
37 ノードDavid Olusola
コンテンツ作成
ワークフロー情報
難易度
上級
ノード数34
カテゴリー2
ノードタイプ15
作成者
David Olusola
@dae221I design enterprise-grade automation systems that eliminate bottlenecks, cut manual work by 70%+, and unlock millions in lost revenue opportunities. My clients — typically achieve 5–10x ROI within the first 90 days. Currently partnering with select high-growth companies ready to scale faster with AI automation. david@daexai.com
外部リンク
n8n.ioで表示 →
このワークフローを共有