基于Google Gemini的智能LinkedIn职位筛选,含简历匹配和Google地图
高级
这是一个Personal Productivity, AI Summarization领域的自动化工作流,包含 26 个节点。主要使用 If, Set, Supabase, Telegram, HttpRequest 等节点。 基于Google Gemini的智能LinkedIn职位筛选,含简历匹配和Google地图
前置要求
- •Supabase URL 和 API Key
- •Telegram Bot Token
- •可能需要目标 API 的认证凭证
- •Google Gemini API Key
使用的节点 (26)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "afca6c018fd85ecd6bb793dc620b1f9d2de9ea7edb2532dd2708b1a0cf01d640",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "0d1ee8d1-e28c-47e6-9d60-185de0d0dcc2",
"name": "配置",
"type": "n8n-nodes-base.set",
"position": [
-416,
16
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "171ff4c5-b238-4b4c-8a27-a5a9564bd673",
"name": "MyCV",
"type": "string",
"value": "YOUR FULL TEXT CV HERE!"
},
{
"id": "2be3ae0b-02f0-40c7-955f-e71b7a2881bc",
"name": "JobKeywords",
"type": "string",
"value": "AI Integration"
},
{
"id": "b062eed9-9fbd-4f45-9117-0ccd4b5d53db",
"name": "ExperienceLevel",
"type": "string",
"value": "mid_senior"
},
{
"id": "5808ab43-3551-42a0-b677-535b29bebf6c",
"name": "JobsToScrape",
"type": "number",
"value": 20
},
{
"id": "9076e2c5-2e23-41f5-bb73-04ab4534b960",
"name": "HomeLocation",
"type": "string",
"value": "Breda, Netherlands"
},
{
"id": "12b91df8-f52d-41b8-b18d-5d378942281f",
"name": "MaxCommuteMinutes",
"type": "number",
"value": 75
},
{
"id": "5d06b164-8c25-4e3d-8739-1900d9a4c7db",
"name": "TargetLanguage",
"type": "string",
"value": "English"
},
{
"id": "934fbe29-f5f0-4ca1-97ad-4e2c28e46b92",
"name": "Under10Applicants",
"type": "string",
"value": false
},
{
"id": "3f789658-2cfd-4c3e-9d7c-749d9e79fa65",
"name": "ActorId",
"type": "string",
"value": "apimaestro~linkedin-jobs-scraper-api"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "671cf8fb-b319-4e82-99ae-181f89aa936b",
"name": "抓取 LinkedIn 职位",
"type": "n8n-nodes-base.httpRequest",
"position": [
-192,
16
],
"parameters": {
"url": "=https://api.apify.com/v2/acts/{{ $json.ActorId }}/run-sync-get-dataset-items",
"method": "POST",
"options": {},
"jsonBody": "={\n \"date_posted\": \"day\",\n \"experienceLevel\": {{ $json.ExperienceLevel.toJsonString() }},\n \"keywords\": {{ $json.JobKeywords.toJsonString() }},\n \"limit\": {{ $json.JobsToScrape }},\n \"under_10_applicants\": {{ $json.Under10Applicants.toJsonString() }},\n \"sort\": \"relevant\",\n \"location\": \"91000000\",\n \"page_number\": 1\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "Fu6O8UOTEpfPXgyP",
"name": "Apify"
}
},
"typeVersion": 4.2
},
{
"id": "47daec05-16be-4502-a183-a444b534bada",
"name": "完成!",
"type": "n8n-nodes-base.noOp",
"position": [
224,
-320
],
"parameters": {},
"typeVersion": 1
},
{
"id": "f09488e4-11b0-456c-92f2-e6804b64ea75",
"name": "结构化输出解析器",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
544,
272
],
"parameters": {
"jsonSchemaExample": "{\n\"jobLanguage\": \"English\",\n\"confirmed_seniority\": \"mid_senior\",\n\"is_match\": true\n}"
},
"typeVersion": 1.3
},
{
"id": "62f689ec-b638-4feb-8ada-74ff30cddf13",
"name": "如果资历匹配",
"type": "n8n-nodes-base.if",
"position": [
880,
32
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "d1f7b9b9-4fd1-44d2-b799-5fae8bcee7be",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.output.confirmed_seniority }}",
"rightValue": "={{ $('Config').item.json.ExperienceLevel }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "3ec3aea3-2639-4afb-a261-f81eaf0c13af",
"name": "解构职位数据",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
384,
32
],
"parameters": {
"text": "=You are an expert HR data analyst. Your task is to validate the seniority level of a job posting based on its full description.\n\nThe job was originally tagged with the seniority level: \"{{ $('Config').item.json.ExperienceLevel }}\"\n\nAnalyze the full job description below and determine if this tag is accurate.\n\nReturn ONLY a valid JSON object with these fields:\n- \"jobLanguage\": The primary language of the text.\n- \"confirmed_seniority\": The most accurate seniority level based on your analysis of the text. You MUST choose one from: [\"internship\", \"entry\", \"associate\", \"mid_senior\", \"director\", \"executive\"].\n- \"is_match\": A boolean (true/false) indicating if your confirmed_seniority matches the original tag.\n\nJob Description:\n\"\"\"\n{{ $('Items Loop').first().json.description }}\n\"\"\"",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "78600425-b859-4c2b-b416-669bd7f6f4ce",
"name": "如果语言匹配",
"type": "n8n-nodes-base.if",
"position": [
1136,
16
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "09fadd6c-b339-4173-84f4-aa0b50e3706c",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $('Config').item.json.TargetLanguage.toLowerCase().split(', ').includes($('Deconstruct Job Data').item.json.output.jobLanguage.toLowerCase()) }}",
"rightValue": "={{ $json.output.jobLanguage.toLowerCase() }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "1c49665e-3444-4528-85e2-5fa2f6f1547a",
"name": "Google Gemini",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
368,
272
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"id": "vppVWKsiofTY92Ht",
"name": "Google Gemini(PaLM) Api account"
}
},
"typeVersion": 1
},
{
"id": "fd7deb25-14f0-42dc-bb6f-c02a5dcd9314",
"name": "如果不是远程职位",
"type": "n8n-nodes-base.if",
"position": [
1392,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "95ad2f86-418a-4e1d-99df-75ef6037b072",
"operator": {
"type": "string",
"operation": "notEquals"
},
"leftValue": "={{ $('Items Loop').first().json.work_type.toLowerCase() }}",
"rightValue": "remote"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "9500741a-7fff-41ec-ba2c-3d3690b3e779",
"name": "获取通勤时间",
"type": "n8n-nodes-base.httpRequest",
"position": [
1744,
-224
],
"parameters": {
"url": "=https://maps.googleapis.com/maps/api/directions/json",
"options": {},
"sendQuery": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth",
"queryParameters": {
"parameters": [
{
"name": "origin",
"value": "={{ $('Config').item.json.HomeLocation }}"
},
{
"name": "destination",
"value": "={{ $('Items Loop').first().json.location }}"
}
]
}
},
"credentials": {
"httpQueryAuth": {
"id": "p2ihhJSPgggiFXnI",
"name": "Google Direction Key"
}
},
"typeVersion": 4.2
},
{
"id": "d8b75d80-fbd0-4a4a-b4ac-35843bbc5e48",
"name": "通勤时间是否可接受",
"type": "n8n-nodes-base.if",
"position": [
1952,
-224
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "6717790e-4c69-434c-afcc-d33cbe362789",
"operator": {
"type": "number",
"operation": "lte"
},
"leftValue": "={{ $json.routes[0].legs[0].duration.value }}",
"rightValue": "={{ $('Config').item.json.MaxCommuteMinutes * 60 }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "c2b71945-4bf2-48b4-be34-104bbf7e8208",
"name": "Google Gemini 深度分析",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
2464,
240
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"id": "vppVWKsiofTY92Ht",
"name": "Google Gemini(PaLM) Api account"
}
},
"typeVersion": 1
},
{
"id": "a09b3dc1-a6d2-402d-be2e-1dcd2c7d05a1",
"name": "结构化输出解析器深度分析",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
2656,
240
],
"parameters": {
"jsonSchemaExample": "{\n \"summary\": \"A 2-bullet point summary.\",\n \"key_skills\": [\"skill1\",\"skill2\"],\n \"match_score\": 5,\n \"salaryInfo\": \"The extracted salary range\",\n \"reasoning\": \"A one-sentence explanation for the score.\"\n}"
},
"typeVersion": 1.3
},
{
"id": "b114ccb2-6d92-4e70-bd6b-dbf96379974b",
"name": "保存数据",
"type": "n8n-nodes-base.supabase",
"position": [
3056,
16
],
"parameters": {
"tableId": "job_tracker",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "jobTitle",
"fieldValue": "={{ $('Items Loop').first().json.job_title }}"
},
{
"fieldId": "companyName",
"fieldValue": "={{ $('Items Loop').first().json.company }}"
},
{
"fieldId": "matchScore",
"fieldValue": "={{ $json.output.match_score }}"
},
{
"fieldId": "aiSummary",
"fieldValue": "={{ $json.output.summary }}"
},
{
"fieldId": "jobURL",
"fieldValue": "={{ $('Items Loop').first().json.job_url }}"
},
{
"fieldId": "salaryInfo",
"fieldValue": "={{ $json.output.salaryInfo }}"
},
{
"fieldId": "aiReasoning",
"fieldValue": "={{ $json.output.reasoning }}"
},
{
"fieldId": "applyURL",
"fieldValue": "={{ $('Items Loop').first().json.apply_url }}"
}
]
}
},
"credentials": {
"supabaseApi": {
"id": "0Oe2tNApQI5QNswJ",
"name": "Supabase account"
}
},
"typeVersion": 1
},
{
"id": "7f9b8050-305b-4bf0-a587-3816d7d11723",
"name": "如果匹配分数较高",
"type": "n8n-nodes-base.if",
"position": [
3264,
16
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "64d17e00-bada-41e9-918c-f507a1e59df9",
"operator": {
"type": "number",
"operation": "gte"
},
"leftValue": "={{ $('AI Deep Analysis').item.json.output.match_score }}",
"rightValue": 8
}
]
}
},
"typeVersion": 2.2
},
{
"id": "96b8e300-cb29-4ded-ad55-8b6c4cedacae",
"name": "AI 深度分析",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2480,
16
],
"parameters": {
"text": "=Here is the candidate's resume and the job description. Please perform your analysis.\n---\n**Candidate's Resume:**\n\"\"\"\n{{ $('Config').first().json.MyCV }}\n\"\"\"\n---\n**Job Description:**\n\"\"\"\n{{ $('Items Loop').first().json.description }}\n\"\"\"",
"options": {
"systemMessage": "=You are an expert career coach and HR specialist. Your task is to analyze a candidate's resume against a job description and provide a detailed, structured analysis.\n\nReturn ONLY a valid JSON object with the following structure:\n{\n \"summary\": \"A 2-bullet point summary of the role's main responsibilities.\",\n \"key_skills\": [\"An array of the top 5 most important skills required for this job.\"],\n \"match_score\": \"An integer from 1 to 10 of how well the resume matches the job requirements.\",\n \"salaryInfo\": \"The extracted salary range or the string 'Not specified' if no salary is mentioned.\",\n \"reasoning\": \"A one-sentence explanation for the score, highlighting a key strength or a potential gap in the resume.\"\n}"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "ad6f8535-342b-4db8-b0d9-9b761c56ed62",
"name": "项目循环",
"type": "n8n-nodes-base.splitInBatches",
"position": [
16,
16
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "b6beecb9-3cee-4647-9995-942cedc77b42",
"name": "发送通知",
"type": "n8n-nodes-base.telegram",
"position": [
3568,
0
],
"webhookId": "57ac8c41-a3bc-4b4e-8e22-adab496b2df0",
"parameters": {
"text": "=🔥 <b>High-Match Job Found! ({{ $('AI Deep Analysis').item.json.output.match_score }}/10)</b>\n\n<b>{{ $('Items Loop').item.json.job_title }}</b> at <b>{{ $('Items Loop').item.json.company }}</b>\n\n<b>AI Reasoning:</b>\n<i>{{ $('AI Deep Analysis').item.json.output.reasoning }}</i>\n\n<b>Key Skills:</b>\n<code>{{ $('AI Deep Analysis').item.json.output.key_skills.join(', ') }}</code>\n\n<b>Salary:</b> <code>{{ $('AI Deep Analysis').item.json.output.salaryInfo }}</code>\n\n<a href=\"{{ $('Items Loop').item.json.apply_url }}\">Apply Here</a> | <a href=\"{{ $('Items Loop').item.json.job_url }}\">View Job Description</a>",
"chatId": "-4932341035",
"additionalFields": {
"parse_mode": "HTML",
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "RDdscBadRkYP5zeG",
"name": "Telegram (n8n)"
}
},
"typeVersion": 1.2
},
{
"id": "191a6567-4fda-46c1-aeb8-9a1d75742a39",
"name": "计划触发器",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-704,
-80
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.2
},
{
"id": "15d4435b-5cd8-4081-af0b-0159d70ba342",
"name": "手动执行",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-704,
112
],
"parameters": {},
"typeVersion": 1
},
{
"id": "175efaf6-2194-45e3-99f7-634d75fd7941",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1520,
-416
],
"parameters": {
"color": 5,
"width": 704,
"height": 960,
"content": "## ⚙️ 工作流配置"
},
"typeVersion": 1
},
{
"id": "59daed62-8690-42a8-a3e4-ec59269a0271",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
224,
-160
],
"parameters": {
"color": 3,
"width": 560,
"height": 576,
"content": "## 🤖 AI 初筛:第一道过滤器"
},
"typeVersion": 1
},
{
"id": "43c45ff1-6d5a-4513-9370-1e524e443659",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1632,
-416
],
"parameters": {
"color": 4,
"width": 544,
"height": 432,
"content": "## 📍 地理位置检查"
},
"typeVersion": 1
},
{
"id": "6f4f06c5-9d2a-43d9-8c7d-2521885731e7",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
2288,
-160
],
"parameters": {
"color": 6,
"width": 592,
"height": 560,
"content": "## 🧠 AI 深度分析:简历匹配"
},
"typeVersion": 1
},
{
"id": "20bae697-5188-4a27-80ab-27f71b3b9168",
"name": "便签4",
"type": "n8n-nodes-base.stickyNote",
"position": [
2976,
-160
],
"parameters": {
"width": 752,
"height": 352,
"content": "## ✅ 行动与提醒"
},
"typeVersion": 1
},
{
"id": "d3b4a1c4-7f39-4d9f-95c9-381d91ed9e68",
"name": "进入下一步",
"type": "n8n-nodes-base.noOp",
"position": [
3792,
272
],
"parameters": {},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"Config": {
"main": [
[
{
"node": "Scrape LinkenIn Jobs",
"type": "main",
"index": 0
}
]
]
},
"Save Data": {
"main": [
[
{
"node": "If Has High Match Score",
"type": "main",
"index": 0
}
]
]
},
"Items Loop": {
"main": [
[
{
"node": "Done!",
"type": "main",
"index": 0
}
],
[
{
"node": "Deconstruct Job Data",
"type": "main",
"index": 0
}
]
]
},
"To The Next": {
"main": [
[
{
"node": "Items Loop",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini": {
"ai_languageModel": [
[
{
"node": "Deconstruct Job Data",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"AI Deep Analysis": {
"main": [
[
{
"node": "Save Data",
"type": "main",
"index": 0
}
]
]
},
"Get Commute Time": {
"main": [
[
{
"node": "Is Commute Acceptable",
"type": "main",
"index": 0
}
]
]
},
"If is not Remote": {
"main": [
[
{
"node": "Get Commute Time",
"type": "main",
"index": 0
}
],
[
{
"node": "AI Deep Analysis",
"type": "main",
"index": 0
}
]
]
},
"Manual Executing": {
"main": [
[
{
"node": "Config",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Config",
"type": "main",
"index": 0
}
]
]
},
"If Language Match": {
"main": [
[
{
"node": "If is not Remote",
"type": "main",
"index": 0
}
],
[
{
"node": "Items Loop",
"type": "main",
"index": 0
}
]
]
},
"If Seniority Match": {
"main": [
[
{
"node": "If Language Match",
"type": "main",
"index": 0
}
],
[
{
"node": "Items Loop",
"type": "main",
"index": 0
}
]
]
},
"Send a Notification": {
"main": [
[
{
"node": "To The Next",
"type": "main",
"index": 0
}
]
]
},
"Deconstruct Job Data": {
"main": [
[
{
"node": "If Seniority Match",
"type": "main",
"index": 0
}
]
]
},
"Scrape LinkenIn Jobs": {
"main": [
[
{
"node": "Items Loop",
"type": "main",
"index": 0
}
]
]
},
"Is Commute Acceptable": {
"main": [
[
{
"node": "AI Deep Analysis",
"type": "main",
"index": 0
}
],
[
{
"node": "Items Loop",
"type": "main",
"index": 0
}
]
]
},
"If Has High Match Score": {
"main": [
[
{
"node": "Send a Notification",
"type": "main",
"index": 0
}
],
[
{
"node": "To The Next",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Deconstruct Job Data",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Google Gemini Deep Analysis": {
"ai_languageModel": [
[
{
"node": "AI Deep Analysis",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser Deep Analysis": {
"ai_outputParser": [
[
{
"node": "AI Deep Analysis",
"type": "ai_outputParser",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 个人效率, AI 摘要总结
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
使用Gemini AI视觉分析与Telegram警报监控X平台品牌提及
使用Gemini AI视觉分析与Telegram警报监控X平台品牌提及
If
Set
Code
+13
24 节点Atta
杂项
灵活新闻聚合器 - 多源集成、AI分析和可设置频道
多源新闻策展系统,集成Mistral AI分析、摘要和自定义频道
If
Set
Xml
+32
120 节点Hybroht
内容创作
AI驱动的反馈分诊系统:Jotform到Trello、Airtable和Slack,集成Gemini
AI驱动的反馈分诊系统:Jotform到Trello、Airtable和Slack,集成Gemini
If
Set
Gmail
+9
21 节点Atta
市场调研
LinkedIn和X病毒内容自动引擎
使用AI生成和发布自动创建LinkedIn和X的病毒内容
If
Set
Wait
+26
156 节点Diptamoy Barman
内容创作
在可视化参考库中探索n8n节点
在可视化参考库中探索n8n节点
If
Ftp
Set
+93
113 节点I versus AI
其他
LinkedIn职位搜索
LinkedIn职位搜索:自动匹配简历(GPT/Gemini)+求职信生成器+Telegram提醒
If
Set
Code
+13
33 节点Hojjat Jashnniloofar
个人效率
工作流信息
难度等级
高级
节点数量26
分类2
节点类型13
作者
Atta
@attakhalighiHi 👋 I design automation workflows with n8n, AI, and custom APIs. My focus is on building reliable systems that save time and boost productivity. Always happy to answer questions about my templates.
外部链接
在 n8n.io 查看 →
分享此工作流