Agente de LinkedIn v2
Este es unSales, AIflujo de automatización del dominio deautomatización que contiene 29 nodos.Utiliza principalmente nodos como If, Code, Wait, Gmail, Hunter, combinando tecnología de inteligencia artificial para lograr automatización inteligente. Búsqueda automatizada de leads de LinkedIn y envío de correos fríos personalizados usando OpenAI, Hunter y Gmail
- •Cuenta de Google y credenciales de API de Gmail
- •Pueden requerirse credenciales de autenticación para la API de destino
- •Credenciales de API de Google Sheets
- •Clave de API de OpenAI
Nodos utilizados (29)
Categoría
{
"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": "Esperar",
"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": "Cuando se recibe un mensaje en el chat",
"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": "Crear una nueva hoja",
"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": "Agregar columnas a la nueva hoja",
"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": "Establecer número de página para búsqueda 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": "Búsqueda Booleana 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": "Si no se alcanzan los resultados deseados",
"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": "Adjuntar los resultados a la hoja",
"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": "Código",
"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": "Extraer nombre, apellido, dominio",
"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": "Extraer todas las URLs de linkedin y contexto laboral de la respuesta http de google",
"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": "Sumar 10 al inicio - Ir a la siguiente página",
"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": "Generar cadena de búsqueda booleana",
"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": "Extraer detalles de contacto",
"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": "Nota adhesiva4",
"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": "Nota adhesiva",
"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": "Columnas a agregar: 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": "Nota adhesiva1",
"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": "Nota adhesiva3",
"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": "Nota adhesiva2",
"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": "Nota adhesiva5",
"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": "Extraer asunto y cuerpo del correo",
"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": "Generador de correos fríos personalizados",
"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": "Nota adhesiva6",
"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": "Nota adhesiva7",
"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": "Nota adhesiva8",
"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": "Nota adhesiva9",
"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
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - Ventas, Inteligencia Artificial
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
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.
Compartir este flujo de trabajo