Flujo de trabajo de generación de imágenes en n8n: plantillas de Nano Banana y Gemini
Un flujo de trabajo de generación de imágenes en n8n que funcione necesita más que un solo nodo. Este artículo recorre las plantillas de Nano Banana y Gemini, la configuración de HTTP Request, las variables de prompt, el procesamiento por lotes, los reintentos y el guardado de las imágenes terminadas en almacenamiento, con una ruta en PicassoIA para probar primero los prompts.
La mayoría de las automatizaciones de imágenes en n8n fallan de la misma forma. Alguien conecta un campo de prompt a un nodo, obtiene una imagen preciosa en la primera ejecución y, después, un lote de cuarenta filas topa con un límite de velocidad, un bloqueo de seguridad o una cadena base64 que nunca se convierte en un archivo real. Este artículo construye un flujo de trabajo de generación de imágenes en n8n que sobrevive a la segunda ejecución, usando la familia Nano Banana de Google y el endpoint de imágenes de Gemini que hay detrás.
Obtienes el orden de los nodos, el cuerpo exacto de la solicitud, tres plantillas reutilizables, la configuración de reintentos, una estimación de costos y una forma de probar prompts en PicassoIA antes de gastar una sola llamada a la API. Nano Banana es el apodo de Gemini 2.5 Flash Image, así que todo lo que aquí se explica vale con cualquiera de los dos nombres.
Por qué fallan los flujos de imágenes en n8n
Los flujos de trabajo de texto perdonan un diseño descuidado. Si un nodo de LLM devuelve una frase algo rara, el siguiente nodo sigue recibiendo una cadena. Con las imágenes es distinto: la salida son datos binarios envueltos en JSON, la llamada tarda entre diez y treinta segundos y un solo rechazo puede devolver un HTTP 200 perfectamente válido sin ninguna imagen dentro. Esa discrepancia es la razón por la que tantas plantillas copiadas se ven bien en una captura de pantalla y se caen en la fila tres.
Cinco fallos que conviene prever
Casi todos los flujos de imágenes rotos fallan en uno de estos cinco puntos:
La cadena base64 nunca se convierte en archivo. La API devuelve los bytes de la imagen como una cadena de texto larga. Sin un paso de conversión, subes una cadena al almacenamiento y te preguntas por qué la vista previa aparece en blanco.
Respuestas vacías que parecen correctas. Un prompt bloqueado puede devolver estado 200 sin ninguna parte de imagen. El siguiente nodo se ejecuta sobre nada.
Tráfico en ráfagas. Cuarenta elementos enviados a la vez superan el límite por minuto, y la mitad fallan con un 429.
Entrada de prompts desordenada. Las celdas de una hoja de cálculo con comillas, saltos de línea o espacios al final rompen los cuerpos JSON escritos a mano.
Ningún paso de almacenamiento. n8n elimina por defecto los datos de ejecuciones antiguas, así que una imagen que solo existe dentro de una ejecución acaba desapareciendo.
Qué necesita una configuración fiable
La solución es aburrida, y ese es el punto. Un flujo fiable tiene un paso de validación después de la llamada a la API, un paso de conversión que produce un archivo real, un paso de almacenamiento que devuelve una URL permanente y un ritmo entre llamadas. Todo lo demás de este artículo es una variación de esas cuatro piezas.
💡 Empieza con un solo elemento. Ejecuta toda la cadena con una fila usando el Manual Trigger. Añade el bucle y la programación solo cuando una imagen llegue al almacenamiento con el nombre de archivo correcto.
Elegir un modelo de imagen de Google
Los nombres sin confusión
Los nombres de Google cambian deprisa. Nano Banana empezó como apodo de Gemini 2.5 Flash Image, y después llegaron las variantes Pro, 2 y Lite. En la API, cada apodo corresponde a un ID de modelo, y esos IDs cambian con más frecuencia que los apodos. Guarda el ID en un único campo de tu primer nodo Edit Fields y haz referencia a él en todas partes. Cuando salga un modelo mejor, cambias un valor en lugar de editar cinco nodos.
Una regla práctica: haz borradores con el nivel barato y regenera solo las ganadoras aprobadas con el nivel Pro. Una segunda rama en el mismo flujo puede gestionar esa mejora automáticamente en cuanto una fila se marque como aprobada.
El flujo principal, nodo por nodo
El flujo base tiene siete nodos. Constrúyelos en este orden y prueba después de cada uno:
Manual Trigger mientras construyes, sustituido más adelante por un disparador Schedule o Webhook
Edit Fields, renombrado Prompt Fields
HTTP Request, renombrado Gemini Image
Code, renombrado Extract Image
Convert to File
Subida compatible con S3 (Cloudflare R2, AWS S3 o cualquier bucket similar)
Edit Fields o Google Sheets para registrar la URL final
Disparador y campos de prompt
Empieza con el Manual Trigger y un nodo Edit Fields que cree cuatro campos: prompt, aspect_ratio, slug y model. Usa 16:9 para las cabeceras del blog y 1:1 para las fotos de producto. Mantén el slug en minúsculas con guiones, porque se convierte en el nombre del archivo.
Limpia el prompt en esta etapa con una expresión como {{ $json.prompt.trim() }}. Los espacios al final y los saltos de línea sobrantes de una hoja de cálculo son una causa sorprendentemente común de resultados extraños.
La llamada HTTP Request a Gemini
Añade un nodo HTTP Request, define el método como POST y usa esta URL, con el ID del modelo leído de tu campo model:
Para la autenticación, elige la credencial Google Gemini(PaLM) Api si tu versión de n8n la muestra para el nodo HTTP Request. Si no, usa Header Auth con el nombre de cabecera indicado en la documentación de la API de Google. Después activa Send Body, elige JSON y construye el cuerpo como expresión, para que las comillas dentro de un prompt nunca puedan romperlo:
En Options, sube el timeout a 120000 ms. Las llamadas de imagen son más lentas que las de texto, y el valor por defecto cortará una solicitud sana.
💡 n8n también incluye un nodo nativo de Google Gemini, y sus operaciones de imagen han ido cambiando entre versiones. Revisa la lista de operaciones en tu propia instalación. El enfoque con HTTP Request que se muestra aquí funciona en todas las versiones y expone la respuesta completa, que es lo que hace posible el paso de validación.
Convertir base64 en un archivo
La respuesta anida la imagen dentro de candidates[0].content.parts, junto a cualquier texto que el modelo haya decidido añadir. La parte de imagen contiene un objeto inlineData con un mimeType y una cadena data en base64. No des por hecho que la imagen es la primera parte. Búscala.
Añade un nodo Code en modo Run Once for Each Item:
Lanzar un error cuando falta la imagen es deliberado. Convierte un fallo silencioso en uno visible y permite que los ajustes de reintento y de salida de error de la siguiente sección hagan su trabajo.
Después viene Convert to File con la operación Move Base64 String to File. Define el campo de entrada base64 como image_b64 y nombra el archivo {{ $json.slug }}.png. La salida de imagen de Gemini suele llegar como PNG, y puedes leer mimeType si quieres ser estricto con la extensión. Por último, envía el archivo a tu bucket con el nodo S3 y escribe la URL pública de vuelta en el lugar donde esté tu contenido.
Tres plantillas que vale la pena copiar
La biblioteca de plantillas de n8n tiene muchos flujos de la comunidad construidos en torno a imágenes de Nano Banana y Gemini, y revisar algunos es una forma rápida de ver distintas estructuras. La calidad varía, así que compara cada una con los cinco fallos de arriba. Los tres esqueletos siguientes son los que más aparecen.
Plantilla uno: lote de imágenes de cabecera
Úsala cuando un equipo de contenidos necesite una imagen de cabecera para cada entrada de una hoja de cálculo.
Flujo: Schedule Trigger → Google Sheets (filas donde status está vacío) → Loop Over Items (tamaño de lote 2) → Prompt Fields → Gemini Image → Extract Image → Convert to File → subida a S3 → Google Sheets (escribir image_url y status = done) → Wait (6 segundos) → de vuelta al bucle.
Construye el prompt a partir del título de la entrada más un sufijo de estilo fijo, para que todas las cabeceras compartan un aspecto: {{ $json.title }}, wide editorial photograph, natural window light, 35mm lens, shallow depth of field, no text. Guarda el sufijo en un único lugar y cuarenta imágenes parecerán pertenecer al mismo sitio.
La columna de estado importa más de lo que parece. Las filas marcadas como done se omiten en la siguiente ejecución, así que una ejecución interrumpida se reanuda donde se quedó en lugar de pagar dos veces por las mismas imágenes.
Plantilla dos: variantes de fotos de producto
Esta edita una foto existente y cambia el entorno que la rodea. La solicitud es la misma que antes con una parte adicional: la foto original en base64. Descarga la foto con un nodo HTTP Request, pásala por Extract From File usando Move File to Base64 String y añádela junto a la parte de texto:
Después, recorre en bucle cuatro prompts por cada producto: una encimera de mármol con luz de la mañana, una mesa de roble pálido, lino doblado y una repisa de piedra al aire libre. Incluye siempre la frase Keep the product exactly unchanged and change only the surroundings. Sin ella, los modelos de imagen tienden a rediseñar la etiqueta.
Plantilla tres: webhook a publicación en redes
Un disparador Webhook recibe un tema y una plataforma. Una Basic LLM Chain con un modelo de chat de Google Gemini escribe un prompt fotográfico, después llega la llamada de imagen y la URL terminada se devuelve a quien la pidió.
Las llamadas de imagen pueden tardar entre diez y treinta segundos. Si un proxy delante de n8n corta las solicitudes a los 30 o 60 segundos, responde al webhook de inmediato con un ID de tarea y publica después la URL terminada en una dirección de callback. Si no, quien llama ve un timeout mientras n8n termina tranquilamente el trabajo y te lo cobra.
Reintentos, límites de velocidad y costos
Ajustes de reintentos y ritmo
Los reintentos y el ritmo deciden si una ejecución de 200 filas termina durante la noche o se queda parada en la fila 12. Configúralos en los propios nodos:
Ajuste
Valor
Por qué
Retry On Fail (Gemini Image)
Activado, Max Tries 3
Los errores transitorios 429 y 5xx suelen resolverse solos
Wait Between Tries
5000 ms o más
Da tiempo a que se reinicie el límite por minuto
Timeout (opción de HTTP Request)
120000 ms
Las llamadas de imagen son más lentas que las de texto
On Error
Continue (using error output)
Las filas fallidas pasan a una rama aparte en lugar de detener la ejecución
Tamaño de lote de Loop Over Items
De 2 a 5
Mantiene las ráfagas por debajo del límite
Nodo Wait entre lotes
De 5 a 10 segundos
Reparte las llamadas a lo largo del minuto
Envía la salida de error a una actualización de Sheets que escriba failed junto con el mensaje de error. Reintentar las filas fallidas más tarde se convierte en un filtro de un clic, y los patrones aparecen rápido, como una frase del prompt que activa el filtro de seguridad cada vez.
Calcular la factura
Google publicó Gemini 2.5 Flash Image a unos $0.039 por imagen en su lanzamiento. Revisa la página de precios actual antes de presupuestar, pero la cuenta es sencilla: 500 imágenes de cabecera a esa tarifa suman unos $19.50, y cada reintento que produce una imagen vuelve a contar. Los niveles superiores cuestan más por imagen. Tres hábitos ayudan a contener el gasto:
Prueba primero los prompts en PicassoIA.Nano Banana 2 está disponible allí con generaciones ilimitadas, así que reformular un prompt doce veces no cuesta nada.
Reintenta solo los fallos, nunca lotes completos.
Borrador barato, acabado caro. Usa el nivel ligero para los borradores y regenera solo las filas aprobadas con el nivel Pro.
Patrones de prompt que se sostienen
Deja que un LLM escriba los prompts
Una fila de hoja de cálculo que dice Remote work setup no es un prompt. Añade una Basic LLM Chain antes de la llamada de imagen, conecta un modelo de chat de Google Gemini y dale una instrucción fija: convierte el tema en un único prompt fotográfico de 50 a 70 palabras, con detalles de sujeto, escenario, dirección de la luz, objetivo y textura, y devuelve solo el prompt. Gemini 3.5 Flash y Gemini 3 Flash sirven para esta tarea, porque es corta y la velocidad importa más que la profundidad.
💡 Registra el prompt generado junto a la URL de la imagen en tu hoja. Cuando una imagen decepcione, podrás ver exactamente qué se le pidió al modelo.
Términos de fotografía que el modelo respeta
Los modelos de imagen suelen responder bien al vocabulario de un fotógrafo. Usa este orden: sujeto y acción, escenario, dirección de la luz, cámara y objetivo, textura de superficie, ambiente.
Elemento
Redacción débil
Redacción más sólida
Luz
brillante
luz suave de ventana desde la izquierda, media mañana
Objetivo
cámara bonita
85 mm a f/1.8, poca profundidad de campo
Ángulo
buen ángulo
ángulo bajo, mirando ligeramente hacia arriba
Textura
detallado
veta visible de la madera, trama del tejido, fibras del papel
Texto
escribe un título
sin texto en el encuadre
Pide por defecto que no haya texto. Las letras generadas son la razón más común por la que una imagen de cabecera buena acaba rechazada, y es mucho más fácil añadir un título real después en tu herramienta de diseño.
Sale más barato corregir los prompts antes de que vivan dentro de un flujo de trabajo. Nano Banana en PicassoIA pertenece a la misma familia que llama tu nodo HTTP, así que un prompt que funciona allí es un candidato sólido para la automatización.
Pega el prompt exactamente como lo produciría tu nodo Edit Fields, con el sufijo de estilo incluido.
Añade fotos de referencia en el campo Image Input si tu flujo de trabajo edita imágenes existentes. El modelo acepta varias a la vez.
Elige JPG o PNG como formato de salida.
Genera tres versiones, cambiando una frase cada vez: la luz, el objetivo o el escenario.
Copia la redacción ganadora de vuelta en n8n.
Pasa a Nano Banana 2 cuando necesites más control. Añade 15 opciones de relación de aspecto, incluidas 16:9, 9:16 y 4:5, resoluciones 1K, 2K y 4K, hasta 14 imágenes de referencia y la opción de basar resultados en la Búsqueda de Google. El ajuste de relación de aspecto se corresponde directamente con el campo aspectRatio de tu cuerpo de solicitud. Para lotes en los que prima la velocidad está Nano Banana 2 Lite, y Nano Banana Pro se encarga de los renders finales en 4K.
Pule los resultados antes de publicar
Incluso los resultados buenos se benefician de una pasada de acabado. Real-ESRGAN y Crystal Upscaler amplían las imágenes para espacios principales, y Bria Remove Background recorta las fotos de producto para las páginas de catálogo. Si un estilo no encaja con los modelos de Google, compara Seedream 4.5, Flux 2 Pro e Imagen 4 con el mismo prompt antes de cambiar tu flujo de trabajo. Una comparación de diez minutos vale más que una semana ajustando prompts.
Ejecuta tu primer lote en Picasso IA
Ya tienes la cadena completa: una solicitud validada, archivos reales, almacenamiento, ritmo, reintentos y prompts que merecen automatizarse. Constrúyela con una fila, luego con diez y después con la hoja completa.
Antes de hacerlo, dedica quince minutos en Picasso IA a tus cinco prompts más importantes. Pruébalos en Nano Banana 2, compara los resultados con Nano Banana Pro y quédate con la redacción que gane. Después pega esos prompts en tu nodo Edit Fields y deja que n8n se encargue del volumen. Explora todos los modelos en picassoia.com/en/all-models y empieza con una imagen de cabecera para tu próxima entrada.