使用Groq AI和GhostGenius比较LinkedIn个人资料与职位描述
高级
这是一个Miscellaneous, AI Summarization, Multimodal AI领域的自动化工作流,包含 17 个节点。主要使用 If, Set, Code, Merge, Webhook 等节点。 使用Groq AI和GhostGenius比较LinkedIn个人资料与职位描述的匹配度
前置要求
- •HTTP Webhook 端点(n8n 会自动生成)
- •可能需要目标 API 的认证凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "834bc6c387a1c56d0622a24b912577f9e6d66c5873f4e6426166054eb488d8fc",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "99132e0e-7083-49c2-822f-2cb10ac289b7",
"name": "Groq Chat Model4",
"type": "@n8n/n8n-nodes-langchain.lmChatGroq",
"position": [
3200,
-360
],
"parameters": {
"model": "moonshotai/kimi-k2-instruct",
"options": {
"temperature": 0.5
}
},
"credentials": {
"groqApi": {
"id": "MObjm2yYpur8db8w",
"name": "Groq account 3"
}
},
"typeVersion": 1
},
{
"id": "09193e72-e51f-450d-bc0a-d6a8367f66ec",
"name": "获取个人资料详情",
"type": "n8n-nodes-base.httpRequest",
"position": [
1780,
-700
],
"parameters": {
"url": "https://api.ghostgenius.fr/v2/profile",
"options": {},
"sendQuery": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"queryParameters": {
"parameters": [
{
"name": "url",
"value": "={{ $json.body.LinkedIn_CV }}"
}
]
}
},
"credentials": {
"httpBasicAuth": {
"id": "MvNMvU3oWO5seyjn",
"name": "linkedin-proof-of-concept-tool-CV"
},
"httpHeaderAuth": {
"id": "StvB6gMppbwtX437",
"name": "linkedin"
}
},
"typeVersion": 4.2
},
{
"id": "c3ec14e5-245f-4624-890d-a958d1d05f86",
"name": "获取职位详情",
"type": "n8n-nodes-base.httpRequest",
"position": [
1780,
-460
],
"parameters": {
"url": "https://api.ghostgenius.fr/v2/job",
"options": {},
"sendQuery": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"queryParameters": {
"parameters": [
{
"name": "url",
"value": "={{ $json.body.LinkedIn_JD }}"
}
]
}
},
"credentials": {
"httpBasicAuth": {
"id": "MvNMvU3oWO5seyjn",
"name": "linkedin-proof-of-concept-tool-CV"
},
"httpHeaderAuth": {
"id": "StvB6gMppbwtX437",
"name": "linkedin"
}
},
"typeVersion": 4.2
},
{
"id": "8c262246-2fc0-4d89-890f-aa7e7c3cd53f",
"name": "Webhook(获取表单详情)",
"type": "n8n-nodes-base.webhook",
"position": [
940,
-560
],
"webhookId": "fb607944-5e45-4dab-b805-7d0701e5eaa9",
"parameters": {
"path": "linkedin",
"options": {
"allowedOrigins": "*"
},
"httpMethod": "POST",
"responseMode": "responseNode",
"authentication": "basicAuth"
},
"credentials": {
"httpBasicAuth": {
"id": "MvNMvU3oWO5seyjn",
"name": "linkedin-proof-of-concept-tool-CV"
}
},
"typeVersion": 2
},
{
"id": "760b8a86-745c-47c6-8bea-1a9f8ec11da1",
"name": "构建简历",
"type": "n8n-nodes-base.set",
"position": [
2060,
-700
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "622960b0-c560-43c1-acac-d690fe74c8e4",
"name": "headline",
"type": "string",
"value": "={{ $json.headline }}"
},
{
"id": "301956ad-6219-4d8a-9a00-e45cb4a8c941",
"name": "is_premium",
"type": "boolean",
"value": "={{ $json.is_premium }}"
},
{
"id": "01f8fa3c-75c6-4b57-9950-3d8a95fe1082",
"name": "is_creator",
"type": "boolean",
"value": "={{ $json.is_creator }}"
},
{
"id": "9a17e0b8-958e-40cf-ba05-665f1c5e418e",
"name": "geo",
"type": "object",
"value": "={{ $json.geo }}"
},
{
"id": "b77401d1-9ab1-41e2-870c-f8f43c4e141e",
"name": "is_hiring",
"type": "boolean",
"value": "={{ $json.is_hiring }}"
},
{
"id": "4a394eb9-8073-4e82-b65d-bd234ebec960",
"name": "summary",
"type": "string",
"value": "={{ $json.summary }}"
},
{
"id": "73f33e27-2803-43c3-ac79-c1f9c700bc54",
"name": "languages",
"type": "array",
"value": "={{ $json.languages }}"
},
{
"id": "f1628de0-e39a-4862-9732-7f65bb844216",
"name": "experiences",
"type": "array",
"value": "={{ $json.experiences }}"
},
{
"id": "6289a835-92b9-48a7-bce9-04abab217080",
"name": "skills",
"type": "array",
"value": "={{ $json.skills }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "cdba39fe-360b-4076-b1ba-295a7d8a7425",
"name": "合并简历",
"type": "n8n-nodes-base.aggregate",
"position": [
2340,
-660
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData",
"destinationFieldName": "CV"
},
"typeVersion": 1
},
{
"id": "1e7eb8b8-e895-4022-84a0-ce23cdfee286",
"name": "构建职位描述",
"type": "n8n-nodes-base.set",
"position": [
2040,
-460
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "8f021bed-f1bb-44ec-b9ec-f5a69f30e25d",
"name": "title",
"type": "string",
"value": "={{ $json.title }}"
},
{
"id": "7438183a-4fac-4b3a-b33a-13872c23bc4b",
"name": "description",
"type": "string",
"value": "={{ $json.description }}"
},
{
"id": "db24b36e-3e74-408f-87f2-f8c2af088167",
"name": "work_remote_allowed",
"type": "boolean",
"value": "={{ $json.work_remote_allowed }}"
},
{
"id": "0f954876-3608-46c3-85ac-c1808b04e056",
"name": "work_place",
"type": "string",
"value": "={{ $json.work_place }}"
},
{
"id": "3c32fe75-1777-49c7-b7c7-003f8a788644",
"name": "listed_at_date",
"type": "string",
"value": "={{ $json.listed_at_date }}"
},
{
"id": "28fc6507-acd1-4e85-a636-4d3b0a6a81e4",
"name": "contract_type",
"type": "string",
"value": "={{ $json.contract_type }}"
},
{
"id": "79d00697-99df-4503-8029-c65c52109cd4",
"name": "company",
"type": "object",
"value": "={{ $json.company }}"
},
{
"id": "374fba18-00d0-4cef-a7dc-018aad986754",
"name": "apply_method.company_apply_url",
"type": "string",
"value": "={{ $json.apply_method.company_apply_url }}"
},
{
"id": "fc5a8073-ea1f-4b36-94bb-6bab1f9203fd",
"name": "hiringTeam",
"type": "string",
"value": "={{ $json.hiringTeam }}"
},
{
"id": "0f3a24dc-7a06-47ef-be43-3aa7b8293609",
"name": "location",
"type": "string",
"value": "={{ $json.location }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "fdeb23f6-f2d7-42cf-b582-2a8dea61d370",
"name": "合并职位描述",
"type": "n8n-nodes-base.aggregate",
"position": [
2340,
-500
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData",
"destinationFieldName": "JD"
},
"typeVersion": 1
},
{
"id": "f4968f34-f4c4-4480-85bc-52c5d60dfe55",
"name": "ATS 对比",
"type": "n8n-nodes-base.set",
"position": [
2940,
-600
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "eb3cb6e0-8bac-476a-ae4f-e76c87a1cf6f",
"name": "CV",
"type": "array",
"value": "={{ $json.CV }}"
},
{
"id": "84f7795e-ba27-4982-b6b4-f40676846153",
"name": "JD",
"type": "array",
"value": "={{ $json.JD }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "4cba76a8-a973-4450-8b82-34ccde324f96",
"name": "合并2",
"type": "n8n-nodes-base.merge",
"position": [
2660,
-600
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineAll"
},
"typeVersion": 3
},
{
"id": "bb684bd3-d9a1-4f01-acd7-a82d977c08ad",
"name": "响应 Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
3980,
-620
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "={{ $json }}"
},
"typeVersion": 1.1
},
{
"id": "56cde4ed-dcaa-4b8b-8432-77304a208867",
"name": "招聘人员检查",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
3260,
-620
],
"parameters": {
"text": "=Job Description JSON:\n{{ $json.JD.toJsonString()}}\n\nCandidate CV JSON:\n{{ $json.CV.toJsonString()}}\n---\n\nOutput ONLY one JSON object that conforms exactly to the Match_Result schema. All arrays must be included, even if empty. All string values must be in double quotes.",
"options": {
"systemMessage": "=You are an expert ATS evaluator, recruitment assistant, and career advisor. \nYour ONLY task is to analyze the given Job Description (JD) JSON and Candidate CV JSON, \ncompare them, and output a structured JSON matching the `Match_Result` schema below.\n\nImportant Output Rules:\n- Return ONLY valid JSON (nothing else, no prose, no markdown).\n- Always include ALL fields in the schema. If no matches, return an empty array for that field.\n- Use canonicalized keyword tokens for \"matched_keywords\", \"missing_keywords_required\", and \"missing_keywords_nice_to_have\".\n- When a candidate’s CV provides evidence for a skill or requirement but phrases it differently, return the canonical keyword **followed by parentheses** with the CV’s actual wording.\n - Example: `\"Quota carrying experience (Achieved 120% of sales targets as SDR)\"`.\n- Reasoning should be factual ATS‑style notes (explain what is matched/missing).\n- Recommendation = one clear action statement.\n- Optimization tips must be **CV-focused, practical actions** the candidate can take.\n\n---\n\nSchema (must always be returned exactly like this, with all keys):\n\n{\n \"status\": \"core_match | good_match | mismatch\",\n \"reasoning\": [\"string\"],\n \"recommendation\": \"string\",\n \"matched_keywords\": [\"string\"],\n \"missing_keywords_required\": [\"string\"],\n \"missing_keywords_nice_to_have\": [\"string\"],\n \"optimization_tips\": [\"string\"],\n \"location_match\" : [\"boolean\"]\n}\n\n---\n\nDefinitions:\n- \"mismatch\": Candidate fails at least 1 bare minimum requirement from JD (e.g., location, required language, quota-carrying).\n- \"core_match\": Candidate meets all minimums but does not exceed them.\n- \"good_match\": Candidate meets all minimums and shows extra strengths (additional experience, languages, certifications, strong metrics).\n\n---"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.7
},
{
"id": "64629a52-6d90-4068-879b-268001080e7f",
"name": "条件判断",
"type": "n8n-nodes-base.if",
"position": [
1180,
-560
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "4c3cb62d-3070-4105-8155-d05a08667548",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $json.body.LinkedIn_CV }}",
"rightValue": "linkedin.com/"
},
{
"id": "ff692e0f-21eb-45fa-96e7-3171588f5e90",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $json.body.LinkedIn_JD }}",
"rightValue": "linkedin.com/"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "25678030-b9a8-461a-80cb-d26ebd19cc34",
"name": "错误节点",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
1560,
-280
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "={\n \"thankYouMessage\": \"<div class='flex flex-col items-center justify-center text-center space-y-4 p-4'><h2 class='text-xl font-bold text-red-600'>Invalid URL</h2><p>The URL you submitted appears to be incorrect or inaccessible.</p><p>Please double-check the link and try again.</p></div>\"\n}"
},
"typeVersion": 1.1
},
{
"id": "d02f55f3-adf4-4219-8b13-4b40d46ea773",
"name": "感谢消息",
"type": "n8n-nodes-base.code",
"position": [
3660,
-600
],
"parameters": {
"jsCode": "return items.map(item => {\n let parsed = {};\n\n try {\n // Parse the \"output\" field which is a JSON string\n parsed = JSON.parse(item.json.output);\n } catch (error) {\n parsed = { error: 'Invalid JSON in output field', details: error.message };\n }\n\n function makeList(arr) {\n if (!arr || arr.length === 0) return \"<li>None</li>\";\n return arr.map(x => `<li>${x}</li>`).join(\"\");\n }\n\n const html = `\n <div class=\"flex flex-col items-start justify-start text-left space-y-4 p-4\">\n <h2 class=\"text-xl font-bold\">Analysis Result</h2>\n <p><strong>Status:</strong> ${parsed.status ?? ''}</p>\n <div class=\"text-sm space-y-2\">\n <p><strong>Reasoning:</strong></p>\n <ul class=\"list-disc list-inside text-left\">${makeList(parsed.reasoning)}</ul>\n </div>\n <p><strong>Recommendation:</strong> ${parsed.recommendation ?? ''}</p>\n <div class=\"text-sm space-y-2\">\n <p><strong>Matched Keywords:</strong></p>\n <ul class=\"list-disc list-inside text-left\">${makeList(parsed.matched_keywords)}</ul>\n </div>\n <div class=\"text-sm space-y-2\">\n <p><strong>Missing (Required):</strong></p>\n <ul class=\"list-disc list-inside text-left\">${makeList(parsed.missing_keywords_required)}</ul>\n </div>\n <div class=\"text-sm space-y-2\">\n <p><strong>Missing (Nice to have):</strong></p>\n <ul class=\"list-disc list-inside text-left\">${makeList(parsed.missing_keywords_nice_to_have)}</ul>\n </div>\n <div class=\"text-sm space-y-2\">\n <p><strong>Optimization Tips:</strong></p>\n <ul class=\"list-disc list-inside text-left\">${makeList(parsed.optimization_tips)}</ul>\n </div>\n </div>`;\n\n return {\n json: {\n thankYouMessage: html\n }\n };\n});"
},
"typeVersion": 2
},
{
"id": "d8f8bbeb-3199-43e2-8375-846d657b5ba5",
"name": "工作流描述(便签)1",
"type": "n8n-nodes-base.stickyNote",
"position": [
420,
-1160
],
"parameters": {
"width": 440,
"height": 920,
"content": "## 📌 工作流描述"
},
"typeVersion": 1
},
{
"id": "2dc1eb5a-c00f-4039-a317-8cea1880aa68",
"name": "分析结果(便签)",
"type": "n8n-nodes-base.stickyNote",
"position": [
4240,
-1080
],
"parameters": {
"width": 920,
"height": 940,
"content": "## 📝 分析结果"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"If": {
"main": [
[
{
"node": "Get profile details",
"type": "main",
"index": 0
},
{
"node": "Get job details",
"type": "main",
"index": 0
}
],
[
{
"node": "Error_node",
"type": "main",
"index": 0
}
]
]
},
"Merge2": {
"main": [
[
{
"node": "ATS compare",
"type": "main",
"index": 0
}
]
]
},
"Build CV": {
"main": [
[
{
"node": "Combine_CV",
"type": "main",
"index": 0
}
]
]
},
"Build JD": {
"main": [
[
{
"node": "Combine_JD",
"type": "main",
"index": 0
}
]
]
},
"Combine_CV": {
"main": [
[
{
"node": "Merge2",
"type": "main",
"index": 0
}
]
]
},
"Combine_JD": {
"main": [
[
{
"node": "Merge2",
"type": "main",
"index": 1
}
]
]
},
"Error_node": {
"main": [
[]
]
},
"ATS compare": {
"main": [
[
{
"node": "Recruiter Check",
"type": "main",
"index": 0
}
]
]
},
"Recruiter Check": {
"main": [
[
{
"node": "ThankYOU message",
"type": "main",
"index": 0
}
]
]
},
"Groq Chat Model4": {
"ai_languageModel": [
[
{
"node": "Recruiter Check",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"ThankYOU message": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Get job details": {
"main": [
[
{
"node": "Build JD",
"type": "main",
"index": 0
}
]
]
},
"Get profile details": {
"main": [
[
{
"node": "Build CV",
"type": "main",
"index": 0
}
]
]
},
"Webhook (GET Form details)": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 杂项, AI 摘要总结, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
竞争对手内容差距分析器:自动化网站主题映射
使用Gemini AI、Apify和Google Sheets分析竞争对手内容差距
If
Set
Code
+10
30 节点Mychel Garzon
杂项
每日 WhatsApp 群组智能分析:GPT-4.1 分析与语音消息转录
每日 WhatsApp 群组智能分析:GPT-4.1 分析与语音消息转录
If
Set
Code
+20
52 节点Daniel Lianes
杂项
使用Mistral AI OCR和JigsawStack分类和提取平面图数据
使用Mistral AI OCR和JigsawStack分类和提取平面图数据
If
Code
Switch
+6
24 节点Stephan Koning
杂项
使用AI分析检测病毒式YouTube视频并发送邮件报告
使用AI分析检测病毒式YouTube视频并发送邮件报告
Set
Code
Sort
+14
26 节点gclbck
杂项
灵活新闻聚合器 - 多源集成、AI分析和可设置频道
多源新闻策展系统,集成Mistral AI分析、摘要和自定义频道
If
Set
Xml
+32
120 节点Hybroht
内容创作
使用OpenAI和n8n从URL、文本和PDF进行AI内容摘要
使用OpenAI GPT-4.1-mini从URL、文本和PDF汇总内容
If
Set
Switch
+8
47 节点Dahiana
杂项
工作流信息
难度等级
高级
节点数量17
分类3
节点类型11
作者
Stephan Koning
@reklaimAccount Executive by day , Noco builder for fun at night and always a proud dad of Togo the Samoyed.
外部链接
在 n8n.io 查看 →
分享此工作流