{
  "id": "wan22-t2v-14b-ollama-v2",
  "revision": 0,
  "last_node_id": 70,
  "last_link_id": 150,
  "nodes": [
    {
      "id": 100,
      "type": "Note",
      "pos": [
        -250,
        -200
      ],
      "size": [
        500,
        180
      ],
      "flags": {},
      "order": 0,
      "mode": 0,
      "properties": {},
      "widgets_values": [
        "=== PIPELINE VIDÉO AI — Francis B. Morissette ===\n\nWorkflow Wan 2.2 T2V 14B MoE + IF_AI_tools (Ollama)\n\n1. Entrez votre description dans le nœud 'Positive Prompt' (id:6)\n2. IF_PromptMkr enrichit le prompt via Ollama (llama3.2)\n3. High-noise sampler (steps 0→10) puis Low-noise (10→10000)\n4. Résolution: 832x480 (480p) | 81 frames (~5s à 16fps)\n5. Output: WEBP animé + WEBM vidéo\n\nOllama doit tourner: ollama serve"
      ],
      "color": "#233",
      "bgcolor": "#355"
    },
    {
      "id": 65,
      "type": "IF_PromptMkr",
      "pos": [
        -250,
        30
      ],
      "size": [
        450,
        350
      ],
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "Response",
          "type": "STRING",
          "slot_index": 0,
          "links": [
            140
          ]
        },
        {
          "name": "Negative",
          "type": "STRING",
          "slot_index": 1,
          "links": []
        }
      ],
      "properties": {},
      "widgets_values": [
        "ollama",
        "llama3.2",
        "You are a visual prompt engineer for AI video generation. Given a short scene description, expand it into a detailed cinematic prompt for Wan 2.2. Include: camera angle, lighting, character appearance, environment, motion, and style. Under 200 words. Output ONLY the enhanced prompt.",
        "Un inspecteur en casque de construction examine une poutre en acier dans un bâtiment commercial, éclairage fluorescent, environnement de chantier",
        "",
        "",
        0.5,
        4096
      ],
      "_meta": {
        "title": "IF Prompt to Prompt (Ollama)"
      }
    },
    {
      "id": 66,
      "type": "IF_DisplayText",
      "pos": [
        -250,
        430
      ],
      "size": [
        450,
        150
      ],
      "flags": {},
      "order": 5,
      "mode": 0,
      "inputs": [
        {
          "name": "text",
          "type": "STRING",
          "link": 140
        }
      ],
      "outputs": [
        {
          "name": "text",
          "type": "STRING",
          "slot_index": 0,
          "links": [
            141
          ]
        }
      ],
      "properties": {},
      "widgets_values": [
        ""
      ],
      "_meta": {
        "title": "Prompt enrichi (aperçu)"
      }
    },
    {
      "id": 38,
      "type": "CLIPLoader",
      "pos": [
        30,
        190
      ],
      "size": [
        360,
        106
      ],
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "CLIP",
          "type": "CLIP",
          "slot_index": 0,
          "links": [
            74,
            75
          ]
        }
      ],
      "properties": {},
      "widgets_values": [
        "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
        "wan",
        "default"
      ],
      "color": "#223",
      "bgcolor": "#335",
      "_meta": {
        "title": "Load CLIP (UMT5-XXL)"
      }
    },
    {
      "id": 39,
      "type": "VAELoader",
      "pos": [
        30,
        340
      ],
      "size": [
        360,
        58
      ],
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "VAE",
          "type": "VAE",
          "slot_index": 0,
          "links": [
            76
          ]
        }
      ],
      "properties": {},
      "widgets_values": [
        "wan_2.1_vae.safetensors"
      ],
      "color": "#223",
      "bgcolor": "#335",
      "_meta": {
        "title": "Load VAE (Wan 2.1)"
      }
    },
    {
      "id": 6,
      "type": "CLIPTextEncode",
      "pos": [
        280,
        30
      ],
      "size": [
        420,
        164
      ],
      "flags": {},
      "order": 7,
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 74
        },
        {
          "name": "text",
          "type": "STRING",
          "link": 141,
          "widget": {
            "name": "text"
          }
        }
      ],
      "outputs": [
        {
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "slot_index": 0,
          "links": [
            127,
            128
          ]
        }
      ],
      "properties": {},
      "widgets_values": [
        ""
      ],
      "_meta": {
        "title": "CLIP Text Encode (Positive - enrichi par Ollama)"
      }
    },
    {
      "id": 7,
      "type": "CLIPTextEncode",
      "pos": [
        280,
        240
      ],
      "size": [
        420,
        164
      ],
      "flags": {},
      "order": 6,
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 75
        }
      ],
      "outputs": [
        {
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "slot_index": 0,
          "links": [
            129,
            130
          ]
        }
      ],
      "properties": {},
      "widgets_values": [
        "blurry, low quality, distorted, deformed, ugly, watermark, text, logo, static, no motion, flickering, artifacts, noise, grainy, worst quality, JPEG artifacts, extra fingers, poorly drawn hands, poorly drawn face, disfigured, mutated limbs, fused fingers, cluttered background"
      ],
      "_meta": {
        "title": "CLIP Text Encode (Negative)"
      }
    },
    {
      "id": 37,
      "type": "UNETLoader",
      "pos": [
        30,
        500
      ],
      "size": [
        360,
        82
      ],
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "slot_index": 0,
          "links": [
            110
          ]
        }
      ],
      "properties": {},
      "widgets_values": [
        "wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors",
        "default"
      ],
      "color": "#322",
      "bgcolor": "#533",
      "_meta": {
        "title": "Load Diffusion Model (High Noise)"
      }
    },
    {
      "id": 54,
      "type": "ModelSamplingSD3",
      "pos": [
        490,
        500
      ],
      "size": [
        315,
        58
      ],
      "flags": {},
      "order": 10,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 110
        }
      ],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "slot_index": 0,
          "links": [
            125
          ]
        }
      ],
      "properties": {},
      "widgets_values": [
        8.0
      ],
      "_meta": {
        "title": "ModelSampling (High Noise shift=8)"
      }
    },
    {
      "id": 56,
      "type": "UNETLoader",
      "pos": [
        30,
        650
      ],
      "size": [
        360,
        82
      ],
      "flags": {},
      "order": 8,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "slot_index": 0,
          "links": [
            112
          ]
        }
      ],
      "properties": {},
      "widgets_values": [
        "wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors",
        "default"
      ],
      "color": "#232",
      "bgcolor": "#353",
      "_meta": {
        "title": "Load Diffusion Model (Low Noise)"
      }
    },
    {
      "id": 55,
      "type": "ModelSamplingSD3",
      "pos": [
        490,
        650
      ],
      "size": [
        315,
        58
      ],
      "flags": {},
      "order": 9,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 112
        }
      ],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "slot_index": 0,
          "links": [
            123
          ]
        }
      ],
      "properties": {},
      "widgets_values": [
        8.0
      ],
      "_meta": {
        "title": "ModelSampling (Low Noise shift=8)"
      }
    },
    {
      "id": 61,
      "type": "EmptyHunyuanLatentVideo",
      "pos": [
        830,
        500
      ],
      "size": [
        315,
        106
      ],
      "flags": {},
      "order": 11,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "LATENT",
          "type": "LATENT",
          "slot_index": 0,
          "links": [
            131
          ]
        }
      ],
      "properties": {},
      "widgets_values": [
        832,
        480,
        81,
        1
      ],
      "_meta": {
        "title": "Empty Latent Video (832x480, 81 frames)"
      }
    },
    {
      "id": 57,
      "type": "KSamplerAdvanced",
      "pos": [
        830,
        30
      ],
      "size": [
        310,
        334
      ],
      "flags": {},
      "order": 12,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 125
        },
        {
          "name": "positive",
          "type": "CONDITIONING",
          "link": 127
        },
        {
          "name": "negative",
          "type": "CONDITIONING",
          "link": 129
        },
        {
          "name": "latent_image",
          "type": "LATENT",
          "link": 131
        }
      ],
      "outputs": [
        {
          "name": "LATENT",
          "type": "LATENT",
          "slot_index": 0,
          "links": [
            113
          ]
        }
      ],
      "properties": {},
      "widgets_values": [
        "enable",
        42,
        "fixed",
        20,
        3.5,
        "euler",
        "simple",
        0,
        10,
        "enable"
      ],
      "_meta": {
        "title": "KSampler (High Noise — steps 0→10)"
      }
    },
    {
      "id": 58,
      "type": "KSamplerAdvanced",
      "pos": [
        1200,
        30
      ],
      "size": [
        310,
        334
      ],
      "flags": {},
      "order": 13,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 123
        },
        {
          "name": "positive",
          "type": "CONDITIONING",
          "link": 128
        },
        {
          "name": "negative",
          "type": "CONDITIONING",
          "link": 130
        },
        {
          "name": "latent_image",
          "type": "LATENT",
          "link": 113
        }
      ],
      "outputs": [
        {
          "name": "LATENT",
          "type": "LATENT",
          "slot_index": 0,
          "links": [
            124
          ]
        }
      ],
      "properties": {},
      "widgets_values": [
        "disable",
        0,
        "fixed",
        20,
        3.5,
        "euler",
        "simple",
        10,
        10000,
        "disable"
      ],
      "_meta": {
        "title": "KSampler (Low Noise — steps 10→end)"
      }
    },
    {
      "id": 8,
      "type": "VAEDecode",
      "pos": [
        1570,
        30
      ],
      "size": [
        210,
        46
      ],
      "flags": {},
      "order": 14,
      "mode": 0,
      "inputs": [
        {
          "name": "samples",
          "type": "LATENT",
          "link": 124
        },
        {
          "name": "vae",
          "type": "VAE",
          "link": 76
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "slot_index": 0,
          "links": [
            56,
            93
          ]
        }
      ],
      "properties": {},
      "widgets_values": [],
      "_meta": {
        "title": "VAE Decode"
      }
    },
    {
      "id": 28,
      "type": "SaveAnimatedWEBP",
      "pos": [
        1820,
        -20
      ],
      "size": [
        310,
        200
      ],
      "flags": {},
      "order": 15,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 56
        }
      ],
      "outputs": [],
      "properties": {},
      "widgets_values": [
        "wan22_output",
        16,
        false,
        80,
        "default"
      ],
      "_meta": {
        "title": "Save Animated WEBP"
      }
    },
    {
      "id": 47,
      "type": "SaveWEBM",
      "pos": [
        1820,
        250
      ],
      "size": [
        310,
        200
      ],
      "flags": {},
      "order": 16,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 93
        }
      ],
      "outputs": [],
      "properties": {},
      "widgets_values": [
        "wan22_output",
        "vp9",
        16,
        13
      ],
      "_meta": {
        "title": "Save WEBM Video"
      }
    }
  ],
  "links": [
    [
      74,
      38,
      0,
      6,
      0,
      "CLIP"
    ],
    [
      75,
      38,
      0,
      7,
      0,
      "CLIP"
    ],
    [
      76,
      39,
      0,
      8,
      1,
      "VAE"
    ],
    [
      110,
      37,
      0,
      54,
      0,
      "MODEL"
    ],
    [
      112,
      56,
      0,
      55,
      0,
      "MODEL"
    ],
    [
      113,
      57,
      0,
      58,
      3,
      "LATENT"
    ],
    [
      123,
      55,
      0,
      58,
      0,
      "MODEL"
    ],
    [
      124,
      58,
      0,
      8,
      0,
      "LATENT"
    ],
    [
      125,
      54,
      0,
      57,
      0,
      "MODEL"
    ],
    [
      127,
      6,
      0,
      57,
      1,
      "CONDITIONING"
    ],
    [
      128,
      6,
      0,
      58,
      1,
      "CONDITIONING"
    ],
    [
      129,
      7,
      0,
      57,
      2,
      "CONDITIONING"
    ],
    [
      130,
      7,
      0,
      58,
      2,
      "CONDITIONING"
    ],
    [
      131,
      61,
      0,
      57,
      3,
      "LATENT"
    ],
    [
      140,
      65,
      0,
      66,
      0,
      "STRING"
    ],
    [
      141,
      66,
      0,
      6,
      1,
      "STRING"
    ],
    [
      56,
      8,
      0,
      28,
      0,
      "IMAGE"
    ],
    [
      93,
      8,
      0,
      47,
      0,
      "IMAGE"
    ]
  ],
  "groups": [
    {
      "title": "Scénarisation Ollama (IF_AI_tools)",
      "bounding": [
        -270,
        -220,
        530,
        830
      ],
      "color": "#3f789e"
    },
    {
      "title": "Encodage texte (CLIP UMT5-XXL)",
      "bounding": [
        260,
        10,
        450,
        420
      ],
      "color": "#2a363b"
    },
    {
      "title": "Modèles Wan 2.2 MoE (High + Low Noise)",
      "bounding": [
        10,
        480,
        810,
        300
      ],
      "color": "#3b8686"
    },
    {
      "title": "Sampling MoE (High → Low)",
      "bounding": [
        810,
        10,
        730,
        630
      ],
      "color": "#79bd9a"
    },
    {
      "title": "Décodage & Export",
      "bounding": [
        1550,
        -40,
        610,
        530
      ],
      "color": "#a59a80"
    }
  ],
  "config": {},
  "extra": {
    "ds": {
      "scale": 0.6,
      "offset": [
        300,
        250
      ]
    }
  },
  "version": 0.4
}