LinkedIn 代理 v2
高级
这是一个Sales, AI领域的自动化工作流,包含 29 个节点。主要使用 If, Code, Wait, Gmail, Hunter 等节点,结合人工智能技术实现智能自动化。 使用 OpenAI、Hunter 和 Gmail 自动寻找 LinkedIn 潜在客户并发送个性化冷邮件
前置要求
- •Google 账号和 Gmail API 凭证
- •可能需要目标 API 的认证凭证
- •Google Sheets API 凭证
- •OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "e49UBJheMiRF7iDk",
"meta": {
"instanceId": "7b22476bf9699de09fe66fed92056e8ae798418cc9901fa9bd85bb46439116b8",
"templateCredsSetupCompleted": true
},
"name": "LinkedIn Agent v2",
"tags": [
{
"id": "V4LdVOYIGIbfdqvb",
"name": "linkedin",
"createdAt": "2025-06-11T18:52:18.612Z",
"updatedAt": "2025-06-11T18:52:18.612Z"
},
{
"id": "qlvLkg4Mxoeos0VK",
"name": "cold email",
"createdAt": "2025-06-11T18:52:31.368Z",
"updatedAt": "2025-06-11T18:52:31.368Z"
},
{
"id": "yt7Z3T0SDl1Coo7S",
"name": "hunter",
"createdAt": "2025-06-11T18:52:25.423Z",
"updatedAt": "2025-06-11T18:52:25.423Z"
}
],
"nodes": [
{
"id": "0fa236a3-2e00-4710-ab5f-a5d237dcfa90",
"name": "等待",
"type": "n8n-nodes-base.wait",
"position": [
760,
880
],
"webhookId": "39010e58-367a-490c-a827-0e06d5d47a51",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "5d57cbba-4061-4f2f-b4a1-f99ef47eedcc",
"name": "当收到聊天消息时",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
440,
400
],
"webhookId": "34291cf6-4908-4be5-9cf6-df085702abd2",
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "af9ccdbe-30aa-451c-851c-3f2b6418c211",
"name": "创建新工作表",
"type": "n8n-nodes-base.googleSheets",
"position": [
1120,
400
],
"parameters": {
"title": "={{ $('Generate a Boolean Search String').item.json.choices[0].message.content.sheet_name + ' ' + $now }}\n",
"options": {},
"operation": "create",
"documentId": {
"__rl": true,
"mode": "list",
"value": "1e-yJEDemablqkYm7Yen02vZBiMjfsPNnm9c5D5wDt-E",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1e-yJEDemablqkYm7Yen02vZBiMjfsPNnm9c5D5wDt-E/edit?usp=drivesdk",
"cachedResultName": "n8n test"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "u5NHPs335Uzgd0AU",
"name": "Google Sheets account 2"
}
},
"typeVersion": 4.5
},
{
"id": "36698cf4-3d75-491f-b4da-bdb7b6d2d3c1",
"name": "向新工作表添加列",
"type": "n8n-nodes-base.googleSheets",
"position": [
760,
640
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "linkedin_url",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "linkedin_url",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "={{ $('Create a new sheet').item.json.title }}"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1e-yJEDemablqkYm7Yen02vZBiMjfsPNnm9c5D5wDt-E",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1e-yJEDemablqkYm7Yen02vZBiMjfsPNnm9c5D5wDt-E/edit?usp=drivesdk",
"cachedResultName": "n8n test"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "u5NHPs335Uzgd0AU",
"name": "Google Sheets account 2"
}
},
"typeVersion": 4.5
},
{
"id": "84149de7-58b5-498c-aebc-ec79ec7317fa",
"name": "设置 Google 搜索的页码",
"type": "n8n-nodes-base.code",
"position": [
1060,
640
],
"parameters": {
"jsCode": "return [{ json: { start: 0 } }];\n"
},
"typeVersion": 2
},
{
"id": "119084c3-a1d8-4007-9421-764f4625d5dc",
"name": "Google 布尔搜索",
"type": "n8n-nodes-base.httpRequest",
"position": [
1080,
880
],
"parameters": {
"url": "https://www.google.com/search",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "={{ $('Generate a Boolean Search String').first().json.choices[0].message.content.search_string }}\n"
},
{
"name": "start",
"value": "={{ $json.start }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "User-Agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "blc3rCxHTbCbg5PY",
"name": "Header Auth account"
}
},
"typeVersion": 4.2
},
{
"id": "2ae7afc6-727d-4c25-8f3b-dc6e613b813b",
"name": "如果未达到预期结果",
"type": "n8n-nodes-base.if",
"position": [
400,
900
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "da9f8de0-1e75-4ff3-9f81-8e911251416b",
"operator": {
"type": "number",
"operation": "lt"
},
"leftValue": "={{ $json.start }}",
"rightValue": 3
},
{
"id": "a891c085-7f49-4523-8610-40577b3ffd3b",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "650665b9-cb6e-4e69-b039-4962a9a0efca",
"name": "将结果追加到工作表",
"type": "n8n-nodes-base.googleSheets",
"position": [
380,
1320
],
"parameters": {
"columns": {
"value": {
"email": "={{ $json.email }}",
"context": "={{ $('Extracts fname, lname, domainname').item.json.meaningful_context }}",
"last_name": "={{ $('Extracts fname, lname, domainname').item.json.last_name }}",
"email_body": "={{ $('Extract subject and email body').item.json.emailBody }}",
"first_name": "={{ $('Extracts fname, lname, domainname').item.json.first_name }}",
"domain_name": "={{ $('Extracts fname, lname, domainname').item.json.domain_name }}",
"linkedin_url": "={{ $('Extracts all linkedin urls and workplace context from the google http response').item.json.linkedin_url }}",
"email_subject": "={{ $('Extract subject and email body').item.json.subject }}"
},
"schema": [
{
"id": "linkedin_url",
"type": "string",
"display": true,
"required": false,
"displayName": "linkedin_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "first_name",
"type": "string",
"display": true,
"required": false,
"displayName": "first_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "last_name",
"type": "string",
"display": true,
"required": false,
"displayName": "last_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "domain_name",
"type": "string",
"display": true,
"required": false,
"displayName": "domain_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "context",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "context",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email_subject",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "email_subject",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email_body",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "email_body",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "={{ $('Create a new sheet').first().json.title }}"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1e-yJEDemablqkYm7Yen02vZBiMjfsPNnm9c5D5wDt-E",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1e-yJEDemablqkYm7Yen02vZBiMjfsPNnm9c5D5wDt-E/edit?usp=drivesdk",
"cachedResultName": "n8n test"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "u5NHPs335Uzgd0AU",
"name": "Google Sheets account 2"
}
},
"typeVersion": 4.5
},
{
"id": "5289c588-a2d0-41d9-94e9-5e1ab564c78f",
"name": "代码",
"type": "n8n-nodes-base.code",
"position": [
4960,
600
],
"parameters": {
"jsCode": "const items = $input.all();\nconst updatedItems = items.map((item) => {\n const urlParts = item.json.linkedin_url.split(\"/\");\n const domain = urlParts[2];\n const nameParts = urlParts[4].split(\"-\");\n const firstName = nameParts[0];\n const lastName = nameParts[1];\n return { ...item.json, firstName, lastName, domain };\n});\nreturn updatedItems;\n"
},
"typeVersion": 2
},
{
"id": "5e6b2802-6710-4851-ab2e-4d29c9c5e644",
"name": "提取名字、姓氏、域名",
"type": "n8n-nodes-base.code",
"position": [
1080,
1140
],
"parameters": {
"jsCode": "const items = $input.all();\nconst updatedItems = items.map(item => {\n const content = item.json.message.content || \"\";\n\n // Prepare variables\n let linkedin_url = \"\";\n let first_name = \"\";\n let last_name = \"\";\n let domain_name = \"\";\n let meaningful_context = \"\";\n\n const jsonMatch = content.match(/{[\\s\\S]*}/);\n\n if (jsonMatch) {\n // 1️⃣ Try to parse as JSON\n try {\n const data = JSON.parse(jsonMatch[0]);\n linkedin_url = data.linkedin_url || \"\";\n first_name = data.first_name || \"\";\n last_name = data.last_name || \"\";\n domain_name = data.domain_name || \"\";\n meaningful_context = data.meaningful_context || \"\";\n } catch (e) {\n // If JSON parsing fails, fallback to regex extraction\n const urlMatch = content.match(/linkedin_url:\\s*(\\S+)/i);\n const firstMatch = content.match(/first_name:\\s*(\\S+)/i);\n const lastMatch = content.match(/last_name:\\s*(\\S+)/i);\n const domainMatch = content.match(/domain_name:\\s*(\\S+)/i);\n const contextMatch = content.match(/meaningful_context:\\s*(.+)/i);\n\n linkedin_url = urlMatch ? urlMatch[1].trim() : \"\";\n first_name = firstMatch ? firstMatch[1].trim() : \"\";\n last_name = lastMatch ? lastMatch[1].trim() : \"\";\n domain_name = domainMatch ? domainMatch[1].trim() : \"\";\n meaningful_context = contextMatch ? contextMatch[1].trim() : \"\";\n }\n } else {\n // 2️⃣ If no JSON found, fallback to regex extraction\n const urlMatch = content.match(/linkedin_url:\\s*(\\S+)/i);\n const firstMatch = content.match(/first_name:\\s*(\\S+)/i);\n const lastMatch = content.match(/last_name:\\s*(\\S+)/i);\n const domainMatch = content.match(/domain_name:\\s*(\\S+)/i);\n const contextMatch = content.match(/meaningful_context:\\s*(.+)/i);\n\n linkedin_url = urlMatch ? urlMatch[1].trim() : \"\";\n first_name = firstMatch ? firstMatch[1].trim() : \"\";\n last_name = lastMatch ? lastMatch[1].trim() : \"\";\n domain_name = domainMatch ? domainMatch[1].trim() : \"\";\n meaningful_context = contextMatch ? contextMatch[1].trim() : \"\";\n }\n\n // Store back on the item\n item.json.linkedin_url = linkedin_url;\n item.json.first_name = first_name;\n item.json.last_name = last_name;\n item.json.domain_name = domain_name;\n item.json.meaningful_context = meaningful_context;\n\n return item;\n});\n\nreturn updatedItems;"
},
"typeVersion": 2
},
{
"id": "f611ee14-5864-4032-8ae1-3342658be76f",
"name": "从 Google HTTP 响应中提取所有 LinkedIn 链接和工作场所上下文",
"type": "n8n-nodes-base.code",
"position": [
400,
1140
],
"parameters": {
"jsCode": "function extractLinkedInProfiles(html) {\n // Decode HTML entities\n html = html.replace(/&/g, '&')\n .replace(/\\u003d/g, '=')\n .replace(/\\x22/g, '\"')\n .replace(/\\x26/g, '&')\n .replace(/\\x3e/g, '>')\n .replace(/\\x3c/g, '<');\n\n const patterns = [\n /(?:https?:)?\\/\\/(?:[a-z]{2,}\\.)?linkedin\\.com\\/in\\/[a-zA-Z0-9._-]+(?:\\/[a-z]{2})?/gi,\n /(?:\"url\"|url=)(?:[^\"&]*?)(?:https?:)?\\/\\/(?:[a-z]{2,}\\.)?linkedin\\.com\\/in\\/[a-zA-Z0-9._-]+(?:\\/[a-z]{2})?/gi,\n /\"(?:https?:)?\\/\\/(?:[a-z]{2,}\\.)?linkedin\\.com\\/in\\/[a-zA-Z0-9._-]+(?:\\/[a-z]{2})?\"/gi\n ];\n\n const urls = new Set();\n const urlPositions = [];\n\n patterns.forEach(pattern => {\n const matches = html.matchAll(pattern);\n for (const match of matches) {\n let url = match[0];\n url = url.replace(/^\"url\"|^url=|\"$/g, '')\n .replace(/^['\"]|['\"]$/g, '')\n .replace(/\\\\+/g, '')\n .trim();\n if (!url.startsWith('http')) {\n url = 'https://' + url.replace(/^\\/\\//, '');\n }\n if (url.includes('linkedin.com/in/')) {\n url = url.split(/[?#&]/)[0];\n url = url.replace(/\\/$/, '');\n if (!urls.has(url)) {\n urls.add(url);\n urlPositions.push({ url, index: html.indexOf(url) });\n }\n }\n }\n });\n\n function stripTags(str) {\n return str.replace(/<[^>]+>/g, ' ').replace(/\\s+/g, ' ').trim();\n }\n\n function extractWorkplaceContext(html, index) {\n const after = html.substring(index, Math.min(html.length, index + 4000));\n\n // 1. Find <div class=\"YrbPuc\">...</div>\n let contextText = '';\n const yrbMatch = after.match(/<div[^>]+class=\"[^\"]*YrbPuc[^\"]*\"[^>]*>([\\s\\S]*?)<\\/div>/i);\n if (yrbMatch) {\n contextText += stripTags(yrbMatch[1]) + ' ';\n }\n\n // 2. Find <div class=\"VwiC3b ...\">...</div>\n const vwiMatch = after.match(/<div[^>]+class=\"[^\"]*VwiC3b[^\"]*\"[^>]*>([\\s\\S]*?)<\\/div>/i);\n if (vwiMatch) {\n contextText += stripTags(vwiMatch[1]);\n }\n\n // Fallback: if nothing found, return up to 500 chars after the URL (stripped)\n if (!contextText.trim()) {\n contextText = stripTags(after.substring(0, 500));\n }\n\n return contextText.trim();\n }\n\n // Build result array\n const results = urlPositions.map(({ url, index }) => {\n const workplace_context = extractWorkplaceContext(html, index);\n return {\n linkedin_url: url,\n workplace_context\n };\n });\n\n return results;\n}\n\n// Get the HTML from input\nconst html = $input.first().json.data;\n\n// Extract LinkedIn profiles with workplace context (plain text)\nreturn extractLinkedInProfiles(html);"
},
"typeVersion": 2
},
{
"id": "7b60c3e0-d6b3-4652-93d4-805bbe7f095c",
"name": "起始值加10 - 转到下一页",
"type": "n8n-nodes-base.code",
"position": [
100,
900
],
"parameters": {
"jsCode": "// Get the start value from 'Edit Fields2' node\nconst startValue =$('If desired results not reached').first().json.start;\n\n// Add 10 to the start value\nconst start = startValue + 10;\n\n// Return the new value\nreturn [{ json: { start } }];\n"
},
"typeVersion": 2
},
{
"id": "f19b8bac-a55f-43cf-bd74-fa59fc0c217c",
"name": "生成布尔搜索字符串",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
740,
400
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "You are an expert in Boolean search techniques for Google. When the user send a job description, generate a search string specifically for finding LinkedIn profiles. Your response must always follow this exact format:\nsite:linkedin.com/in [Boolean search string]\n\nif a [Company Name] is mentioned always include \"at [Company Name]\" or \"company [Company Name]\" in the Boolean string.\n\nCreate the Boolean search string using precise operators (AND, OR, \"\", *, -) to match the job requirements. Focus only on generating the search string - provide no additional commentary or explanations unless specifically requested.\n\nAlso return sheet_name (less than 100 char)"
},
{
"content": "={{ $json.chatInput }}"
}
]
},
"simplify": false,
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "jtWO101PBVIMkiwq",
"name": "OpenAi account"
}
},
"retryOnFail": false,
"typeVersion": 1.8
},
{
"id": "7b57464a-d650-465b-91fd-d87aa8884517",
"name": "提取联系方式",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
680,
1140
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "chatgpt-4o-latest",
"cachedResultName": "CHATGPT-4O-LATEST"
},
"options": {},
"messages": {
"values": [
{
"content": "=For each {{ $json.linkedin_url }} and {{ $json.workplace_context }} extract linkedin_url, first_name, last_name, domain_name and meaningful_context. First_name is the first name of the person, last_name is the last name of the person, domain_name is the place of current work and meaningful_context is workplace context written in English sentences that make sense.\nDomain_name is where the person currently works. Figure it out from the workplace_context. Append \".com\", \".ai\", or \".org\" based on what the domain name and output the domain name. "
}
]
}
},
"credentials": {
"openAiApi": {
"id": "jtWO101PBVIMkiwq",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "18fba241-bb89-4468-bbf0-6bec4e75612c",
"name": "便签说明4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1240,
840
],
"parameters": {
"color": 4,
"width": 320,
"height": 180,
"content": "获取此 Cookie-Editor。https://chromewebstore.google.com/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm"
},
"typeVersion": 1
},
{
"id": "ebb1f62f-3206-46f3-873e-36d78eb134dc",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
660,
1060
],
"parameters": {
"color": 4,
"width": 320,
"height": 180,
"content": "这基本上调用 ChatGPT 从工作场所上下文中推断工作地点。这有助于为 Hunter 形成域名。"
},
"typeVersion": 1
},
{
"id": "e7283690-37fb-4ca6-8797-d0b07026e0a6",
"name": "要添加的列:linkedin_url、first_name、last_name、email、context、domain",
"type": "n8n-nodes-base.code",
"position": [
420,
640
],
"parameters": {
"jsCode": "return [\n {\n json: {\n linkedin_url: \"\",\n first_name: \"\",\n last_name: \"\",\n domain_name: \"\",\n email: \"\",\n context: \"\",\n email_subject:\"\",\n email_body:\"\"\n },\n },\n];\n"
},
"typeVersion": 2
},
{
"id": "98eb8c1b-a90d-497b-865f-70db3a79ba4a",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
720,
300
],
"parameters": {
"width": 300,
"content": "在\"用于连接的凭据\"下添加您的 openAI API 密钥。在此处查找:https://platform.openai.com/settings/organization/api-keys"
},
"typeVersion": 1
},
{
"id": "463dc7e3-711b-4d9f-8b23-6622215e20e9",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
820
],
"parameters": {
"color": 5,
"width": 200,
"height": 200,
"content": "等待5秒以避免 Google 的速率限制。虽然由于您使用 Cookie 进行了认证,不太可能被限制速率,但这只是一个预防措施。"
},
"typeVersion": 1
},
{
"id": "db7b1096-5381-4daf-8aac-ab491921d862",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
60,
760
],
"parameters": {
"width": 300,
"content": "对于第一个条件:{{ $json.start }} 小于50,因此将\"50\"更改为您期望的结果数量。"
},
"typeVersion": 1
},
{
"id": "4a9d208c-c989-4630-a013-77aa9a3f9bd7",
"name": "便签说明5",
"type": "n8n-nodes-base.stickyNote",
"position": [
180,
1280
],
"parameters": {
"color": 5,
"width": 200,
"height": 200,
"content": "将所有冷邮件存储在 Google 表格中"
},
"typeVersion": 1
},
{
"id": "7b8fb208-bfc3-4d3a-b676-3fc9ea53c5c1",
"name": "Gmail",
"type": "n8n-nodes-base.gmail",
"position": [
1260,
1360
],
"webhookId": "e3c8a3f8-6dac-48e0-90c8-3fb9ac2213fb",
"parameters": {
"message": "={{ $('Extract subject and email body').item.json.emailBody }}",
"options": {
"ccList": "",
"sendTo": "={{ $json.email }}"
},
"subject": "={{ $('Extract subject and email body').item.json.subject }}",
"resource": "draft"
},
"credentials": {
"gmailOAuth2": {
"id": "nl3SKVasBIyYDr5a",
"name": "Gmail account"
}
},
"typeVersion": 2.1
},
{
"id": "1f3132e6-a3d1-4e94-9d3d-bd5ea6e333d0",
"name": "提取主题和邮件正文",
"type": "n8n-nodes-base.code",
"position": [
700,
1360
],
"parameters": {
"jsCode": "const items = $input.all();\nconst updatedItems = items.map((item) => {\n const content = item?.json?.message?.content;\n const [subject, ...emailBodyParts] = content.split(\"\\n\\n\");\n const emailBody = emailBodyParts.join(\"\\n\\n\");\n item.json.subject = subject.replace(\"Subject: \", \"\");\n item.json.emailBody = emailBody;\n return item;\n});\nreturn updatedItems;\n"
},
"typeVersion": 2
},
{
"id": "b4396b3c-83aa-4255-92c1-98b910388101",
"name": "个性化冷邮件生成器",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1360,
1140
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "chatgpt-4o-latest",
"cachedResultName": "CHATGPT-4O-LATEST"
},
"options": {},
"messages": {
"values": [
{
"content": "=Profile name: {{ $json.first_name }}\nProfile last name: {{ $json.last_name }}\nProfile context: {{ $json.meaningful_context }}\n\nProfile LinkedIn URL: {{ $json.linkedin_url }}"
},
{
"role": "system",
"content": "You are an expert at crafting formal, personalized, and compelling cold outreach emails designed to resonate strongly with recipients.\nYour task is to use the context provided on the profile and perform a search on the LinkedIn URL of the profile to write concise yet impactful emails that:\nClearly and professionally introduce the sender.\nPrecisely connect the sender's unique background, expertise, or interests with the recipient's professional experiences, role, achievements, or interests.\nDemonstrate genuine value or relevance to the recipient, making a clear and compelling case for a brief conversation.\nThe receiver should derive value from this cold email.\nPolitely and directly request a brief 15-20 minute call to explore mutual interests or opportunities.\nEnsure each email:\nUses formal language and professional etiquette.\nClearly demonstrates the sender has researched and thoughtfully understands the recipient's role, achievements, or professional context.\nLeverages specific, relevant details from both the sender's background and recipient’s professional profile to establish credibility and genuine interest.\nConcludes with a courteous request for a brief, convenient meeting, explicitly stating availability or willingness to accommodate the recipient's schedule.\nMaintain a respectful, confident tone, and make the email concise, typically no longer than 5-6 sentences. Make sure you sound human-like and not like an AI.\n\nDo not add the sender's email ID or the LinkedIn profile.\nEnd the email with \n\"Best,\n<Sender Name>\"\n\nHere is more information about the sender:\n\nAbhijay currently works as a Product Manager at YouTube within Google where he is responsible for connected experience products (think casting, or getting people to open up their phone) for users watching YouTube on TV.\n\nHe brings experience managing complex stakeholder needs, translating strategy into execution to drive product growth, and building delightful products for 2B+ users.\n\n\nPreviously, at Alpine Investors he drove 0-1 journeys for Gen AI products at the private equity firm and prior to that he was a product management intern on the Ads team at Apple, where he and his team drove a revenue gain of ~$xxM.\n\nPrior to Apple, he worked in the corporate strategy team at Hilti Group in Switzerland, a $6B B2B SaaS firm in the construction space, where he worked with the CEO and the Executive Board in crafting the firm's strategy in a data-driven manner. He was the first data scientist for the group and helped build and scale multiple customer-facing AI initiatives for the company such as Chatbots and Recommender Engines, leading to a revenue gain of $xxM. \n\nAs a product manager and product owner, he led cross-functional teams across Europe and Asia to create innovative solutions that improved customer experience, increased online sales, and opened up new revenue streams. He also mentored and supported young talent, contributed to strategic initiatives, and collaborated with industry leaders such as Amazon Web Services. He is passionate about applying his skills and knowledge to solve complex problems and create positive impact.\n\nHe also worked with a senior advisor, SDG and the CEO of NITI Aayog (think tank for the Government of India and chaired by the honorable Prime Minister of India). \n\nHe holds a B.Tech and M.Tech in Computer Science from IIIT-B, with a specialization in Artificial Intelligence, and an MBA from Harvard Business School."
}
]
}
},
"credentials": {
"openAiApi": {
"id": "jtWO101PBVIMkiwq",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "9822e7c5-1f6a-4c94-a997-d83f30a0160c",
"name": "Hunter",
"type": "n8n-nodes-base.hunter",
"position": [
900,
1360
],
"parameters": {
"domain": "={{ $('Extracts fname, lname, domainname').item.json.domain_name }}",
"lastname": "={{ $('Extracts fname, lname, domainname').item.json.last_name }}",
"firstname": "={{ $('Extracts fname, lname, domainname').item.json.first_name }}",
"operation": "emailFinder"
},
"credentials": {
"hunterApi": {
"id": "ELWffpiY1btUdxl1",
"name": "Hunter account 3"
}
},
"executeOnce": true,
"typeVersion": 1
},
{
"id": "c9813338-95b8-433c-b52b-c78c049575ec",
"name": "便签 6",
"type": "n8n-nodes-base.stickyNote",
"position": [
860,
1320
],
"parameters": {
"color": 5,
"width": 200,
"height": 200,
"content": "在 Hunter.io 上创建账户并在此处添加 API 密钥。免费版每月可使用25次。"
},
"typeVersion": 1
},
{
"id": "28eddff1-1b6b-4d87-a650-0262d2f2ccde",
"name": "便签 7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1080,
320
],
"parameters": {
"color": 5,
"width": 200,
"height": 200,
"content": "请将工作表名称更改为您 Google Drive 中的工作表"
},
"typeVersion": 1
},
{
"id": "e92fb3ad-c98b-4917-98d6-6de847af7425",
"name": "## 为什么选择 4o 模型?👆",
"type": "n8n-nodes-base.stickyNote",
"position": [
1320,
1060
],
"parameters": {
"color": 4,
"width": 320,
"height": 180,
"content": "请更改系统提示以添加关于您自己的信息(当前包含我的详细信息)。同时,根据您感兴趣的任务(工作请求/销售演示等)更改系统提示。"
},
"typeVersion": 1
},
{
"id": "2b8c2dba-4b3c-486d-b765-7bae108802a3",
"name": "便签 9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1360,
1340
],
"parameters": {
"width": 260,
"height": 100,
"content": "请添加您的 Gmail 凭据。您将在 Gmail 草稿文件夹中找到冷邮件草稿以供审阅。"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {},
"versionId": "70ebcd8c-5023-4fee-85af-c94683f7bba0",
"connections": {
"Code": {
"main": [
[]
]
},
"Wait": {
"main": [
[
{
"node": "Google Boolean Search",
"type": "main",
"index": 0
}
]
]
},
"Hunter": {
"main": [
[
{
"node": "Gmail",
"type": "main",
"index": 0
},
{
"node": "Appends the results to the sheet",
"type": "main",
"index": 0
}
]
]
},
"Create a new sheet": {
"main": [
[
{
"node": "Columns to add: linkedin_url, first_name, last_name, email, context, domain",
"type": "main",
"index": 0
}
]
]
},
"Google Boolean Search": {
"main": [
[
{
"node": "Extracts all linkedin urls and workplace context from the google http response",
"type": "main",
"index": 0
}
]
]
},
"Extract Contact Details": {
"main": [
[
{
"node": "Extracts fname, lname, domainname",
"type": "main",
"index": 0
}
]
]
},
"Add columns to new sheet": {
"main": [
[
{
"node": "set page number for google search",
"type": "main",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "Generate a Boolean Search String",
"type": "main",
"index": 0
}
]
]
},
"Extract subject and email body": {
"main": [
[
{
"node": "Hunter",
"type": "main",
"index": 0
}
]
]
},
"If desired results not reached": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
],
[]
]
},
"Appends the results to the sheet": {
"main": [
[
{
"node": "Adds 10 to start - Go to next page",
"type": "main",
"index": 0
}
]
]
},
"Generate a Boolean Search String": {
"main": [
[
{
"node": "Create a new sheet",
"type": "main",
"index": 0
}
]
]
},
"Extracts fname, lname, domainname": {
"main": [
[
{
"node": "Personalized Cold-Email Generator",
"type": "main",
"index": 0
}
]
]
},
"Personalized Cold-Email Generator": {
"main": [
[
{
"node": "Extract subject and email body",
"type": "main",
"index": 0
}
]
]
},
"set page number for google search": {
"main": [
[
{
"node": "If desired results not reached",
"type": "main",
"index": 0
}
]
]
},
"Adds 10 to start - Go to next page": {
"main": [
[
{
"node": "If desired results not reached",
"type": "main",
"index": 0
}
]
]
},
"Columns to add: linkedin_url, first_name, last_name, email, context, domain": {
"main": [
[
{
"node": "Add columns to new sheet",
"type": "main",
"index": 0
}
]
]
},
"Extracts all linkedin urls and workplace context from the google http response": {
"main": [
[
{
"node": "Extract Contact Details",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 销售, 人工智能
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
LinkGPT
使用OpenAI和Hunter自动化LinkedIn档案搜索与冷邮件外联
If
Code
Wait
+6
22 节点Abhijay Vuyyuru
销售
域名外联:自动化潜在客户提取和定向触达
域名外联:自动化潜在客户提取和定向触达
If
Code
Wait
+11
31 节点Badr
销售
智能邮件触达序列 - AI驱动且可定制
智能邮件触达序列 - AI驱动且可定制
If
Set
Code
+8
68 节点Badr
销售
使用AI(GPT-4o)自动化数字产品和SaaS销售
使用AI(GPT-4o)自动化数字产品和SaaS销售
If
Code
Wait
+14
34 节点Badr
销售
AI个性化多产品邮件营销
基于SMTP轮换的AI个性化多产品邮件营销(GPT-4o/o3-mini)
If
Code
Wait
+16
41 节点Badr
销售
使用 RetellAI 构建电话代理用于外呼潜在客户资格认证和呼入电话处理 -视频
使用 RetellAI 电话代理、OpenAI GPT-4 和 Google Sheets 自动进行潜在客户资格认定
If
Wait
Gmail
+9
18 节点Dr. Firas
销售
工作流信息
难度等级
高级
节点数量29
分类2
节点类型10
作者
Abhijay Vuyyuru
@abhijayvuyyuruProduct Manager at Google, Harvard MBA and Automation Expert for real-life, business use cases I am a LinkedIn top voice with over 30K+ followers, and over 175K+ views on YouTube. With any purchase of my n8n template, I will offer my full support to get it up an running! Let's automate and create value.
外部链接
在 n8n.io 查看 →
分享此工作流