応募者追跡の自動化

中級

これはContent Creation, Multimodal AI分野の自動化ワークフローで、13個のノードを含みます。主にIf, Code, Gmail, FormTrigger, GoogleSheetsなどのノードを使用。 GPT-4.1で履歴書の解析、Google SpreadsheetとGmailを組み合わせて応募者追跡の自動化

前提条件
  • Googleアカウント + Gmail API認証情報
  • Google Sheets API認証情報
  • OpenAI API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "meta": {
    "instanceId": "cb5caf45c9475b848c7e83772505bb02340e165acdd8de77e25011192306257c",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "c30700f0-60c1-4c18-bd05-93d28ae09c42",
      "name": "Code",
      "type": "n8n-nodes-base.code",
      "position": [
        -1552,
        208
      ],
      "parameters": {
        "jsCode": "// Binary data'nın gerçek yapısını görmek için\nconsole.log(\"JSON Keys:\", Object.keys($input.first().json));\nconsole.log(\"Binary Keys:\", Object.keys($input.first().binary || {}));\nconsole.log(\"Full Binary:\", $input.first().binary);\n\nreturn $input.all();"
      },
      "typeVersion": 2
    },
    {
      "id": "a61166c0-b977-4482-bb70-f36c022613a1",
      "name": "No Operation, do nothing",
      "type": "n8n-nodes-base.noOp",
      "position": [
        0,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "3b700a92-f90e-458e-a17f-942d483cff5f",
      "name": "1. 応募者フォーム送信",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -1760,
        208
      ],
      "webhookId": "e92eb47d-5fd9-4055-bd89-6eeff65a00b7",
      "parameters": {
        "options": {},
        "formTitle": "test",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Name surname",
              "requiredField": true
            },
            {
              "fieldLabel": "email",
              "requiredField": true
            },
            {
              "fieldType": "file",
              "fieldLabel": "CV",
              "multipleFiles": false,
              "requiredField": true,
              "acceptFileTypes": ".pdf"
            },
            {
              "fieldType": "number",
              "fieldLabel": "Experience Years",
              "requiredField": true
            }
          ]
        }
      },
      "typeVersion": 2.3,
      "alwaysOutputData": true
    },
    {
      "id": "bf5e61be-2934-4b99-aaf0-6c264a0b55b7",
      "name": "2. PDF履歴書からテキスト抽出",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -1360,
        208
      ],
      "parameters": {
        "options": {},
        "operation": "pdf",
        "binaryPropertyName": "CV"
      },
      "typeVersion": 1
    },
    {
      "id": "4d93769b-1807-4b42-af08-b86cf92f30de",
      "name": "3. AIによる履歴書分析・構造化",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -1120,
        208
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "GPT-4.1-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=FORM DATA:\n- Name: {{ $node[\"On form submission1\"].json[\"Name surname\"] }}\n- Email: {{ $node[\"On form submission1\"].json[\"email\"] }}\n- Experience Years: {{ $node[\"On form submission1\"].json[\"Experience Years\"] }}\n\nCV TEXT:\n{{ $json.text }}\n\nExtract the data into the following JSON format for Google Sheets:\n{\n  \"name\": \"use_name_from_form\",\n  \"email\": \"use_email_from_form\",\n  \"phone\": \"phone_extracted_from_cv\",\n  \"experience_years\": \"use_experience_years_from_form\",\n  \"education\": \"All education as a single string - school, degree, year\",\n  \"work_experience\": \"All work experience as a single string - company, position, duration\",\n  \"skills\": \"All skills, comma-separated\",\n  \"certifications\": \"All certifications, comma-separated\",\n  \"languages\": \"Languages and their proficiency levels\",\n  \"address\": \"address_extracted_from_cv\",\n  \"cv_summary\": \"A 10-sentence summary of the CV for an HR manager\",\n  \"application_date\": \"{{ new Date().toLocaleDateString('en-US') }}\",\n  \"status\": \"New Application\"\n}\n\nIMPORTANT: Respond ONLY in the valid JSON format. Do not add any other text or explanations."
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "id": "7ZvT0NzDJ8AjFf1B",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "14a1c88a-20cc-46b5-a9d3-1c26c6a230e2",
      "name": "4. AI出力の解析",
      "type": "n8n-nodes-base.code",
      "position": [
        -752,
        208
      ],
      "parameters": {
        "jsCode": "// content zaten object, parse etmeye gerek yok\nconst data = items[0].json.message.content;\n\nreturn [{ json: data }];"
      },
      "typeVersion": 2
    },
    {
      "id": "d1bff2d5-b644-441b-b76d-7b41dda8800f",
      "name": "5. 重複応募者の確認",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -512,
        208
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "={{ $node[\"4. Parse AI Output\"].json.email }}",
              "lookupColumn": "email"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1UvFYOE5C47Q8eQpGq0fLmxHwRjXpZTzssQiv7mOsC1E/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1UvFYOE5C47Q8eQpGq0fLmxHwRjXpZTzssQiv7mOsC1E/edit?gid=0#gid=0"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "df8r9D022KIAOHTC",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7,
      "alwaysOutputData": true
    },
    {
      "id": "4bce4857-f0b0-4ac9-b11b-d57f41d7c72c",
      "name": "6. 応募者が新規の場合...",
      "type": "n8n-nodes-base.if",
      "position": [
        -240,
        208
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "3009324b-7124-488e-931d-37221b4b57f9",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.email }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "b4320ad6-1d8c-491d-b7fa-78734aa6ff36",
      "name": "7. 応募者データを Google シートに保存",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        16,
        368
      ],
      "parameters": {
        "columns": {
          "value": {
            "email": "={{ $node[\"4. Parse AI Output\"].json.email }}",
            "status": "= {{ $node[\"4. Parse AI Output\"].json.status }}",
            "address": "={{ $node[\"4. Parse AI Output\"].json.address }}",
            "talents": "={{ $node[\"4. Parse AI Output\"].json.skills }}",
            "education": "={{ $node[\"4. Parse AI Output\"].json.education }}",
            "languages": "={{ $node[\"4. Parse AI Output\"].json.languages }}",
            "telephone": "={{ $node[\"4. Parse AI Output\"].json.phone }}",
            "cv_summary": "={{ $node[\"4. Parse AI Output\"].json.cv_summary }}",
            "experience": "={{ $node[\"4. Parse AI Output\"].json.work_experience }}",
            "certificates": "={{ $node[\"4. Parse AI Output\"].json.certifications }}",
            "name surname": "={{ $node[\"4. Parse AI Output\"].json.name }}",
            "application_date": "={{ $node[\"4. Parse AI Output\"].json.application_date }}",
            "experience_years": "={{ $node[\"4. Parse AI Output\"].json.experience_years }}"
          },
          "schema": [
            {
              "id": "name surname",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "name surname",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "telephone",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "telephone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "experience_years",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "experience_years",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "education",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "education",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "experience",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "experience",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "talents",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "talents",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "certificates",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "certificates",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "languages",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "languages",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "address",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "cv_summary",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "cv_summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "application_date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "application_date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "submittedAt",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "submittedAt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "formMode",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "formMode",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "index",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "index",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "message",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "message",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "logprobs",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "logprobs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "finish_reason",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "finish_reason",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "email"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1UvFYOE5C47Q8eQpGq0fLmxHwRjXpZTzssQiv7mOsC1E/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1UvFYOE5C47Q8eQpGq0fLmxHwRjXpZTzssQiv7mOsC1E/edit?gid=0#gid=0"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "df8r9D022KIAOHTC",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "fb6b0443-dfda-4bc6-a1d7-f86ce2df4ada",
      "name": "8a. 応募者へ確認メール送信",
      "type": "n8n-nodes-base.gmail",
      "position": [
        368,
        208
      ],
      "webhookId": "c7bed720-0890-42ca-a2d1-e5a80e931250",
      "parameters": {
        "sendTo": "={{ $node[\"4. Parse AI Output\"].json.email }}",
        "message": "=Dear {{ $node[\"4. Parse AI Output\"].json.name }},\n\nYour application has been received successfully.\n\nHere are your application details:\n- Email: {{ $node[\"4. Parse AI Output\"].json.email }}\n- Experience: {{ $node[\"4. Parse AI Output\"].json.experience_years }} years\n- Application Date: {{ $node[\"4. Parse AI Output\"].json.application_date }}\n\nWe will review your application and get back to you shortly.\n\nThank you.",
        "options": {},
        "subject": "Your Application Has Been Received"
      },
      "typeVersion": 2.1
    },
    {
      "id": "1177788a-8ce6-40b1-8e71-5825afefb22e",
      "name": "8b. 採用担当者へ通知メール送信",
      "type": "n8n-nodes-base.gmail",
      "position": [
        368,
        512
      ],
      "webhookId": "38206975-448a-4964-a917-e03e2445356c",
      "parameters": {
        "sendTo": "bsezi1409@gmail.com",
        "message": "=A new CV application has been received:\n\nName: {{ $node[\"4. Parse AI Output\"].json.name }}\nEmail: {{ $node[\"4. Parse AI Output\"].json.email }}\nExperience: {{ $node[\"4. Parse AI Output\"].json.experience_years }} years\n\nAI-Generated CV Summary:\n{{ $node[\"4. Parse AI Output\"].json.cv_summary }}\n\nThe applicant's data has been saved to Google Sheets.",
        "options": {},
        "subject": "=New Application - {{ $node[\"4. Parse AI Output\"].json.name }}"
      },
      "typeVersion": 2.1
    },
    {
      "id": "0fa496ba-afdb-4290-a6cb-cf15cacae9e2",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2384,
        16
      ],
      "parameters": {
        "width": 544,
        "height": 512,
        "content": "# AI-Powered Applicant Tracking System (ATS)\n\n**Purpose:** This workflow automates your initial hiring process. It captures job applications via an n8n form, uses AI to read and structure the candidate's PDF CV, saves the data to Google Sheets, and sends confirmation emails.\n\n### Quick Setup Guide\n\n1.  **Configure Credentials:**\n    *   `OpenAI` (Node 3): Set up your OpenAI credentials.\n    *   `Google Sheets` & `Gmail` (Nodes 5, 7, 8a, 8b): Configure your Google account credentials.\n2.  **Customize Form:** In the `1. Applicant Submits Form` node, customize your form fields if needed. **Activate the workflow** and copy the \"Production URL\" to share with applicants.\n3.  **Set Recruiter Email:** In the `8b. Send Notification...` node, change the \"To\" address to your own email.\n4.  **Link Your Sheet:** In nodes `5` and `7`, select your Google Sheet for storing applicant data."
      },
      "typeVersion": 1
    },
    {
      "id": "f3165533-3506-48b3-9524-496252336362",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1424,
        -80
      ],
      "parameters": {
        "color": 3,
        "width": 752,
        "height": 240,
        "content": "### Phase 1: AI CV Parsing Engine\n\n**Purpose:** This is the core of the automation. It transforms an unstructured CV into a structured database entry.\n\n*   **2. Extract Text:** Reads all the text content from the uploaded PDF file.\n*   **3. Analyze with AI:** Sends the raw CV text to OpenAI with a detailed prompt, instructing it to extract key information (experience, skills, education, etc.) and return it as a clean JSON object.\n*   **4. Parse AI Output:** Converts the AI's text response into a usable JSON object for the next steps."
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "c30700f0-60c1-4c18-bd05-93d28ae09c42": {
      "main": [
        [
          {
            "node": "bf5e61be-2934-4b99-aaf0-6c264a0b55b7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "14a1c88a-20cc-46b5-a9d3-1c26c6a230e2": {
      "main": [
        [
          {
            "node": "d1bff2d5-b644-441b-b76d-7b41dda8800f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3b700a92-f90e-458e-a17f-942d483cff5f": {
      "main": [
        [
          {
            "node": "c30700f0-60c1-4c18-bd05-93d28ae09c42",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4bce4857-f0b0-4ac9-b11b-d57f41d7c72c": {
      "main": [
        [
          {
            "node": "a61166c0-b977-4482-bb70-f36c022613a1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "b4320ad6-1d8c-491d-b7fa-78734aa6ff36",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bf5e61be-2934-4b99-aaf0-6c264a0b55b7": {
      "main": [
        [
          {
            "node": "4d93769b-1807-4b42-af08-b86cf92f30de",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d1bff2d5-b644-441b-b76d-7b41dda8800f": {
      "main": [
        [
          {
            "node": "4bce4857-f0b0-4ac9-b11b-d57f41d7c72c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4d93769b-1807-4b42-af08-b86cf92f30de": {
      "main": [
        [
          {
            "node": "14a1c88a-20cc-46b5-a9d3-1c26c6a230e2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b4320ad6-1d8c-491d-b7fa-78734aa6ff36": {
      "main": [
        [
          {
            "node": "fb6b0443-dfda-4bc6-a1d7-f86ce2df4ada",
            "type": "main",
            "index": 0
          },
          {
            "node": "1177788a-8ce6-40b1-8e71-5825afefb22e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

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

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

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

中級 - コンテンツ作成, マルチモーダルAI

有料ですか?

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

ワークフロー情報
難易度
中級
ノード数13
カテゴリー2
ノードタイプ9
難易度説明

経験者向け、6-15ノードの中程度の複雑さのワークフロー

作成者

Hello, I'm Onur I've been working as a freelance software developer for about four years. In addition, I develop my own projects. For some time, I have been improving myself and providing various services related to AI and AI workflows. Both by writing low code and code. If you have any questions, don't hesitate to contact me.

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34