私のワークフロー3

上級

これはHR, AI Summarization, Multimodal AI分野の自動化ワークフローで、23個のノードを含みます。主にSet, Code, Merge, Airtable, FormTriggerなどのノードを使用。 AI、Gmail、Google Drive、Airtableを使用した自動 résumé スクリーニングとスコアリング

前提条件
  • Airtable API Key
  • Google Drive API認証情報
  • Googleアカウント + Gmail API認証情報
  • Google Sheets API認証情報
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "id": "7S4ihndpWguEUgPR",
  "meta": {
    "instanceId": "b2b5a36da7eac7de99012b5a90e67cd124f5c20d9168d5fb4eef7aa2b75f2f80",
    "templateCredsSetupCompleted": true
  },
  "name": "My workflow 3",
  "tags": [],
  "nodes": [
    {
      "id": "14df0331-5d44-471e-a60b-9931f108764c",
      "name": "Gmail Trigger",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        -128,
        64
      ],
      "parameters": {
        "simple": false,
        "filters": {
          "q": "Senior Software Engineer"
        },
        "options": {
          "downloadAttachments": true,
          "dataPropertyAttachmentsPrefixName": "CV"
        },
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "8jLBWmrnkH59W1tP",
          "name": "Gmail account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "6c3f54bf-26d8-4863-b91c-d6760b54bfc4",
      "name": "ファイルをアップロード",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        144,
        -48
      ],
      "parameters": {
        "name": "={{ $json.from.value[0].name }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "13yu3QH6GO5Kx0HbEkwXPiceBH1yDVzTO",
          "cachedResultUrl": "https://drive.google.com/drive/folders/13yu3QH6GO5Kx0HbEkwXPiceBH1yDVzTO",
          "cachedResultName": "Software Engineer Resume"
        },
        "inputDataFieldName": "CV0"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "WV2QCnuShiBUUxQX",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "8b8fb671-bd8d-42cc-8a21-1a518eb8c42b",
      "name": "ファイルをダウンロード",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        368,
        -48
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {},
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "WV2QCnuShiBUUxQX",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "436d2b81-56a7-4cca-a4f3-73fa174ef3d5",
      "name": "ファイルから抽出",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        592,
        -48
      ],
      "parameters": {
        "options": {},
        "operation": "pdf"
      },
      "typeVersion": 1
    },
    {
      "id": "659a2bfe-607c-46f4-a8c0-748f900dac7d",
      "name": "情報抽出器",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        976,
        -224
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {},
        "schemaType": "manual",
        "inputSchema": "={\n\t\"type\": \"object\",\n\t\"properties\": {\n    \t\"candidate_name\": {\n\t\t\"type\": \"string\"\n\t},\n    \"email_address\": {\n\t\t\"type\": \"string\",\n\t\t\"format\": \"email\"\n    },\n    \"contact_number\": {\n      \"type\": \"string\",\n      \"pattern\": \"^(\\\\+\\\\d{1,3}[- ]?)?\\\\d{10}$\"\n    }\n  }\n}\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "88b31b2a-4e61-485f-a472-d689b198ac9e",
      "name": "OpenRouter Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        976,
        -32
      ],
      "parameters": {
        "model": "openai/gpt-oss-20b:free",
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "id": "ONkqc0B0l2xlY8Mu",
          "name": "OpenRouter account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "6476ff9c-5460-48d2-9dee-b7109692c87c",
      "name": "AIエージェント",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        960,
        112
      ],
      "parameters": {
        "text": "=CV:\n{{ $json.text }}",
        "options": {
          "systemMessage": "=YOU ARE THE WORLD'S MOST ACCURATE AND EFFICIENT CV SUMMARIZER, KNOWN FOR PRODUCING CONCISE AND INFORMATIVE SUMMARIES THAT CAPTURE ALL ESSENTIAL DETAILS.\nYOUR TASK IS TO SUMMARIZE A PROVIDED CV INTO THREE CLEAR SECTIONS: EDUCATIONAL QUALIFICATIONS, JOBN HISTORY, AND SKILL SET. IN ADDITION, YOU MUST EVALUATE THE CANDIDATE'S SUITABILITY FOR A SPECIFIED JOB ROLE AND ASSIGN A SCORE FROM 1 TO 10 BASED ON HOW WELL THEIR QUALIFICATIONS MATCH THE ROLE.\n\nINSTRUCTIONS\n1. EXTRACT AND SUMMARIZE INFORMATION FROM THE CV:\nEDUCATIONAL QUALIFICATIONS: INCLUDE DEGREE NAMES, INSTITUTIONS, AND GRADUATION YEARS.\nJOB HISTORY: LIS JOB TITLES, COMPANIES, AND EMPLOYMENT DATES, WITH A BRIEF OVERVIEW OF KEY RESPONSIBILITIES OR ACHIEVEMENTS.\nSKILL SET: COMPLETE RELEVANT TECHNICAL, SOFT, AND INDUSTRY-SPECIFIC SKILLS.\n\n2. EVALUATE THE CANDIDATE BASED ON THE PROVIDED JOB POST:\nANALYZE RELEVANCE: Compare the candidate's education, work experience, and skill set with the provided job post.\nASSIGN A SCORE (1-10):\n1-3: Weak match (lacks key qualifications or experience).\n4-6: Moderate match (some relevant qalifications but gaps exists).\n7-8: Strong match (meets most job criteria with relevant experience).\n9-10: Excellent match (perfect fit exceeding expectations).\n\nPROVIDE A BRIEF JUSTIFICATION for the assigned score, highlighting key strengths or missing qualifications.\n\n3. OUTPUT FORMAT:\nEducational Qualifications\n\n[Degree], [Institution], [Year]\nJob History\n\n[Job Title], [Company], [Dates]: [Key responsibilities or Achievements]\nSkill Ste\n\n[Skill 1], [Skill 2], [Skill 3], [Skill 4], etc.\nCandidates Evaluation\n\nScore: [1-10]\nJustification: [Brief explanation of why the candidate received this score]\nWHAT TO DO\nDO NOT INCLUDE PERSONAL INFORMATION such as contact details or addresses.\nDO NOT OMIT RELEVANT EDUCATION, JOB, OR SKILL INFORMATION.\nDO NOT ADD YOUR OWN INTERPRETATION OR ASSUMPTIONS ABOUT THE CV CONTENT.\nDO NOT USE INFORMAL LANGUAGE OR EXCESSIVE DETAIL.\nEXAMPLE OUTPUT:\nEducational Qualifications\n\nBachelor of Science in Computer Science, University of Karachi, 2020.\nJob History\n\nSoftware Engineer, Techcorp, 2021-2025: Developed Scalable web applications and optimized database performance.\nSkill Set\n\nPython, Javascript, React, ReactNative, n8n, Zapier, AI, LLM, Team Leadership, Agile Development.\nCandidate Evaluation\n\nScore: 8/10\nJustification: The candidate has a relevant degree, strong technical skills, and 12 years of industry experience. However, lacks experience with cloud technologies mentioned in the job description.\n\nJob Post:\nWe’re seeking a talented and driven Full-Stack Developer with solid experience in Next.js, SAAS Development, Supabase etc. to join our growing team. In this role, you will be instrumental in building and maintaining scalable, high-performance web applications and backend systems.\n\nKey Responsibilities:\n•\tDevelop and scale web applications using Next.js.\n•\tBuild backend infrastructure using Supabase (database, authentication, storage, etc.).\n•\tCollaborate with cross-functional teams in a SaaS product environment.\n•\tIntegrate AI tools and workflows to enhance development efficiency and innovation.\n•\tWrite optimized, maintainable SQL queries and design robust data structures.\n•\tAnalyze and work with existing codebases to extend features or resolve issues.\n•\tEnsure system performance, stability, and security through best practices.\n\nIdeal Candidate should have:\n•\t3+ years of professional development experience.\n•\tA Bachelors in Computer Science, Engineering, Information Technology, or a relevant Field.\n•\tStrong proficiency in Next.js and Supabase.\n•\tDemonstrated experience in SaaS application development.\n•\tAbility to read and work with existing codebases.\n•\tGood understanding of authentication, authorization, and middleware.\n•\tProficiency in SQL, database schema design, and performance tuning.\n•\tActively incorporates AI tools (like Copilot, ChatGPT, etc.) into development processes.\n•\tAbility to work independently and collaboratively in a fast-paced environment.\n\nWhat we Offer:\n•\tCompetitive compensation\n•\tOpportunity to work on innovative, AI-powered tools and services\n•\tCollaborative, fast-paced, and growth-focused environment\nInterested candidates can share the Resume to baluntechsol@gmail.com with the Position mentioned in the Subject line.\n\nIf you are interested, please feel free to DM me or email your Resume to baluntechsol@gmail.com with the Position mentioned in the Subject line."
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "930d6fcb-bcb5-4179-b8d2-00037be73b1a",
      "name": "OpenRouter Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        960,
        352
      ],
      "parameters": {
        "model": "openai/gpt-oss-20b:free",
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "id": "ONkqc0B0l2xlY8Mu",
          "name": "OpenRouter account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ff7b1234-947b-45d8-9693-c2d9a3c82fa6",
      "name": "フィールドを編集",
      "type": "n8n-nodes-base.set",
      "position": [
        1344,
        128
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "c186b601-19ce-4a98-8097-6f9e1d0f1a9e",
              "name": "output",
              "type": "string",
              "value": "={{ $json.output }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "f0274105-2a9e-490f-af57-73efb0c7d366",
      "name": "コード",
      "type": "n8n-nodes-base.code",
      "position": [
        1568,
        128
      ],
      "parameters": {
        "jsCode": "// Read raw text from previous node\nconst data = items[0].json;\nconst rawText = String(\n  data.output ||\n  data.outputText ||\n  data.Output ||\n  data.summary ||\n  data.result ||\n  \"\"\n);\n\nif (!rawText) {\n  return [{\n    json: {\n      error: \"No input text found in previous node (tried output / outputText / Output / summary / result).\"\n    }\n  }];\n}\n\n// Helper: extract section\nfunction extractSection(text, sectionName) {\n  if (!text) return \"\";\n  const nameEsc = sectionName.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n  // 1) Bold markdown header: **Section Name**\n  let regex = new RegExp(`\\\\*\\\\*\\\\s*${nameEsc}\\\\s*\\\\*\\\\*[\\\\r\\\\n]+([\\\\s\\\\S]*?)(?=\\\\n\\\\*\\\\*|\\\\n---|$)`, \"i\");\n  let m = text.match(regex);\n  if (m) return m[1].trim();\n\n  // 2) Plain header line\n  regex = new RegExp(`^\\\\s*${nameEsc}\\\\s*$[\\\\r\\\\n]+([\\\\s\\\\S]*?)(?=^\\\\s*\\\\*\\\\*|\\\\n---|$)`, \"im\");\n  m = text.match(regex);\n  if (m) return m[1].trim();\n\n  // 3) Fallback: find the name anywhere\n  regex = new RegExp(nameEsc, \"i\");\n  m = text.match(regex);\n  if (m) {\n    const start = m.index + m[0].length;\n    const rest = text.slice(start);\n    const nextBoundary = rest.search(/\\n\\*\\*|\\n---/i);\n    const end = nextBoundary !== -1 ? start + nextBoundary : text.length;\n    return text.slice(start, end).trim();\n  }\n\n  return \"\";\n}\n\n// Extract score + justification\nfunction extractScoreAndJustification(block) {\n  if (!block) return [\"\", \"\"];\n  const sanitized = block.replace(/\\*/g, \"\").trim();\n\n  let score = \"\";\n  let justification = \"\";\n\n  const scoreMatch = sanitized.match(/Score\\s*[:\\-–—]?\\s*([0-9]{1,2}(?:\\/10)?|N\\/A|NA|n\\/a)/i);\n  if (scoreMatch) {\n    score = scoreMatch[1].trim();\n    if (/^[0-9]{1,2}$/.test(score)) {\n      const n = parseInt(score, 10);\n      if (n >= 0 && n <= 10) score = `${n}/10`;\n    }\n  }\n\n  const justMatch = sanitized.match(/Justification\\s*[:\\-–—]?\\s*([\\s\\S]*)/i);\n  if (justMatch) {\n    justification = justMatch[1].trim();\n  }\n\n  if (!score && sanitized) score = \"N/A\";\n  return [score, justification];\n}\n\n// Extract sections\nconst educationalQualification = extractSection(rawText, \"Educational Qualifications\");\nconst jobHistory = extractSection(rawText, \"Job History\");\nconst skillSet = extractSection(rawText, \"Skill Set\");\nconst candidateEvaluation = extractSection(rawText, \"Candidate Evaluation\");\n\n// Get score + justification\nconst [score, justification] = extractScoreAndJustification(candidateEvaluation);\n\nreturn [{\n  json: {\n    educationalQualification: educationalQualification || \"\",\n    jobHistory: jobHistory || \"\",\n    skillSet: skillSet || \"\",\n    score: score || \"\",\n    justification: justification || \"\"\n  }\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "49e498a3-c87b-4d79-9a59-6947324dcb9a",
      "name": "マージ",
      "type": "n8n-nodes-base.merge",
      "position": [
        1808,
        -48
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3.2
    },
    {
      "id": "607b4f93-7b37-4293-8844-fd17ded34785",
      "name": "シートに行を追加",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2064,
        -208
      ],
      "parameters": {
        "columns": {
          "value": {
            "score": "={{ $json.score }}",
            "skill set": "={{ $json.skillSet }}",
            "Job History": "={{ $json.jobHistory }}",
            "Justification": "={{ $json.justification }}",
            "email_address": "={{ $json.output.email_address }}",
            "candidate_name": "={{ $json.output.candidate_name }}",
            "contact_number": "={{ $json.output.contact_number }}",
            "Educational Qualifications": "={{ $json.educationalQualification }}"
          },
          "schema": [
            {
              "id": "candidate_name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "candidate_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email_address",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "email_address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "contact_number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "contact_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Educational Qualifications",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Educational Qualifications",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job History",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Job History",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "skill set",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "skill set",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "score",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Justification",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Justification",
              "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/12pqhk8m-j2V44jKaNZwG7jKFPUpm4yCe17mHjbr6qUQ/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "12pqhk8m-j2V44jKaNZwG7jKFPUpm4yCe17mHjbr6qUQ",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/12pqhk8m-j2V44jKaNZwG7jKFPUpm4yCe17mHjbr6qUQ/edit?usp=drivesdk",
          "cachedResultName": "HR_Automation_Workflow"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "ObgvVgjWJYaH5iLJ",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "e9ad17fd-e688-4c34-80ce-a79dc572b794",
      "name": "レコードを作成",
      "type": "n8n-nodes-base.airtable",
      "position": [
        2064,
        64
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appAN9KciZeolO2PN",
          "cachedResultUrl": "https://airtable.com/appAN9KciZeolO2PN",
          "cachedResultName": "Senior_Software_Engineer_Resume"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblgro31x2ktE3aEc",
          "cachedResultUrl": "https://airtable.com/appAN9KciZeolO2PN/tblgro31x2ktE3aEc",
          "cachedResultName": "Table 1"
        },
        "columns": {
          "value": {
            "Score": "={{ $json.score }}",
            "Skill set": "={{ $json.skillSet }}",
            "Job History": "={{ $json.jobHistory }}",
            "Justification": "={{ $json.justification }}",
            "email_address": "={{ $json.output.email_address }}",
            "candidate_name": "={{ $json.output.candidate_name }}",
            "contact_number": "={{ $json.output.contact_number }}",
            "Educational Qualifications": "={{ $json.educationalQualification }}"
          },
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "id",
              "defaultMatch": true
            },
            {
              "id": "candidate_name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "candidate_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email_address",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "email_address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "contact_number",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "contact_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Educational Qualifications",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Educational Qualifications",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job History",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Job History",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Skill set",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Skill set",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Score",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Justification",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Justification",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "create"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "jgRMszk4kSwSaU3V",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "04901267-ea47-4280-9e19-3e88c9fc7993",
      "name": "フォーム送信時",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -128,
        -144
      ],
      "webhookId": "12378e65-adc8-4ca3-9ef6-95cd5d2a412b",
      "parameters": {
        "options": {},
        "formTitle": "Senior Software Engineer"
      },
      "typeVersion": 2.3
    },
    {
      "id": "34eb4149-0501-4d6d-8dc6-f19a59385d58",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -192,
        -416
      ],
      "parameters": {
        "color": 4,
        "height": 912,
        "content": "GMAIL TRIGGER:\nListen from emails or forms submissions matching the CV's received for specific job position and fetch attachments."
      },
      "typeVersion": 1
    },
    {
      "id": "22690685-9e05-4c1b-a798-bd2646e5214d",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        64,
        -416
      ],
      "parameters": {
        "height": 912,
        "content": "UPLOAD THE FILE:\nIncoming attachment (CV) is uploaded to the configured Google Drive folder and named from the sender."
      },
      "typeVersion": 1
    },
    {
      "id": "73d68e7c-705c-49e0-a2af-8bea13a69091",
      "name": "付箋2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        320,
        -416
      ],
      "parameters": {
        "color": 3,
        "width": 192,
        "height": 912,
        "content": "DOWNLOAD THE ATTACHMENT (CV):\nThe stored file is downloaded by ID so it can be read."
      },
      "typeVersion": 1
    },
    {
      "id": "55a5c9bd-9602-4875-aae5-d4497e06b067",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        528,
        -416
      ],
      "parameters": {
        "color": 7,
        "height": 912,
        "content": "EXTRACT FROM FILE:\nExtract from File converts the CV (PDF) into plain text."
      },
      "typeVersion": 1
    },
    {
      "id": "05bd2380-4208-4f0e-95be-9f0c0c542721",
      "name": "付箋4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        864,
        -416
      ],
      "parameters": {
        "color": 5,
        "width": 384,
        "height": 912,
        "content": "Two parallel AI paths:\n\nQuick structured extraction: Information Extractor uses a small schema (name, email, phone) + LM helper to pull contact fields.\n\nFull CV analysis: AI Agent runs a large system prompt to summarize Education, Job History, Skills and to assign a suitability score (1–10)."
      },
      "typeVersion": 1
    },
    {
      "id": "fdce16c8-1138-4bb6-9925-efe4357a9f80",
      "name": "付箋5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1264,
        -416
      ],
      "parameters": {
        "color": 2,
        "height": 912,
        "content": "Normalize agent output: Edit Fields maps the agent response into output."
      },
      "typeVersion": 1
    },
    {
      "id": "9dd5f08c-6528-4650-b411-5e645413ce6e",
      "name": "付箋6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1520,
        -416
      ],
      "parameters": {
        "width": 208,
        "height": 912,
        "content": "Parse & clean: \nCode runs JS to extract the three summary sections plus score and justification from the agent text (regex-based)."
      },
      "typeVersion": 1
    },
    {
      "id": "90db96b2-a8b0-44a4-8f75-05552c5c1ee1",
      "name": "付箋7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1744,
        -416
      ],
      "parameters": {
        "color": 4,
        "width": 208,
        "height": 912,
        "content": "Merge datasets: \nMerge combines the schema extraction (contact info) with the AI-parsed summary/score."
      },
      "typeVersion": 1
    },
    {
      "id": "d699e192-b79d-4283-b531-59ff75313ffc",
      "name": "付箋8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1968,
        -416
      ],
      "parameters": {
        "color": 6,
        "width": 272,
        "height": 912,
        "content": "Store results: \nFinal record is appended to Google Sheets and inserted into Airtable for tracking, reporting, or downstream workflows."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "6658e34c-6f2c-418e-84fd-271309c8fcbb",
  "connections": {
    "f0274105-2a9e-490f-af57-73efb0c7d366": {
      "main": [
        [
          {
            "node": "49e498a3-c87b-4d79-9a59-6947324dcb9a",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "49e498a3-c87b-4d79-9a59-6947324dcb9a": {
      "main": [
        [
          {
            "node": "607b4f93-7b37-4293-8844-fd17ded34785",
            "type": "main",
            "index": 0
          },
          {
            "node": "e9ad17fd-e688-4c34-80ce-a79dc572b794",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6476ff9c-5460-48d2-9dee-b7109692c87c": {
      "main": [
        [
          {
            "node": "ff7b1234-947b-45d8-9693-c2d9a3c82fa6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ff7b1234-947b-45d8-9693-c2d9a3c82fa6": {
      "main": [
        [
          {
            "node": "f0274105-2a9e-490f-af57-73efb0c7d366",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6c3f54bf-26d8-4863-b91c-d6760b54bfc4": {
      "main": [
        [
          {
            "node": "8b8fb671-bd8d-42cc-8a21-1a518eb8c42b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8b8fb671-bd8d-42cc-8a21-1a518eb8c42b": {
      "main": [
        [
          {
            "node": "436d2b81-56a7-4cca-a4f3-73fa174ef3d5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "14df0331-5d44-471e-a60b-9931f108764c": {
      "main": [
        [
          {
            "node": "6c3f54bf-26d8-4863-b91c-d6760b54bfc4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "436d2b81-56a7-4cca-a4f3-73fa174ef3d5": {
      "main": [
        [
          {
            "node": "659a2bfe-607c-46f4-a8c0-748f900dac7d",
            "type": "main",
            "index": 0
          },
          {
            "node": "6476ff9c-5460-48d2-9dee-b7109692c87c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "04901267-ea47-4280-9e19-3e88c9fc7993": {
      "main": [
        [
          {
            "node": "6c3f54bf-26d8-4863-b91c-d6760b54bfc4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "659a2bfe-607c-46f4-a8c0-748f900dac7d": {
      "main": [
        [
          {
            "node": "49e498a3-c87b-4d79-9a59-6947324dcb9a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "88b31b2a-4e61-485f-a472-d689b198ac9e": {
      "ai_languageModel": [
        [
          {
            "node": "659a2bfe-607c-46f4-a8c0-748f900dac7d",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "930d6fcb-bcb5-4179-b8d2-00037be73b1a": {
      "ai_languageModel": [
        [
          {
            "node": "6476ff9c-5460-48d2-9dee-b7109692c87c",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級 - 人事, AI要約, マルチモーダルAI

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

関連ワークフロー

スマートインタビューアシスタント:履歴書、職位要項、ラウンドに基づくカスタム質問
応募・職位情報・ラウンドに基づいてGPT-4でカスタム面接問題を生成
Set
Code
Merge
+
Set
Code
Merge
26 ノードTrung Tran
人事
第一轮 Telegram と LinkedIn 快速通道 AI 招聘アシスタント
AI候选人筛选流程:LinkedInへTelegram,統合Gemini与Apify
If
Set
Code
+
If
Set
Code
55 ノードDean Pike
人事
比較ベースの履歴書スクリーニング
Gemini AIとGoogle Sheetsを使ってリゾームのスクリーニングと候補者採点を自動化
Code
Merge
Form Trigger
+
Code
Merge
Form Trigger
27 ノードAsfandyar Malik
人事
TalentFlow AI - バッチ履歴書スクリーニングと職位説明とのマッチング
GPT-4を活用したHRチーム向けの大量リソーシェスクリーニングと職位説明書マッチング
If
Code
Merge
+
If
Code
Merge
30 ノードTrung Tran
人事
OpenAI、ElevenLabs、Fal.ai を使用した動画・パ odcast・ASM R向けのウイルス性コンテンツ自動作成
OpenAI、ElevenLabs、そして Fal.ai を使って動画、ポッドキャスト、ASMR に向けたウイルスのコンテンツ作成を自動化
Set
Code
Wait
+
Set
Code
Wait
97 ノードAdam Crafts
コンテンツ作成
GPT-4oとエラーハンドリングによる自動リジューム選別 - Google スプレッドシートとクラウドハブワークフロー
GPT-4o +エラーハンドリングの自動再履歴スクリーニング - Google テーブルと Google ドラाइブワークフロー
If
Set
Gmail
+
If
Set
Gmail
34 ノードDavid Olusola
コンテンツ作成
ワークフロー情報
難易度
上級
ノード数23
カテゴリー3
ノードタイプ13
難易度説明

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

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34