LinkedInエージェント v2
上級
これはSales, AI分野の自動化ワークフローで、29個のノードを含みます。主にIf, Code, Wait, Gmail, Hunterなどのノードを使用、AI技術を活用したスマート自動化を実現。 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": "fname、lname、domainname を抽出",
"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 URLと職場コンテキストを抽出",
"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": "Get this Cookie-Editor. https://chromewebstore.google.com/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm\n\nDo a google search --> click this extension --> Export --> Header string.\n\nThen, open this node --> under Header Auth --> edit --> and under cookie value paste in your header string. \n\nThis is to perform an authenticated google search.\n"
},
"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": "This basically calls ChatGPT to infer the place of work from workplace context. This helps form the domain name for 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": "Under \"Credential to connect with\" add your openAI API key. Find at: https://platform.openai.com/settings/organization/api-keys\n"
},
"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": "Waits 5 seconds to avoid rate limiting by Google. While it's unlikely you'll be rate-limited since you're authenticated with your cookie, this is just a precaution."
},
"typeVersion": 1
},
{
"id": "db7b1096-5381-4daf-8aac-ab491921d862",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
60,
760
],
"parameters": {
"width": 300,
"content": "For the first condition: {{ $json.start }} is less than 50, so change \"50\" to your desired number of results. \n\nEach loop fetches the next page, returning 10 results per iteration."
},
"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": "Stores all the cold emails in a Google Sheet"
},
"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": "Create an account on Hunter.io and add the API key here. 25 uses a month in the free model."
},
"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": "Please change the name of the sheet to a sheet in your Google Drive"
},
"typeVersion": 1
},
{
"id": "e92fb3ad-c98b-4917-98d6-6de847af7425",
"name": "付箋8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1320,
1060
],
"parameters": {
"color": 4,
"width": 320,
"height": 180,
"content": "Please change the system prompt to add information about yourself (it currently has my details). Also, change the system prompt for the task you are interested in (job request /sales demo etc)"
},
"typeVersion": 1
},
{
"id": "2b8c2dba-4b3c-486d-b765-7bae108802a3",
"name": "付箋9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1360,
1340
],
"parameters": {
"width": 260,
"height": 100,
"content": "Please add your Gmail credentials. You will find the cold email drafts in your Gmail drafts folder for review."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {},
"versionId": "70ebcd8c-5023-4fee-85af-c94683f7bba0",
"connections": {
"5289c588-a2d0-41d9-94e9-5e1ab564c78f": {
"main": [
[]
]
},
"0fa236a3-2e00-4710-ab5f-a5d237dcfa90": {
"main": [
[
{
"node": "119084c3-a1d8-4007-9421-764f4625d5dc",
"type": "main",
"index": 0
}
]
]
},
"9822e7c5-1f6a-4c94-a997-d83f30a0160c": {
"main": [
[
{
"node": "7b8fb208-bfc3-4d3a-b676-3fc9ea53c5c1",
"type": "main",
"index": 0
},
{
"node": "650665b9-cb6e-4e69-b039-4962a9a0efca",
"type": "main",
"index": 0
}
]
]
},
"af9ccdbe-30aa-451c-851c-3f2b6418c211": {
"main": [
[
{
"node": "e7283690-37fb-4ca6-8797-d0b07026e0a6",
"type": "main",
"index": 0
}
]
]
},
"119084c3-a1d8-4007-9421-764f4625d5dc": {
"main": [
[
{
"node": "f611ee14-5864-4032-8ae1-3342658be76f",
"type": "main",
"index": 0
}
]
]
},
"7b57464a-d650-465b-91fd-d87aa8884517": {
"main": [
[
{
"node": "5e6b2802-6710-4851-ab2e-4d29c9c5e644",
"type": "main",
"index": 0
}
]
]
},
"36698cf4-3d75-491f-b4da-bdb7b6d2d3c1": {
"main": [
[
{
"node": "84149de7-58b5-498c-aebc-ec79ec7317fa",
"type": "main",
"index": 0
}
]
]
},
"5d57cbba-4061-4f2f-b4a1-f99ef47eedcc": {
"main": [
[
{
"node": "f19b8bac-a55f-43cf-bd74-fa59fc0c217c",
"type": "main",
"index": 0
}
]
]
},
"1f3132e6-a3d1-4e94-9d3d-bd5ea6e333d0": {
"main": [
[
{
"node": "9822e7c5-1f6a-4c94-a997-d83f30a0160c",
"type": "main",
"index": 0
}
]
]
},
"2ae7afc6-727d-4c25-8f3b-dc6e613b813b": {
"main": [
[
{
"node": "0fa236a3-2e00-4710-ab5f-a5d237dcfa90",
"type": "main",
"index": 0
}
],
[]
]
},
"650665b9-cb6e-4e69-b039-4962a9a0efca": {
"main": [
[
{
"node": "7b60c3e0-d6b3-4652-93d4-805bbe7f095c",
"type": "main",
"index": 0
}
]
]
},
"f19b8bac-a55f-43cf-bd74-fa59fc0c217c": {
"main": [
[
{
"node": "af9ccdbe-30aa-451c-851c-3f2b6418c211",
"type": "main",
"index": 0
}
]
]
},
"5e6b2802-6710-4851-ab2e-4d29c9c5e644": {
"main": [
[
{
"node": "b4396b3c-83aa-4255-92c1-98b910388101",
"type": "main",
"index": 0
}
]
]
},
"b4396b3c-83aa-4255-92c1-98b910388101": {
"main": [
[
{
"node": "1f3132e6-a3d1-4e94-9d3d-bd5ea6e333d0",
"type": "main",
"index": 0
}
]
]
},
"84149de7-58b5-498c-aebc-ec79ec7317fa": {
"main": [
[
{
"node": "2ae7afc6-727d-4c25-8f3b-dc6e613b813b",
"type": "main",
"index": 0
}
]
]
},
"7b60c3e0-d6b3-4652-93d4-805bbe7f095c": {
"main": [
[
{
"node": "2ae7afc6-727d-4c25-8f3b-dc6e613b813b",
"type": "main",
"index": 0
}
]
]
},
"e7283690-37fb-4ca6-8797-d0b07026e0a6": {
"main": [
[
{
"node": "36698cf4-3d75-491f-b4da-bdb7b6d2d3c1",
"type": "main",
"index": 0
}
]
]
},
"f611ee14-5864-4032-8ae1-3342658be76f": {
"main": [
[
{
"node": "7b57464a-d650-465b-91fd-d87aa8884517",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - 営業, 人工知能
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
LinkGPT
OpenAI と Hunter を使って LinkedIn プロフィール検索とコールドメールアウトレッチを自動化
If
Code
Wait
+
If
Code
Wait
22 ノードAbhijay Vuyyuru
営業
ドメインアウトリーチ:自動のなリード抽出とターゲティング
ドメインアウトリーチ:リードの自動抽出とターゲティング
If
Code
Wait
+
If
Code
Wait
31 ノードBadr
営業
GPT-4oを使ったAIによるデジタル製品・SaaS販売の自動化
AI(GPT-4o)によるデジタル製品とSaaSの販売の自動化
If
Code
Wait
+
If
Code
Wait
34 ノードBadr
営業
AI个性化多製品メールマーケティング
基于SMTP轮换のAI个性化多製品メールマーケティング(GPT-4o/o3-mini)
If
Code
Wait
+
If
Code
Wait
41 ノードBadr
営業
RetellAI を使った電話アイドルを構築してリード外提起格付と内向電話処理 -動画
RetellAI 電話アジェント、OpenAI GPT-4、Google Sheets を使った potential customer 資格認定の自動化
If
Wait
Gmail
+
If
Wait
Gmail
18 ノードDr. Firas
営業
リード generationワークフロー:YelpおよびTrustpilotのクローリングにBrightDataを使用し、OpenAIで分析を実施
Yelp と Trustpilot からスクレイビング + AI 駆動のメールアウトレーチでリードを生成します
If
Code
Wait
+
If
Code
Wait
32 ノードIncrementors
営業
ワークフロー情報
難易度
上級
ノード数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で表示 →
このワークフローを共有