💥 AI駆動型人事ワークフロー: GmailからSheetsへ履歴書分析と評価 - ビデオ

上級

これはHR, AI Summarization分野の自動化ワークフローで、18個のノードを含みます。主にSwitch, GmailTool, GoogleDrive, GmailTrigger, GoogleSheetsなどのノードを使用。 GPT-4o-miniを使ってリゾームのスクリーニング:GmailからGoogle SheetsまでのHR評価システム

前提条件
  • Googleアカウント + Gmail API認証情報
  • Google Drive API認証情報
  • Google Sheets API認証情報
  • OpenAI API Key

カテゴリー

ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "id": "z7quMO0WgEu3Kkyv",
  "meta": {
    "instanceId": "a2b23892dd6989fda7c1209b381f5850373a7d2b85609624d7c2b7a092671d44",
    "templateCredsSetupCompleted": true
  },
  "name": "💥 AI-Powered HR Workflow: CV Analysis and Evaluation from Gmail to Sheets - vide",
  "tags": [],
  "nodes": [
    {
      "id": "2ebf8f4d-1000-4c40-8d5f-e31fa0ada941",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2540,
        -240
      ],
      "parameters": {
        "width": 920,
        "height": 400,
        "content": "# 🟡 Step 1 — Detect and Process New CV from Email"
      },
      "typeVersion": 1
    },
    {
      "id": "175a65ff-d1c4-404e-bab1-7805123a0ce9",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2540,
        200
      ],
      "parameters": {
        "color": 3,
        "width": 920,
        "height": 500,
        "content": "# 🔴 Step 2 — Extract and Store Candidate Data\n"
      },
      "typeVersion": 1
    },
    {
      "id": "1061bc84-9cb8-4391-a057-04e7d1aac10e",
      "name": "付箋2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3520,
        200
      ],
      "parameters": {
        "color": 6,
        "width": 920,
        "height": 500,
        "content": "# 🟣 Step 3 — Evaluate and Qualify the Candidate\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a6395a4c-3c06-4175-8927-3f80bde21bcc",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3520,
        -240
      ],
      "parameters": {
        "width": 920,
        "height": 400,
        "content": " ## AI-Powered HR Workflow: CV Analysis and Evaluation from Gmail to Sheets\n\n### 📋 Before you get started, make sure you have:\n\n- ✅ [n8n installed](https://www.hostg.xyz/SHHOJ) *(self-hosted required for Gmail + OpenAI + Google integrations)*\n- ✅ [OpenAI API Key](https://platform.openai.com/api-keys)\n- ✅ [Google Sheets API enabled](https://console.cloud.google.com/apis/api/sheets.googleapis.com/overview) in Google Cloud Console\n- ✅ [Google Drive API enabled](https://console.cloud.google.com/apis/api/drive.googleapis.com/overview) in Google Cloud Console\n- ✅ [OAuth 2.0 Client ID and Secret](https://console.cloud.google.com/apis/credentials) created in Google Cloud (required for Gmail, Drive, and Sheets nodes)\n\n> Make sure you’ve authorized n8n to access these services using the credentials above before running the workflow.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "3575cc8d-18b8-436d-a026-b022814fbd3d",
      "name": "Gmail: 新規履歴書を監視",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        2640,
        -140
      ],
      "parameters": {
        "simple": false,
        "filters": {
          "q": "has:attachment",
          "labelIds": [
            "UNREAD"
          ],
          "readStatus": "unread"
        },
        "options": {
          "downloadAttachments": true
        },
        "pollTimes": {
          "item": [
            {
              "mode": "everyHour",
              "minute": 1
            }
          ]
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "rKxQHWZ2F5XLJmwF",
          "name": "Gmail account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e1d682f8-9723-4dd6-ad45-e8959a273d32",
      "name": "メール種別を分類",
      "type": "@n8n/n8n-nodes-langchain.textClassifier",
      "position": [
        2860,
        -140
      ],
      "parameters": {
        "options": {
          "systemPromptTemplate": "Classify the user's text into one of the following categories: {categories}.\nFollow the formatting instructions provided below exactly.\nDo not include any explanation — output only the final JSON result."
        },
        "inputText": "={{ $json.text }}",
        "categories": {
          "categories": [
            {
              "category": "Doesn't apply",
              "description": "The candidate is not a job application"
            },
            {
              "category": "Apply",
              "description": "This is a job application submitted by a candidate applying for a position at our organization, included as an attached file."
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5f241a19-c30a-4cc4-a2c0-7e9d97711c78",
      "name": "OpenAI モデル – メール分類器",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2860,
        20
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "6h3DfVhNPw9I25nO",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "848188ac-52fa-43b7-953f-b2cd45c727f1",
      "name": "スキップ (求職応募でない場合)",
      "type": "n8n-nodes-base.noOp",
      "position": [
        3280,
        -140
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "fe0e8d5c-e3f6-4098-891b-0fb3594b71c8",
      "name": "履歴書テキストを抽出 (PDF)",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        2900,
        520
      ],
      "parameters": {
        "options": {},
        "operation": "pdf",
        "binaryPropertyName": "attachment_0"
      },
      "typeVersion": 1
    },
    {
      "id": "49107c53-eb76-4082-9d52-88d3fc391153",
      "name": "履歴書を Google ドライブに保存",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2900,
        300
      ],
      "parameters": {
        "name": "={{ $('Gmail: Watch for new CV').item.json.from.value[0].address }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1G0KjVS_NAnqbqzYlV93KpX3498G5J8b1",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1G0KjVS_NAnqbqzYlV93KpX3498G5J8b1",
          "cachedResultName": "CV - HR"
        },
        "inputDataFieldName": "=attachment_0"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "gzeHMd64HAz6HBIe",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "b5d472bf-4acf-4e86-aeb7-5d1604ded5ff",
      "name": "求人詳細を取得 (Google シート)",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3280,
        520
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "51us92xkOlrvArhV",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6,
      "alwaysOutputData": true
    },
    {
      "id": "9b09d2ba-7669-4f64-8a77-ee5ff5280d72",
      "name": "AIエージェント: 履歴書を評価",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        3620,
        300
      ],
      "parameters": {
        "text": "=Here is the resume:\n{{ $('Extract Resume Text (PDF)').item.json.text }}\n\nAnalyze the current information from the received candidate and score between 0 to 10 the said candidate, 0 meaning not a good fit for the position, 10 being outstanding for the job.\n\nJob Tile :  {{ $json['Title offer'] }}\nJob Description: {{ $json.Description }}\n\nReply by Email : \nSend a reply to the candidate to confirm that we have received their application and that we will get back to them as soon as possible.",
        "options": {
          "systemMessage": "=You are an invaluable assistant. You were given a resume. You have to help me analyze the resume and give it a score based on the details available in the resume. Also, extract the name, email, phone, location and LinkedIn profile from the resume.\n\nReply by Email : \nSend a reply to the candidate to confirm that we have received their application and that we will get back to them as soon as possible."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.8
    },
    {
      "id": "85edf215-bfa3-4b93-8f4f-7cede1132797",
      "name": "OpenAI モデル – 履歴書評価",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        3580,
        540
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "o4-mini",
          "cachedResultName": "o4-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "6h3DfVhNPw9I25nO",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "90da624b-9653-444f-a36b-9bfe6df4922a",
      "name": "確認メールを送信",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        3760,
        540
      ],
      "webhookId": "b56651a5-a82e-4550-ae4e-ffea0304cd52",
      "parameters": {
        "sendTo": "={{ $('Gmail: Watch for new CV').item.json.from.value[0].address }}",
        "message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
        "options": {},
        "subject": "Application Received"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "rKxQHWZ2F5XLJmwF",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "119808cc-82fb-43d2-931f-351f8e2e3267",
      "name": "履歴書評価結果を解析",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        3900,
        540
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"name\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n      \"email\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n      \"linkedin\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n      \"score\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n      \"Phone\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n      \"Location\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t\t\n\t}\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "e9d2dfb0-0202-422c-a1f1-8d25a19bacc3",
      "name": "評価を Google シートに保存",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        4120,
        300
      ],
      "parameters": {
        "columns": {
          "value": {
            "Name": "={{ $json.output.name }}",
            "Email": "={{ $('Gmail: Watch for new CV').item.json.from.value[0].address }}",
            "Phone": "='{{ $json.output.Phone }}",
            "Score": "={{ $json.output.score }}",
            "LinkedIn": "={{ $json.output.linkedin }}",
            "Location": "={{ $json.output.Location }}",
            "Resume text": "={{ $('Extract Resume Text (PDF)').item.json.text }}"
          },
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "LinkedIn",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "LinkedIn",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Phone",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Location",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Score",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Resume text",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Resume text",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Link CV",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Link CV",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Email"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "useAppend": true
        },
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "51us92xkOlrvArhV",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "c931b4a0-a1a4-4c59-85b8-9099064a74d0",
      "name": "分岐",
      "type": "n8n-nodes-base.switch",
      "position": [
        2640,
        400
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "e9debd3b-3fa3-425a-bd61-6bf23a3a652b",
                    "operator": {
                      "type": "string",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "attachment_0",
                    "rightValue": ""
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "f0eabfca-ff5e-4e5d-9b4e-f3f80c7fa5b4",
                    "operator": {
                      "type": "string",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "attachment_0",
                    "rightValue": ""
                  }
                ]
              }
            }
          ]
        },
        "options": {
          "allMatchingOutputs": true
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "260dae6d-9234-4bab-bb79-d15b4923d801",
      "name": "履歴書を Google シートに保存",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3280,
        300
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $('Gmail: Watch for new CV').item.json.from.value[0].address }}",
            "Link CV": "={{ $('Save Resume to Google Drive').item.json.webViewLink }}"
          },
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "LinkedIn",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "LinkedIn",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Phone",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Location",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Score",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Resume text",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Resume text",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Link CV",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Link CV",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "useAppend": true
        },
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "51us92xkOlrvArhV",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "07121905-4a3c-4301-b88e-e1db76c119e3",
  "connections": {
    "c931b4a0-a1a4-4c59-85b8-9099064a74d0": {
      "main": [
        [
          {
            "node": "49107c53-eb76-4082-9d52-88d3fc391153",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "fe0e8d5c-e3f6-4098-891b-0fb3594b71c8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e1d682f8-9723-4dd6-ad45-e8959a273d32": {
      "main": [
        [
          {
            "node": "848188ac-52fa-43b7-953f-b2cd45c727f1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "c931b4a0-a1a4-4c59-85b8-9099064a74d0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9b09d2ba-7669-4f64-8a77-ee5ff5280d72": {
      "main": [
        [
          {
            "node": "e9d2dfb0-0202-422c-a1f1-8d25a19bacc3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3575cc8d-18b8-436d-a026-b022814fbd3d": {
      "main": [
        [
          {
            "node": "e1d682f8-9723-4dd6-ad45-e8959a273d32",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "90da624b-9653-444f-a36b-9bfe6df4922a": {
      "ai_tool": [
        [
          {
            "node": "9b09d2ba-7669-4f64-8a77-ee5ff5280d72",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "260dae6d-9234-4bab-bb79-d15b4923d801": {
      "main": [
        []
      ]
    },
    "fe0e8d5c-e3f6-4098-891b-0fb3594b71c8": {
      "main": [
        [
          {
            "node": "b5d472bf-4acf-4e86-aeb7-5d1604ded5ff",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "49107c53-eb76-4082-9d52-88d3fc391153": {
      "main": [
        [
          {
            "node": "260dae6d-9234-4bab-bb79-d15b4923d801",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "119808cc-82fb-43d2-931f-351f8e2e3267": {
      "ai_outputParser": [
        [
          {
            "node": "9b09d2ba-7669-4f64-8a77-ee5ff5280d72",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "85edf215-bfa3-4b93-8f4f-7cede1132797": {
      "ai_languageModel": [
        [
          {
            "node": "9b09d2ba-7669-4f64-8a77-ee5ff5280d72",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "5f241a19-c30a-4cc4-a2c0-7e9d97711c78": {
      "ai_languageModel": [
        [
          {
            "node": "e1d682f8-9723-4dd6-ad45-e8959a273d32",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "b5d472bf-4acf-4e86-aeb7-5d1604ded5ff": {
      "main": [
        [
          {
            "node": "9b09d2ba-7669-4f64-8a77-ee5ff5280d72",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

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

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

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

上級 - 人事, AI要約

有料ですか?

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

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

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

作成者
Dr. Firas

Dr. Firas

@drfiras

Automation expert and certified trainer. I create hands-on courses to master automation with n8n. Contact me to access my exclusive training and start building powerful workflows today. 🚀

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34