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.

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.

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:
Nº | 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:
CONFIGURACIÓN
CONSTRUCCIÓN DEL PROMPT
GENERACIÓN DE LA IMAGEN
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
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 ConfigEste 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_imagePosteriormente añadiremos la fecha y la hora para generar un nombre único:
n8n_openai_image_20260711_154812.png6.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...

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_filenameLa 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_pathSu 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.pngEsta ruta será utilizada posteriormente por el nodo encargado de escribir la imagen en disco.
El último campo es:
telegram_captionEn este caso simplemente copiamos el valor recibido:
={{ $json.telegram_caption }}
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:
ImageDe 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_prompt8.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: LowLa 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 × 1024En 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.

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 imagenEse 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.pngAunque 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.

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 workflowSolo 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.pngHasta 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 ImageSu 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 DiskEsta 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 Promptmediante 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.pngPor 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_pathAsí 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 directoryTambién debemos comprobar que el usuario o proceso que ejecuta N8N tiene permisos para escribir en esa ubicación.

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.pngEste 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 PhotoSu 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 PhotoLos 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.

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 ConfigEjemplos 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. TelegramEl 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 TelegramNo 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
Telegram Bots https://core.telegram.org/bots
Documentación del nodo Telegram en N8N https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.telegram/
💙 En Lozkorp, serie N8N
Serie N8N (I): Automatiza tu mundo. Definición e instalación en local
Serie N8N (II): Interfaz y Configuración – Comprende tu entorno de trabajo
Serie N8N (V): Control de flujo – Condiciones, decisiones y ramificaciones
Serie N8n (VI): Entender los datos – cómo fluye la información en un workflow
Serie N8N (VII): Instalar N8N con Docker – del local al servidor sin miedo
Serie N8N (VIII): Ejecutar workflows en Docker y resolver problemas de acceso a archivos
Serie N8N (IX): Automatizar tareas programadas con Schedule Trigger
Serie N8N (XII): Automatizar Google Sheets — guardar datos automáticamente
Serie N8N (XIV): Inteligencia Artificial en N8N - analizar textos automáticamente
Serie N8N (XV): Lead Scoring con IA en N8N - prioriza oportunidades automáticamente
Serie N8N (XVI): Analizar emails automáticamente con IA y generar respuestas sugeridas
Serie N8N (XVII): Usar el nodo OpenAI en N8N — de texto a resumen inteligente
Serie N8N (XVIII): Informes automáticos con IA y Telegram (informe financiero)
📦 Descargar el workflow de este artículo: LK_N8N_XIX_OpenAI_Image_Generation_Local_Telegram.json





















Comentarios