8
n8n 中文网amn8n.com

使用Bright Data和OpenAI 4o mini的自动化简历职位匹配引擎

高级

这是一个HR, AI领域的自动化工作流,包含 22 个节点。主要使用 Set, Function, SplitOut, McpClient, HttpRequest 等节点,结合人工智能技术实现智能自动化。 Bright Data MCP与OpenAI 4o mini的自动化简历职位匹配引擎

前置要求
  • 可能需要目标 API 的认证凭证
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "gIdIv8qN7zruqLbG",
  "meta": {
    "instanceId": "885b4fb4a6a9c2cb5621429a7b972df0d05bb724c20ac7dac7171b62f1c7ef40",
    "templateCredsSetupCompleted": true
  },
  "name": "使用 Bright Data 和 OpenAI 4o 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": "a75e1f8d-9dd4-4c87-b1ab-05c502b8cae7",
      "name": "遍历项目",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        736,
        115
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "92f0272d-dc5d-4424-9d96-cc2521e8a4ae",
      "name": "当点击“测试工作流”时",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -740,
        115
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "3820c9d3-be68-4a60-a810-943a9795bdbd",
      "name": "列出 Bright Data 的所有工具",
      "type": "n8n-nodes-mcp.mcpClient",
      "position": [
        -520,
        115
      ],
      "parameters": {},
      "credentials": {
        "mcpClientApi": {
          "id": "JtatFSfA2kkwctYa",
          "name": "MCP Client (STDIO) account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "83219c20-7341-4e42-8cae-cc2e1e8e9b8e",
      "name": "设置输入字段",
      "type": "n8n-nodes-base.set",
      "position": [
        -300,
        115
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "214e61a0-3587-453f-baf5-eac013990857",
              "name": "resume",
              "type": "string",
              "value": "I am Pechi, Senior Python Developer with 9+ years of experience."
            },
            {
              "id": "98c64f52-1564-4889-811d-39cac3951cc3",
              "name": "keywords",
              "type": "string",
              "value": "Python"
            },
            {
              "id": "34202143-4b07-4301-b5e9-767430952214",
              "name": "location",
              "type": "string",
              "value": "India"
            },
            {
              "id": "47d01515-302b-4a91-b9db-3af0033a56e1",
              "name": "job_search_base_url",
              "type": "string",
              "value": "https://www.linkedin.com/jobs/search/"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "40a70c2b-5dcc-44f7-8fde-9c28748181cd",
      "name": "用于职位提取的 Bright Data MCP 客户端",
      "type": "n8n-nodes-mcp.mcpClient",
      "notes": "Scrape a single webpage URL with advanced options for content extraction and get back the results in MarkDown language.",
      "position": [
        -80,
        115
      ],
      "parameters": {
        "toolName": "scrape_as_html",
        "operation": "executeTool",
        "toolParameters": "={\n   \"url\": \"{{ $json.job_search_base_url }}?keywords={{ $json.keywords }}&location={{ $json.location }}\"\n} "
      },
      "credentials": {
        "mcpClientApi": {
          "id": "JtatFSfA2kkwctYa",
          "name": "MCP Client (STDIO) account"
        }
      },
      "notesInFlow": true,
      "typeVersion": 1
    },
    {
      "id": "ff3193e5-cd22-40f4-8180-b76ad32055b3",
      "name": "分离输出",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        516,
        115
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "output"
      },
      "typeVersion": 1
    },
    {
      "id": "cd1fcbd8-acf3-4a91-8158-f664aaa839e7",
      "name": "循环内用于职位提取的 Bright Data MCP 客户端",
      "type": "n8n-nodes-mcp.mcpClient",
      "notes": "Scrape a single webpage URL with advanced options for content extraction and get back the results in MarkDown language.",
      "position": [
        956,
        -10
      ],
      "parameters": {
        "toolName": "scrape_as_html",
        "operation": "executeTool",
        "toolParameters": "={\n   \"url\": \"{{ $json.output }}\"\n} "
      },
      "credentials": {
        "mcpClientApi": {
          "id": "JtatFSfA2kkwctYa",
          "name": "MCP Client (STDIO) account"
        }
      },
      "notesInFlow": true,
      "typeVersion": 1
    },
    {
      "id": "d9f78a12-9eaa-4d9b-9e5c-5150d6e40e95",
      "name": "职位描述信息提取器",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        1176,
        -10
      ],
      "parameters": {
        "text": "=Extract the job description in a textual format\n\nHere's the content: {{ $json.result.content[0].text }}",
        "options": {},
        "attributes": {
          "attributes": [
            {
              "name": "job_description",
              "description": "Job Description"
            }
          ]
        }
      },
      "retryOnFail": true,
      "typeVersion": 1
    },
    {
      "id": "4636d7e9-8d13-4f57-95f9-936f6d8bbf1d",
      "name": "AI 职位匹配",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1552,
        -10
      ],
      "parameters": {
        "text": "=Hi, you are a helpful job matcher, you analyze the given resume and job description and providing a job matching skills and score in a JSON format.\n\nHere's the Resume:\n{{ $('Set the Input fields').item.json.resume }}\n\nHere's the Job Desc:\n\n{{ $json.output.job_description }}",
        "promptType": "define",
        "hasOutputParser": true
      },
      "retryOnFail": true,
      "typeVersion": 1.6
    },
    {
      "id": "51b5d9dd-b0c8-4aaf-b789-f96e94519b94",
      "name": "结构化输出解析器",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1720,
        200
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"job_match_analysis\": {\n    \"resume_summary\": \"Senior Python Developer with 9+ years of experience.\",\n    \"job_description_summary\": \"Seeking a developer with expertise in Sagemaker, Python, and LLM. The role involves client interaction, requirements understanding, design review, architecture validation, and team leadership.\",\n    \"skill_match\": [\n      {\n        \"skill\": \"python\",\n        \"resume\": \"Strong match - explicitly mentioned as core skill.\",\n        \"job_description\": \"Strong match - listed as a primary skill.\",\n        \"score\": 100\n      },\n      {\n        \"skill\": \"sagemaker\",\n        \"resume\": \"No match - not mentioned in the resume.\",\n        \"job_description\": \"Strong match - listed as a primary skill.\",\n        \"score\": 0\n      },\n      {\n        \"skill\": \"llm\",\n        \"resume\": \"No match - not mentioned in the resume.\",\n        \"job_description\": \"Strong match - listed as a primary skill.\",\n        \"score\": 0\n      },\n      {\n        \"skill\": \"leadership\",\n        \"resume\": \"Implicit match - Senior role implies leadership experience.\",\n        \"job_description\": \"Explicit match - requires leading and guiding teams.\",\n        \"score\": 75\n      },\n      {\n        \"skill\": \"client_interaction\",\n        \"resume\": \"No explicit mention, inferred from senior role.\",\n        \"job_description\": \"Explicit match - requires interfacing with clients.\",\n        \"score\": 50\n      }\n    ],\n    \"overall_match_score\": 45,\n    \"rationale\": \"The candidate's core skill (Python) is a strong match. The resume implies leadership skills, aligning with the job's team leadership requirements. However, the absence of Sagemaker and LLM experience significantly lowers the overall score. The candidate needs to demonstrate experience in these areas for a higher match.\",\n    \"recommendations\": [\n      \"Highlight any experience (even if limited) with Sagemaker or LLMs in the resume.\",\n      \"Quantify Python experience with specific projects and technologies used.\",\n      \"Emphasize any client-facing experience or responsibilities in previous roles.\",\n      \"Showcase leadership experience with specific examples (e.g., mentoring junior developers, leading project teams).\"\n    ]\n  }\n}\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "1dcb1ca7-e4e9-4775-9eb8-94c9e1f89e64",
      "name": "为 AI 职位匹配创建二进制数据",
      "type": "n8n-nodes-base.function",
      "position": [
        1928,
        -60
      ],
      "parameters": {
        "functionCode": "items[0].binary = {\n  data: {\n    data: new Buffer(JSON.stringify(items[0].json, null, 2)).toString('base64')\n  }\n};\nreturn items;"
      },
      "typeVersion": 1
    },
    {
      "id": "da19ddc2-5e0f-4a4a-b524-1086b59c511f",
      "name": "AI 职位匹配的 Webhook 通知",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1928,
        215
      ],
      "parameters": {
        "url": "https://webhook.site/7b5380a0-0544-48dc-be43-0116cb2d52c2",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "job_match_response",
              "value": "={{ $json.output.job_match_analysis.toJsonString() }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "0561839e-9ca9-4c18-9a9e-98b9a1f796fc",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        -320
      ],
      "parameters": {
        "width": 440,
        "height": 120,
        "content": "## 免责声明"
      },
      "typeVersion": 1
    },
    {
      "id": "d68fd51a-d74f-4236-89e1-6144f9e80943",
      "name": "便签4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -300,
        -140
      ],
      "parameters": {
        "color": 5,
        "width": 440,
        "height": 220,
        "content": "## LLM 使用情况"
      },
      "typeVersion": 1
    },
    {
      "id": "29342cc1-10dd-490c-b274-fd5a82dbae1e",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        -160
      ],
      "parameters": {
        "color": 3,
        "width": 1660,
        "height": 620,
        "content": "## 通过职位列表进行 Bright Data MCP 职位提取"
      },
      "typeVersion": 1
    },
    {
      "id": "25d7b451-0f5e-4694-a821-ea7fe93b7d6f",
      "name": "便利贴5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -740,
        -700
      ],
      "parameters": {
        "color": 7,
        "width": 400,
        "height": 400,
        "content": "## 徽标"
      },
      "typeVersion": 1
    },
    {
      "id": "02e69f64-f7b4-4a0d-828c-3fcea324268e",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -740,
        -240
      ],
      "parameters": {
        "width": 400,
        "height": 320,
        "content": "## 注意"
      },
      "typeVersion": 1
    },
    {
      "id": "cb84eebb-4215-4bb3-91f6-bf7897a8ddf6",
      "name": "用于职位描述提取的 OpenAI 聊天模型",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1264,
        210
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "vPKynKbDzJ5ZU4cU",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "4d14c3a1-5402-4f27-beda-dba41c1aa912",
      "name": "用于 AI 职位匹配的 OpenAI 聊天模型",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1560,
        200
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "vPKynKbDzJ5ZU4cU",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "2aec37e7-a67b-47b1-b3b2-7ea7e114bfff",
      "name": "将 AI 职位匹配响应写入磁盘",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        2148,
        -60
      ],
      "parameters": {
        "options": {},
        "fileName": "=d:\\Job-Match-{{$now.toSeconds()}}.json",
        "operation": "write"
      },
      "typeVersion": 1
    },
    {
      "id": "af980102-85d0-4f90-842f-196605f6bcd6",
      "name": "分页职位数据提取器",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        140,
        115
      ],
      "parameters": {
        "text": "=Extract all the job links from the provided content. \n\nHere's the content:  {{ $json.result.content[0].text }}",
        "options": {},
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"array\",\n\t\"properties\": {\n\t\t\"link\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t}\n}"
      },
      "retryOnFail": true,
      "typeVersion": 1
    },
    {
      "id": "cb8e32c9-c1ac-4441-a42a-42e6b0d78970",
      "name": "用于分页职位提取的 OpenAI 聊天模型",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        228,
        335
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "vPKynKbDzJ5ZU4cU",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "b366450e-b10e-412e-b442-a0827ca430bb",
  "connections": {
    "Split Out": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Job Match": {
      "main": [
        [
          {
            "node": "Create a binary data for AI Job Match",
            "type": "main",
            "index": 0
          },
          {
            "node": "Webhook Notification for AI Job Match",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Bright Data MCP Client For Jobs Extraction within a Loop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set the Input fields": {
      "main": [
        [
          {
            "node": "Bright Data MCP Client For Jobs Extraction",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Job Match",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Paginated Job Data Extractor": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Job Desc Information Extractor": {
      "main": [
        [
          {
            "node": "AI Job Match",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "List all tools for Bright Data": {
      "main": [
        [
          {
            "node": "Set the Input fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Test workflow’": {
      "main": [
        [
          {
            "node": "List all tools for Bright Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model for AI Job Match": {
      "ai_languageModel": [
        [
          {
            "node": "AI Job Match",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Create a binary data for AI Job Match": {
      "main": [
        [
          {
            "node": "Write the AI job matched response to disk",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook Notification for AI Job Match": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model for Job Desc Extract": {
      "ai_languageModel": [
        [
          {
            "node": "Job Desc Information Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Write the AI job matched response to disk": {
      "main": [
        []
      ]
    },
    "Bright Data MCP Client For Jobs Extraction": {
      "main": [
        [
          {
            "node": "Paginated Job Data Extractor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model for Paginated Job Extract": {
      "ai_languageModel": [
        [
          {
            "node": "Paginated Job Data Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Bright Data MCP Client For Jobs Extraction within a Loop": {
      "main": [
        [
          {
            "node": "Job Desc Information Extractor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

高级 - 人力资源, 人工智能

需要付费吗?

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

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

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

作者
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 查看

分享此工作流