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
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下の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
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

作成者
David Olusola

David Olusola

@dae221

I 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で表示

このワークフローを共有

カテゴリー

カテゴリー: 34