# Reconstruir el workflow en la interfaz

Este plan describe el grafo original v1. Crea los nodos buscando su identificador técnico en ComfyUI. Las etiquetas traducidas pueden variar. Los números entre paréntesis son los identificadores del JSON entregado, útiles para leer sus enlaces; la interfaz puede asignar otros números durante una reconstrucción manual.

## Nodos comunes

| Identificador | Tipo core | Ajuste | Salidas usadas |
| --- | --- | --- | --- |
| 1 | CheckpointLoaderSimple | sd_xl_base_1.0.safetensors | MODEL, CLIP, VAE |
| 2 | EmptyLatentImage | width 1024, height 1024, batch_size 1 | LATENT |
| 3 | CLIPTextEncode | `negative_prompt` del manifiesto | CONDITIONING |

Conecta el CLIP del cargador (1, slot 1) a la entrada clip del texto negativo (3, slot 0).

## Tres ramas que crear

| Variante | Texto positivo | KSampler | VAEDecode | SaveImage |
| --- | --- | --- | --- | --- |
| A, frontal | 4 | 5 | 6 | 7 |
| B, lateral | 8 | 9 | 10 | 11 |
| C, contraluz | 12 | 13 | 14 | 15 |

Copia el `prompt` completo de cada variante en su CLIPTextEncode positivo. Los tres textos comparten el prefijo `common_positive_prompt` y luego la frase `light`. El negativo común no cambia.

Para **cada** rama, realiza estas ocho conexiones:

1. CLIP del cargador → clip del texto positivo.
2. MODEL del cargador → model del KSampler.
3. CONDITIONING del texto positivo → positive del KSampler.
4. CONDITIONING del texto negativo común → negative del KSampler.
5. LATENT del latent vacío común → latent_image del KSampler.
6. LATENT del KSampler → samples de VAEDecode.
7. VAE del cargador → vae de VAEDecode.
8. IMAGE de VAEDecode → images de SaveImage.

Total: 1 conexión común + 3 × 8 = **25 conexiones**. Un nodo 0.37.0 SaveImage también presenta una salida IMAGE; déjala sin conectar. No se necesita ningún nodo externo ni ninguna toma de imagen de entrada.

## Parámetros de los tres KSampler

| Widget | Valor |
| --- | --- |
| seed | 24092026 |
| control_after_generate | fixed |
| steps | 24 |
| cfg | 6.5 |
| sampler_name | euler |
| scheduler | normal |
| denoise | 1.0 |

En el JSON UI 0.4, `widgets_values` sigue este orden: `[24092026, "fixed", 24, 6.5, "euler", "normal", 1.0]`. El control `fixed` es un widget de la interfaz añadido al seed; no es un argumento adicional de la función Python `sample`.

Las entradas conectadas de KSampler siguen el orden `model`, `positive`, `negative`, `latent_image`. Las salidas del cargador siguen `MODEL`, `CLIP`, `VAE`. Esta distinción entre widgets y tomas evita desplazar los valores en un JSON escrito a mano.

## Nombres de salida y control

Introduce en cada SaveImage su `output_prefix` del manifiesto. Los prefijos son diferentes para que las salidas no se conviertan en una serie anónima. La numeración final la gestiona ComfyUI.

Guarda tu reconstrucción en un nuevo JSON. Los identificadores y posiciones pueden diferir de los del archivo; el validador entregado, deliberadamente estricto, solo acepta los identificadores de la receta v1. Compara entonces visualmente la cadena y los parámetros, y valida la generación en tu entorno. El esquema UI por sí solo no prueba ni la presencia del modelo ni el éxito del cálculo.

Fuentes: [definiciones de los nodos 0.37.0](https://github.com/Comfy-Org/ComfyUI/blob/73c9bad4d21e7addbe1d13bc92eee0f1431b017d/nodes.py), [control de valor del frontend 1.52.7](https://github.com/Comfy-Org/ComfyUI_frontend/blob/1a7a6b82514874545dc5e8203d0bd2188c2d9b18/src/scripts/widgets.ts), [esquema UI 0.4](https://docs.comfy.org/specs/workflow_json_0.4).
