8
n8n 中文网amn8n.com

简历结构化候选人数据提取(GPT AI)

高级

这是一个HR, AI Summarization领域的自动化工作流,包含 20 个节点。主要使用 Set, Switch, Aggregate, GoogleSheets, Agent 等节点。 使用GPT AI从简历中提取结构化候选人数据

前置要求
  • Google Sheets API 凭证
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "meta": {
    "instanceId": "cb484ba7b742928a2048bf8829668bed5b5ad9787579adea888f05980292a4a7",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "98df1ef4-b57a-43a6-a928-d765559f747c",
      "name": "当收到聊天消息时",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -100,
        1140
      ],
      "webhookId": "592787f5-230a-4e76-960c-6277f9faa9c8",
      "parameters": {
        "options": {
          "allowFileUploads": true
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "94e30376-80da-497e-830f-21dae01580f5",
      "name": "切换",
      "type": "n8n-nodes-base.switch",
      "position": [
        120,
        1014
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "CSV",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "fcf85095-1221-4490-9d30-e10d7c3b686c",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.files[0].fileName.toLowerCase() }}",
                    "rightValue": ".csv"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "HTML",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "58e60d14-1beb-47b8-8789-6cee2b2bb224",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.files[0].fileName.toLowerCase() }}",
                    "rightValue": ".html"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "ODS",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "afce5705-212f-4e56-ac34-8b99e15a0806",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.files[0].fileName.toLowerCase() }}",
                    "rightValue": ".ods"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "PDF",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "bb223b8a-826c-488b-9eb7-b1b50a6aef7f",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.files[0].fileName.toLowerCase() }}",
                    "rightValue": ".pdf"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "RTF",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "29d5bf9a-69fb-4e01-8ea9-2ca7c8b3fc9c",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.files[0].fileName.toLowerCase() }}",
                    "rightValue": ".rtf"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "TXT",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "d2e22acb-adbb-43d9-8a18-70851be20ea5",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.files[0].fileName.toLowerCase() }}",
                    "rightValue": ".txt"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "XML",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "257adc56-8632-4671-9237-4e233b95e3fe",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.files[0].fileName.toLowerCase() }}",
                    "rightValue": ".xml"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "XLS",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "d4673034-eaca-4f4c-9c37-104ffe0bb170",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.files[0].fileName.toLowerCase() }}",
                    "rightValue": ".xls"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra"
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "e16c87a4-86d0-4878-96bb-a0228ca621b0",
      "name": "编辑字段",
      "type": "n8n-nodes-base.set",
      "position": [
        780,
        1040
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "70ba1c39-f90f-44ac-9fdc-9a8a8d188484",
              "name": "text",
              "type": "string",
              "value": "={{ $json.text }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "b752e83e-3052-43d1-9418-4d433e351614",
      "name": "AI Agent1",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1000,
        1040
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "systemMessage": "You are a helpful assistant that extracts email, name, skills, and education from resume text. "
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "0944cce4-d5b7-4e48-a466-1aa8f3b76e26",
      "name": "OpenAI 聊天模型1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1028,
        1260
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "QpFZ2EiM3WGl6Zr3",
          "name": "Marketing OpenAI"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "58a42607-b1b4-43e0-884f-5a13e706edf8",
      "name": "多表:您可以连接多个表以实现有组织的数据结构",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1148,
        1260
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"name\": \"Angel Menendez\",\n  \"email\": \"angel.menendez@example.com\",\n  \"skills\": \"JavaScript, Node.js, n8n, Docker, REST APIs\",\n  \"education\": \"B.S. in Computer Science, University of Arizona, 2010\"\n}\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "42d5ebda-7d49-40ef-8c44-2fa57ec68f3e",
      "name": "验证输出",
      "type": "n8n-nodes-base.set",
      "onError": "continueErrorOutput",
      "position": [
        1376,
        1040
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "4a062055-7dde-447e-ada1-0032f46af02a",
              "name": "output.name",
              "type": "string",
              "value": "={{ $json.output.name }}"
            },
            {
              "id": "bf28519f-f8e3-4b26-bee4-7758340df194",
              "name": "output.email",
              "type": "string",
              "value": "={{ $json.output.email }}"
            },
            {
              "id": "24975388-f25a-4c86-a995-9ec2cf819c13",
              "name": "output.skills",
              "type": "string",
              "value": "={{ $json.output.skills }}"
            },
            {
              "id": "c410f2d2-00e1-499b-9346-553164881465",
              "name": "output.education",
              "type": "string",
              "value": "={{ $json.output.education }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1235bbab-c227-4054-b8ce-007f39a805f5",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "disabled": true,
      "position": [
        1596,
        940
      ],
      "parameters": {
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "4ZBfVX71VUd6pRy3",
          "name": "Google Sheets Angel Access"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "bc4ca090-6c51-49e8-989a-147a6e720411",
      "name": "编辑字段 1",
      "type": "n8n-nodes-base.set",
      "position": [
        1596,
        1140
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "3fb8fe8f-a5f5-4c00-a8d2-39cd3e35615e",
              "name": "output",
              "type": "string",
              "value": "Unable to parse the agent outputs"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "7b0211f3-1925-4709-b274-e8d23437bb12",
      "name": "编辑字段2",
      "type": "n8n-nodes-base.set",
      "position": [
        340,
        1890
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "3fb8fe8f-a5f5-4c00-a8d2-39cd3e35615e",
              "name": "output",
              "type": "string",
              "value": "Unable to parse the file data"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8b178bfb-ff80-4600-b6e2-1fe252c11f45",
      "name": "编辑字段3",
      "type": "n8n-nodes-base.set",
      "position": [
        1816,
        940
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "3fb8fe8f-a5f5-4c00-a8d2-39cd3e35615e",
              "name": "output",
              "type": "string",
              "value": "=Name: {{ $json.output.name }}\nEmail: {{ $json.output.email }}\nSkills: {{ $json.output.skills }}\nEducation: {{ $json.output.education }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "5d4372fc-d63b-49d2-a2b6-70fd194ba550",
      "name": "从 CSV 提取",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        340,
        340
      ],
      "parameters": {
        "options": {},
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "2eb2d95e-5453-47ad-a548-dbeaa32e3dbb",
      "name": "从 HTML 提取",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        560,
        540
      ],
      "parameters": {
        "options": {},
        "operation": "html",
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "45c74d33-e46b-43ca-a71f-e16aa28910a2",
      "name": "从 ODS 提取",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        560,
        740
      ],
      "parameters": {
        "options": {},
        "operation": "ods",
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "a2bf9dbe-94d0-4432-b8cc-5db69451e013",
      "name": "从 PDF 提取",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        560,
        940
      ],
      "parameters": {
        "options": {},
        "operation": "pdf",
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "1bc7dbd2-1ce0-4244-8454-29eeb7b5fb64",
      "name": "从 RTF 提取",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        560,
        1140
      ],
      "parameters": {
        "options": {},
        "operation": "rtf",
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "279cc40d-373a-48e3-9f53-4498d0181302",
      "name": "从 TXT 提取",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        560,
        1340
      ],
      "parameters": {
        "options": {},
        "operation": "text",
        "destinationKey": "text",
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "7aa0c6f1-2630-4e0d-90e8-cd0d060327b2",
      "name": "从 XLS 提取",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        560,
        1740
      ],
      "parameters": {
        "options": {},
        "operation": "xls",
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "f65cf46c-3482-4757-a087-3f48cb19c30b",
      "name": "从 XML 提取",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        560,
        1540
      ],
      "parameters": {
        "options": {},
        "operation": "xml",
        "destinationKey": "text",
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "209e973c-a4ac-49bc-b977-90f2d1de487c",
      "name": "聚合",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        560,
        340
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData",
        "destinationFieldName": "text"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "Switch": {
      "main": [
        [
          {
            "node": "Extract from CSV",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Extract from HTML",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Extract from ODS",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Extract from PDF",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Extract from RTF",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Extract from TXT",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Extract from XML",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Extract from XLS",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Edit Fields2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent1": {
      "main": [
        [
          {
            "node": "Validate Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "AI Agent1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets": {
      "main": [
        [
          {
            "node": "Edit Fields3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate Output": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Edit Fields1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from CSV": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from ODS": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from PDF": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from RTF": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from TXT": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from XLS": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from XML": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from HTML": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent1",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

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

需要付费吗?

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

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

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

作者
Angel Menendez

Angel Menendez

@djangelic

Angel Menendez is a Staff Developer Advocate at n8n.io, specializing in low-code tools for cybersecurity workflows. From Puerto Rico, Angel's tech journey began by helping his father translate technical books. He later started a web development business and transitioned from a career as a flight attendant to cybersecurity engineering. His workflows have saved companies significant time. Outside work, Angel enjoys time with his two sons, riding electric bikes, reading, and exploring new places.

外部链接
在 n8n.io 查看

分享此工作流