top of page

Serie ComfyUI (XXII) — Creando una secuencia de imágenes con un personaje consistente (IPAdapter + CSV)

8 ago
17 min de lectura

En el artículo anterior dimos un paso importante dentro de la serie ComfyUI: aprendimos a utilizar IPAdapter para mantener la identidad visual de un personaje entre distintas imágenes. Ese workflow nos permitía conservar mejor la apariencia del personaje mientras cambiábamos la pose, la escena o la composición.

Pero una vez resuelto ese primer problema aparece una pregunta muy natural:

¿Y si en lugar de generar una sola imagen queremos crear una pequeña secuencia?

Ese es el objetivo de este artículo. Vamos a utilizar ComfyUI no para generar una imagen aislada, sino para crear una serie de escenas protagonizadas por el mismo personaje. Para ello construiremos un workflow basado en:

  • SDXL

  • LoRA

  • IPAdapter

  • prompts leídos desde un archivo CSV


La idea es sencilla: una imagen de referencia define quién es el personaje,y un archivo CSV define qué ocurre en cada escena.


Diagrama de flujo con nodos y líneas de colores; texto: Workflow Consistencia de personajes IPAdapter + CSV de prompts.
Consistencia de personajes - IPAdapter

De una imagen aislada a una secuencia narrativa

Hasta ahora, muchos de los workflows que hemos visto en ComfyUI estaban pensados para generar una única imagen. Eso está bien para aprender nodos, probar modelos o experimentar con estilos.

Pero cuando queremos crear algo más parecido a una historia visual, una imagen aislada se queda corta.

Necesitamos generar varias imágenes que compartan una misma lógica:

  • el mismo personaje

  • el mismo estilo visual

  • una ambientación coherente

  • una evolución entre escenas

En este artículo vamos a trabajar precisamente con esa idea. No vamos a crear ocho imágenes independientes. Vamos a crear una pequeña secuencia protagonizada por la misma guardiana futurista dentro de un entorno industrial.


En lugar de escribir un prompt, generar una imagen y empezar de nuevo, vamos a preparar primero un pequeño plan de escenas. Después ComfyUI irá leyendo ese plan para generar cada imagen. Ese cambio convierte el workflow en algo mucho más cercano a un proceso de producción:

primero diseñamos la secuencia, después generamos las imágenes.

Y ahí es donde el archivo CSV empieza a tener sentido.


Qué vamos a construir

En este artículo vamos a construir un workflow sencillo, pero muy útil: un generador de escenas basado en un personaje consistente y un archivo CSV.

Cada imagen representará una escena diferente, pero todas compartirán:

  • la misma identidad visual

  • el mismo estilo cyberpunk industrial

  • el mismo formato vertical

  • una estética coherente

Para conseguirlo utilizaremos cuatro piezas principales.

Elemento

Función

SDXL

Modelo base de generación

LoRA

Mantener el estilo visual

IPAdapter

Conservar la identidad del personaje

CSVToPrompts

Leer los prompts de cada escena desde un CSV


La idea clave: un personaje fijo y varias escenas desde CSV

La lógica del workflow es muy sencilla:

una imagen de referencia define quién es el personaje, y un archivo CSV define qué ocurre en cada escena.

La imagen de referencia se conecta a IPAdapter. Su función es mantener la identidad visual del personaje durante toda la secuencia.

El archivo CSV contiene los prompts de cada escena. Cada fila representa una imagen diferente que queremos generar. De esta forma, el workflow separa dos conceptos importantes:

Elemento

Qué controla

Imagen de referencia

Identidad visual del personaje

CSV

Acción, escena y contexto narrativo

Esto hace que el sistema sea mucho más fácil de mantener.

  • Si queremos cambiar el personaje, cambiamos la imagen de referencia.

  • Si queremos modificar la historia, editamos el CSV.

  • Y si queremos generar más escenas, simplemente añadimos más filas.


🧩 Requisitos

Para seguir este artículo y ejecutar correctamente el workflow SDXL + LoRA + IPAdapter + CSVToPrompts dentro de ComfyUI, necesitas tener preparados los siguientes elementos.

💻 Entorno

Necesitas tener:

  • ComfyUI instalado y funcionando correctamente

  • GPU recomendada para obtener una experiencia fluida

👉 Este workflow no utiliza OpenPose, por lo que es más ligero que el del artículo anterior. Aun así, al trabajar con SDXL e IPAdapter, es recomendable contar con una GPU con suficiente VRAM.


🧠 Modelo SDXL

En este workflow utilizamos el siguiente modelo base:

  • SDXL\juggernautXL_v8Rundiffusion.safetensors

Este checkpoint será la base sobre la que construiremos todas las escenas de la secuencia.


🎨 LoRA utilizado en este workflow

Para mantener una estética visual coherente durante toda la secuencia utilizamos el siguiente LoRA:

  • SDXL\cyberpunk_xl_v1.safetensors

Este LoRA aporta la estética cyberpunk industrial del personaje y ayuda a que las ocho escenas compartan un mismo lenguaje visual.


👤 IPAdapter

El elemento central del workflow es IPAdapter, que nos permite mantener la identidad visual del personaje a partir de una imagen de referencia.

En este workflow utilizamos:

  • ip-adapter-plus_sdxl_vit-h.safetensors

También necesitamos cargar el modelo visual:

  • CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors

👉 IPAdapter será el encargado de conservar la apariencia general del personaje mientras el CSV va cambiando la escena.


🖼️ Imagen de referencia del personaje

Necesitamos una imagen de referencia que represente al personaje que queremos mantener durante toda la secuencia. En nuestro caso utilizamos una imagen de una guardiana futurista industrial, que servirá como base visual para las ocho escenas.

Es importante que esta imagen tenga:

  • rostro visible

  • buena iluminación

  • diseño coherente con el personaje

  • ropa o armadura lo más parecida posible al resultado deseado

👉 Si la imagen de referencia tiene una ropa que no queremos conservar, conviene bajar el peso de IPAdapter para evitar que arrastre demasiado esos elementos.


📄 Nodo principal del artículo: CSVToPrompts

El nodo nuevo de este artículo es:

CSVToPrompts

Este nodo permite leer prompts desde un archivo CSV y enviarlos directamente a los nodos de texto de ComfyUI.

En nuestro workflow lo utilizamos para leer el prompt positivo y el negativo desde el archivo:

Storyboard_wf_ComfyUI_XXII_Storyboard_IPAdapter_LoRA_CSV_001.csv

👉 Esto nos permite separar la planificación de escenas del propio workflow.


📝 Archivo CSV del storyboard

El CSV funciona como un pequeño Storyboard Plan. Cada fila representa una escena de la secuencia. El archivo puede tener varias columnas, pero las más importantes para el nodo son:

positive
negative

En nuestro caso hemos añadido también columnas adicionales para organizar mejor la secuencia:

  • scene_id

  • scene_name

  • output_prefix

  • Comments

Estas columnas no alimentan directamente el prompt, pero ayudan a documentar y mantener el storyboard.


🗂️ Crear o cargar el workflow en ComfyUI

Tienes dos maneras de trabajar con este flujo:

🅰️ Opción A — Cargar el workflow ya creado

1️⃣ Descarga el archivo JSON adjunto:📁  wf_ComfyUI_XXII_Storyboard_IPAdapter_LoRA_CSV.json


2️⃣ Abre ComfyUI.

3️⃣ En el menú superior selecciona:Workflow → Load

4️⃣ Carga el archivo JSON. Verás en el lienzo todos los nodos conectados y listos para funciona


Menú Workflow abierto con opción Open resaltada; a la derecha, lienzo de nodos conectados en un flujo llamado WF_SDXL_simple.
Cargar workflow en ComfyUI

r.


🅱️ Opción B — Crear el workflow desde cero

Si prefieres entenderlo pieza a pieza, puedes recrearlo manualmente. En la siguiente sección explicamos qué hace cada bloque del flujo.

Menú Workflow con opción New resaltada y flecha hacia un lienzo vacío; interfaz gris con estado Idle y texto Unsaved Workflow.
Empezar con workflow en blanco

El Storyboard Plan: preparar las escenas antes de generar

Antes de generar las imágenes, conviene definir qué queremos construir. Vamos a preparar primero una pequeña planificación de escenas. A esa planificación la llamaremos Storyboard Plan. La idea es sencilla: cada fila del archivo representa una escena diferente de la secuencia.

En nuestro caso, la historia visual está formada por ocho momentos:

ID

Escena

0

Entrada en la fábrica

1

Alarma en la línea de producción

2

Activación de espada de energía

3

Preparada para el combate

4

Saltando

5

Escalando

6

Con metralleta

7

Atacando con rodillazo

Cada escena debe tener una función dentro del conjunto. Algunas presentan el entorno, otras añaden tensión y otras introducen acción. En lugar de generar imágenes sueltas, empezamos a preparar una pequeña narrativa visual.

  • Primero pensamos la secuencia.

  • Después escribimos los prompts.

  • Y finalmente dejamos que ComfyUI los vaya leyendo desde el CSV.

👉 Este método permite trabajar de forma más ordenada y facilita mucho la revisión, corrección y ampliación del workflow.


El nodo CSVToPrompts: cómo funciona

Existen varios nodos para leer prompts desdde un archivo CSV, incluso desde archivos TXT o EXCEL. En nuestro ejemplo, vamos a usar el nodo CSVToPrompts es el encargado de conectar nuestro Storyboard Plan con ComfyUI.

Su función es leer una fila del archivo CSV y convertirla en dos salidas de texto:

  • positive_string

  • negative_string

Estas dos salidas se conectan directamente a los nodos CLIPTextEncode del workflow. De esta forma, el prompt positivo y el prompt negativo ya no se escriben manualmente dentro de ComfyUI, sino que se leen desde el archivo CSV.


El archivo CSV ha de estar en una ruta específica, ya que el nodo solo lee los CSV que estén en esa ruta. Además, cuando añadas un archivo nuevo en esa ruta, deberás "refrescar" el comfyUI para que el nodo vuelva a leer lo que hay en esa carpeta. Esto se puede hacer en el menu "Edit - Refresh Node Definitions" o reiniciando el ComfyUUI.

Ruta para el CSV: "C:\pinokio\api\comfy.git\app\custom_nodes\csv-to-prompt\csv_files"


🧩 Columnas que utiliza el nodo

Aunque nuestro CSV puede tener varias columnas para organizar mejor la secuencia, el nodo necesita especialmente dos:

  • "positive": la columna positive contiene el prompt positivo de cada escena.

  • "negative": la columna negative contiene el prompt negativo.

El resto de columnas, como scene_id, scene_name, output_prefix o Comments, son útiles para documentación, pero no alimentan directamente el prompt.


🔢 Índice de lectura

Un detalle importante es que la primera prompt corresponde al índice 0.

Por tanto, si tenemos ocho escenas, el recorrido irá desde:

0 → 7

Esto es importante cuando revisamos qué escena se está generando o cuando queremos repetir una escena concreta.

🔁 Modo de lectura

En nuestro workflow utilizamos el modo:

increment

Esto permite que el nodo avance por las filas del CSV en cada ejecución. Así, si ejecutamos el workflow varias veces seguidas, ComfyUI irá leyendo una escena distinta en cada pasada.


El archivo CSV: estructura y buenas prácticas

El archivo CSV es la pieza que convierte este workflow en un pequeño sistema de generación por escenas. En lugar de escribir el prompt directamente dentro de ComfyUI, guardamos todas las escenas en una tabla externa.

  • Cada fila representa una escena.

  • Cada columna contiene una parte de la información necesaria para organizar esa escena.


En nuestro caso, el CSV tiene una estructura similar a esta:

Columna

Función

scene_id

Identificador de la escena

scene_name

Nombre descriptivo de la escena

positive

Prompt positivo

negative

Prompt negativo

output_prefix

Nombre o prefijo de salida

Comments

Notas internas o comentarios

El nodo CSVToPrompts utiliza principalmente dos columnas:

positive
negative

Estas son las columnas que alimentan los nodos de prompt positivo y negativo. El resto de columnas no son imprescindibles para generar la imagen, pero son muy útiles para trabajar de forma ordenada.


En este workflow la primera prompt corresponde a la posición 0. Por tanto, si tenemos ocho escenas, las escenas irán de la 0 a la 7. Esto puede resultar un poco extraño si venimos de trabajar con listas numeradas desde 1, pero es habitual en muchos sistemas de automatización. Conviene tenerlo en cuenta al revisar qué escena se está generando en cada momento.


📄 Recomendación práctica: trabajar primero en Excel

Aunque podemos crear el CSV directamente en un editor de texto, resulta mucho más cómodo preparar primero una tabla en Excel.

Excel permite:

  • revisar mejor las columnas

  • editar prompts largos

  • ordenar escenas

  • añadir comentarios

  • corregir textos antes de exportar

Una vez preparada la tabla, podemos convertirla a CSV.


⚠️ Cuidado con el formato del CSV

A la hora de generar o modificar el archivo CSV, hay que tener cuidado entre otras cosas con la confituración regional del sistema, ya que usando Excel, se puede guardar el CSV usando coma o punto y coma como separador, y eso puede provocar que el nodo no lea correctamente las columnas.

También hay que tener cuidado con la codificación del archivo, especialmente si usamos acentos, eñes o caracteres especiales.

Para evitar problemas, lo recomendable es guardar o convertir el CSV como:

CSV UTF-8

Y revisar que las columnas se llaman exactamente:

positive
negative

sin espacios adicionales ni cambios de mayúsculas innecesarios.


Una buena manera de hacerlo, podría ser, una vez que tenemos el archivo EXCEL, usar chatGPT por ejemplo, para convertirlo a CSV.

Otra opción para evitar problemas, es crear o modificar el CSV a través de otras herramientas como puede ser desde un editor de texto o desde otros como por ejemplo Visual Studio Code.


👀 Nodos Show Text

Para hacer el workflow más fácil de entender añadimos dos nodos Show Text:

  • uno para el prompt positivo

  • otro para el prompt negativo

Estos nodos no modifican la imagen. Su función es mostrar en pantalla qué texto está leyendo el workflow en cada momento. Esto resulta especialmente útil cuando ejecutamos varias escenas seguidas, porque podemos comprobar de forma visual que el CSV se está leyendo correctamente.


El workflow: estructura general

Una de las cosas más interesantes de este workflow es que, aunque introduce una pieza nueva —la lectura de prompts desde CSV— mantiene una estructura bastante limpia.

La lógica general es la siguiente:

Checkpoint SDXL
   ↓
LoraLoader
   ↓
IPAdapter
   ↓
KSampler
   ↓
VAE Decode
   ↓
Preview / Save

En paralelo, el archivo CSV alimenta los prompts:

CSVToPrompts
   ↓
Positive Prompt / Negative Prompt
   ↓
Show Text
   ↓
CLIPTextEncode
   ↓
KSampler

La idea es muy sencilla:

el modelo, el LoRA y el IPAdapter mantienen la base visual; el CSV va cambiando la escena en cada ejecución.

🧩 Qué hace cada bloque

Bloque

Función

CheckpointLoaderSimple

Carga el modelo SDXL

LoraLoader

Aplica el estilo visual cyberpunk

LoadImage

Carga la imagen de referencia del personaje

CLIPVisionLoader

Interpreta visualmente la imagen de referencia

IPAdapterModelLoader

Carga el modelo IPAdapter

IPAdapterAdvanced

Aplica la identidad visual al modelo

CSVToPrompts

Lee prompts positivos y negativos desde el CSV

Show Text

Muestra el prompt activo en pantalla

CLIPTextEncode

Convierte los prompts en conditioning

EmptyLatentImage

Define resolución y batch size

KSampler

Genera la imagen

VAEDecode

Convierte el latente en imagen visible

PreviewImage / SaveImage

Visualiza y guarda el resultado


🧱 Entendiendo el workflow paso a paso

Una vez vista la estructura general, vamos a revisar los nodos principales del workflow.

1️⃣ CheckpointLoaderSimple

Qué hace:

Carga el modelo SDXL que utilizará el workflow para generar la imagen.

En este ejemplo utilizamos:

Qué tocar:

  • El checkpoint utilizado. Puedes sustituirlo por cualquier modelo compatible con SDXL.

Salida:

  • MODEL → LoraLoader

  • CLIP → LoraLoader

  • VAE → VAEDecode


Captura de interfaz con nodos Load Checkpoint y Load LoRA; se ven archivos SDXL y controles de fuerza en gris.
Load Checkpoint & Load LoRA

2️⃣ LoraLoader

Qué hace:

Carga el LoRA encargado de aportar el estilo visual del personaje.

En este workflow utilizamos:

Con una intensidad moderada conseguimos mantener una estética homogénea sin alterar en exceso la identidad del personaje.

Qué tocar:

  • Modelo LoRA.

  • Model Strength. En nuestro caso utilizamos un valor aproximado de 0.60.

  • CLIP Strength. En nuestro caso utilizamos un valor aproximado de 0.60.

Salida:

  • MODEL → IPAdapter Advanced

  • CLIP → CLIPTextEncode (+)

  • CLIP → CLIPTextEncode (–)


3️⃣ LoadImage — referencia del personaje

Qué hace:

Carga la imagen que utilizará IPAdapter para mantener la identidad visual del personaje.

Lo ideal es utilizar un retrato o un plano medio donde la cara sea claramente visible.

Qué tocar:

  • La imagen de referencia.

Cuanto más limpia y reconocible sea la imagen, mejores resultados obtendremos.

Salida:

  • IMAGE → IPAdapter Advanced


Interfaz de nodos IA con IPAdapter; vista previa de mujer futurista de pelo blanco y traje negro, con texto técnico en paneles.
Load Image - Load CLIP Vision - IPAdapder Model Loader

4️⃣ CLIPVisionLoader

Qué hace:

Carga el modelo CLIP Vision utilizado por IPAdapter para analizar la imagen de referencia.

En este workflow utilizamos:

Qué tocar:

  • Modelo CLIP Vision.

Salida:

  • CLIP_VISION → IPAdapter Advanced


5️⃣ IPAdapterModelLoader

Qué hace:

Carga el modelo IPAdapter compatible con SDXL. Hay varios, pero en este ejemplo utilizamos:

Qué tocar:

  • Modelo IPAdapter.

Salida:

  • IPADAPTER → IPAdapter Advanced


6️⃣ IPAdapterAdvanced

Qué hace:

Combina el modelo SDXL, el modelo CLIP, la imagen de referencia y el modelo IPAdapter para introducir la identidad visual del personaje en el proceso de generación.

Es el nodo responsable de mantener la coherencia facial entre distintas imágenes.

Qué tocar:

El parámetro más importante es el weight.

Durante las pruebas vimos tres escenarios útiles:

Caso

Weight recomendado

La ropa de referencia contamina demasiado

0.40

Valor intermedio equilibrado

0.50

La referencia ya tiene la ropa correcta

0.65

Si el valor es demasiado alto, IPAdapter puede arrastrar demasiados detalles de la imagen original.

Si es demasiado bajo, el personaje puede perder consistencia.


Salida:

  • MODEL → KSampler


7️⃣ CSVToPrompts

Qué hace

Lee el archivo CSV del storyboard y devuelve dos textos: positive_string y negative_string

Estos textos corresponden al prompt positivo y negativo de cada escena.


Qué tocar

  • archivo CSV seleccionado

    • El archivo CSV lo lee de la ruta: "C:\pinokio\api\comfy.git\app\custom_nodes\csv-to-prompt\csv_files"

  • índice inicial

    • El primer prompt es el 0

  • modo de lectura. En nuestro caso utilizamos el modo: increment. Esto permite avanzar por las filas del CSV en cada ejecución.

Salida

  • positive_string → CLIPTextEncode positivo

  • negative_string → CLIPTextEncode negativo


Diagrama de nodos con cajas verde y roja para prompt positivo y negativo desde CSV; cables conectados y paneles de texto.
CSVToPrompt - Show Text - CLIP Text Encode

8️⃣ Show Text

Qué hace

Muestra en pantalla el prompt que está leyendo el workflow. En este workflow usamos dos nodos:

  • uno para el prompt positivo

  • otro para el prompt negativo

Qué tocar

Nada. Son nodos de revisión y depuración.

Por qué son útiles

Cuando ejecutamos varias escenas seguidas, permiten comprobar qué fila del CSV se está utilizando en cada momento.


9️⃣ CLIPTextEncode

Qué hace

Convierte el texto del prompt en conditioning para el modelo. En este workflow tenemos dos nodos:

  • Positive Prompt desde CSV

  • Negative Prompt desde CSV

Ambos reciben el texto directamente desde CSVToPrompts.

Qué tocar

Normalmente no escribimos aquí el prompt manualmente, porque llega desde el CSV.

Salida

  • CONDITIONING → KSampler

🔟 EmptyLatentImage

Qué hace

Define el tamaño inicial de la imagen latente. En este workflow utilizamos:

  • 768 × 1152

Es un formato vertical adecuado para personajes de cuerpo completo.

Qué tocar

  • ancho

  • alto

  • batch size

Salida

  • LATENT → KSampler

Captura de un flujo de IA con nodos Generación escena y Guardar escena, mostrando un guerrero sci‑fi azul en una vista previa.
Empty Latent Image - KSampler

1️⃣1️⃣ KSampler

Qué hace

Es el nodo donde se genera la imagen. Aquí se combinan:

  • modelo SDXL con LoRA

  • identidad visual aplicada mediante IPAdapter

  • prompt positivo desde CSV

  • prompt negativo desde CSV

  • latent inicial

Parámetros utilizados

Parámetro

Valor

Steps

30

CFG

6.5

Sampler

euler

Scheduler

normal

Denoise

1.00

Qué tocar

  • seed

  • steps

  • CFG

  • sampler

  • scheduler

Cambiar la seed permite generar variantes distintas de la misma escena.


1️⃣2️⃣ VAEDecode

Qué hace

Convierte el resultado latente del sampler en una imagen visible.

Sin este nodo seguiríamos teniendo únicamente una representación interna de la imagen.

Qué tocar

Nada en este workflow.

Salida

  • IMAGE → PreviewImage IMAGE → SaveImage

1️⃣3️⃣ PreviewImage / SaveImage

Qué hacen

Son los nodos finales del workflow. Permiten:

  • revisar la imagen dentro de ComfyUI

  • guardar el resultado en disco

Qué tocar

En SaveImage podemos modificar el prefijo de salida para organizar mejor las imágenes generadas.


Ajustando IPAdapter: cuándo usar 0.40, 0.50 o 0.65

Uno de los puntos más importantes de este workflow es ajustar correctamente el peso de IPAdapter. IPAdapter nos ayuda a mantener la identidad visual del personaje, pero también puede arrastrar elementos de la imagen de referencia que quizá no queremos conservar.

Por ejemplo:

  • ropa

  • colores

  • postura

  • iluminación

  • composición general

Por eso, el valor de weight no debe entenderse como un número fijo, sino como un ajuste que depende mucho de la imagen de referencia que estemos utilizando.


🎚️ El peso de IPAdapter

  • más peso → más parecido a la imagen de referencia

  • menos peso → más libertad para el prompt y el modelo

Durante las pruebas trabajamos con varios valores.

Caso

Weight recomendado

La referencia tiene ropa que no queremos conservar

0.40

Queremos un equilibrio entre identidad y libertad

0.50

La referencia ya tiene la ropa correcta del personaje

0.65

👕 Cuando la ropa de referencia contamina el resultado

Si usamos una imagen de referencia donde el personaje lleva una ropa distinta a la que queremos generar, IPAdapter puede intentar conservar esa ropa. En ese caso, un valor alto puede ser contraproducente.

Por ejemplo, si queremos generar una guardiana futurista con armadura cyberpunk, pero la imagen de referencia tiene una ropa demasiado cotidiana, IPAdapter puede arrastrar parte de esa ropa al resultado final.

En ese caso funciona mejor bajar el peso a valores cercanos a: 0.40

Así mantenemos parte de la identidad, pero dejamos más espacio al prompt para imponer el vestuario correcto.


🧍 Cuando la referencia ya es buena

Si la imagen de referencia ya muestra al personaje con la estética adecuada, podemos subir el peso. En ese caso IPAdapter no solo mantiene la cara o la estructura general, sino que también ayuda a conservar el diseño del personaje. Para este caso podemos trabajar con valores cercanos a: 0.65


Esto funciona especialmente bien cuando la referencia ya tiene:

  • armadura correcta

  • colores adecuados

  • estilo visual coherente

  • diseño similar al resultado buscado


⚖️ El valor intermedio

Un valor como: 0.50 puede ser un buen punto de partida. No fuerza demasiado la imagen de referencia, pero tampoco deja que el personaje cambie por completo entre escenas.

Es un valor útil para empezar a probar el workflow y después ajustar según el resultado.


Generando la secuencia de 8 escenas

Una vez configurado el workflow, podemos empezar a generar la secuencia. El CSV preparado para este artículo contiene ocho escenas distintas, todas protagonizadas por el mismo personaje.

ID

Escena

0

Entrada en la fábrica

1

Alarma en la línea de producción

2

Activación de espada de energía

3

Preparada para el combate

4

Saltando

5

Escalando

6

Con metralleta

7

Atacando con rodillazo

La idea es ejecutar el workflow varias veces para que el nodo CSVToPrompts vaya leyendo una fila diferente del archivo.


En el nodo CSVToPrompts utilizamos el modo: increment

Esto permite avanzar por las filas del CSV en cada ejecución. Así, si lanzamos el workflow varias veces seguidas, ComfyUI irá generando una escena distinta cada vez.

La primera escena corresponde al índice 0, por lo que una secuencia de ocho imágenes recorrerá las filas de la 0 a la 7.


Para entender mejor qué está ocurriendo, añadimos dos nodos Show Text:

  • uno para el prompt positivo

  • otro para el prompt negativo

Estos nodos permiten ver en pantalla qué prompt está entrando en el workflow en cada momento. Esto es especialmente útil cuando ejecutamos varias generaciones seguidas, porque podemos comprobar que el CSV está avanzando correctamente.


💡 Qué debemos observar

Al revisar las imágenes generadas, conviene fijarse en tres aspectos:

Aspecto

Qué revisar

Identidad

Si el personaje sigue siendo reconocible

Estilo

Si todas las escenas mantienen la estética cyberpunk industrial

Escena

Si cada prompt genera una acción diferente

No buscamos que todas las imágenes sean idénticas. Buscamos que parezcan formar parte del mismo universo visual.


Limitación: sin OpenPose no hay control exacto de la pose

Este workflow no utiliza OpenPose. Y eso es importante entenderlo bien.

En este artículo estamos controlando la secuencia mediante prompts, no mediante imágenes de pose.

Eso significa que podemos escribir escenas como saltando, escalando, activando una espada de energía, atacando con un rodillazo, pero será el modelo quien interprete esas acciones. No estamos obligando al personaje a adoptar una postura exacta.


Cuando no usamos OpenPose, la pose depende principalmente del prompt, la seed, el modelo base, el LoRA y la imagen de referencia usada. Por eso, dos generaciones con el mismo prompt pueden producir resultados parecidos, pero no necesariamente idénticos en postura. Esto no es un fallo del workflow, es simplemente una decisión de diseño.


Esta versión del workflow nos permite centrarnos en tres ideas muy importantes:

Elemento

Qué aprendemos

IPAdapter

Mantener un personaje reconocible

CSVToPrompts

Automatizar prompts por escena

Storyboard Plan

Planificar una secuencia antes de generar

Es una versión más limpia, más didáctica y más fácil de probar.


Qué viene después

Ya tenemos una forma sencilla de generar varias escenas del mismo personaje utilizando un CSV como Storyboard Plan, pero todavía hay una parte que no estamos controlando de forma precisa: la pose.


El siguiente paso lógico sería ampliar el CSV con una nueva columna: "pose_image". Esa columna podría indicar qué imagen de pose debe utilizarse en cada escena. De esta forma, cada fila del CSV no solo definiría el prompt, sino también la pose asociada.

La estructura podría ser algo así:

scene_id

scene_name

positive

negative

pose_image

0

Entrada

prompt de entrada

negative

pose_entrada.png

1

Alarma

prompt de alarma

negative

pose_alerta.png

2

Combate

prompt de combate

negative

pose_combate.png

Con esa ampliación podríamos combinar:

Elemento

Función

IPAdapter

Mantener identidad visual

CSVToPrompts

Leer prompts por escena

OpenPose

Controlar la postura

ControlNet

Aplicar la pose al modelo

LoRA

Mantener estilo

SDXL

Generar la imagen final

El resultado sería un storyboard mucho más controlado. Ya no dependeríamos únicamente de que el prompt describa bien la acción. También podríamos indicar visualmente la postura que queremos para cada escena.


Conclusión

Con este artículo ya no estamos generando una única imagen ni probando un nodo aislado, estamos construyendo un pequeño pipeline creativo.

  • La imagen de referencia mantiene la identidad del personaje mediante IPAdapter.

  • El LoRA ayuda a conservar una estética común.

  • El CSV define las escenas del storyboard.

  • Y ComfyUI ejecuta la secuencia leyendo cada prompt desde una planificación externa.


El cambio más importante no está solo en el nodo CSVToPrompts. El cambio está en la forma de trabajar. En lugar de escribir prompts sueltos dentro del workflow, preparamos primero una tabla con las escenas que queremos generar. Eso nos permite pensar antes la secuencia, revisar los prompts con más comodidad y reutilizar el mismo workflow para distintas historias visuales.


Este enfoque nos acerca a una forma de trabajo más organizada.

Podemos tener:

  • un personaje de referencia

  • varios CSV con distintas historias

  • un mismo workflow reutilizable

  • una salida ordenada por escenas


Si quieres seguir aprendiendo a dominar la IA en local y construir workflows realmente útiles:


🌐 Recursos útiles


Comentarios


© 2025 by Lozkorp                                                         

bottom of page