8
n8n 中文网amn8n.com

21 - 竞争性招聘情报系统

中级

这是一个Market Research, Multimodal AI领域的自动化工作流,包含 10 个节点。主要使用 Set, Wait, HttpRequest, GoogleSheets, ScheduleTrigger 等节点。 使用 Phantombuster 抓取 LinkedIn 职位列表并保存到 Google Sheets

前置要求
  • 可能需要目标 API 的认证凭证
  • Google Sheets API 凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "example-workflow-id",
  "meta": {
    "instanceId": "example-instance-id",
    "templateCredsSetupCompleted": false
  },
  "name": "21 - Competitive Hiring Intelligence System",
  "tags": [],
  "nodes": [
    {
      "id": "3195a2a6-d109-4394-b72e-a3799cf55c2b",
      "name": "🚀 Trigger Phantombuster Scraper",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        200,
        -40
      ],
      "parameters": {
        "url": "=https://api.phantombuster.com/api/v2/agents/launch",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"id\": \"YOUR_PHANTOMBUSTER_AGENT_ID\",\n  \"argument\": {\n    \"profileUrls\": [\"{{ $json.LinkedIn }}\"]\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "X-Phantombuster-Key-1",
              "value": "YOUR_PHANTOMBUSTER_API_KEY_HERE"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "67ed3500-b5d1-48e3-9071-6b80fcbe8657",
      "name": "⏳ Wait for Scraper to Finish",
      "type": "n8n-nodes-base.wait",
      "position": [
        420,
        -40
      ],
      "webhookId": "efbe108f-bb9f-4597-8b46-14bb081070ed",
      "parameters": {
        "unit": "minutes",
        "amount": 3
      },
      "typeVersion": 1.1
    },
    {
      "id": "7f8db189-e297-49d8-8cbe-6277221846ea",
      "name": "📦 Fetch Scraped CSV Link",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        640,
        -40
      ],
      "parameters": {
        "url": "=https://api.phantombuster.com/api/v2/containers/fetch-output?id={{ $('🚀 Trigger Phantombuster Scraper').item.json.containerId }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "X-Phantombuster-Key-1",
              "value": "YOUR_PHANTOMBUSTER_API_KEY_HERE"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "2d6dab41-3235-47ce-846a-812d4600629c",
      "name": "⏰Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -240,
        -40
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 9 * * 1"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "2a7fd7c7-3064-4a43-be40-f13c90b475cd",
      "name": "📄Read Companies Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -20,
        -40
      ],
      "parameters": {
        "options": {
          "returnAllMatches": "returnFirstMatch"
        },
        "filtersUI": {
          "values": [
            {
              "lookupValue": "Pending",
              "lookupColumn": "Status"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID_HERE/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_GOOGLE_SHEET_ID_HERE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID_HERE/edit",
          "cachedResultName": "Companies List"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "YOUR_GOOGLE_SHEETS_CREDENTIAL_ID",
          "name": "Google Sheets Account"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "abe0f5f0-0861-44f3-9ed0-abef7c4e17e1",
      "name": "🛠️Format Job Data",
      "type": "n8n-nodes-base.set",
      "position": [
        860,
        -40
      ],
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "Company Name"
            },
            {
              "name": "Job Title"
            },
            {
              "name": "Job Description"
            },
            {
              "name": "Job Link"
            },
            {
              "name": "Date Posted"
            },
            {
              "name": "Location"
            },
            {
              "name": "Employment Type"
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "d236fdab-cd32-425b-8ab5-fb9aa4ab97cc",
      "name": "📊Write to Results Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1080,
        -40
      ],
      "parameters": {
        "columns": {
          "value": {
            "Job Link": "={{$json[\"Job Link\"]}}",
            "Location": "={{$json[\"Location\"]}}",
            "Job Title": "={{$json[\"Job Title\"]}}",
            "Date Posted": "={{$json[\"Date Posted\"]}}",
            "Company Name": "={{$json[\"Company Name\"]}}",
            "Scraped Date": "={{new Date().toISOString().split('T')[0]}}",
            "Employment Type": "={{$json[\"Employment Type\"]}}",
            "Job Description": "={{$json[\"Job Description\"]}}"
          },
          "schema": [
            {
              "id": "Company Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Company Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Job Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Description",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Job Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Link",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Job Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date Posted",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Date Posted",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Location",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Employment Type",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Employment Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Scraped Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Scraped Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": []
        },
        "options": {},
        "operation": "append",
        "sheetName": "Job Results",
        "documentId": "YOUR_RESULTS_SHEET_ID_HERE"
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "YOUR_GOOGLE_SHEETS_CREDENTIAL_ID",
          "name": "Google Sheets Account"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "a6eb28b6-7b45-437a-9142-757924d23281",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -300,
        -320
      ],
      "parameters": {
        "color": 4,
        "width": 440,
        "height": 560,
        "content": "## 1. Trigger & Input Retrieval\n\n⏰ Schedule Trigger: Runs the workflow at 9:00 AM every Monday.\n\n📄 Read Companies Sheet: Reads data from a specified Google Sheet containing company details, filtering only those with Status = Pending.\n\nPurpose: Ensures the scraper runs on fresh, relevant company entries at a scheduled interval."
      },
      "typeVersion": 1
    },
    {
      "id": "e3e451fd-fa5e-4e25-ba82-c1f5e22ad91b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        160,
        -320
      ],
      "parameters": {
        "color": 6,
        "width": 640,
        "height": 560,
        "content": "## 2. Scraping Process (Phantombuster Integration)\n\n🚀 Trigger Phantombuster Scraper: Sends a POST request to the Phantombuster API to start a LinkedIn job scrape, passing the LinkedIn profile URL from the sheet as input.\n\n⏳ Wait for Scraper to Finish: Pauses execution for 3 minutes to allow Phantombuster to complete the scrape.\n\n📦 Fetch Scraped CSV Link: Fetches the output CSV file link from the Phantombuster container.\n\nPurpose: Automates the job scraping process without manual API checks or re-runs.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "9b58f1e2-06b1-42c2-941c-e117e75dcc5a",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        820,
        -320
      ],
      "parameters": {
        "color": 3,
        "width": 460,
        "height": 560,
        "content": "## 3. Data Processing & Storage\n\n🛠️ Format Job Data: Structures the scraped job data into predefined fields — Company Name, Job Title, Job Description, Job Link, Date Posted, Location, and Employment Type.\n\n📊 Write to Results Sheet: Appends the formatted job data into a separate Google Sheet (Job Results), including the current scrape date for tracking.\n\nPurpose: Converts raw scrape output into a clean, standardized dataset and saves it for easy review."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "sanitized-version-id",
  "connections": {
    "⏰Schedule Trigger": {
      "main": [
        [
          {
            "node": "📄Read Companies Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "🛠️Format Job Data": {
      "main": [
        [
          {
            "node": "📊Write to Results Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "📄Read Companies Sheet": {
      "main": [
        [
          {
            "node": "🚀 Trigger Phantombuster Scraper",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "📊Write to Results Sheet": {
      "main": [
        []
      ]
    },
    "📦 Fetch Scraped CSV Link": {
      "main": [
        [
          {
            "node": "🛠️Format Job Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "⏳ Wait for Scraper to Finish": {
      "main": [
        [
          {
            "node": "📦 Fetch Scraped CSV Link",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "🚀 Trigger Phantombuster Scraper": {
      "main": [
        [
          {
            "node": "⏳ Wait for Scraper to Finish",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

中级 - 市场调研, 多模态 AI

需要付费吗?

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

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

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

作者
Avkash Kakdiya

Avkash Kakdiya

@itechnotion

🚀 Founder of iTechNotion — we build custom AI-powered automation workflows for startups, agencies, and founders. 💡 Specializing in agentic AI systems, content automation, sales funnels, and digital workers. 🔧 14+ years in tech | Building scalable no-code/low-code solutions using n8n, OpenAI, and other API-first tools. 📬 Let’s automate what slows you down.

外部链接
在 n8n.io 查看

分享此工作流