{ "name": "Lead Magnet Correo Consultoría Negocio", "nodes": [ { "parameters": { "formTitle": "Consultoría Gratis", "formFields": { "values": [ { "fieldLabel": "Correo al que te enviaremos el análisis", "fieldType": "email", "placeholder": "Correo", "requiredField": true }, { "fieldLabel": "Página web", "placeholder": "Página web", "requiredField": true } ] }, "options": {} }, "type": "n8n-nodes-base.formTrigger", "typeVersion": 2.2, "position": [ 64, -80 ], "id": "9d9ebfd0-e9a9-49f8-859d-9a032becd369", "name": "On form submission", "webhookId": "04c0c9c4-63f0-4609-8952-bd9004089392" }, { "parameters": { "model": { "__rl": true, "value": "gpt-5-mini", "mode": "list", "cachedResultName": "gpt-5-mini" }, "options": {} }, "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", "typeVersion": 1.2, "position": [ 544, 112 ], "id": "1077cccd-ba2e-470a-a5c6-c9977d7aa808", "name": "OpenAI Chat Model", "credentials": { "openAiApi": { "id": "09dgUnK8gQOjzRd3", "name": "OpenAi account" } } }, { "parameters": { "jsonSchemaExample": "{\n \"diagnostic\": {\n \"business_type\": \"string\",\n \"offers\": [\"string\"],\n \"audience\": \"string\",\n \"contact_channels\": [\"email\",\"form\"],\n \"funnels\": [\"string\"],\n \"pain_points\": [\n {\"name\":\"string\",\"evidence\":\"string\",\"likelihood\":0.8}\n ],\n \"meta\": {\n \"url\": \"https://ejemplo.com\",\n \"page_title\": \"string\",\n \"lang_detected\": \"es\",\n \"content_quality\": {\"length_chars\": 12345, \"readability\": \"medium\"},\n \"confidence_overall\": 0.8\n }\n },\n \"copy_kit\": {\n \"compliments\": [\"string\"],\n \"hook_angles\": [\"string\"],\n \"tone_mirror\": { \"traits\": [\"string\"], \"brand_words\": [\"string\"] },\n \"objections\": [{\"objection\":\"string\",\"rebuttal\":\"string\"}],\n \"cta_inventory\": {\n \"existing\": [{\"label\":\"string\",\"url\":\"https://...\"}],\n \"recommended\": [{\"label\":\"string\",\"why\":\"string\"}]\n },\n \"audience_jtbd\": [\n {\"segment\":\"string\",\"job_to_be_done\":\"string\",\"fear\":\"string\",\"hope\":\"string\"}\n ],\n \"improvement_candidates\": [\n {\"title\":\"string\",\"narrative\":\"string\",\"evidence_snippet\":\"string\",\"priority_score\":0.9}\n ]\n }\n}\n" }, "type": "@n8n/n8n-nodes-langchain.outputParserStructured", "typeVersion": 1.3, "position": [ 688, 240 ], "id": "1687d85f-6fe9-4d8a-8176-f5f9d0599c3d", "name": "Structured Output Parser" }, { "parameters": { "jsonSchemaExample": "{\n \"subject\": \"Tu base es sólida. 10 mejoras para escalar sin rehacer la web\",\n \"preheader\": \"Elogio sincero + 10 ajustes concretos + botón para agendar reunión\",\n \"message_html\": \"
Hola Pedro,
Enhorabuena: tu web transmite calma y profesionalidad; la propuesta es clara y cercana. Se nota experiencia real guiando procesos personales y de equipo.
Con esa base, tu negocio tiene mucho potencial para escalar si aplicamos algunos ajustes funcionales que reduzcan fricción y te devuelvan tiempo.
He analizado tu web y te propongo 10 mejoras con impacto directo:
Si quieres escalar con foco y sin complicarte, puedo ayudarte a implementar estos cambios. Agenda una llamada para revisar tu caso y prepararte una propuesta.
\"\n}\n" }, "type": "@n8n/n8n-nodes-langchain.outputParserStructured", "typeVersion": 1.3, "position": [ 960, 224 ], "id": "99f53294-dbbd-427e-9289-95ac73ab979f", "name": "Structured Output Parser1" }, { "parameters": { "promptType": "define", "text": "=Analiza esta información y devuelve el JSON de diagnóstico siguiendo el esquema dado:\n\n{\n \"url\": \"{{ $json.url }}\",\n \"page_title\": \"{{ $json.pageTitle }}\",\n \"text\": \"{{ $json.text }}\",\n \"signals\": {{ JSON.stringify($json.signals) }}\n}\n\n", "hasOutputParser": true, "options": { "systemMessage": "=Eres “AutoOps-DX”, un analista senior de automatización para pymes, coahes, infoproductores e influencers. Tu misión es LEER el contenido de una web (texto plano derivado del HTML) y devolver un DIAGNÓSTICO accionable en JSON ESTRICTO que identifique: tipo de negocio, ofertas, canales de contacto, funnels y PUNTOS DE DOLOR automatizables.\n\n=== PRINCIPIOS OPERATIVOS ===\n1) Cero humo, máxima precisión práctica. Nada de marketing vacío.\n2) Basado en evidencias: ancla cada conclusión en señales del texto. Si infieres, marca probabilidad baja.\n3) Salida EXCLUSIVA en JSON válido (sin comentarios, sin markdown, sin texto adicional).\n4) Español claro y conciso. Nombres cortos, orientados a negocio.\n5) No inventes tecnología interna ni métricas no observables. No uses datos sensibles.\n6) Si el texto es pobre/ruidoso, baja la confianza y explica la limitación en `meta.flags`.\n\n=== NORMALIZACIÓN Y HEURÍSTICAS ===\n- Detecta “business_type” por patrones: \n * “carta”, “menú”, “reservar mesa” → restaurante.\n * “pacientes”, “citas”, “clínica”, “tratamientos” → clínica/consultorio.\n * “carrito”, “checkout”, “SKU”, “tienda” → e-commerce.\n * “servicios”, “portfolio”, “agencia”, “consultoría” → servicios profesionales/agencia.\n * “planes”, “pricing”, “iniciar sesión”, “demo” → SaaS/B2B.\n * “clases”, “curso”, “formación”, “academia” → educación/infoproducto.\n- `contact_channels` (lista, minúsculas, sin duplicados), elegir de:\n [\"whatsapp\",\"telefono\",\"email\",\"form\",\"reserva\",\"tienda\",\"chat\",\"redes\",\"otros\"].\n * Detecta por señales: \n - whatsapp: “wa.me”, “api.whatsapp.com”, icono/cta WhatsApp.\n - telefono: “tel:”, números con +34 y mención “llámanos”.\n - email: “mailto:”, “info@…”, formulario con campo email explícito.\n - form: “contacto”, “solicitar información”, “envía tu consulta”.\n - reserva: “reserva”, “cita”, “appointment”, “book now”.\n - tienda: “carrito”, “añadir al carrito”, “shop”, “checkout”.\n - chat: “chat”, “live chat”, “intercom”, “tawk”, “zendesk chat”.\n - redes: enlaces/íconos a IG/FB/LinkedIn/TikTok como canal principal.\n- `funnels`: resume en 1–2 cadenas simples (ej.: “Descubre → Visita web → Lead/Reserva → Compra/Servicio”).\n- `pain_points`: 5–10 elementos orientados a automatización o mejora de la estratégia de negocio (operativo, captación o gestión). \n * Ejemplos típicos: no-shows, cualificación manual de leads, respuesta lenta por WhatsApp/IG, recordatorios de citas, pedidos sin confirmación, FAQs repetitivas, gestión manual de facturas, seguimiento post-venta, abandono de carrito, ausencia de scoring, reporting manual.\n * `likelihood`: 0.2 (baja), 0.5 (media), 0.8 (alta), 1.0 (muy alta).\n * `evidence`: cita breve o “indicio débil: …” si no hay literal.\n\n=== CALIBRACIÓN DE CONFIANZA ===\n- `meta.confidence_overall` (0–1) según:\n * +0.25 si el texto permite identificar claramente el negocio y ofertas.\n * +0.25 si hay ≥2 canales de contacto detectados.\n * +0.25 si se identifican ≥3 pain points con evidencia.\n * +0.25 si hay señales de funnel (precios/reserva/checkout/demo).\n Ajusta a la baja por: “thin content”, “cookie wall”, “multi idioma confuso”, “JS pesado sin contenido”.\n Clampea 0–1.\n\n=== RESTRICCIONES DE SALIDA ===\n- JSON ESTRICTO, con TODAS las claves del esquema (sin valores null; usa \"\" o [] cuando aplique).\n- No incluyas texto fuera del JSON.\n- Longitud razonable: `offers` máx 10; `pain_points` 7–10; `funnels` 1–2.\n\n=== ESQUEMA OBLIGATORIO ===\n{\n \"diagnostic\": {\n \"business_type\": \"string\",\n \"offers\": [\"string\"],\n \"audience\": \"string\",\n \"contact_channels\": [\"whatsapp\",\"telefono\",\"email\",\"form\",\"reserva\",\"tienda\",\"chat\",\"redes\",\"otros\"],\n \"funnels\": [\"string\"],\n \"pain_points\": [\n {\"name\":\"string\",\"evidence\":\"string\",\"likelihood\":0.0}\n ],\n \"meta\": {\n \"url\":\"string\",\n \"page_title\":\"string\",\n \"lang_detected\":\"string\",\n \"content_quality\": {\"length_chars\":0,\"readability\":\"low|medium|high\"},\n \"confidence_overall\":0.0\n }\n },\n \"copy_kit\": {\n \"compliments\": [\"string\"], \n \"hook_angles\": [\"string\"],\n \"tone_mirror\": {\n \"traits\": [\"string\"],\n \"brand_words\": [\"string\"]\n },\n \"objections\": [\n {\"objection\":\"string\",\"rebuttal\":\"string\"}\n ],\n \"cta_inventory\": {\n \"existing\": [{\"label\":\"string\",\"url\":\"string\"}],\n \"recommended\": [{\"label\":\"string\",\"why\":\"string\"}]\n },\n \"audience_jtbd\": [\n {\"segment\":\"string\",\"job_to_be_done\":\"string\",\"fear\":\"string\",\"hope\":\"string\"}\n ],\n \"improvement_candidates\": [\n {\n \"title\":\"string\",\n \"narrative\": \"2–3 frases en prosa; qué cambiar y cómo implementarlo\",\n \"evidence_snippet\":\"string\",\n \"priority_score\": 0.0\n }\n ]\n }\n}\n\n=== POSTPROCESO INTERNO (HAZLO TÚ) ===\n- `lang_detected`: dedúcelo del texto predominante (“es”, “en”, “pt”, etc.).\n- `content_quality.length_chars`: longitud del texto analizado (aprox).\n- `content_quality.readability`: estima por complejidad y ruido (low/medium/high).\n\n=== EJEMPLO MÍNIMO (ORIENTATIVO, NO LO COPIES A CIEGAS) ===\n{\n \"diagnostic\": {\n \"business_type\": \"servicios profesionales/agencia\",\n \"offers\": [\"Coaching personal\", \"Coaching ejecutivo\"],\n \"audience\": \"Emprendedores y directivos en Madrid\",\n \"contact_channels\": [\"email\",\"form\",\"redes\"],\n \"funnels\": [\n \"Descubre (web/blog) → Contacto → Sesión\",\n \"Redes → DM → Reserva\"\n ],\n \"pain_points\": [\n {\"name\":\"Cualificación manual\",\"evidence\":\"Formulario pide datos sin filtro\",\"likelihood\":0.8},\n {\"name\":\"No hay agenda automatizada\",\"evidence\":\"CTA = Contactar sin widget de reservas\",\"likelihood\":0.8}\n ],\n \"meta\": {\n \"url\":\"https://ejemplo.com\",\n \"page_title\":\"Coaching para líderes\",\n \"lang_detected\":\"es\",\n \"content_quality\": {\"length_chars\":15000,\"readability\":\"medium\"},\n \"confidence_overall\":0.9\n }\n },\n \"copy_kit\": {\n \"compliments\":[\"Tu web transmite confianza\"],\n \"hook_angles\":[\"De Contactar a Reservar en 14 días\"],\n \"tone_mirror\":{\"traits\":[\"cercano\",\"profesional\"],\"brand_words\":[\"claridad\",\"equipo\"]},\n \"objections\":[{\"objection\":\"Prefiero filtrar leads yo\",\"rebuttal\":\"El filtro automático se encarga de lo obvio\"}],\n \"cta_inventory\":{\n \"existing\":[{\"label\":\"Contactar\",\"url\":\"https://ejemplo.com/contacto\"}],\n \"recommended\":[{\"label\":\"Reservar demo 15 min\",\"why\":\"Barrera baja, acción directa\"}]\n },\n \"audience_jtbd\":[{\"segment\":\"emprendedor\",\"job_to_be_done\":\"estructurar hábitos\",\"fear\":\"posponer\",\"hope\":\"claridad y foco\"}],\n \"improvement_candidates\":[\n {\"title\":\"CTA directo a reserva\",\"narrative\":\"Cambiar Contactar por Reservar sesión\",\"evidence_snippet\":\"Todas las CTAs = Contactar\",\"priority_score\":0.9}\n ]\n }\n}\n\n\n\n" } }, "type": "@n8n/n8n-nodes-langchain.agent", "typeVersion": 2.2, "position": [ 544, -80 ], "id": "950ae85d-b336-487a-b566-8f67cf4ec861", "name": "Agente Analista" }, { "parameters": { "promptType": "define", "text": "=Redacta el correo para este diagnóstico:\n{{ JSON.stringify($json.output) }}\n\nParámetros opcionales:\n{\n \"channel\": \"email\",\n \"length\": \"standard\",\n \"style\": \"directo\",\n \"language\": \"es\"\n}", "hasOutputParser": true, "options": { "systemMessage": "=Eres “AutoOps-Redactor”, copywriter senior enfocado en vender servicios de automatización/IA a pymes.\nTu misión: convertir el DIAGNÓSTICO_JSON + COPY_KIT del agente analista en un mensaje comercial que:\n1) Empiece con un elogio genuino (compliments) y explique que el negocio tiene mucho potencial para escalar si aplica algunas mejoras.\n2) Describa EXACTAMENTE 10 mejoras numeradas, redactadas en prosa natural (2–4 frases cada una), vinculando cada dolor con su solución concreta.\n3) Cierre invitando a agendar una llamada para revisar el caso y proponer una solución\n\n=== INPUTS ===\nRecibirás:\n- DIAGNÓSTICO_JSON: { business_type, offers, audience, contact_channels, funnels, pain_points[{name,evidence,likelihood}], meta{url,page_title,lang_detected,content_quality,confidence_overall} }\n- COPY_KIT: {\n compliments[], hook_angles[], tone_mirror{traits[],brand_words[]},\n objections[{objection,rebuttal}], cta_inventory{existing[],recommended[]},\n audience_jtbd[], improvement_candidates[{title,narrative,evidence_snippet,priority_score}]\n }\n- PARAMS opcionales:\n { language, style }\n Defaults: language=DIAGNÓSTICO_JSON.meta.lang_detected || \"es\"; style=\"directo\".\n\n=== ESTRUCTURA DEL MENSAJE (OBLIGATORIA) ===\n- Intro (elogio): usa 1–2 frases de COPY_KIT.compliments (no genéricas; adapta el tono) y reconoce el potencial de escalar.\n- “He analizado tu negocio…” e introduce 10 mejoras numeradas (1–10). Para cada mejora:\n • Redáctala en prosa (no titulares telegráficos). \n • Explica QUÉ se puede cambiar y CÓMO se puede hacer, y por qué mejora conversión/operativa.\n • Ancla cuando proceda con una micro-evidencia (COPY_KIT.improvement_candidates[].evidence_snippet o pain_points[].evidence) entre comillas.\n • Selección: toma las 10 con mayor priority_score de improvement_candidates. Si faltan, completa con pain_points de mayor likelihood.\n- Cierre: Dile que ves el potencial del negocio e invita a “agendar una llamada” para revisar el caso y preparar propuesta.\n\n=== ESTILO Y TONO ===\n- Profesional, directo y alentador. Cero humo, cero jerga innecesaria. \n- Beneficios > procesos. Mantén la voz de marca reflejando tone_mirror.traits y usando algunas brand_words si encajan de forma natural.\n- Si confidence_overall < 0.6, suaviza afirmaciones (“probablemente”, “aparenta”) sin perder claridad.\n- No inventes cifras. Si estimas, marca “estimación”.\n- El mensaje debe ser breve, no te expliques demasiado en cosas que no importan. Di lo que mejorarías, el painpoint que soluciona y pasa al siguiente. Máximo 30 palabras por párrafo.\n\n=== SALIDA (JSON ESTRICTO) ===\nDevuelve SOLO este objeto:\n{\n \"subject\": \"string\",\n \"preheader\": \"string\",\n \"message_html\": \"string\", // versión HTML con.\n- Bloque de mejoras en
en negrita con el título y un texto en bloque
con la mejora..\n\n=== PROCEDIMIENTO ===\n1) Elige 1–2 compliments de COPY_KIT y redacta la intro y explica el potencial (“con pequeños ajustes puedes escalar…”).\n2) Selecciona las 10 mejoras de improvement_candidates por priority_score y conviértelas a prosa numerada; si falta alguna, usa pain_points de mayor likelihood.\n3) Cierra con invitación clara a agendar la llamada.\n\n=== PROHIBICIONES ===\n- No incluyas P.D. \n- No uses markdown en los campos de mensaje.\n- No devuelvas texto fuera del JSON.\n- No le añadas ningúna anotación CSS. No metas todo el contenido dentro de un DIV, que comience directamente con el primer elemento y que ningún elemento tenga ningun estilo. Todo debe ser plano.\n- No devuelvas ningún botón.\n- No menciones la duración de la reunión ni ningún plan a aplicar. Simplemente ofrece la posibilidad de agendar una reunión.\n- No cierres con ninguna firma.\n"
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 2.2,
"position": [
816,
-80
],
"id": "59d81361-361d-4304-8c75-149d207171f1",
"name": "Agente Redactor"
},
{
"parameters": {
"model": {
"__rl": true,
"value": "gpt-5-mini",
"mode": "list",
"cachedResultName": "gpt-5-mini"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
816,
112
],
"id": "db861efa-a51e-45fb-afdc-d680d6a1046f",
"name": "OpenAI Chat Model1",
"credentials": {
"openAiApi": {
"id": "09dgUnK8gQOjzRd3",
"name": "OpenAi account"
}
}
},
{
"parameters": {
"sendTo": "={{ $('On form submission').item.json['Correo al que te enviaremos el análisis'] }}",
"subject": "=⭐️ Resultado del análisis de tu negocio",
"message": "={{ $json.email_html }}",
"options": {
"appendAttribution": false,
"senderName": "Joana Castelló"
}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [
1280,
-80
],
"id": "64c3189b-7cbb-4524-a9b8-b28e6dcf0fd5",
"name": "mandar correo",
"webhookId": "dbd4cd69-7480-45ad-a837-f211595576b0",
"credentials": {
"gmailOAuth2": {
"id": "WM8meqxn9ueIl5kf",
"name": "Gmail account"
}
}
},
{
"parameters": {
"jsCode": "// INPUT: $json.output.message_html (HTML del agente)\nconst RAW = ($input.first().json.output && $input.first().json.output.message_html) || '';\n\nconst BRAND = '#FF9433';\nconst FONT = \"Segoe UI, Tahoma, Geneva, Verdana, sans-serif\";\n\n// INFORMACIÓN REQUERIDA AQUI!!!\nconst CTA = 'AÑADE AQUÍ LA URL A TU CALENDARIO';\nconst NAME = 'AÑADE AQUÍ TU NOMBRE';\n\n// Estilos CTA con degradado (inline-safe)\nconst CTA_INLINE =\n \"display:inline-block;background:linear-gradient(90deg,rgba(255,148,51,1) 30%, rgba(193,175,195,1) 96%);\" +\n \"color:#fff;text-decoration:none;padding:18px 40px;border-radius:16px;font-weight:700;font-size:16px;\" +\n \"box-shadow:0 12px 35px rgba(255,148,51,0.4);text-align:center;min-width:240px;letter-spacing:.5px;\" +\n \"text-transform:uppercase;\";\n\n// Evita reprocesar si ya está marcado\nif (//i.test(RAW)) {\n return [{ email_html: RAW }];\n}\n\n// 1) Limpia estilos en y aplica color marca\nlet src = RAW.replace(/]*?)style=\"[^\"]*?\"([^>]*)>/gi, '');\nsrc = src.replace(/]*)>/gi,\n ``\n);\n\n// 2) Convierte ]*>\\s*([\\s\\S]*?)<\\/strong>\\s*<\\/p>/i);\n const title = (m ? m[1] : `Mejora ${n}`).trim();\n const body = (m ? innerHtml.replace(m[0], '') : innerHtml).trim();\n\n return `\n \n \n
`;\n}\n\nsrc = src.replace(/\n \n \n \n \n
\n \n \n \n \n \n \n /gi, (ol) => {\n const items = [...ol.matchAll(/
\n
\n\n`.replace(/\\n\\s+\\n/g, '\\n');\n\nreturn [{ email_html: html }];\n"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1104,
-80
],
"id": "981134f7-e652-4514-bffd-c67a826ee43e",
"name": "parsear HTML"
},
{
"parameters": {
"jsCode": "const html = $input.first().json.data || '';\nconst cleaned = html\n .replace(/\n \n \n \n \n \n
\n\n \n \n \n\n \n \n \n \n \n \n Programar una llamada\n \n \n
\n\n \n \n \n \n \n
\n \n \n \n \n \n \n
\n \n \n \n \n \n
\n \n
\n Si tienes preguntas, no dudes en contactarme directamente.\n