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
使用的节点 (17)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 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)可能需要您自行付费。
相关工作流推荐
自动化B2B潜在客户生成:Google Places、Scrape.do与AI数据增强
自动化B2B潜在客户生成:Google Places、Scrape.do与AI数据增强
If
Set
Html
+9
19 节点Onur
杂项
使用Gemini AI视觉分析与Telegram警报监控X平台品牌提及
使用Gemini AI视觉分析与Telegram警报监控X平台品牌提及
If
Set
Code
+13
24 节点Atta
杂项
每日 WhatsApp 群组智能分析:GPT-4.1 分析与语音消息转录
每日 WhatsApp 群组智能分析:GPT-4.1 分析与语音消息转录
If
Set
Code
+20
52 节点Daniel Lianes
杂项
科技新闻聚合器:The Verge和TechCrunch RSS到Notion,含GPT-4摘要
科技新闻聚合器:The Verge和TechCrunch RSS到Notion,含GPT-4摘要
If
Code
Html
+11
37 节点moosa
杂项
使用Google Gemini和Google Sheets的Shopify产品AI博客生成器
使用Google Gemini和Google Sheets的Shopify产品AI博客生成器
If
Code
Limit
+9
22 节点MANISH KUMAR
杂项
在可视化参考库中探索n8n节点
在可视化参考库中探索n8n节点
If
Ftp
Set
+93
113 节点I versus AI
其他
工作流信息
难度等级
高级
节点数量17
分类3
节点类型11
作者
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 查看 →
分享此工作流