top of page

Serie N8N (XIX): Generar imágenes con IA desde N8N - crear, guardar y enviar una imagen automáticamente

  • 1 ago
  • 23 min de lectura

Hasta ahora, en esta serie hemos utilizado N8N y OpenAI principalmente para trabajar con texto, pero los modelos generativos no se limitan al lenguaje, sino que también pueden crear imágenes, y cuando integramos esa capacidad dentro de N8N, la generación visual deja de ser una acción aislada y pasa a formar parte de un proceso automatizado.


Podemos definir una idea, convertirla en un prompt, generar una imagen y utilizar ese archivo en distintos destinos sin salir del workflow.


En este artículo construiremos un ejemplo sencillo para entender ese proceso completo. Partiremos de una configuración manual donde indicaremos:

  • Qué imagen queremos crear.

  • Qué estilo visual debe tener.

  • Qué formato buscamos.

  • Qué elementos queremos evitar.

  • Dónde debe guardarse.

  • Qué texto debe acompañarla en Telegram.


A partir de esa información, N8N construirá automáticamente el prompt final, enviará la instrucción al modelo de generación de imágenes de OpenAI y recibirá el resultado como un archivo.


Después, el workflow utilizará esa misma imagen para realizar dos acciones:

Guardar una copia en local
+
Enviar la imagen por Telegram

Esta estructura será la que reutilicemos más adelante para crear portadas, imágenes para redes sociales, ilustraciones, materiales de presentación o cualquier otro recurso visual.


Además, aparecerá un concepto técnico nuevo dentro de la serie: los datos binarios. Hasta ahora, la mayor parte de la información que circulaba entre nodos era texto o JSON. En este caso, el resultado será una imagen real, lo que significa que N8N tendrá que tratarla como un archivo que puede guardarse, enviarse o reutilizarse en otros nodos.


Comprender esta diferencia será uno de los aprendizajes más importantes del artículo, porque una vez sepamos manejar una imagen como archivo binario, podremos aplicar la misma lógica a muchos otros formatos: PDF, Audio, Video, Documentos, Archivos comprimidos.


Banner de n8n con texto Generar imágenes con IA en n8n; flujo OpenAI→imagen→Telegram, mano robótica y móvil con imagen generada.
Generar imágenes con IA desde N8N

2. Objetivo del workflow

El objetivo de este artículo es crear un workflow capaz de generar una imagen con OpenAI y reutilizar ese mismo archivo en dos destinos distintos.

El proceso completo será el siguiente:

Manual Trigger
↓
Edit Fields - Image Config
↓
Edit Fields - Build Image Prompt
↓
OpenAI - Generate Image
├─ Read Write Files - Save Image
└─ Telegram - Send Photo

Al ejecutar el workflow obtendremos dos resultados simultáneos:

Resultado

Descripción

Imagen guardada

Archivo PNG almacenado en la carpeta configurada

Imagen enviada

Fotografía recibida directamente en Telegram

Por ahora, el objetivo es comprender bien la infraestructura de generación, tratamiento y distribución de la imagen. Una vez dominada esta base, podremos añadir más inteligencia sin complicar innecesariamente el workflow.


Diagrama oscuro de flujo de trabajo con nodos Manual Trigger, Edit Fields, OpenAI Generate Image, Save Image y Telegram Send Photo.
Workflow N8N - Generar imágenes con IA

3. Qué aprenderemos en este artículo

Este workflow introduce varias capacidades nuevas dentro de la serie. No se trata únicamente de generar una imagen con inteligencia artificial, sino de comprender cómo preparar la información, construir la instrucción, manejar el archivo resultante y reutilizarlo dentro de N8N.


Los principales aprendizajes serán los siguientes:

Qué aprenderemos

Aplicación práctica

1

Configurar una imagen mediante campos independientes

Separar tema, estilo, formato, restricciones, carpeta, nombre y pie de foto

2

Construir un prompt dinámico

Combinar automáticamente los campos de configuración en una instrucción completa

3

Generar una imagen con el nodo nativo de OpenAI

Configurar modelo, calidad, resolución y prompt

4

Trabajar con datos binarios

Manejar la imagen como archivo dentro de N8N

5

Reutilizar una misma salida en varias ramas

Guardar la imagen en local y enviarla por Telegram sin generarla dos veces

6

Crear nombres de archivo automáticos

Añadir fecha y hora para evitar sobrescribir imágenes anteriores

7

Preparar un workflow reutilizable

Adaptar la misma estructura a portadas, redes sociales, presentaciones o material educativo





3.1 Configurar una imagen mediante campos independientes

En lugar de escribir una única descripción extensa, separaremos la configuración en varios campos:

image_subject
image_style
image_format
elements_to_avoid
output_folder
output_filename_prefix
telegram_caption

Esta separación permite modificar cada aspecto de la imagen sin tener que reconstruir el workflow.

3.2 Construir un prompt dinámico

N8N combinará los valores definidos en la configuración para crear una única instrucción completa.

Esto nos permitirá distinguir entre:

Datos de configuración
↓
Prompt final

El prompt no será un texto fijo, sino el resultado de unir diferentes campos mediante expresiones.

3.3 Generar una imagen con el nodo nativo de OpenAI

Utilizaremos la operación de generación de imágenes del nodo OpenAI.

Aprenderemos a configurar:

  • El modelo.

  • La calidad.

  • La resolución disponible.

  • El prompt de entrada.

  • La salida generada.

También veremos las limitaciones reales encontradas durante las pruebas, especialmente en relación con los tamaños permitidos por el modelo.

3.4 Trabajar con datos binarios

La imagen generada no viajará entre nodos como un texto convencional.

N8N la tratará como un archivo binario.

Este concepto es fundamental porque nos permitirá:

  • Guardarla en disco.

  • Enviarla por Telegram.

  • Subirla a un servicio externo.

  • Adjuntarla a un correo.

  • Reutilizarla en otros workflows.

Más adelante veremos este punto con detalle.

3.5 Utilizar una misma salida en varias ramas

Desde el nodo OpenAI enviaremos la misma imagen a dos destinos:

Imagen generada
├─ Guardado local
└─ Telegram

Esto muestra cómo una única salida puede alimentar varios nodos sin necesidad de duplicar la generación.

3.6 Crear nombres de archivo automáticos

El workflow añadirá la fecha y la hora al nombre del archivo.

Por ejemplo:

n8n_openai_image_20260711_154812.png

De esta forma, cada ejecución genera un archivo diferente y evita sobrescribir imágenes anteriores.

3.7 Preparar una base reutilizable

Al terminar el artículo tendremos un workflow que puede adaptarse a múltiples necesidades:

  • Portadas de artículos.

  • Imágenes para redes sociales.

  • Ilustraciones conceptuales.

  • Material educativo.

  • Recursos para presentaciones.

  • Propuestas visuales.

  • Contenido de marketing.

La lógica principal permanecerá igual.

Solo tendremos que cambiar la configuración de entrada y, cuando sea necesario, el modelo o el canal de salida.

El resultado será una base sencilla, pero suficientemente flexible como para evolucionar en los siguientes artículos.


4. Arquitectura del workflow

Antes de configurar cada nodo, conviene entender cómo circula la información a través del workflow.

La estructura completa es la siguiente:

Manual Trigger
↓
Edit Fields - Image Config
↓
Edit Fields - Build Image Prompt
↓
OpenAI - Generate Image
├─ Read Write Files - Save Image
└─ Telegram - Send Photo

El proceso puede dividirse en cuatro bloques:

  1. CONFIGURACIÓN

  2. CONSTRUCCIÓN DEL PROMPT

  3. GENERACIÓN DE LA IMAGEN

  4. DISTRIBUCIÓN DEL ARCHIVO


La siguiente tabla resume qué entra y qué sale de cada nodo:

Nodo

Entrada principal

Salida principal

Manual Trigger

Ejecución manual

Inicio del workflow

Edit Fields - Image Config

Disparo inicial

Campos configurables

Edit Fields - Build Image Prompt

Parámetros de imagen

Prompt, nombre y ruta

OpenAI - Generate Image

Prompt final

Archivo de imagen

Read Write Files - Save Image

Imagen binaria

Archivo guardado

Telegram - Send Photo

Imagen binaria

Fotografía enviada

5. Nodo 1 — Manual Trigger

El primer nodo del workflow es:

Manual Trigger
Interfaz oscura de flujo de trabajo con nodo Manual Trigger y botón Execute step; panel Parameters con texto de inicio de ejecución.
Nodo Manual Trigger

Su función es muy sencilla: iniciar la ejecución del workflow cuando el usuario lo decide. Queremos poder generar imágenes bajo demanda. Esto nos permite modificar la configuración, realizar pruebas y comprobar el resultado inmediatamente, sin tener que esperar a una hora programada ni depender de otra aplicación.


Durante el desarrollo resulta especialmente útil, ya que podremos generar tantas imágenes como necesitemos hasta obtener el resultado deseado.


6. Nodo 2 — Configuración de la imagen

El segundo nodo del workflow es:

Edit Fields - Image Config

Este nodo concentra todos los parámetros que el usuario puede modificar antes de generar la imagen. Su función es actuar como panel de configuración del workflow.


En lugar de escribir una única instrucción larga dentro del nodo OpenAI, separamos la información en varios campos independientes. De esta forma, cada aspecto de la imagen puede ajustarse de manera clara y ordenada.


En nuestro workflow hemos definido los siguientes campos:

Campo

Función

image_subject

Describe el contenido principal de la imagen

image_style

Define la estética visual

image_format

Orienta la composición y el encuadre

elements_to_avoid

Indica qué elementos no deben aparecer

output_folder

Establece la carpeta donde se guardará el archivo

output_filename_prefix

Define el inicio del nombre del archivo

telegram_caption

Contiene el texto que acompañará a la imagen en Telegram

Cada uno de ellos controla una parte concreta del resultado final.

6.1 Contenido principal

El campo image_subject define qué queremos representar. En nuestro ejemplo utilizamos:

Un centro de datos futurista gestionado por una inteligencia artificial, con servidores iluminados, pantallas holográficas y flujos digitales recorriendo la escena.

Este campo debe centrarse en la escena, los objetos y la idea principal. Aquí podemos indicar:

  • Qué aparece.

  • Dónde ocurre.

  • Qué elementos destacan.

  • Qué sensación debe transmitir.

  • Qué relaciones existen entre los objetos.


6.2 Estilo visual

El campo: image_style define cómo debe verse la imagen.

En el workflow hemos configurado:

Moderno, tecnológico, profesional, limpio y futurista-realista, con predominio de azul cobalto, negro profundo y luz digital.

Este campo puede controlar aspectos como:

  • Realismo o ilustración.

  • Estética corporativa o artística.

  • Paleta cromática.

  • Iluminación.

  • Nivel de detalle.

  • Sensación general.

Por ejemplo: "Ilustración editorial minimalista, profesional, con formas geométricas y colores suaves." o "Estilo cinematográfico, realista, con iluminación dramática y gran profundidad.".

6.3 Composición y formato

El campo: image_format no establece directamente la resolución técnica del modelo. Su función es orientar la composición visual.

En nuestro ejemplo:

Composición horizontal panorámica en formato 16:9, con profundidad visual y un punto focal claramente definido.

Esta instrucción ayuda al modelo a organizar los elementos dentro de la escena. Podemos utilizar variantes como: "Composición vertical tipo póster", "Imagen cuadrada centrada para redes sociales" o "Escena horizontal con espacio libre en el lado izquierdo para añadir un título".


6.4 Elementos que deben evitarse

El campo: elements_to_avoid contiene los elementos que no queremos que aparezcan.

En el workflow utilizamos:

Texto legible, marcas de agua, logotipos, interfaces saturadas, elementos deformados, composición confusa y estética caricaturesca.

Este campo funciona como una restricción dentro del prompt. No se trata de un negative prompt técnico independiente como el que utilizan algunas herramientas de generación de imágenes. Su contenido se incorpora a la instrucción principal para orientar al modelo.


6.5 Carpeta de guardado

El campo: output_folder indica dónde debe guardarse la imagen.

En nuestro caso:

/files/generated-images/

Esta ruta corresponde al sistema donde se está ejecutando N8N. Si utilizamos Docker, será una ruta interna del contenedor y deberá estar vinculada a una carpeta del equipo anfitrión. En este nodo únicamente definimos la ruta, la escritura real del archivo se realizará más adelante.


6.6 Prefijo del archivo

El campo: output_filename_prefix define cómo comenzará el nombre del archivo.

En nuestro ejemplo:

n8n_openai_image

Posteriormente añadiremos la fecha y la hora para generar un nombre único:

n8n_openai_image_20260711_154812.png

6.7 Pie de foto de Telegram

El campo: Telegram_caption contiene el texto que acompañará a la imagen enviada.

En nuestro caso:

🖼️ Imagen generada automáticamente con N8N y OpenAI.
Serie N8N Lozkorp (XIX).

Este campo puede utilizarse para incluir otras cosas como título, descripción, fecha...


Interfaz oscura de n8n con paneles de configuración y salida en español; se ven Execute step y Schema.
Nodo Edit Fiels - Configuración Imagen

Ventajas de separar la configuración

Centralizar todos estos valores en un único nodo ofrece varias ventajas:

  • El workflow resulta más fácil de entender.

  • El usuario puede adaptar la imagen desde un solo punto.

  • No es necesario modificar el nodo OpenAI para cambiar el contenido.

  • Se reduce el riesgo de alterar accidentalmente la lógica.

  • El mismo workflow puede reutilizarse para muchos casos distintos.


7. Nodo 3 — Construcción del prompt y preparación del archivo

El tercer nodo del workflow es:

Edit Fields - Build Image Prompt

Este nodo recibe la configuración definida anteriormente y la transforma en los valores que necesitaremos durante el resto del proceso. En nuestro caso, crea cuatro campos:

Campo

Función

final_prompt

Instrucción completa enviada al modelo de imágenes

output_filename

Nombre único del archivo

output_file_path

Ruta completa donde se guardará

telegram_caption

Texto que acompañará a la imagen en Telegram

Este paso separa claramente dos niveles:

Configuración editable
↓
Datos preparados para ejecutar el workflow

El campo principal es:

final_prompt. 

Su valor se construye uniendo los campos del nodo anterior mediante una expresión de N8N:

={{
  'Genera una imagen basada en la siguiente descripción:\n\n' +
  $json.image_subject +
  '\n\nESTILO VISUAL:\n' +
  $json.image_style +
  '\n\nCOMPOSICIÓN Y FORMATO:\n' +
  $json.image_format +
  '\n\nELEMENTOS QUE DEBEN EVITARSE:\n' +
  $json.elements_to_avoid +
  '\n\nLa imagen debe ser visualmente coherente, profesional y estar lista para utilizarse como contenido digital.'
}}

El resultado será una única instrucción estructurada.


Con los valores utilizados en el workflow, el prompt final tendrá una estructura similar a esta:

Genera una imagen basada en la siguiente descripción:

Un centro de datos futurista gestionado por una inteligencia artificial, con servidores iluminados, pantallas holográficas y flujos digitales recorriendo la escena.

ESTILO VISUAL:

Moderno, tecnológico, profesional, limpio y futurista-realista, con predominio de azul cobalto, negro profundo y luz digital.

COMPOSICIÓN Y FORMATO:

Composición horizontal panorámica en formato 16:9, con profundidad visual y un punto focal claramente definido.

ELEMENTOS QUE DEBEN EVITARSE:

Texto legible, marcas de agua, logotipos, interfaces saturadas, elementos deformados, composición confusa y estética caricaturesca.

La imagen debe ser visualmente coherente, profesional y estar lista para utilizarse como contenido digital.

El modelo recibe una única instrucción, aunque nosotros la hayamos construido a partir de varios campos independientes.

¿Por qué no escribimos el prompt directamente en OpenAI? Sería posible introducir todo el texto dentro del nodo de generación. Sin embargo, mantener un nodo intermedio ofrece varias ventajas:

  • Podemos inspeccionar el prompt antes de generar la imagen.

  • Resulta más fácil detectar campos vacíos o errores.

  • El nodo OpenAI queda reservado para la generación.

  • Podemos reutilizar el prompt en otros destinos.

  • El workflow resulta más legible.


El segundo campo generado es:

output_filename

La expresión utilizada es:

={{
  $json.output_filename_prefix +
  '_' +
  $now.toFormat('yyyyLLdd_HHmmss') +
  '.png'
}}

La variable: "$now" contiene la fecha y la hora de la ejecución, y usando "toFormat('yyyyLLdd_HHmmss')" la convertimos en un formato como: "20260711_154812", así el nombre final será:

n8n_openai_image_20260711_154812.png

El uso de fecha y hora evita que todas las imágenes tengan el mismo nombre. Sin este identificador, cada nueva ejecución podría sobrescribir el archivo anterior.


El tercer campo es:

output_file_path

Su expresión combina la carpeta y el nombre:

={{
  $json.output_folder +
  $json.output_filename_prefix +
  '_' +
  $now.toFormat('yyyyLLdd_HHmmss') +
  '.png'
}}

El resultado será:

/files/generated-images/n8n_openai_image_20260711_154812.png

Esta ruta será utilizada posteriormente por el nodo encargado de escribir la imagen en disco.


El último campo es:

telegram_caption

En este caso simplemente copiamos el valor recibido:

={{ $json.telegram_caption }}
Captura de n8n con campos para generar un prompt de imagen; se ve texto en español, paneles oscuros y flujo manual.
Nodo Edit Fields - Construir el prompt de la imagen

Comprobar la salida del nodo

Antes de continuar, conviene ejecutar el workflow hasta este punto y revisar los valores generados.

La salida debería contener una estructura similar a:

{
  "final_prompt": "Genera una imagen basada en...",
  "output_filename": "n8n_openai_image_20260711_154812.png",
  "output_file_path": "/files/generated-images/n8n_openai_image_20260711_154812.png",
  "telegram_caption": "🖼️ Imagen generada automáticamente con N8N y OpenAI."
}

Si alguno de estos campos aparece vacío, debemos revisar la configuración del nodo anterior o las expresiones utilizadas. Con el prompt, el nombre y la ruta ya preparados, el workflow está listo para enviar la instrucción al modelo de generación de imágenes.


8. Nodo 4 — Generación de la imagen con OpenAI

El cuarto nodo del workflow es:

OpenAI - Generate Image

Este es el nodo encargado de enviar el prompt al modelo de OpenAI y devolver la imagen generada.

La configuración utilizada en nuestro workflow es:

Parámetro

Valor

Recurso

Image

Modelo

gpt-image-1

Prompt

{{ $json.final_prompt }}

Calidad

Low

Resolución

1536 × 1024

8.1 Selección del recurso y del modelo

Dentro del nodo OpenAI seleccionamos el recurso:

Image

De esta forma, el nodo deja de trabajar con respuestas de texto y utiliza un modelo especializado en generación visual. Para este ejemplo hemos seleccionado:

gpt-image-1 

Este modelo recibe una descripción textual y devuelve una imagen construida a partir de las instrucciones indicadas. El modelo no necesita conocer cómo hemos organizado la configuración en los nodos anteriores. Únicamente recibe el contenido final del campo:

final_prompt

8.2 Utilizar el prompt preparado

En el campo destinado al prompt introducimos la expresión:

={{ $json.final_prompt }}

Esta expresión recupera la instrucción construida en el nodo anterior. Si queremos comprobar qué información está recibiendo el modelo, podemos revisar la salida de Edit Fields - Build Image Prompt antes de ejecutar la generación. Esto resulta especialmente útil cuando la imagen no representa correctamente la idea esperada.


8.3 Calidad de generación

En nuestro workflow hemos seleccionado:

Quality: Low

La elección responde a una razón práctica: estamos construyendo y probando el workflow.

Durante esta fase interesa comprobar que:

  • El prompt llega correctamente.

  • El modelo genera una imagen.

  • El archivo puede guardarse.

  • Telegram recibe la fotografía.

  • Las dos ramas funcionan correctamente.

Para estas comprobaciones no necesitamos utilizar siempre la calidad más alta. La calidad baja reduce el coste de las pruebas y ofrece un resultado suficiente para validar la automatización.


Una vez terminado el workflow, podemos cambiarla por una calidad superior cuando el uso final lo justifique.

Calidad

Uso recomendado

Low

Pruebas, validación y borradores

Medium

Contenido general

High

Imágenes finales con mayor exigencia visual

La disponibilidad exacta de estas opciones dependerá del modelo y de la versión del nodo utilizada. Por ejemplo, en nuestra versión de N8N "Quality" no aparecía por defecto, hay que ir a "Options" y añadir este parámetro. También en "Options" nos va a permitir añadir "Resolution".


8.4 Resolución seleccionada

La resolución configurada es:

1536 × 1024

En nuestro caso, el nodo que usamos sólo nos permite seeccionar varias resoluciones predeterminadas. Hemos utilizado la menor posible para poder reducir el coste en la generación de imágenes durante las pruebas.


8.5 Resolución y formato 16:9

En el nodo de configuración habíamos indicado:

Composición horizontal panorámica en formato 16:9

Sin embargo, la resolución técnica seleccionada, 1536 × 1024, no corresponde exactamente a una relación 16:9.

Tiene una proporción aproximada de 3:2.

Debemos distinguir entre dos conceptos:

Concepto

Función

Formato indicado en el prompt

Orienta la composición visual

Resolución del nodo

Determina las dimensiones reales del archivo

El prompt puede pedir una escena panorámica y organizar los elementos con apariencia de portada horizontal, pero el archivo generado tendrá las dimensiones admitidas por el modelo.

Si necesitamos una imagen final en 16:9 exacto, por ejemplo para una portada de blog, podríamos realizar posteriormente un recorte o redimensionado.


Interfaz oscura de OpenAI Generate Image en n8n, con prompt en español, botón Execute step y panel de salida con archivo PNG.
Nodo OpenAI - Generar imagen

Tiempo de generación

La generación de una imagen suele tardar más que una respuesta de texto.

El tiempo puede variar según:

  • El modelo seleccionado.

  • La calidad configurada.

  • La complejidad del prompt.

  • La carga del servicio.

  • El tamaño de la imagen.

Durante la ejecución, el nodo permanecerá activo hasta que OpenAI devuelva el resultado. No debemos interpretar ese tiempo de espera como un error mientras el nodo continúe procesando la solicitud.


Comprobar el resultado

Cuando la ejecución termina correctamente, la salida del nodo mostrará la imagen generada como archivo. En la interfaz de N8N podremos inspeccionar la pestaña de datos binarios y visualizar información como:

  • Nombre del archivo.

  • Tipo MIME.

  • Extensión.

  • Tamaño.

  • Contenido binario.

  • Vista previa, cuando esté disponible.


A partir de este punto ya no trabajamos únicamente con campos JSON. El resultado principal es una imagen real que puede utilizarse en otros nodos.

Prompt de texto
↓
GPT Image 1
↓
Archivo de imagen

Ese cambio de tipo de dato es fundamental. En el siguiente capítulo veremos con detalle qué significa trabajar con un archivo binario dentro de N8N y por qué la misma imagen puede enviarse tanto al nodo de guardado local como al nodo Telegram.


9. Trabajando con archivos binarios

Hasta ahora, en todos los artículos de esta serie, la información que circulaba entre los nodos era texto: un correo electrónico, un mensaje de Telegram, un resumen generado por IA, un conjunto de datos en formato JSON. Todos ellos pueden visualizarse directamente dentro de la salida de un nodo.


Una imagen, sin embargo, es diferente. Cuando OpenAI genera el resultado, no devuelve simplemente un texto describiendo la imagen, devuelve el propio archivo, y ese archivo no puede almacenarse dentro de un campo de texto convencional. Por ese motivo, N8N utiliza un tipo de dato específico denominado Binary Data o datos binarios.


¿Qué es un dato binario?

Un dato binario representa un archivo. Puede tratarse de: una imagen, un documento PDF, Word, un video, un audio, un fichero ZIP.


En lugar de guardar su contenido como texto, N8N lo almacena en una estructura especial preparada para transportar archivos entre nodos.

Podemos imaginar la diferencia así:

Texto
↓
"Hola mundo"

frente a:

Archivo
↓
Imagen.png

Aunque ambos viajan dentro del workflow, su tratamiento es completamente distinto.


¿Dónde aparece el archivo?

Cuando el nodo OpenAI - Generate Image finaliza correctamente, la salida incluye un apartado específico para los datos binarios. El nombre del campo suele ser: "data" aunque puede variar dependiendo del nodo o de la versión utilizada.


Dentro de ese campo se almacena toda la información necesaria para reconstruir el archivo.

Por ejemplo:

  • Nombre.

  • Tipo MIME.

  • Extensión.

  • Tamaño.

  • Contenido binario.

No necesitamos interpretar esos datos manualmente, los siguientes nodos serán capaces de utilizarlos directamente.


Captura de interfaz oscura con OUTPUT, archivo data PNG, tamaño 1.79 MB y botones View y Download.
Salida tipo Binary

Una de las ventajas de trabajar con datos binarios es que el mismo archivo puede reutilizarse tantas veces como sea necesario. En nuestro workflow ocurre precisamente eso.

GPT Image 1
↓
Imagen binaria
├─ Guardar en local
└─ Enviar por Telegram

La imagen se genera una única vez. Después, ambas ramas utilizan exactamente el mismo archivo. No existe una segunda generación ni una copia intermedia, lo que reduce el tiempo de ejecución y evita consumir recursos innecesarios.


Este concepto es importante porque en artículos posteriores utilizaremos exactamente el mismo patrón para manejar documentos PDF, adjuntos de correos electrónicos... Una vez comprendido este mecanismo, el tipo de archivo deja de ser importante. Para N8N, una imagen, un PDF o un documento de Word se manejan de forma muy similar.


Binary Data no es un archivo en disco

Este punto suele generar cierta confusión. Cuando hablamos de Binary Data, todavía no estamos hablando de un archivo guardado en nuestro ordenador. Lo que existe es una copia temporal dentro de la ejecución del workflow.

Podemos representarlo así:

OpenAI
↓
Imagen (Binary Data)
↓
Memoria del workflow

Solo cuando un nodo específico escribe ese contenido en el sistema de archivos obtenemos un fichero físico.

Por ejemplo:

Read Write Files
↓
/files/generated-images/imagen.png

Hasta ese momento, la imagen únicamente existe dentro de la ejecución de N8N.


Ventajas de trabajar con Binary Data

Utilizar archivos binarios dentro de un workflow ofrece varias ventajas:

  • No es necesario guardar el archivo antes de reutilizarlo.

  • El mismo archivo puede enviarse a varios nodos simultáneamente.

  • Se evita generar varias veces el mismo contenido.

  • Los nodos especializados reconocen automáticamente el archivo.

  • El workflow resulta más rápido y eficiente.


10. Nodo 5 — Guardar la imagen en local

Una vez generada la imagen, la primera rama del workflow utiliza el nodo:

Read Write Files - Save Image

Su función es tomar el archivo binario recibido desde OpenAI y escribirlo físicamente en la carpeta definida anteriormente. Hasta este momento, la imagen solo existía dentro de la ejecución de N8N. Con este nodo pasa a convertirse en un archivo permanente.


Dentro del nodo seleccionamos:

Operation: Write File to Disk

Esta operación indica que queremos escribir un archivo en el sistema donde se está ejecutando N8N. El nodo recibe dos elementos principales:

  • La imagen binaria.

  • La ruta completa de destino.

La imagen llega directamente desde el nodo OpenAI. La ruta se recupera desde:

Edit Fields - Build Image Prompt

mediante esta expresión:

={{ $('Edit Fields - Build Image Prompt').item.json.output_file_path }}

El resultado será una ruta similar a:

/files/generated-images/n8n_openai_image_20260711_154812.png

Por qué recuperamos la ruta desde otro nodo

Cuando OpenAI genera la imagen, su salida principal pasa a ser el archivo binario. Los campos JSON que habíamos preparado anteriormente pueden no aparecer directamente en la salida del nodo.


Por ese motivo, en lugar de utilizar:

{{ $json.output_file_path }}

consultamos expresamente el nodo donde se creó la ruta:

{{ $('Edit Fields - Build Image Prompt').item.json.output_file_path }}

Esta expresión puede interpretarse así:

Busca el nodo Build Image Prompt
↓
Toma el item correspondiente
↓
Lee el campo output_file_path

Así podemos utilizar la imagen procedente de OpenAI y, al mismo tiempo, recuperar la ruta definida en una etapa anterior.


La carpeta debe existir

El nodo puede crear el archivo, pero no siempre crea automáticamente toda la estructura de carpetas. Por tanto, antes de ejecutar el workflow debemos asegurarnos de que existe:

/files/generated-images/

Si la carpeta no existe, la ejecución puede terminar con un error similar a:

No such file or directory

También debemos comprobar que el usuario o proceso que ejecuta N8N tiene permisos para escribir en esa ubicación.


Captura de n8n en modo oscuro con flujo OpenAI, guardar imagen y Telegram; panel muestra archivo PNG data listo para descargar.
Nodo Read Write Files - guardar imagen

Qué significa “guardar en local”

La expresión “guardar en local” puede resultar ambigua. El archivo se guarda en el sistema donde se está ejecutando N8N. Esto significa que no necesariamente se guarda en el ordenador desde el que estamos accediendo al editor mediante el navegador.


Podemos encontrarnos con varios escenarios:

Instalación

Dónde se guarda

N8N instalado directamente

En el sistema de archivos del equipo

N8N en un servidor

En el disco del servidor

N8N en Docker

Dentro del contenedor o en un volumen montado

N8N Cloud

No dispone del mismo acceso al disco local

En nuestro caso, N8N está ejecutándose mediante Docker, por lo que la ruta "/files/generated-images/"

pertenece al contenedor.


El trabajo de archivos desde un contenedor Docker lo vimos en un artículo anterior de esta serie: "Serie N8N (VIII): Ejecutar workflows en Docker y resolver problemas de acceso a archivos"


La ruta incluye el nombre preparado en el nodo anterior:

n8n_openai_image_20260711_154812.png

Este sistema permite conservar todas las imágenes generadas. Sin la fecha y la hora, el workflow podría escribir siempre sobre el mismo archivo. Con el nombre dinámico obtenemos un histórico automático.


Guardar en disco es una opción muy útil para una instalación self-hosted, pero no es la única. La misma imagen binaria podría enviarse a Google Drive, Amazón, Sharepoint, Servidor FTP... En esos casos sustituiríamos el nodo Read Write Files por el nodo correspondiente al servicio elegido.


11. Nodo 6 — Enviar la imagen por Telegram

La segunda rama del workflow utiliza el nodo:

Telegram - Send Photo

Su función es enviar directamente al usuario la imagen generada por OpenAI. A diferencia de otros artículos de la serie, aquí no utilizamos la operación Send Message, porque el contenido principal no es texto.

En este caso trabajamos con:

Operation: Send Photo

Los parámetros principales de este nodo son:

Parámetro

Valor

Operación

Send Photo

Chat ID

Identificador del chat de destino

Binary Data

Activado

Caption

Texto configurado para acompañar la imagen

El punto clave es activar:

Binary Data

Esto indica al nodo que debe utilizar un archivo recibido desde un nodo anterior.

La imagen llega directamente desde:

OpenAI - Generate Image

como dato binario. El nodo no necesita volver a descargar ni reconstruir la imagen. Utiliza directamente la salida binaria generada por OpenAI.

El flujo es:

OpenAI
↓
Imagen binaria
↓
Telegram
↓
Fotografía recibida

Esto evita duplicar procesos y mantiene el workflow simple.


Además de la imagen, Telegram permite añadir un texto mediante:

Caption

En nuestro workflow, el contenido se construye con esta expresión:

={{
  $('Edit Fields - Build Image Prompt').item.json.telegram_caption
  + '\n\nArchivo: '
  + $('Edit Fields - Build Image Prompt').item.json.output_filename
}}

La expresión recupera dos valores:

telegram_caption
output_filename

El resultado será similar a:

🖼️ Imagen generada automáticamente con N8N y OpenAI.

Serie N8N Lozkorp (XIX).

Archivo: n8n_openai_image_20260711_154812.png

De esta forma, el usuario recibe no solo la imagen, sino también el nombre con el que ha sido guardada.


Interfaz oscura de automatización con nodos OpenAI y Telegram; paneles muestran Send Photo, parámetros y salida OK.
Nodo Telegram - Enviar Imagen

Por qué recuperamos los campos desde otro nodo

Al igual que ocurría con la ruta de guardado, después de generar la imagen la salida principal es el archivo binario. Por ese motivo, recuperamos la información textual desde:

Edit Fields - Build Image Prompt

mediante expresiones del tipo:

{{ $('Edit Fields - Build Image Prompt').item.json.telegram_caption }}

Esto permite combinar datos procedentes de dos puntos distintos:

OpenAI
→ Archivo binario

Build Image Prompt
→ Caption y nombre del archivo

El nodo Telegram utiliza ambos al mismo tiempo.


12. Probando el workflow

Una vez configurados todos los nodos, ejecutamos el workflow mediante:

Execute Workflow

El proceso debe completar tres acciones:

Comprobación

Resultado esperado

Generación

OpenAI crea la imagen

Guardado

El archivo aparece en la carpeta configurada

Envío

Telegram recibe la fotografía

Antes de generar, conviene revisar que el prompt, el nombre del archivo y la ruta sean correctos.

Después de la ejecución, comprobamos:

  • Que OpenAI devuelve una imagen binaria.

  • Que el archivo se guarda en /files/generated-images/.

  • Que Telegram recibe la imagen y el pie de foto.

  • Que el nombre incluye la fecha y la hora.


Si una de las ramas falla, revisamos ese nodo de forma independiente, ya que el guardado local y el envío a Telegram utilizan la misma imagen, pero tienen configuraciones distintas.

El resultado final debe ser:

Una imagen generada
├─ Guardada en local
└─ Enviada por Telegram

13. Adaptando el workflow a otros casos de uso

El ejemplo del centro de datos es solo una demostración. La estructura del workflow puede reutilizarse para generar muchos tipos de imágenes sin modificar su lógica principal.

En la mayoría de los casos bastará con cambiar los campos del nodo:

Edit Fields - Image Config

Ejemplos de adaptación

Caso de uso

Tema de la imagen

Formato recomendado

Portada de blog

Concepto principal del artículo

Horizontal

Publicación de Instagram

Producto, idea o mensaje visual

Cuadrado

Story o reel

Escena vertical con espacio para texto

Vertical

Miniatura de vídeo

Composición llamativa con punto focal

Horizontal

Presentación corporativa

Concepto empresarial o tecnológico

Panorámico

Material educativo

Diagrama o escena explicativa

Horizontal

Concept art

Personaje, vehículo, edificio o entorno

Variable

Storyboard

Escena narrativa concreta

Horizontal

Visualización de producto

Producto aislado o en contexto

Cuadrado u horizontal

Fondo de pantalla

Escena amplia y limpia

Panorámico

Campaña comercial

Producto, servicio o propuesta de valor

Según el canal

Ilustración técnica

Máquina, proceso o sistema

Horizontal


14. Problemas habituales y soluciones

Aunque el workflow es sencillo, pueden aparecer algunos errores relacionados con el modelo, los archivos binarios, la ruta de guardado o Telegram.

Problema

Posible causa

Solución

OpenAI no genera la imagen

Credenciales incorrectas, saldo insuficiente o modelo no disponible

Revisar la credencial, el modelo seleccionado y el estado de la cuenta

La imagen no representa bien la idea

Prompt poco claro o contradictorio

Revisar image_subject, image_style y elements_to_avoid

La resolución manual devuelve error

El modelo solo admite tamaños concretos

Utilizar una de las resoluciones disponibles en el nodo

El coste de las pruebas es alto

Calidad o resolución demasiado elevadas

Utilizar calidad Low durante la fase de validación

No aparece ningún archivo binario

El nodo OpenAI no ha devuelto correctamente la imagen

Revisar la salida del nodo y comprobar la pestaña Binary

El nodo de guardado devuelve No such file or directory

La carpeta de destino no existe

Crear previamente /files/generated-images/

El archivo no aparece en Windows

La ruta pertenece al contenedor Docker

Comprobar que /files está vinculado a una carpeta del host

El nodo no puede escribir el archivo

N8N no tiene permisos sobre la carpeta

Revisar permisos y configuración del volumen

Las imágenes se sobrescriben

Se utiliza siempre el mismo nombre

Mantener la fecha y la hora dentro de output_filename

Telegram devuelve chat not found

Chat ID incorrecto o conversación no iniciada

Revisar el identificador y enviar primero un mensaje al bot

Telegram no recibe la fotografía

Binary Data no está activado o no existe el archivo binario

Activar la opción y revisar la salida de OpenAI

La imagen llega, pero no aparece el pie de foto

La expresión de Caption es incorrecta

Revisar la referencia a telegram_caption y output_filename

El guardado funciona, pero Telegram falla

Error específico de credenciales, permisos o Chat ID

Revisar únicamente la rama de Telegram

Telegram funciona, pero el guardado falla

Ruta, carpeta o volumen mal configurados

Revisar únicamente la rama local

Revisar el workflow por etapas

Cuando aparezca un error, conviene seguir el mismo orden del flujo:

1. Configuración
2. Construcción del prompt
3. Generación
4. Archivo binario
5. Guardado local
6. Telegram

El primer nodo que no entregue la salida esperada será normalmente el origen del problema.


No repetir la generación innecesariamente

Cada prueba del nodo OpenAI tiene un coste.

Por eso, antes de volver a generar una imagen conviene comprobar:

  • Que el prompt está completo.

  • Que la carpeta existe.

  • Que el Chat ID es correcto.

  • Que las expresiones de nombre y ruta funcionan.

  • Que las credenciales están seleccionadas.

Así evitamos consumir generaciones para detectar errores que en realidad pertenecen a los nodos posteriores.


15. Variaciones y mejoras futuras

El workflow actual ya permite generar una imagen, guardarla y enviarla por Telegram. A partir de esta base podemos añadir nuevas capacidades según el nivel de automatización que necesitemos.


Variación o mejora

Qué añade al workflow

Beneficio principal

Generar el prompt con otra IA

Convierte una idea básica en un prompt visual detallado

Mejora la calidad del resultado y reduce el trabajo manual

Iniciar desde Telegram

Permite pedir imágenes mediante un mensaje

Convierte el workflow en una herramienta interactiva

Leer ideas desde Google Sheets

Procesa una lista de imágenes pendientes

Facilita la generación por lotes y la gestión de contenidos

Crear varias versiones

Genera estilos distintos a partir de la misma idea

Permite comparar alternativas antes de elegir

Añadir aprobación humana

Revisa la imagen antes de guardarla o publicarla

Mantiene control sobre el resultado final

Guardar en la nube

Sustituye el almacenamiento local por Drive, OneDrive, Dropbox o S3

Mejora el acceso, la colaboración y la seguridad

Procesar la imagen

Redimensiona, recorta, comprime o convierte el archivo

Adapta una imagen a diferentes formatos y canales

Añadir logotipo o texto

Incorpora elementos de marca después de la generación

Permite preparar imágenes listas para publicar

Registrar cada generación

Guarda prompt, fecha, modelo, calidad, ruta y estado

Mejora la trazabilidad y facilita localizar archivos

Publicar automáticamente

Envía la imagen a redes sociales, CMS o plataformas internas

Completa el proceso de creación y distribución

Añadir alertas y control de errores

Notifica fallos o resultados incompletos

Hace el workflow más fiable en producción

Integrarlo en un agente

Permite decidir qué imagen crear, cuándo y con qué estilo

Evoluciona hacia una automatización más autónoma

16. Conclusiones

En este artículo hemos dado un paso importante dentro de la serie. Hasta ahora, la mayoría de nuestros workflows trabajaban con texto y datos estructurados. En esta ocasión hemos incorporado un nuevo tipo de resultado: una imagen generada por inteligencia artificial.


El usuario define el tema, el estilo, la composición y las restricciones. N8N transforma esos campos en un prompt completo, OpenAI genera la imagen y el archivo resultante se reutiliza en dos destinos distintos.

Una sola generación produce:

Una imagen binaria
├─ Guardada en local
└─ Enviada por Telegram

No hemos aprendido únicamente a utilizar un modelo de generación de imágenes. También hemos aprendido a manejar archivos binarios dentro de N8N. Ese mismo patrón será útil cuando trabajemos con imágenes, documentos PDF, adjuntos de correo, archivos de audio, videos...


Otro aprendizaje relevante ha sido separar la configuración de la ejecución. El nodo Edit Fields - Image Config funciona como panel de control, mientras que el resto del workflow se encarga de procesar esos valores. Esto permite cambiar el resultado sin modificar la lógica principal.


¿Te animas a probarlo? Descarga el workflow, adapta el tema y el estilo a tu caso y empieza a generar, guardar y enviar tus propias imágenes con N8N.


🌐 Recursos

📘 Documentación oficial

💙 En Lozkorp, serie N8N

📦 Descargar el workflow de este artículo: LK_N8N_XIX_OpenAI_Image_Generation_Local_Telegram.json


Comentarios


© 2025 by Lozkorp                                                         

bottom of page