8
n8n 中文网amn8n.com

基于Thordata Universal API + OpenAI GPT-4.1-mini的非结构化简历解析器

中级

这是一个HR, AI Summarization领域的自动化工作流,包含 15 个节点。主要使用 Set, Function, Markdown, HttpRequest, GoogleSheets 等节点。 基于Thordata Universal API + OpenAI GPT-4.1-mini的非结构化简历解析器

前置要求
  • 可能需要目标 API 的认证凭证
  • Google Sheets API 凭证
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "KZfuTnflUHXV4drQ",
  "meta": {
    "instanceId": "885b4fb4a6a9c2cb5621429a7b972df0d05bb724c20ac7dac7171b62f1c7ef40",
    "templateCredsSetupCompleted": true
  },
  "name": "使用 Thordata Universal API + Open AI gpt-4.1-mini 的非结构化简历解析器",
  "tags": [
    {
      "id": "Kujft2FOjmOVQAmJ",
      "name": "Engineering",
      "createdAt": "2025-04-09T01:31:00.558Z",
      "updatedAt": "2025-04-09T01:31:00.558Z"
    },
    {
      "id": "ZOwtAMLepQaGW76t",
      "name": "Building Blocks",
      "createdAt": "2025-04-13T15:23:40.462Z",
      "updatedAt": "2025-04-13T15:23:40.462Z"
    },
    {
      "id": "ddPkw7Hg5dZhQu2w",
      "name": "AI",
      "createdAt": "2025-04-13T05:38:08.053Z",
      "updatedAt": "2025-04-13T05:38:08.053Z"
    },
    {
      "id": "rKOa98eAi3IETrLu",
      "name": "HR",
      "createdAt": "2025-04-13T04:59:30.580Z",
      "updatedAt": "2025-04-13T04:59:30.580Z"
    }
  ],
  "nodes": [
    {
      "id": "d11672dd-5801-4196-aecd-91463329f1af",
      "name": "点击\"执行工作流\"时",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -896,
        -48
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "f4a7fc09-6f0c-4470-a9a6-7021605825de",
      "name": "设置输入字段",
      "type": "n8n-nodes-base.set",
      "position": [
        -688,
        -48
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "175a52cb-6b2e-480b-b74f-1cbc319bea78",
              "name": "resume_url",
              "type": "string",
              "value": "https://registry.jsonresume.org/thomasdavis?theme=elegant"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "058c120c-48f3-4c7f-b486-c49b026ea632",
      "name": "执行 Thordata Universal API 请求",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -400,
        -48
      ],
      "parameters": {
        "url": "https://universalapi.thordata.com/request",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "url",
              "value": "={{ $json.resume_url }}"
            },
            {
              "name": "type",
              "value": "html"
            },
            {
              "name": "js_render",
              "value": "False"
            },
            {
              "name": "country",
              "value": "in"
            },
            {
              "name": "clean_content",
              "value": "css,js"
            }
          ]
        },
        "genericAuthType": "httpBearerAuth",
        "headerParameters": {
          "parameters": [
            {}
          ]
        }
      },
      "credentials": {
        "httpBearerAuth": {
          "id": "Sl1MQcpMpwJOFNbB",
          "name": "Thordata Universal API Token"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "17cc1967-f926-4d5e-b2a2-3b832428cfa3",
      "name": "JSON 简历构建器",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        96,
        -48
      ],
      "parameters": {
        "text": "=Analyze and Parse the provided resume in JSON Resume format.\n\n {{ $json.markdown }}",
        "options": {},
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"id\": { \"type\": \"string\" },\n    \"basics\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"name\": { \"type\": \"string\" },\n        \"label\": { \"type\": \"string\" },\n        \"image\": { \"type\": \"string\" },\n        \"email\": { \"type\": \"string\" },\n        \"phone\": { \"type\": \"string\" },\n        \"url\": { \"type\": \"string\" },\n        \"summary\": { \"type\": \"string\" },\n        \"location\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"city\": { \"type\": \"string\" },\n            \"region\": { \"type\": \"string\" },\n            \"country\": { \"type\": \"string\" }\n          }\n        },\n        \"profiles\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"network\": { \"type\": \"string\" },\n              \"username\": { \"type\": \"string\" },\n              \"url\": { \"type\": \"string\" }\n            }\n          }\n        }\n      }\n    },\n    \"work\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"name\": { \"type\": \"string\" },\n          \"position\": { \"type\": \"string\" },\n          \"startDate\": { \"type\": \"string\" },\n          \"endDate\": { \"type\": \"string\" },\n          \"summary\": { \"type\": \"string\" },\n          \"highlights\": {\n            \"type\": \"array\",\n            \"items\": { \"type\": \"string\" }\n          }\n        }\n      }\n    },\n    \"education\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"institution\": { \"type\": \"string\" },\n          \"area\": { \"type\": \"string\" },\n          \"studyType\": { \"type\": \"string\" },\n          \"startDate\": { \"type\": \"string\" },\n          \"endDate\": { \"type\": \"string\" },\n          \"gpa\": { \"type\": \"string\" }\n        }\n      }\n    },\n    \"skills\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"name\": { \"type\": \"string\" },\n          \"level\": { \"type\": \"string\" },\n          \"keywords\": {\n            \"type\": \"array\",\n            \"items\": { \"type\": \"string\" }\n          }\n        }\n      }\n    },\n    \"projects\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"name\": { \"type\": \"string\" },\n          \"description\": { \"type\": \"string\" },\n          \"url\": { \"type\": \"string\" },\n          \"technologies\": {\n            \"type\": \"array\",\n            \"items\": { \"type\": \"string\" }\n          }\n        }\n      }\n    },\n    \"certifications\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"name\": { \"type\": \"string\" },\n          \"issuer\": { \"type\": \"string\" },\n          \"date\": { \"type\": \"string\" },\n          \"url\": { \"type\": \"string\" }\n        }\n      }\n    },\n    \"languages\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"language\": { \"type\": \"string\" },\n          \"fluency\": { \"type\": \"string\" }\n        }\n      }\n    },\n    \"interests\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"name\": { \"type\": \"string\" },\n          \"keywords\": {\n            \"type\": \"array\",\n            \"items\": { \"type\": \"string\" }\n          }\n        }\n      }\n    },\n    \"meta\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"lastModified\": { \"type\": \"string\" },\n        \"version\": { \"type\": \"string\" }\n      }\n    }\n  }\n}\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "3411f8ee-2cd6-40d9-a7e0-bc78ba07803d",
      "name": "将 HTML 转换为 Markdown 格式",
      "type": "n8n-nodes-base.markdown",
      "position": [
        -112,
        -48
      ],
      "parameters": {
        "html": "={{ $json.html }}",
        "options": {},
        "destinationKey": "markdown"
      },
      "typeVersion": 1
    },
    {
      "id": "503b332e-72c2-4e6a-8026-32be9ea84aa1",
      "name": "用于简历构建器的 OpenAI 聊天模型",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        96,
        144
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "vPKynKbDzJ5ZU4cU",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "7bb68b59-496a-4d27-abad-98e2f3e7f9b5",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -896,
        -272
      ],
      "parameters": {
        "color": 7,
        "width": 160,
        "content": "![Logo](https://consumersiteimages.trustpilot.net/business-units/67b212598525b99cf90a59cc-198x149-1x.jpg)"
      },
      "typeVersion": 1
    },
    {
      "id": "44d3a647-e9a6-4df5-9323-6c73e213698f",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1072,
        240
      ],
      "parameters": {
        "color": 7,
        "width": 528,
        "height": 192,
        "content": "## 目的"
      },
      "typeVersion": 1
    },
    {
      "id": "c5699247-25fb-4cd7-a499-448e39a74666",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        240
      ],
      "parameters": {
        "color": 7,
        "width": 528,
        "height": 704,
        "content": "## 流程概览"
      },
      "typeVersion": 1
    },
    {
      "id": "b2c386d3-7273-4d4b-9f54-57a37d7a1be1",
      "name": "创建二进制响应",
      "type": "n8n-nodes-base.function",
      "position": [
        512,
        -208
      ],
      "parameters": {
        "functionCode": "\n\nitems[0].binary = {\n  data: {\n    data: new Buffer(JSON.stringify(items[0].json, null, 2)).toString('base64')\n  }\n};\nreturn items;"
      },
      "typeVersion": 1
    },
    {
      "id": "ba8a6b86-1f67-4e2b-8e0b-d15c472014dd",
      "name": "在表格中追加或更新行",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        528,
        48
      ],
      "parameters": {
        "columns": {
          "value": {
            "json_resume": "={{ $json.output.toJsonString() }}"
          },
          "schema": [
            {
              "id": "json_resume",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "json_resume",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "json_resume"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1CCj7PRT93hmTfkrDXSw6vwmz5UGZED4vA5l7LCNIAhk/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1CCj7PRT93hmTfkrDXSw6vwmz5UGZED4vA5l7LCNIAhk",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1CCj7PRT93hmTfkrDXSw6vwmz5UGZED4vA5l7LCNIAhk/edit?usp=drivesdk",
          "cachedResultName": "Resume Parser"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "Zjoxh2BUZ6VXGQhA",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "4e8e9db6-6563-4978-a10b-2aeca99986ee",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        -320
      ],
      "parameters": {
        "color": 3,
        "width": 480,
        "height": 608,
        "content": "## 导出数据处理"
      },
      "typeVersion": 1
    },
    {
      "id": "4e763ad5-b280-4775-8f9c-641045e531b0",
      "name": "便签4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        48,
        -240
      ],
      "parameters": {
        "color": 4,
        "width": 336,
        "height": 528,
        "content": "## 结构化简历解析器"
      },
      "typeVersion": 1
    },
    {
      "id": "711338ef-1a0c-4c8b-b3bd-d0d3df5416fb",
      "name": "便签5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -512,
        -224
      ],
      "parameters": {
        "color": 6,
        "width": 336,
        "height": 384,
        "content": "## Thordata Universal API"
      },
      "typeVersion": 1
    },
    {
      "id": "f776447a-71e0-453d-82d1-7b5382080847",
      "name": "将结构化 JSON 简历写入磁盘",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        688,
        -208
      ],
      "parameters": {
        "options": {},
        "fileName": "=C:\\\\{{ $json.output.basics.name }}.json",
        "operation": "write"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "33c136a8-b355-4aea-a191-5672a7f37ca0",
  "connections": {
    "JSON Resume Builder": {
      "main": [
        [
          {
            "node": "Create a Binary Response",
            "type": "main",
            "index": 0
          },
          {
            "node": "Append or update row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set the Input Fields": {
      "main": [
        [
          {
            "node": "Perform Thordata Universal API Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a Binary Response": {
      "main": [
        [
          {
            "node": "Write the Structured JSON resume to Disk",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert HTML to Markdown format": {
      "main": [
        [
          {
            "node": "JSON Resume Builder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model for Resume Builder": {
      "ai_languageModel": [
        [
          {
            "node": "JSON Resume Builder",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Execute workflow’": {
      "main": [
        [
          {
            "node": "Set the Input Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Perform Thordata Universal API Request": {
      "main": [
        [
          {
            "node": "Convert HTML to Markdown format",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

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

需要付费吗?

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

工作流信息
难度等级
中级
节点数量15
分类2
节点类型10
难度说明

适合有一定经验的用户,包含 6-15 个节点的中等复杂度工作流

作者
Ranjan Dailata

Ranjan Dailata

@ranjancse

A Professional based out of India specialized in handling AI-powered automations. Contact me at ranjancse@gmail.com

外部链接
在 n8n.io 查看

分享此工作流