# Reconstruire le workflow dans l’interface

Ce plan décrit le graphe original v1. Créez les nœuds en recherchant leur identifiant technique dans ComfyUI. Les libellés traduits peuvent varier. Les nombres entre parenthèses sont les identifiants du JSON livré, utiles pour lire ses liens ; l’interface peut attribuer d’autres nombres pendant une reconstruction manuelle.

## Nœuds communs

| Identifiant | Type core | Réglage | Sorties utilisées |
| --- | --- | --- | --- |
| 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` du manifeste | CONDITIONING |

Reliez CLIP du chargeur (1, slot 1) à l’entrée clip du texte négatif (3, slot 0).

## Trois branches à créer

| Variante | Texte positif | KSampler | VAEDecode | SaveImage |
| --- | --- | --- | --- | --- |
| A, frontale | 4 | 5 | 6 | 7 |
| B, latérale | 8 | 9 | 10 | 11 |
| C, contre-jour | 12 | 13 | 14 | 15 |

Copiez le `prompt` complet de chaque variante dans son CLIPTextEncode positif. Les trois textes partagent le préfixe `common_positive_prompt` puis la phrase `light`. Le négatif commun ne change pas.

Pour **chaque** branche, réalisez ces huit connexions :

1. CLIP du chargeur → clip du texte positif.
2. MODEL du chargeur → model du KSampler.
3. CONDITIONING du texte positif → positive du KSampler.
4. CONDITIONING du texte négatif commun → negative du KSampler.
5. LATENT du latent vide commun → latent_image du KSampler.
6. LATENT du KSampler → samples de VAEDecode.
7. VAE du chargeur → vae de VAEDecode.
8. IMAGE de VAEDecode → images de SaveImage.

Total : 1 connexion commune + 3 × 8 = **25 connexions**. Un nœud 0.37.0 SaveImage présente aussi une sortie IMAGE ; laissez-la non connectée. Aucun nœud externe ni aucune prise d’image d’entrée n’est nécessaire.

## Paramètres des trois KSampler

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

Dans le JSON UI 0.4, `widgets_values` suit cet ordre : `[24092026, "fixed", 24, 6.5, "euler", "normal", 1.0]`. Le contrôle `fixed` est un widget de l’interface ajouté au seed ; ce n’est pas un argument supplémentaire de la fonction Python `sample`.

Les entrées reliées de KSampler suivent l’ordre `model`, `positive`, `negative`, `latent_image`. Les sorties du chargeur suivent `MODEL`, `CLIP`, `VAE`. Cette distinction entre widgets et prises évite de décaler les valeurs dans un JSON écrit à la main.

## Noms de sortie et contrôle

Saisissez dans chaque SaveImage son `output_prefix` du manifeste. Les préfixes sont différents pour que les sorties ne deviennent pas une série anonyme. La numérotation finale est gérée par ComfyUI.

Enregistrez votre reconstruction dans un nouveau JSON. Les identifiants et positions peuvent différer de ceux du dossier ; le validateur livré, volontairement strict, n’accepte que les identifiants de la recette v1. Comparez alors visuellement la chaîne et les paramètres, puis validez la génération dans votre environnement. Le schéma UI seul ne prouve ni la présence du modèle ni la réussite du calcul.

Sources : [définitions des nœuds 0.37.0](https://github.com/Comfy-Org/ComfyUI/blob/73c9bad4d21e7addbe1d13bc92eee0f1431b017d/nodes.py), [contrôle de valeur du frontend 1.52.7](https://github.com/Comfy-Org/ComfyUI_frontend/blob/1a7a6b82514874545dc5e8203d0bd2188c2d9b18/src/scripts/widgets.ts), [schéma UI 0.4](https://docs.comfy.org/specs/workflow_json_0.4).
