8
n8n 中文网amn8n.com

人力资源筛选系统社区1

高级

这是一个HR, AI Summarization领域的自动化工作流,包含 19 个节点。主要使用 Merge, FormTrigger, GoogleDrive, GoogleSheets, ExtractFromFile 等节点。 简历筛选与评估系统,使用Gemini AI、Google Sheets和Drive,面向人力资源

前置要求
  • Google Drive API 凭证
  • Google Sheets API 凭证
  • Google Gemini API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "bKy4ngwZ5svUgPH6",
  "meta": {
    "instanceId": "0bb95f247e6cda467b7bfa0ecb34ff52cee89ad78f51d5982d5e97b8ca9b00d0"
  },
  "name": "人力资源筛选系统社区1",
  "tags": [],
  "nodes": [
    {
      "id": "244d87cc-877a-4080-bb9b-6ea44aa76540",
      "name": "表单提交时",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -620,
        500
      ],
      "webhookId": "c0f02df1-9bf8-468f-a33d-e67655bfa920",
      "parameters": {
        "options": {
          "customCss": ":root {\n\t--font-family: 'Open Sans', sans-serif;\n\t--font-weight-normal: 400;\n\t--font-weight-bold: 600;\n\t--font-size-body: 12px;\n\t--font-size-label: 14px;\n\t--font-size-test-notice: 12px;\n\t--font-size-input: 14px;\n\t--font-size-header: 20px;\n\t--font-size-paragraph: 14px;\n\t--font-size-link: 12px;\n\t--font-size-error: 12px;\n\t--font-size-html-h1: 28px;\n\t--font-size-html-h2: 20px;\n\t--font-size-html-h3: 16px;\n\t--font-size-html-h4: 14px;\n\t--font-size-html-h5: 12px;\n\t--font-size-html-h6: 10px;\n\t--font-size-subheader: 14px;\n\n\t/* Colors */\n\t--color-background: #fbfcfe;\n\t--color-test-notice-text: #e6a23d;\n\t--color-test-notice-bg: #fefaf6;\n\t--color-test-notice-border: #f6dcb7;\n\t--color-card-bg: #ffffff;\n\t--color-card-border: #dbdfe7;\n\t--color-card-shadow: rgba(99, 77, 255, 0.06);\n\t--color-link: #7e8186;\n\t--color-header: #525356;\n\t--color-label: #555555;\n\t--color-input-border: #dbdfe7;\n\t--color-input-text: #71747A;\n\t--color-focus-border: rgb(90, 76, 194);\n\t--color-submit-btn-bg: #0000FF; /* Changed to blue */\n\t--color-submit-btn-text: #ffffff;\n\t--color-error: #ea1f30;\n\t--color-required: #ff6d5a;\n\t--color-clear-button-bg: #7e8186;\n\t--color-html-text: #555;\n\t--color-html-link: #ff6d5a;\n\t--color-header-subtext: #7e8186;\n\n\t/* Border Radii */\n\t--border-radius-card: 8px;\n\t--border-radius-input: 6px;\n\t--border-radius-clear-btn: 50%;\n\t--card-border-radius: 8px;\n\n\t/* Spacing */\n\t--padding-container-top: 24px;\n\t--padding-card: 24px;\n\t--padding-test-notice-vertical: 12px;\n\t--padding-test-notice-horizontal: 24px;\n\t--margin-bottom-card: 16px;\n\t--padding-form-input: 12px;\n\t--card-padding: 24px;\n\t--card-margin-bottom: 16px;\n\n\t/* Dimensions */\n\t--container-width: 448px;\n\t--submit-btn-height: 48px;\n\t--checkbox-size: 18px;\n\n\t/* Others */\n\t--box-shadow-card: 0px 4px 16px 0px var(--color-card-shadow);\n\t--opacity-placeholder: 0.5;\n}\n",
          "appendAttribution": false
        },
        "formTitle": "Candidate Form",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Name",
              "placeholder": "Name",
              "requiredField": true
            },
            {
              "fieldType": "email",
              "fieldLabel": "Email",
              "placeholder": "Email",
              "requiredField": true
            },
            {
              "fieldType": "file",
              "fieldLabel": "CV",
              "requiredField": true,
              "acceptFileTypes": ".pdf"
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Job Role",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Sales"
                  },
                  {
                    "option": "Security"
                  },
                  {
                    "option": "Operations"
                  },
                  {
                    "option": "Reception"
                  }
                ]
              }
            }
          ]
        },
        "formDescription": "Please ,fill the required fields , and we'll get in touch with you soon !"
      },
      "typeVersion": 2.2
    },
    {
      "id": "edc0fdf1-9595-43d1-a850-a976d42c7dc1",
      "name": "从文件提取",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        400,
        520
      ],
      "parameters": {
        "options": {},
        "operation": "pdf",
        "binaryPropertyName": "=CV"
      },
      "typeVersion": 1
    },
    {
      "id": "2c5c7f0b-d472-4748-9dbe-a0888e94e36c",
      "name": "任职资格",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        720,
        580
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "systemPromptTemplate": "You are an expert extraction algorithm.\nOnly extract relevant information from the text.\nIf you do not know the value of an attribute asked to extract, you may omit the attribute's value."
        },
        "attributes": {
          "attributes": [
            {
              "name": "Educational qualification",
              "required": true,
              "description": "Summary of your academic career. Focus on your high school and university studies. Summarize in 100 words maximum and also include your grade if applicable."
            },
            {
              "name": "Job History",
              "required": true,
              "description": "Work history summary. Focus on your most recent work experiences. Summarize in 100 words maximum"
            },
            {
              "name": "Skills",
              "required": true,
              "description": "Extract the candidate’s technical skills. What software and frameworks they are proficient in. Make a bulleted list."
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0644fc1c-afab-48f9-a148-cab763722adf",
      "name": "摘要链",
      "type": "@n8n/n8n-nodes-langchain.chainSummarization",
      "position": [
        1460,
        460
      ],
      "parameters": {
        "options": {
          "summarizationMethodAndPrompts": {
            "values": {
              "prompt": "=Write a concise summary of the following:\n\nCity: {{ $json.output.city }}\nBirthdate: {{ $json.output.birthdate }}\nEducational qualification: {{ $json.output[\"Educational qualification\"] }}\nJob History: {{ $json.output[\"Job History\"] }}\nSkills: {{ $json.output.Skills }}\n\nUse 100 words or less. Be concise and conversational.",
              "combineMapPrompt": "=Write a concise summary of the following:\n\nCity: {{ $json.output.city }}\nBirthdate: {{ $json.output.birthdate }}\nEducational qualification: {{ $json.output[\"Educational qualification\"] }}\nJob History: {{ $json.output[\"Job History\"] }}\nSkills: {{ $json.output.Skills }}\n\nUse 100 words or less. Be concise and conversational."
            }
          }
        }
      },
      "typeVersion": 2
    },
    {
      "id": "2a8b8d74-cdab-412b-9898-e8edf7d648fc",
      "name": "合并",
      "type": "n8n-nodes-base.merge",
      "position": [
        1220,
        460
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3
    },
    {
      "id": "d6d971c1-214e-4884-a6a2-f05aa2a50b5d",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2520,
        460
      ],
      "parameters": {
        "columns": {
          "value": {
            "CITY": "={{ $('Merge').item.json.output.city }}",
            "DATA": "={{ $now.format('dd/LL/yyyy') }}",
            "NAME": "={{ $('On form submission').item.json.Name }}",
            "VOTE": "={{ $json.output.vote }}",
            "EMAIL": "={{ $('On form submission').item.json.Email }}",
            "PHONE": "={{ String($('Personal Data').item.json.output.telephone).replace(/^\\+/, '') }}",
            "SKILLS": "={{ $('Merge').item.json.output.Skills }}",
            "SUMMARIZE": "={{ $('Summarization Chain').item.json.response.text }}",
            "EDUCATIONAL": "={{ $('Merge').item.json.output[\"Educational qualification\"] }}",
            "JOB HISTORY": "={{ $('Merge').item.json.output[\"Job History\"] }}",
            "CONSIDERATION": "={{ $json.output.consideration }}"
          },
          "schema": [
            {
              "id": "DATA",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "DATA",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "NAME",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "NAME",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "PHONE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "PHONE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "CITY",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "CITY",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "EMAIL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "EMAIL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Birthdate",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Birthdate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "EDUCATIONAL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "EDUCATIONAL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "JOB HISTORY",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "JOB HISTORY",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "SKILLS",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "SKILLS",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "SUMMARIZE",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "SUMMARIZE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "VOTE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "VOTE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "CONSIDERATION",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "CONSIDERATION",
              "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/1DCROl-KxvbYKgN5porB7gcvvwhTkie7MckVxPMvE7lI/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1DCROl-KxvbYKgN5porB7gcvvwhTkie7MckVxPMvE7lI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DCROl-KxvbYKgN5porB7gcvvwhTkie7MckVxPMvE7lI/edit?usp=drivesdk",
          "cachedResultName": "recommended candidates"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "VZfUluT9AxDUBYoj",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "bbb1a5cf-dea8-4ede-a14a-12791b79e446",
      "name": "结构化输出解析器",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2280,
        660
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"vote\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"consideration\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t}\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "b30b9cbd-bffd-4a5b-8185-3334b9b2b8ad",
      "name": "人力资源专家",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        2120,
        460
      ],
      "parameters": {
        "text": "=Profilo ricercato:\n{{ $node[\"Merge2\"].json[\"Profile Wanted\"] }}\n\nCandidato:\n{{ $node[\"Summarization Chain\"].json[\"response\"][\"text\"] }}\n\n\nCandidato:\n{{ $node[\"Summarization Chain\"].json[\"response\"][\"text\"] }}\n",
        "messages": {
          "messageValues": [
            {
              "message": "You are an HR expert and need to assess if the candidate aligns with the profile the company is looking for. You must give a score from 1 to 10, where 1 means the candidate is not at all aligned with the requirements, while 10 means they are the ideal candidate because they perfectly match the desired profile. Additionally, in the \"consideration\" field, explain why you gave that score"
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.5
    },
    {
      "id": "371c75df-2b06-46d1-8eb9-f48f445c0309",
      "name": "个人资料",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        720,
        400
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "systemPromptTemplate": "You are an expert extraction algorithm.\nOnly extract relevant information from the text.\nIf you do not know the value of an attribute asked to extract, you may omit the attribute's value."
        },
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"telephone\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n      \"city\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n      \"birthdate\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t}\n}"
      },
      "typeVersion": 1
    },
    {
      "id": "d014e9a0-47c0-4106-8588-a240f2faaf2e",
      "name": "上传简历",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        400,
        300
      ],
      "parameters": {
        "name": "=cv-{{ $json.CV[0].filename }}",
        "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": "1tf7DWFzqiIi9atCwfUF5w-RLWuQU6YFp",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1tf7DWFzqiIi9atCwfUF5w-RLWuQU6YFp",
          "cachedResultName": "work cvs"
        },
        "inputDataFieldName": "CV"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "BalOwu4CX19qYvL4",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "d729d9ce-0142-4b3e-a454-bb8bc232b8a9",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1560,
        -220
      ],
      "parameters": {
        "color": 3,
        "width": 540,
        "height": 920,
        "content": "🎯 AI简历筛选器 – 基于表单的人力资源自动化"
      },
      "typeVersion": 1
    },
    {
      "id": "46d85862-de79-4a46-9b59-f27194375af4",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        320,
        220
      ],
      "parameters": {
        "width": 300,
        "height": 420,
        "content": "简历上传至Google Drive并转换格式以便处理"
      },
      "typeVersion": 1
    },
    {
      "id": "3e186724-8169-4a7a-aed9-bdf2fb7ebc9e",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        680,
        300
      ],
      "parameters": {
        "width": 360,
        "height": 440,
        "content": "通过两个不同的链收集评估候选人的关键信息"
      },
      "typeVersion": 1
    },
    {
      "id": "02638fbd-d3fc-436d-a9f5-74db14865b9f",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1420,
        380
      ],
      "parameters": {
        "width": 320,
        "height": 240,
        "content": "用于分类候选人的相关信息摘要"
      },
      "typeVersion": 1
    },
    {
      "id": "43b67334-ccca-41db-bc7c-7e0213df635a",
      "name": "便签说明4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1800,
        380
      ],
      "parameters": {
        "width": 220,
        "height": 240,
        "content": "公司拟招聘候选人所寻求的档案特征"
      },
      "typeVersion": 1
    },
    {
      "id": "aa6b6b3f-58ca-4c07-8265-85e3f3278842",
      "name": "便签说明5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2060,
        380
      ],
      "parameters": {
        "width": 360,
        "height": 240,
        "content": "结合所寻档案与候选人技能的人力资源专员评估意见及评分"
      },
      "typeVersion": 1
    },
    {
      "id": "9868642e-b8ee-4a7b-b6b8-55622159d8d8",
      "name": "Google Gemini 聊天模型",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1460,
        880
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.5-flash-preview-05-20"
      },
      "credentials": {
        "googlePalmApi": {
          "id": "gKoqNwYHaqu5v6po",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f27eb081-8fe1-4a8c-88ca-1747047bf3f2",
      "name": "职位角色",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1560,
        1020
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "={{ $('On form submission').item.json['Job Role'] }}",
              "lookupColumn": "Role"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1PjQranztEMv18bh2U8-i82OREoqt1R2nGN92TO8j54o/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1PjQranztEMv18bh2U8-i82OREoqt1R2nGN92TO8j54o",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1PjQranztEMv18bh2U8-i82OREoqt1R2nGN92TO8j54o/edit?usp=drivesdk",
          "cachedResultName": "JobProfiles"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "VZfUluT9AxDUBYoj",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "42168ba0-8c2f-43d0-a92a-76defc2a0175",
      "name": "合并2",
      "type": "n8n-nodes-base.merge",
      "position": [
        1900,
        460
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3.1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {},
  "versionId": "fcbe124a-d65f-40be-a1ca-376d9538f015",
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Summarization Chain",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge2": {
      "main": [
        [
          {
            "node": "HR Expert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HR Expert": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "job roles": {
      "main": [
        [
          {
            "node": "Merge2",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Personal Data": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Qualifications": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Extract from File": {
      "main": [
        [
          {
            "node": "Qualifications",
            "type": "main",
            "index": 0
          },
          {
            "node": "Personal Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "job roles",
            "type": "main",
            "index": 0
          },
          {
            "node": "Upload CV",
            "type": "main",
            "index": 0
          },
          {
            "node": "Extract from File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Summarization Chain": {
      "main": [
        [
          {
            "node": "Merge2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Summarization Chain",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Qualifications",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Personal Data",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "HR Expert",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "HR Expert",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

高级 - 人力资源, AI 摘要总结

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量19
分类2
节点类型11
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

作者
Tharwat Mohamed

Tharwat Mohamed

@tharwatelsayed

I'm a system engineer , who's facinated by ai and automation , I like building systems and agents

外部链接
在 n8n.io 查看

分享此工作流