8
n8n 中文网amn8n.com

LinkedIn 职位抓取器(提交)

高级

这是一个Miscellaneous, AI Summarization, Multimodal AI领域的自动化工作流,包含 17 个节点。主要使用 Code, Html, HttpRequest, RssFeedRead, GoogleSheets 等节点。 使用 Gemini AI 抓取 LinkedIn 职位并通过 RSS 存储到 Google Sheets

前置要求
  • 可能需要目标 API 的认证凭证
  • Google Sheets API 凭证
  • Google Gemini API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "LPtWfT87D8T6CFb2",
  "meta": {
    "instanceId": "7f1a0694161455be3a7e71f1e0dea04908b0376a1a81e3a0c1e5ac879d48f83a"
  },
  "name": "LinkedIn 职位抓取器 (提交)",
  "tags": [],
  "nodes": [
    {
      "id": "2946b0fd-a04f-444c-8fd4-a20a136fe2ff",
      "name": "当点击\"执行工作流\"时",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -368,
        688
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "7937f28e-abf2-4a10-a7c4-48a7dec09fdf",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1056,
        704
      ],
      "parameters": {
        "text": "=You're an intelligent bot capable of pulling out data from a job listing site.\n\nHere is the job Description :\n {{ $json.description }}\n\noutput the data in JSON format, using the following structure:\n{\n  \n  \"benefits\": \"\", //separate by commas\n  \"location_remote\": \"\",\n  \"job_description\": \"\" //make it 200 characters or less\n}\n\nsimplify the output\noutput content as json\n",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "22e0f014-7696-46e3-b0f6-94be990e6f3f",
      "name": "Google Gemini 聊天模型",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1008,
        944
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "4eb45b49-676a-4fa9-b20f-9721f9f9e039",
      "name": "结构化输出解析器",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1264,
        928
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"benefits\": \"\",\n  \"location_state\": \"\",\n  \"location_remote\": \"\",\n  \"job_description\": \"\"\n}\n"
      },
      "typeVersion": 1.3
    },
    {
      "id": "ca45b9d5-6c31-40d5-978f-1fa1d0166528",
      "name": "职位帖子循环",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        48,
        688
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "b70f812e-ad74-493f-bbec-9e71d129bb58",
      "name": "提取 HTML",
      "type": "n8n-nodes-base.html",
      "position": [
        464,
        704
      ],
      "parameters": {
        "options": {
          "cleanUpText": true
        },
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "body",
              "cssSelector": "script[type=\"application/ld+json\"]"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "0fd49815-cfe2-4b1f-960f-2355a5189802",
      "name": "AI 处理前预清理",
      "type": "n8n-nodes-base.code",
      "position": [
        848,
        704
      ],
      "parameters": {
        "jsCode": "return items.map(item => {\n  let desc = item.json.description || \"\";\n\n  // Remove HTML tags\n  desc = desc.replace(/<[^>]+>/g, ' ');\n\n  // Normalize spaces\n  desc = desc.replace(/\\s+/g, ' ').trim();\n\n  return {\n    json: {\n      title: item.json.title,\n      company: item.json.hiringOrganization?.name,\n      location: item.json.jobLocation?.address?.addressLocality,\n      country: item.json.jobLocation?.address?.addressCountry,\n      description: desc,\n      employmentType: item.json.employmentType,\n      validThrough: item.json.validThrough\n    }\n  };\n});\n"
      },
      "typeVersion": 2
    },
    {
      "id": "0fdd0dda-1231-43a3-b873-4dcbf73e59c7",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -208,
        608
      ],
      "parameters": {
        "color": 4,
        "width": 192,
        "content": "检索信息,例如职位标题、链接和发布日期。"
      },
      "typeVersion": 1
    },
    {
      "id": "589c7174-eddb-4c17-94e5-c07a2e179ce6",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        608
      ],
      "parameters": {
        "color": 5,
        "width": 208,
        "content": "逐个处理每个职位帖子,确保数据正确处理。"
      },
      "typeVersion": 1
    },
    {
      "id": "3eb0081e-b5ff-4224-b7d7-edbcc1c2df89",
      "name": "便签4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        224,
        608
      ],
      "parameters": {
        "color": 4,
        "width": 192,
        "content": "抓取职位页面的完整 HTML 内容。"
      },
      "typeVersion": 1
    },
    {
      "id": "c2084ebf-5be3-45c5-af1d-919dd996cd7b",
      "name": "便签5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        432,
        608
      ],
      "parameters": {
        "color": 5,
        "width": 160,
        "content": "提取嵌入在 HTML 中的特定 JSON 脚本。"
      },
      "typeVersion": 1
    },
    {
      "id": "9743f23d-bf9b-43d8-8b23-69c4715ad46c",
      "name": "便签6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        608,
        608
      ],
      "parameters": {
        "color": 4,
        "width": 192,
        "content": "移除 HTML 标签和多余空格,为 AI 模型准备数据。"
      },
      "typeVersion": 1
    },
    {
      "id": "ee564f7e-535b-406f-b458-be98a3e62624",
      "name": "便签7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1392,
        608
      ],
      "parameters": {
        "color": 5,
        "width": 192,
        "content": "将提取的数据添加到 Google Sheets。"
      },
      "typeVersion": 1
    },
    {
      "id": "1808a85e-3254-4ae6-ade4-fb297ff7078c",
      "name": "读取 RSS 源。",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        -160,
        688
      ],
      "parameters": {
        "url": "{{ $json.rssFeedUrl }}",
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "82459329-aa32-4f2f-9aa4-661c592652d2",
      "name": "抓取职位 HTML。",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        256,
        704
      ],
      "parameters": {
        "url": "={{ $json.link }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "2a66d30d-2b1b-496e-9c39-33b05bcb95c5",
      "name": "解析职位详情。",
      "type": "n8n-nodes-base.code",
      "position": [
        672,
        704
      ],
      "parameters": {
        "jsCode": "return items.map(item => {\n  const raw = item.json.body;\n  const jobData = JSON.parse(raw);\n\n  return {\n    json: {\n      title: jobData.title,\n      company: jobData.hiringOrganization?.name,\n      description: jobData.description,\n      location: jobData.jobLocation?.address?.addressLocality,\n      country: jobData.jobLocation?.address?.addressCountry,\n      employmentType: jobData.employmentType,\n      validThrough: jobData.validThrough\n    }\n  };\n});\n"
      },
      "typeVersion": 2
    },
    {
      "id": "f39bd644-0d55-4064-a9ec-c29811248ccf",
      "name": "更新 Google Sheets。",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1440,
        704
      ],
      "parameters": {
        "columns": {
          "value": {
            "Date": "={{ $('Read RSS Feed.').item.json.pubDate }}",
            "Title": "={{ $('Pre-clean Before AI').item.json.title }}",
            "Benefits": "={{ $json.output.benefits }}",
            "Company Name": "={{ $('Parse Job Details.').item.json.company }}",
            "Job Description": "={{ $json.output.job_description }}",
            "Job Description Link": "={{ $('Read RSS Feed.').item.json.link }}"
          },
          "schema": [
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Description Link",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Job Description Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Company Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Benefits",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Benefits",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Description",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Job Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Cover Letter",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Cover Letter",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Job Description Link"
          ]
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "{{ $json.sheetName }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "{{ $json.googleSheetsId }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "wPjVdNu2BqMvFufX",
          "name": "Google Sheets account 2"
        }
      },
      "typeVersion": 4.7
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c63c1972-a3f7-42cf-93b7-298a3a12af5b",
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Update Google Sheet.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract HTML": {
      "main": [
        [
          {
            "node": "Parse Job Details.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read RSS Feed.": {
      "main": [
        [
          {
            "node": "Loop for Job Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Job HTML.": {
      "main": [
        [
          {
            "node": "Extract HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop for Job Posts": {
      "main": [
        [],
        [
          {
            "node": "Scrape Job HTML.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Job Details.": {
      "main": [
        [
          {
            "node": "Pre-clean Before AI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pre-clean Before AI": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Execute workflow’": {
      "main": [
        [
          {
            "node": "Read RSS Feed.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

高级 - 杂项, AI 摘要总结, 多模态 AI

需要付费吗?

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

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

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

作者
Abdullah Alshiekh

Abdullah Alshiekh

@abdullah01

🚀 Automation pro building AI-powered workflows with n8n. 💼 Special focus on real use cases 🔧 Love clean, flexible, and business-ready automations.

外部链接
在 n8n.io 查看

分享此工作流