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 - 商业版图追踪器
使用SerpAPI、Google表格和Airtable的每日竞争对手研究自动化
If
Code
Airtable
+5
15 节点Avkash Kakdiya
市场调研
14 - 域名流量丰富器
在Google表格和Airtable中使用SimilarWeb流量分析丰富域名数据
Set
Code
Airtable
+4
9 节点Avkash Kakdiya
市场调研
MetaAds创意洞察研究员v1.4
使用Google Vision和Video Intelligence API分析Meta广告创意
If
Set
Code
+9
32 节点Kirill Khatkevich
市场调研
09 - 潜在客户档案增强器
自动化潜在客户信息丰富与个性化外联:HubSpot、Phantombuster和GPT
If
Set
Code
+11
30 节点Avkash Kakdiya
客户培育
17 - AI LinkedIn回复器
使用 GPT-3.5 自动回复 LinkedIn 评论并在 Google Sheets 中跟踪
If
Set
Http Request
+4
13 节点Avkash Kakdiya
多模态 AI
YouTube评论情感和关键词提取器
使用Gemini AI分析YouTube评论情感和关键词并通过Telegram报告
Set
Code
Telegram
+10
20 节点Budi SJ
市场调研
工作流信息
难度等级
中级
节点数量10
分类2
节点类型6
作者
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 查看 →
分享此工作流