8
n8n 中文网amn8n.com

通过Bright Data MCP和OpenAI 4o mini实时提取职位描述与薪资详情

高级

这是一个HR, AI领域的自动化工作流,包含 19 个节点。主要使用 Set, Merge, Function, McpClient, Aggregate 等节点,结合人工智能技术实现智能自动化。 使用Bright Data MCP和OpenAI 4o mini实时提取职位描述与薪资详情

前置要求
  • 可能需要目标 API 的认证凭证
  • Google Sheets API 凭证
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "LTw3TlYxQXEMSTi3",
  "meta": {
    "instanceId": "885b4fb4a6a9c2cb5621429a7b972df0d05bb724c20ac7dac7171b62f1c7ef40",
    "templateCredsSetupCompleted": true
  },
  "name": "通过 Bright Data MCP 和 OpenAI 4o mini 实时提取职位描述与薪资详情",
  "tags": [
    {
      "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": "c3aaad9e-db7d-4761-9e34-99483f302562",
      "name": "当点击\"测试工作流\"时",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -660,
        -180
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "3bf2f1f2-5303-45ce-9c12-76597b4e82fa",
      "name": "Bright Data MCP 客户端列表工具",
      "type": "n8n-nodes-mcp.mcpClient",
      "position": [
        -440,
        -180
      ],
      "parameters": {},
      "credentials": {
        "mcpClientApi": {
          "id": "JtatFSfA2kkwctYa",
          "name": "MCP Client (STDIO) account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "6489766a-b657-4a2f-8a3d-fc4aea3b11d2",
      "name": "设置输入字段",
      "type": "n8n-nodes-base.set",
      "position": [
        -220,
        -180
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "0ac91db2-9848-40d4-b942-cd7288597ded",
              "name": "job_search_url",
              "type": "string",
              "value": "https://www.indeed.com/viewjob?jk=075f6b95d1ae92ae"
            },
            {
              "id": "f5b7e10d-bcd8-439c-8e84-ba4af11f2cd2",
              "name": "job_role",
              "type": "string",
              "value": "Lead Backend .Net Developer Dallas, TX Hybrid work"
            },
            {
              "id": "e601ea9e-20ab-40ed-82ec-89b895b07f85",
              "name": "webhook_notification_url",
              "type": "string",
              "value": "https://webhook.site/c9118da2-1c54-460f-a83a-e5131b7098db"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "f6a345dd-40a3-4a94-ba65-18698694a8bc",
      "name": "用于职位数据提取的 MCP 客户端(支持 Markdown)",
      "type": "n8n-nodes-mcp.mcpClient",
      "position": [
        20,
        -180
      ],
      "parameters": {
        "toolName": "scrape_as_markdown",
        "operation": "executeTool",
        "toolParameters": "={\n  \"url\": \"{{ $json.job_search_url }}\"\n} "
      },
      "credentials": {
        "mcpClientApi": {
          "id": "JtatFSfA2kkwctYa",
          "name": "MCP Client (STDIO) account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "53495c35-ca3a-4874-a0a3-2cd9965a9638",
      "name": "用于薪资数据提取的 MCP 客户端",
      "type": "n8n-nodes-mcp.mcpClient",
      "position": [
        20,
        -540
      ],
      "parameters": {
        "toolName": "search_engine",
        "operation": "executeTool",
        "toolParameters": "={\n  \"query\": \"{{ $json.job_role }}\",\n  \"engine\": \"google\"\n} "
      },
      "credentials": {
        "mcpClientApi": {
          "id": "JtatFSfA2kkwctYa",
          "name": "MCP Client (STDIO) account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "25668caa-6981-4f57-9eae-ba5c29374e56",
      "name": "薪资信息提取器",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        260,
        -540
      ],
      "parameters": {
        "text": "=Extract the salary information from the following content  {{ $json.result.content[0].text }}",
        "options": {},
        "schemaType": "manual",
        "inputSchema": "{\n  \"$schema\": \"http://json-schema.org/schema#\",\n  \"title\": \"Salary Information\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"job_title\": {\n      \"type\": \"string\",\n      \"description\": \"The official title of the job (e.g., Software Engineer, DevOps Engineer)\"\n    },\n    \"job_level\": {\n      \"type\": \"string\",\n      \"description\": \"The seniority level (e.g., Junior, Mid, Senior, Lead, Principal)\",\n      \"enum\": [\"Intern\", \"Junior\", \"Mid\", \"Senior\", \"Lead\", \"Principal\", \"Director\", \"VP\", \"C-Level\"]\n    },\n    \"company_name\": {\n      \"type\": \"string\",\n      \"description\": \"The name of the company offering the position\"\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"description\": \"City and state/country of the job\"\n    },\n    \"employment_type\": {\n      \"type\": \"string\",\n      \"description\": \"Full-time, Part-time, Contract, Freelance, Internship\",\n      \"enum\": [\"Full-time\", \"Part-time\", \"Contract\", \"Freelance\", \"Internship\"]\n    },\n    \"remote_option\": {\n      \"type\": \"string\",\n      \"description\": \"Remote status of the job\",\n      \"enum\": [\"On-site\", \"Hybrid\", \"Remote\"]\n    },\n    \"currency\": {\n      \"type\": \"string\",\n      \"description\": \"Currency code (e.g., USD, EUR, INR)\"\n    },\n    \"salary_min\": {\n      \"type\": \"number\",\n      \"description\": \"Minimum base salary offered\"\n    },\n    \"salary_max\": {\n      \"type\": \"number\",\n      \"description\": \"Maximum base salary offered\"\n    },\n    \"salary_period\": {\n      \"type\": \"string\",\n      \"description\": \"Salary frequency\",\n      \"enum\": [\"hour\", \"day\", \"week\", \"month\", \"year\"]\n    },\n    \"equity\": {\n      \"type\": \"string\",\n      \"description\": \"Equity component of the compensation (e.g., '0.1%', '$5,000 in stock')\",\n      \"nullable\": true\n    },\n    \"bonus\": {\n      \"type\": \"string\",\n      \"description\": \"Bonus component (e.g., '10% performance bonus', '$5000 sign-on')\",\n      \"nullable\": true\n    },\n    \"skills_required\": {\n      \"type\": \"array\",\n      \"description\": \"Key technical or soft skills expected\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"experience_required\": {\n      \"type\": \"string\",\n      \"description\": \"Experience required in years or description (e.g., '3-5 years', 'Entry level')\"\n    },\n    \"posting_source\": {\n      \"type\": \"string\",\n      \"description\": \"Source of the job posting (e.g., LinkedIn, Glassdoor, Indeed)\"\n    },\n    \"posting_date\": {\n      \"type\": \"string\",\n      \"format\": \"date\",\n      \"description\": \"Date when the job was posted\"\n    },\n    \"summary_insight\": {\n      \"type\": \"string\",\n      \"description\": \"Optional Gemini-generated summary or insight (e.g., 'This role offers 15% higher pay than average for the region.')\"\n    }\n  }\n}\n"
      },
      "typeVersion": 1.1
    },
    {
      "id": "f58be851-947b-4ac7-9afe-b7cefb7a753a",
      "name": "职位描述提取器",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        240,
        -180
      ],
      "parameters": {
        "text": "=Extract markdown to textual data.  {{ $json.result.content[0].text }}",
        "options": {},
        "attributes": {
          "attributes": [
            {
              "name": "job_description",
              "description": "Detailed Job Description in Textual Format"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "9102e1b1-34c8-439d-90c6-6c9d5f8c94b0",
      "name": "合并响应",
      "type": "n8n-nodes-base.merge",
      "position": [
        720,
        -360
      ],
      "parameters": {},
      "typeVersion": 3.1
    },
    {
      "id": "434f22dc-99d1-465f-8c41-c08060a94137",
      "name": "创建二进制数据",
      "type": "n8n-nodes-base.function",
      "position": [
        1460,
        -460
      ],
      "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": "8a9bf6a0-e32d-43de-bb5d-2da34633838f",
      "name": "职位信息 Webhook 通知",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1460,
        -260
      ],
      "parameters": {
        "url": "={{ $('Set input fields').item.json.webhook_notification_url }}",
        "options": {},
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "response",
              "value": "={{ $json.output.search_response }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "bb2ead5d-4188-4b94-af5b-875faf06312d",
      "name": "将薪资信息写入磁盘",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        1700,
        -460
      ],
      "parameters": {
        "options": {},
        "fileName": "=d:\\JobDesc-SalaryInfo-{{Date.now()}}.json",
        "operation": "write"
      },
      "typeVersion": 1
    },
    {
      "id": "eeb6d735-7de2-490d-9a3b-1ab3a93990fb",
      "name": "更新 Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1460,
        -40
      ],
      "parameters": {
        "columns": {
          "value": {
            "output": "={{ $json.output.toJsonString() }}"
          },
          "schema": [
            {
              "id": "output",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "output",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "output"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10gAihQMT8-h8Mpehe9j-xxN4oTTpg8qwToI-I-Eauew/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "10gAihQMT8-h8Mpehe9j-xxN4oTTpg8qwToI-I-Eauew",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10gAihQMT8-h8Mpehe9j-xxN4oTTpg8qwToI-I-Eauew/edit?usp=drivesdk",
          "cachedResultName": "Salary Info"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "Zjoxh2BUZ6VXGQhA",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "aa10d68c-8a90-45e5-867d-cac07f9bd749",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        160,
        -720
      ],
      "parameters": {
        "color": 3,
        "width": 440,
        "height": 120,
        "content": "## 免责声明"
      },
      "typeVersion": 1
    },
    {
      "id": "1e8d629b-7a62-40e5-b4ed-357daf33b93e",
      "name": "便签4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -300,
        -820
      ],
      "parameters": {
        "color": 5,
        "width": 440,
        "height": 220,
        "content": "## LLM 使用情况"
      },
      "typeVersion": 1
    },
    {
      "id": "f5b35754-1cd2-41f2-8827-043000f634d0",
      "name": "便签5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -760,
        -1220
      ],
      "parameters": {
        "color": 7,
        "width": 440,
        "height": 360,
        "content": "## 徽标"
      },
      "typeVersion": 1
    },
    {
      "id": "6471bf0f-4c6d-446c-ab68-75d0d8783f0f",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -760,
        -820
      ],
      "parameters": {
        "width": 440,
        "height": 220,
        "content": "## 说明"
      },
      "typeVersion": 1
    },
    {
      "id": "af070520-b6fc-4a76-bef3-32ec82d7132f",
      "name": "用于薪资信息提取的 OpenAI 聊天模型",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        300,
        -340
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "vPKynKbDzJ5ZU4cU",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "10fa3ded-6401-45d7-97ad-1455d41b6794",
      "name": "用于职位描述提取的 OpenAI 聊天模型",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        340,
        40
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "vPKynKbDzJ5ZU4cU",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "01ddb4ab-73ae-4eef-9f30-4f3438a42823",
      "name": "聚合",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1020,
        -360
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "output"
            }
          ]
        }
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f52f7f7a-7b6a-4f34-bbf1-c5244974d00b",
  "connections": {
    "Aggregate": {
      "main": [
        [
          {
            "node": "Create a binary data",
            "type": "main",
            "index": 0
          },
          {
            "node": "Webhook Notification for Job Info",
            "type": "main",
            "index": 0
          },
          {
            "node": "Update Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set input fields": {
      "main": [
        [
          {
            "node": "MCP Client for Job Data Extract with Markdown",
            "type": "main",
            "index": 0
          },
          {
            "node": "MCP Client for Salary Data Extraction",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge the response": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a binary data": {
      "main": [
        [
          {
            "node": "Write the salary info to disk",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Job Description Extractor": {
      "main": [
        [
          {
            "node": "Merge the response",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Salary Information Extractor": {
      "main": [
        [
          {
            "node": "Merge the response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Bright Data MCP Client List Tools": {
      "main": [
        [
          {
            "node": "Set input fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Test workflow’": {
      "main": [
        [
          {
            "node": "Bright Data MCP Client List Tools",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "MCP Client for Salary Data Extraction": {
      "main": [
        [
          {
            "node": "Salary Information Extractor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model for Job Desc Extract": {
      "ai_languageModel": [
        [
          {
            "node": "Job Description Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model for Salary Info Extract": {
      "ai_languageModel": [
        [
          {
            "node": "Salary Information Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "MCP Client for Job Data Extract with Markdown": {
      "main": [
        [
          {
            "node": "Job Description Extractor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

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

需要付费吗?

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

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

适合高级用户,包含 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 查看

分享此工作流