top of page

Serie ComfyUI (XXIII) — Secuencia de imágenes de un personaje con prompts y poses sincronizadas desde CSV

  • 22 ago
  • 13 min de lectura

En el artículo anterior usamos un CSV como Storyboard Plan para generar varias escenas del mismo personaje en ComfyUI. El sistema funcionaba bien, pero tenía una limitación clara: la pose dependía del prompt. Podíamos escribir que el personaje estaba saltando, escalando o atacando, pero era el modelo quien interpretaba esa acción.


En este artículo vamos a dar el siguiente paso: sincronizar cada prompt con una imagen de pose.

Para ello combinaremos:

  • SDXL

  • LoRA

  • IPAdapter

  • CSVToPrompts

  • OpenPose

  • ControlNet

  • Load Image Batch

  • un contador maestro

La idea central es sencilla:

cada escena tendrá su prompt y su pose asociada.

Así pasamos de una secuencia guiada por texto a un storyboard mucho más controlado.


Diagrama de flujo con nodos y fotos de personajes; texto: Workflow, Consistencia de personajes, IPAdapter + CSV de prompts + POSE
Secuencia de imágenes de un personaje con prompts y poses sincronizadas desde CSV

Qué problema resolvemos respecto al artículo anterior

En el artículo XXII conseguimos que ComfyUI generara varias escenas leyendo los prompts desde un CSV. Eso nos permitía trabajar de forma más ordenada: cada fila del archivo representaba una escena distinta del storyboard.

Pero había una limitación importante.


El CSV controlaba el texto, pero no controlaba la pose. Si una escena decía que el personaje estaba saltando, atacando o escalando, el modelo intentaba interpretarlo, pero no tenía una referencia visual exacta de la postura.

En este artículo resolvemos ese problema añadiendo una imagen de pose para cada escena.

La diferencia es clara:

Artículo

Qué controlaba el CSV

Pose

XXII

Prompt positivo y negativo

Interpretada por el modelo

XXIII

Prompt positivo, negativo y pose asociada

Guiada con OpenPose

Ahora cada escena queda mucho mejor definida:

prompt para indicar qué ocurre, pose para indicar cómo debe colocarse el personaje.

Este cambio convierte el workflow en un storyboard más dirigido y mucho menos dependiente de la interpretación libre del modelo.


La idea clave: una escena = un prompt + una pose

En este workflow cada escena se define con dos elementos principales:

  • un prompt

  • una imagen de pose


El prompt describe qué ocurre en la escena: el entorno, la acción, la iluminación, el estilo y los detalles visuales.

La imagen de pose define cómo debe colocarse el personaje: si está de pie, corriendo, saltando, escalando o en posición de combate. Esta separación es importante porque nos permite controlar mejor el resultado.

Elemento

Qué define

Prompt

Qué ocurre en la escena

Imagen de pose

Cómo se coloca el personaje

IPAdapter

Quién es el personaje

LoRA

Qué estilo visual mantiene

De esta forma, cada fila del storyboard tiene una función muy clara. No estamos dejando que el modelo imagine libremente toda la escena. Le damos una dirección más precisa:

esta es la escena, este es el personaje, y esta es la postura que debe seguir.

Collage de una mujer en traje azul futurista posando en acción; se ven nombres de archivo debajo de cada imagen.
Storyboard de imágenes generadas

🎯Qué vamos a construir

En este artículo vamos a construir un workflow para generar una secuencia de imágenes donde cada escena tiene su propio prompt y su propia pose.


Para ello utilizaremos una estructura basada en:

Elemento

Función

SDXL

Modelo base de generación

LoRA

Estética cyberpunk industrial

IPAdapter

Identidad visual del personaje

CSVToPrompts

Lectura de prompts desde CSV

Load Image Batch

Carga secuencial de imágenes de pose

OpenPose

Extracción de la postura

ControlNet

Aplicación de la pose al resultado

Number Counter

Sincronización entre prompt y pose

La clave del workflow está en el contador. Ese contador hace que la fila del CSV y la imagen de pose avancen juntas. Así conseguimos que la escena 0 use el prompt 0 y la pose 0, que la escena 1 use el prompt 1 y la pose 1, y así sucesivamente.


Requisitos

Para seguir este artículo y ejecutar correctamente el workflow SDXL + LoRA + IPAdapter + OpenPose + CSV, necesitamos tener preparados varios elementos.


💻 Entorno

Necesitamos tener:

  • ComfyUI instalado y funcionando correctamente

  • GPU recomendada para trabajar con SDXL

  • El workflow JSON del artículo

  • El archivo CSV con las escenas

  • La carpeta con las imágenes de pose

👉 Incluiremos al final del artículo un paquete descargable con el workflow, el CSV/Excel y las imágenes de pose para que el lector pueda probarlo con mayor facilidad.


🧠 Modelo SDXL

En este workflow utilizamos como modelo base:

  • SDXL\juggernautXL_v8Rundiffusion.safetensors


🎨 LoRA utilizado

Para mantener una estética común durante toda la secuencia utilizamos:

  • SDXL\cyberpunk_xl_v1.safetensors


👤 IPAdapter

IPAdapter será el encargado de mantener la identidad visual del personaje.

En este workflow utilizamos:

  • ip-adapter-plus_sdxl_vit-h.safetensors

Y como modelo visual:

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

La imagen de referencia del personaje se cargará una sola vez y se reutilizará durante toda la secuencia.


🧍 OpenPose y ControlNet

Para controlar la postura de cada escena utilizaremos:

  • SDXL\t2i-adapter-openpose-sdxl-1.0.safetensors

La imagen de pose se carga automáticamente desde una carpeta, se procesa con OpenPosePreprocessor y después se aplica mediante ControlNetApplyAdvanced.


📄 Nodos personalizados

Además de los nodos básicos de ComfyUI, este workflow utiliza varios custom nodes:

Nodo

Función

CSVToPrompts

Leer prompts desde el CSV

Load Image Batch

Cargar imágenes de pose desde una carpeta

Number Counter

Sincronizar prompt y pose

Show Text

Mostrar el prompt y la pose activa

ComfyMath

Ayudar al reseteo del contador

El más importante a nivel de lógica es Number Counter, porque actúa como índice maestro de la secuencia.


📁 Archivos del storyboard

El lector necesitará preparar o copiar estos elementos:

  • Workflow de ComfyUI

    • wf_ComfyUI_XXIII_Storyboard_IPAdapter_OpenPose_LoRA_CSV_PoseSequence.json

  • CSV con las prompts

    • Storyboard_wf_ComfyUI_XXIII_Storyboard_IPAdapter_OpenPose_LoRA_CSV_001.csv

  • carpeta de poses: carpeta donde ponderemos las imágenes de las poses. La carpeta de poses ha de tener las imágenes ordenadas de forma secuencial (Pose_00_Entrada, Pose_01_Alarma...)

    • Poses_CSV



🗂️ 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_XXIII_Storyboard_IPAdapter_OpenPose_LoRA_CSV_PoseSequence.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 funcionar.


Interfaz de flujo de trabajo con menú Workflow abierto y opción Open resaltada; a la derecha, nodos conectados en un lienzo gris.
Cargar workflow en ComfyUI

🅱️ 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 abierto con opción New resaltada; flecha rosa hacia un lienzo vacío en una interfaz gris, con texto Unsaved Workflow.
Empezar con workflow en blanco

El Storyboard Plan avanzado

En el artículo anterior el CSV funcionaba como una lista de prompts. Ahora el storyboard no solo define qué ocurre en cada escena, sino también qué pose debe utilizarse.

La lógica es sencilla:

Elemento

Función

scene_id

Identifica la escena

scene_name

Describe la escena

positive

Prompt positivo

negative

Prompt negativo

pose_image

Imagen de pose asociada

output_prefix

Nombre de salida

comments

Notas internas

Aunque el workflow no carga directamente la columna pose_image, sí utilizamos esa información para organizar la carpeta de poses. Es decir, el CSV actúa como documento maestro del storyboard, y la carpeta de poses debe seguir el mismo orden.

Por ejemplo:

scene_id

Prompt

Pose

0

Entrada en la fábrica

Pose_00_Entrada.png

1

Alarma

Pose_01_Alarma.png

2

Espada

Pose_02_Espada.png

3

Combate

Pose_03_Combate.png

La clave es que el número de la fila y el número de la imagen coincidan. De esta forma, cuando el contador indique 0, el workflow leerá el prompt 0 y cargará la pose 0. Cuando indique 1, leerá el prompt 1 y cargará la pose 1, y así sucesivamente.


👉 El CSV deja de ser solo una tabla de prompts y se convierte en un pequeño plan de producción para generar toda la secuencia.


Preparar la carpeta de poses

En este workflow las imágenes de pose se cargan desde una carpeta. Esto significa que no basta con tener las imágenes guardadas en cualquier sitio: deben estar ordenadas de forma clara y seguir la misma secuencia que las filas del CSV.

La lógica que buscamos es esta:

Índice

Fila del CSV

Imagen de pose

0

Escena 0

Pose_00_Entrada.png

1

Escena 1

Pose_01_Alarma.png

2

Escena 2

Pose_02_Espada.png

3

Escena 3

Pose_03_Combate.png

De esta forma, cuando el nodo Load Image Batch ordena los archivos por nombre, la imagen 0 coincide con la escena 0, la imagen 1 con la escena 1, y así sucesivamente.


En nuestro caso, las imágenes de pose se colocan en una carpeta dentro de input.

Por ejemplo:

C:\pinokio\api\comfy.git\app\input\Poses\Poses_CSV

El nodo Load Image Batch apunta a esa carpeta y va cargando las imágenes según el índice que recibe del contador.


El contador maestro dentro del workflow

En el workflow usamos un nodo Number Counter como índice de escena. No es un nodo especialmente espectacular, pero en este caso es el que permite que todo el sistema funcione de forma ordenada.

Su configuración es:

Parámetro

Valor

Tipo

integer

Operación

increment

Inicio

-1

Máximo

7

Paso

1

La razón de empezar en -1 es práctica. Al ejecutar el workflow, el contador incrementa y el primer valor útil pasa a ser 0. Así la primera ejecución coincide con la primera fila del CSV y con la primera imagen de la carpeta de poses.


La salida int del contador se conecta a tres puntos:

Conexión

Función

CSVToPrompts

Indica qué fila del CSV debe leer

Load Image Batch

Indica qué imagen de pose debe cargar

PreviewAny

Muestra el índice activo

Este último nodo no es imprescindible, pero resulta muy útil para comprobar rápidamente en qué escena estamos.


🔁 El reset

Para poder volver al inicio de la secuencia sin reiniciar ComfyUI, el contador recibe una señal de reset mediante un nodo auxiliar. No es la solución más elegante, pero sí es práctica: permite reiniciar la cuenta y volver a generar la secuencia desde la escena 0.

En un workflow de pruebas esto es suficiente, porque evita tener que cerrar y abrir ComfyUI cada vez que queremos repetir el storyboard desde el principio.


El workflow: estructura general

El workflow puede entenderse como varios bloques que trabajan en paralelo y se unen antes de la generación final. La estructura general es esta:

Bloque

Función

Modelo base + LoRA

Define la base visual de la imagen

IPAdapter

Mantiene la identidad del personaje

CSVToPrompts

Lee el prompt positivo y negativo de cada escena

Number Counter

Marca qué escena se está generando

Load Image Batch

Carga la imagen de pose correspondiente

OpenPosePreprocessor

Extrae la estructura corporal de la pose

ControlNetApplyAdvanced

Aplica esa pose a la generación

KSampler

Genera la imagen final

La lógica del workflow es bastante limpia. Por un lado, el CSV define el contenido de la escena, por otro, la carpeta de poses define la postura. El contador une ambas partes. Después, IPAdapter mantiene el personaje y ControlNet fuerza la pose antes de llegar al KSampler.


Podemos resumirlo así:

CSV + contador → prompt de escena
poses + contador → imagen de pose → OpenPose → ControlNet
personaje de referencia → IPAdapter
modelo + LoRA → KSampler → imagen final

Entendiendo el workflow paso a paso

Aunque el workflow parece grande, en realidad se entiende mejor si lo leemos de izquierda a derecha. No es un único bloque complejo, sino varias ramas que se combinan antes de generar la imagen final.


1. Modelo base y estilo

El primer bloque carga el modelo SDXL:

SDXL\juggernautXL_v8Rundiffusion.safetensors

Después se aplica el LoRA:

SDXL\cyberpunk_xl_v1.safetensors

Con una fuerza de 0.60 tanto en modelo como en CLIP. Este bloque define la base estética de toda la secuencia.


Interfaz gris de nodos con Load Checkpoint y Load LoRA conectadas por cables morado, naranja y rojo; muestra modelo y clip.
Nodos Load Checkpoint & Load LoRA

2. Identidad del personaje

La identidad visual se controla con IPAdapter. El workflow carga una imagen de referencia del personaje y la combina con:

ip-adapter-plus_sdxl_vit-h.safetensors

En este caso usamos un peso moderado, alrededor de 0.40, para que el personaje se mantenga reconocible sin bloquear demasiado la pose ni contaminar la ropa de cada escena.


Captura de ComfyUI con nodos IPAdapter; una mujer de traje azul y falda gris sirve de referencia sobre fondo lila.
Nodos IPAdapter

3. Prompts desde CSV

El nodo CSVToPrompts lee el archivo del storyboard y extrae:

  • prompt positivo

  • prompt negativo

Estos textos se envían a los nodos CLIPTextEncode, que preparan el condicionamiento para la generación.

Además, añadimos nodos Show Text para ver en pantalla qué prompt se está usando en cada ejecución.


Diagrama de flujo en pantalla con nodos CSV y bloques verdes/rosas; texto Positive Prompt y Negative Prompt visibles.
Nodo CSV to Prompt

4. Poses desde carpeta

La pose no se escribe en el prompt. Se carga como imagen mediante Load Image Batch desde una carpeta preparada previamente. El índice que recibe este nodo indica qué imagen de pose debe utilizar en cada escena.

Después, esa imagen pasa por OpenPosePreprocessor, que extrae la estructura corporal.


Interfaz de ComfyUI con nodos Load Image Batch y OpenPose; vista previa de una mujer armada y esqueleto de pose sobre fondo gris.
Nodos para POSE

5. Aplicación de la pose

La pose procesada se aplica con ControlNetApplyAdvanced.

Aquí se combina:

  • el prompt positivo

  • el prompt negativo

  • el modelo de ControlNet/OpenPose

  • la imagen procesada de la pose

El resultado es un condicionamiento más dirigido, que ayuda al modelo a respetar la postura definida para cada escena.


Captura de ComfyUI con nodos de OpenPose y ControlNet; vista previa de una mujer en traje azul con luces, en un pasillo.
Nodos ControlNet & KSampler

6. Generación final

Por último, todo llega al KSampler:

  • modelo base con LoRA e IPAdapter

  • prompt positivo

  • prompt negativo

  • pose aplicada con ControlNet

  • latent inicial de 768 x 1152

Después, VAEDecode convierte el resultado en imagen y SaveImage guarda cada escena generada. El resultado final es una secuencia donde el personaje mantiene su identidad, sigue una estética común y adopta una pose distinta en cada escena.


Ajustes clave: IPAdapter vs OpenPose

En este workflow hay dos fuerzas que influyen mucho en el resultado final:

Elemento

Qué intenta controlar

IPAdapter

La identidad visual del personaje

OpenPose + ControlNet

La postura de la escena


  • Si IPAdapter tiene demasiado peso, el personaje mantiene mejor la identidad, pero puede resistirse a cambiar de postura.

  • Si ControlNet tiene más presencia, la pose se respeta mejor, pero la identidad puede perder algo de fuerza.


👤 Peso de IPAdapter

En este workflow usamos IPAdapter con un peso aproximado de:

0.40

Es un valor moderado. Funciona bien cuando la imagen de referencia del personaje puede arrastrar detalles no deseados, como ropa, encuadre o postura original.

Si queremos reforzar más la identidad, podemos probar valores como:

0.50 - 0.65

Pero conviene hacerlo con cuidado, porque cuanto más fuerte sea IPAdapter, más puede condicionar la composición final.

🧍 Fuerza de ControlNet

Para la pose usamos ControlNetApplyAdvanced con una fuerza de:

1.20

Y una influencia aproximada desde el inicio hasta casi el final de la generación:

start: 0
end: 0.9

Esto ayuda a que la postura tenga bastante peso sin bloquear completamente la creatividad del modelo.


🎛️ Regla práctica

La forma más sencilla de ajustar el workflow es esta:

Problema

Ajuste recomendado

El personaje no se parece suficiente

Subir IPAdapter

La pose no se respeta

Subir ControlNet o bajar IPAdapter

La ropa de la referencia contamina la escena

Bajar IPAdapter

La imagen queda demasiado rígida

Bajar un poco ControlNet

La escena pierde estilo

Revisar LoRA y prompt

No hay un valor perfecto para todos los casos. Lo importante es entender qué controla cada parte del workflow y ajustar solo una cosa cada vez. Así es mucho más fácil saber qué cambio ha mejorado o empeorado la imagen.


Generando la secuencia completa

Una vez configurado el CSV, la carpeta de poses y el contador, ya podemos generar la secuencia. La idea es ejecutar el workflow varias veces, dejando que el contador avance escena por escena.

En nuestro caso trabajamos con 8 escenas, así que le indicaremos que se ejecute 8 veces seguidas:


Barra de herramientas con botón azul Run, selector 8, una X y una casilla vacía.
Ejecución 8 veces seguidas del workflow

Índice

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

Antes de revisar la imagen final, conviene comprobar tres cosas:

  • qué índice está activo;

  • qué prompt se está leyendo;

  • qué imagen de pose se ha cargado.

Para eso añadimos nodos de previsualización dentro del workflow.

  • El nodo PreviewAny muestra el índice actual.

  • Los nodos Show Text muestran el prompt positivo, el prompt negativo y el nombre del archivo de pose cargado.

Esto permite detectar rápidamente si algo se ha desincronizado.


🧪 Prueba recomendada

Antes de lanzar todas las escenas, lo mejor es hacer una prueba con las tres primeras.

Si el índice, el prompt y la pose coinciden, podemos continuar con el resto de la secuencia.

Si algo no encaja, normalmente el problema estará en uno de estos puntos:

  • el contador no ha empezado en el valor correcto;

  • la carpeta de poses no está ordenada como esperábamos;

  • el CSV tiene una fila desplazada;

  • hay imágenes extra dentro de la carpeta de poses.

Cuando todo está alineado, cada ejecución genera una escena distinta, pero manteniendo el mismo personaje, la misma estética general y una postura definida previamente.


Qué puedes probar a continuación

Una vez que el workflow funciona, lo interesante es empezar a experimentar.

La estructura ya está preparada para generar una secuencia controlada, así que podemos modificar diferentes partes sin rehacer todo desde cero.

Prueba

Qué permite explorar

Cambiar las poses

Crear una secuencia con acciones diferentes

Añadir más escenas al CSV

Ampliar el storyboard

Usar otro personaje de referencia

Mantener la misma estructura con otra identidad visual

Cambiar el LoRA

Probar otro estilo artístico

Ajustar IPAdapter

Reforzar o suavizar la identidad del personaje

Ajustar ControlNet

Dar más o menos peso a la pose

Cambiar el seed

Generar variaciones de una misma escena

Crear varias carpetas de poses

Preparar diferentes versiones del storyboard

Una mejora interesante sería hacer que el workflow leyera directamente desde el CSV la ruta exacta de cada imagen de pose. En esta versión hemos optado por una solución más sencilla y estable: mantener el mismo orden entre el CSV y la carpeta de poses. No es la opción más sofisticada, pero sí es práctica y fácil de entender.


🗺️Conclusión

Con este workflow damos un paso más en la creación de secuencias narrativas dentro de ComfyUI. En el artículo anterior usamos un CSV para organizar los prompts. En este, añadimos una segunda capa de control: las poses.


La clave ha sido sincronizar ambas partes mediante un contador maestro.

Gracias a eso, cada escena puede tener:

  • su prompt positivo;

  • su prompt negativo;

  • su imagen de pose;

  • su posición dentro del storyboard.


IPAdapter mantiene la identidad visual del personaje.

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

OpenPose y ControlNet guían la postura.

Y el CSV permite trabajar la secuencia de forma mucho más ordenada.


No estamos ante un sistema perfecto ni completamente automatizado, pero sí ante una base muy útil para construir storyboards visuales, escenas de acción, pruebas de personaje o secuencias narrativas generadas con IA. La idea importante es esta:

cuanto más estructuramos el proceso,menos dependemos de la casualidad del modelo.

Y ese es precisamente el valor de este workflow: convertir una generación aislada en una pequeña producción visual controlada escena por escena.


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


🌐 Recursos útiles

  • Otros archivos necesarios para ejecutar el workflow

    • 📁 SerieComfyUI(XXIII).zip



Comentarios


© 2025 by Lozkorp                                                         

bottom of page