Ayuda con un workflow. Estoy atascado

Hola buenas,stoy intentado hacer el workflow de Nick Saraev (https://youtu.be/2GZ2SNXWK-c?si=vEHZO8dGKFWNXLMq) a partir de la cual a partir de unos datos de google sheets envía correos a empresas mediante openai. No se que estoy haciendo mal, hablando con la IA tampoco llego a ninguna solución. Cualquier consejo o ayuda al correo: pabloserranovasquez2006@gmail.com, lo agradecería un montón. Muchas gracias!!!
n8n.io - Workflow Automation

Hola @Pablo_Serrano, mientras esperas una respuesta, aquí hay algunas cosas que podrían ayudarte:

Recursos sugeridos

Automáticamente vinculado a tu pregunta.

Documentación:

Foro:

@solomon, @Jekylls - han ayudado con problemas similares antes, ¿pueden echar un vistazo?

Sugerido automáticamente por el bot de la comunidad de n8n. Es un piloto - comparte tu opinión aquí.

¡Hola @Pablo_Serrano! ¡Bienvenido!
Esa es tu propia URL del editor, solo se abre en tu cuenta, así que nadie aquí puede ver el flujo de trabajo. Selecciona todos los nodos en el lienzo con Ctrl+A, cópialos con Ctrl+C, y pega el JSON en un bloque de código en una respuesta aquí. Elimina primero los nombres de credenciales, la copia los lleva consigo.
Publica el texto de error del nodo que falla junto con su panel de entrada y salida. Sin el nodo que falla y su error no hay nada concreto para depurar.
Mantente en el hilo en lugar de enviar correo electrónico, de esa manera cualquiera que encuentre el mismo problema más adelante también encuentra la solución.

Más sobre cómo obtener una respuesta a tu solicitud aquí:

Hola @Pablo_Serrano Para poder ayudarte, necesitamos más detalles específicos. El enlace del flujo de trabajo no es accesible para otros usuarios porque es tu instancia privada de Cloud. ¿Podrías compartir:

¿En cuál nodo específico falla o se detiene?

¿Cuál es el mensaje de error exacto que recibes (captura de pantalla o texto)?

¿Qué esperabas que sucediera frente a lo que realmente sucedió?

Con esa información, alguien podrá ayudarte realmente. Además, quizás quieras editar tu mensaje para eliminar tu correo electrónico personal. Es mejor mantener la conversación aquí en el foro para que pueda ayudar a otros que enfrenten el mismo problema en el futuro.

Hola Pablo_Serrano,
Proporciona tu JSON del flujo de trabajo para que pueda arreglarlo por ti, es un gran enfoque para mí poder ayudar a alguien, gracias.
Nota: Mantenlo en el hilo en lugar de enviarlo por correo electrónico, así si alguien más se encuentra con el mismo problema más adelante, también verá la solución.

Hola buenas,stoy intentado hacer el workflow de Nick Saraev (https://youtu.be/2GZ2SNXWK-c?si=vEHZO8dGKFWNXLMq) a partir de la cual a partir de unos datos de google sheets envía correos a empresas mediante openai. No se que estoy haciendo mal, hablando con la IA tampoco llego a ninguna solución. Cualquier consejo o ayuda al correo , lo agradecería un montón. Muchas gracias!!!

WORKFLOW EN FORMATO JSON:

{
“nodes”: [
{
“parameters”: {},
“type”: “n8n-nodes-base.manualTrigger”,
“typeVersion”: 1,
“position”: [
-96,
496
],
“id”: “815388b3-0e10-4c2c-8312-4e5180dfa21f”,
“name”: “When clicking ‘Execute workflow’”
},
{
“parameters”: {
“documentId”: {
“__rl”: true,
“mode”: “id”,
“value”: “1yZnRCCrx6_8iA_SHacH_wLsz3aPYSn9yJMDvtFK6wuU”
},
“sheetName”: {
“__rl”: true,
“value”: “gid=0”,
“mode”: “list”,
“cachedResultName”: “Hoja 1”,
“cachedResultUrl”: " prueban8n - Google Sheets "
},
“options”: {}
},
“type”: “n8n-nodes-base.googleSheets”,
“typeVersion”: 4.7,
“position”: [
112,
496
],
“id”: “1deb068f-842a-47f3-82ef-483114838d22”,
“name”: “Get row(s) in sheet”,
“credentials”: {
“googleSheetsOAuth2Api”: {
“id”: “l91Lg09x9gnLmisB”,
“name”: “Google Sheets account”
}
}
},
{
“parameters”: {
“modelId”: {
“__rl”: true,
“value”: “gpt-5.1”,
“mode”: “list”,
“cachedResultName”: “GPT-5.1”
},
“responses”: {
“values”: [
{
“role”: “assistant”,
“content”: “Eres un asistente inteligente de escribir correos.”
},
{
“role”: “=user”,
“content”: “=Tu tarea es escribir un correo personalizado. Recibirás como input un URL de Linkedin {{ $json.UrlLinkedin }}Quiero que adaptes estas 5 plantillas para las diferentes partes del correo:\n\nSubject LIne: Hola {Nombre}, creo que tengo algo para ti sobre: {Compañía}.\n\nIcebreaker: Sé que estás trabajando en {{ $json[‘descripcionCompañía’] }} y he estado siguiendo {relateddescripcionComapñia} desde hace un tiempo, así que pensé que tenía sentido charlar contigo.\n\nElevator Pitch: En resumen: Creo que puedo añadir unos 5.000 $/mes a {descripcionCompañiaParaphrased} con un par de sistemas automatizados.\n\nCall to Action: Acabo de hacer esto mismo para una empresa muy similar en {RelationedCompañía} y alcanzamos los 28.350 $ en unos pocos meses —ellos hacen {descripcionCompañíaSimilar} — así que estoy muy seguro de que puedo duplicarlo como mínimo con vosotros. Sería 100% sin riesgo, te garantizo un 60% de los resultados, si no lo consigo, no pagas nada\n\nPostdata (PS): Incluso si solo charlamos un rato, me encantaría saber más sobre lo que estás haciendo con {Compañía}.\n\nAhora te voy a dar una guía para la redacción del correo:\n\n1. Debes usar un tono cercano, como si estuvieses en una conversación de bar, se PRIORIZA que el correo parezca que lo ha escrito un amigo antes que una gran agencia de marketing\n\n2, Debes buscar y exponer a lo largo del correo conexiones REALES en tre lo que vende la empresa y lo que vendemos nosotros (automatizaciones)\n\n3. No puedes BAJO NINGÚN CONCEPTO poner información idéntica de la empresa que esté en el perfil de Linkedin o en Internet, en toodo lo caso lo parafraseas, Cada correo debe ser único\n\n4. El SubJect Line debe ir en minúsculas.\n\n5. El output debes expresarlo en formato JSON siguiendo la siguiente estructura:\n\n{{ $json.SubjectLine }},{{ $json.Icebreaker }}, {{ $json.ElevatorPitch }},{{ $json.callToAction }}, {{ $json.PS }}\n”
}
]
},
“builtInTools”: {},
“options”: {}
},
“type”: “@n8n/n8n-nodes-langchain.openAi”,
“typeVersion”: 2.3,
“position”: [
320,
496
],
“id”: “72eb8b2e-2ca9-46ae-9a32-a1a907fc865d”,
“name”: “Message a model1”,
“credentials”: {}
}
],
“connections”: {
“When clicking ‘Execute workflow’”: {
“main”: [
[
{
“node”: “Get row(s) in sheet”,
“type”: “main”,
“index”: 0
}
]
]
},
“Get row(s) in sheet”: {
“main”: [
[
{
“node”: “Message a model1”,
“type”: “main”,
“index”: 0
}
]
]
}
},
“pinData”: {},
“meta”: {
“templateCredsSetupCompleted”: true,
“instanceId”: “de8c734c1dc0e7ee34a192c3342867821f37e3e023d4f63a26811d820d59caa0”
}
}

Hola @Pablo_Serrano

Solución:

  1. Cambia el rol del primer mensaje de Assistant a System. También elimina el = suelto en "role": "=user" del segundo mensaje.

  2. Reescribe el final de tu prompt. Ahora tienes {{ $json.SubjectLine }}, {{ $json.Icebreaker }}... — esos campos no existen aún, así que se resuelven en blanco y el modelo no recibe ningún formato. Reemplaza con texto literal:

Return ONLY this JSON, nothing else:

{
  "SubjectLine": "...",
  "Icebreaker": "...",
  "ElevatorPitch": "...",
  "CallToAction": "...",
  "PS": "..."
}

Además cambia tus placeholders {curly} a [square]{{ es sintaxis de expresión de n8n y se disparará incorrectamente.

  1. Ejecuta el nodo de Google Sheets solo y copia tus nombres de columna exactamente desde el panel de salida. {{ $json.UrlLinkedin }} y {{ $json.companyDescription }} deben coincidir con tus encabezados carácter por carácter.

Muchísimas gracias, me ha ayudado un montón!!

de nada, si te fue útil márcalo como solución gracias.