💥 AI驱动的人力资源工作流:从Gmail到Sheets的简历分析与评估 - 视频

高级

这是一个HR、AI Summarization领域的自动化工作流,包含 18 个节点。主要使用 Switch、GmailTool、GoogleDrive、GmailTrigger、GoogleSheets 等节点。 使用GPT-4o-mini自动化简历筛选:从Gmail到Google Sheets的人力资源评估系统

前置要求
  • Google 账号和 Gmail API 凭证
  • Google Drive API 凭证
  • Google Sheets API 凭证
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "z7quMO0WgEu3Kkyv",
  "meta": {
    "instanceId": "a2b23892dd6989fda7c1209b381f5850373a7d2b85609624d7c2b7a092671d44",
    "templateCredsSetupCompleted": true
  },
  "name": "💥 AI驱动的人力资源工作流:从Gmail到Sheets的简历分析与评估 - 视频",
  "tags": [],
  "nodes": [
    {
      "id": "2ebf8f4d-1000-4c40-8d5f-e31fa0ada941",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2540,
        -240
      ],
      "parameters": {
        "width": 920,
        "height": 400,
        "content": "# 🟡 步骤1 — 检测并处理来自邮件的新简历"
      },
      "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": "# 🔴 步骤2 — 提取并存储候选人数据"
      },
      "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": "# 🟣 步骤3 — 评估并筛选候选人"
      },
      "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驱动的人力资源工作流:从Gmail到Sheets的简历分析与评估"
      },
      "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 Drive",
      "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 Sheets)",
      "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 Agent:评分简历",
      "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 Sheets",
      "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 Sheets",
      "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": {
    "Switch": {
      "main": [
        [
          {
            "node": "Save Resume to Google Drive",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Extract Resume Text (PDF)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Classify Email Type": {
      "main": [
        [
          {
            "node": "Skip (If not a job application)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent: Score Resume": {
      "main": [
        [
          {
            "node": "Save Score to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gmail: Watch for new CV": {
      "main": [
        [
          {
            "node": "Classify Email Type",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Confirmation Email": {
      "ai_tool": [
        [
          {
            "node": "AI Agent: Score Resume",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Save CV to Google Sheets": {
      "main": [
        []
      ]
    },
    "Extract Resume Text (PDF)": {
      "main": [
        [
          {
            "node": "Retrieve Job Offer Details (Google Sheets)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Resume to Google Drive": {
      "main": [
        [
          {
            "node": "Save CV to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Resume Evaluation Result": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent: Score Resume",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model – Resume Scoring": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent: Score Resume",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model – Email Classifier": {
      "ai_languageModel": [
        [
          {
            "node": "Classify Email Type",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Retrieve Job Offer Details (Google Sheets)": {
      "main": [
        [
          {
            "node": "AI Agent: Score Resume",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

这是一个高级难度的工作流,适用于HR、AI Summarization等场景。适合高级用户,包含 16+ 个节点的复杂工作流

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 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 上查看 →

分享此工作流