Serie ComfyUI (XXII) — Creando una secuencia de imágenes con un personaje consistente (IPAdapter + CSV)
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.

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

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.

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:
juggernautXL_v8Rundiffusion.safetensors (https://civitai.com/models/133005?modelVersionId=782002)
Qué tocar:
El checkpoint utilizado. Puedes sustituirlo por cualquier modelo compatible con SDXL.
Salida:
MODEL → LoraLoader
CLIP → LoraLoader
VAE → VAEDecode

2️⃣ LoraLoader
Qué hace:
Carga el LoRA encargado de aportar el estilo visual del personaje.
En este workflow utilizamos:
cyberpunk_xl_v1.safetensors (https://civitai.com/models/135492/cyberpunk-style-sci-fi-lora-xl)
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

4️⃣ CLIPVisionLoader
Qué hace:
Carga el modelo CLIP Vision utilizado por IPAdapter para analizar la imagen de referencia.
En este workflow utilizamos:
CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors
(https://huggingface.co/ModelsLab/CLIP-ViT-H-14-laion2B-s32B-b79K)
Este modelo se descarga y se mueve a "C:\pinokio\api\comfy.git\app\models\clip_vision\"
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:
ip-adapter-plus_sdxl_vit-h.safetensors
Se puede descargar en: "https://github.com/cubiq/ComfyUI_IPAdapter_plus"
Se tiene que colocar en la siguiente ruta: "C:\pinokio\api\comfy.git\app\models\ipadapter\"
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

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

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
🌍 Hugging Face: uno de los mayores repositorios de IA del mundo, donde encontrarás miles de modelos —incluidos los compatibles con Stable Diffusion y ComfyUI— listos para descargar y usar.
🎨CivitAI: plataforma comunitaria donde los usuarios comparten modelos, estilos, LoRAs y nodos específicos para ComfyUI, clasificados por categoría, versión y nivel de complejidad.
🧠 En Lozkorp:
Descubre el artículo previo donde introdujimos ComfyUI dentro del ciclo “Generación de imágenes con IA en local (IV)”:🔗 Generación de imágenes con IA en local (IV) — ComfyUI
Serie ComfyUI (V) -- Generar imágenes a partir de prompts guardados en un archivo de texto
Serie ComfyUI (VI) — Extraer prompts desde una carpeta de imágenes (WD14 Tagger)
Serie ComfyUI (VII) — Img2Img simple: mejorar o modificar una imagen en local
Serie ComfyUI (VIII) — Upscale de imágenes: qué es, cómo funciona y workflow comparativo
Serie ComfyUI (IX) — Upscale y normalización automática de imágenes
Serie ComfyUI (XI) — Introducción a ControlNet: control real sobre la forma
Serie ComfyUI (XII) — ¿Qué es un LoRA y cómo usarlo en Stable Diffusion?
Serie ComfyUI (XIII) — Multi-LoRA: cómo combinar estilos sin romper la imagen
Serie Comfy-UI (XIV): ControlNet + LoRA: control total de forma y estilo
Serie ComfyUI (XV) — ControlNet + LoRA en FLUX: nuevas opciones para control de forma y estilo
Serie ComfyUI (XVI) — Multi-ControlNet: combinando varios controles en un mismo workflow
Serie ComfyUI (XVII) — Multi-ControlNet para personajes: controlando pose y detalle
Serie ComfyUI (XVIII) — FLUX Turbo: generación rápida y nuevos workflows
Serie ComfyUI (XIX) — FLUX + Multi-LoRA: combinando estilos con Power Lora Loader
Serie ComfyUI (XX) — Consistencia de personajes con ControlNet, LoRA y prompts
Serie ComfyUI (XXI) - Consistencia de personajes con IPAdapter
Archivo JSON de este ejemplo
📁 wf_ComfyUI_XXII_Storyboard_IPAdapter_LoRA_CSV.json





















Comentarios