{
  "config": {},
  "extra": {
    "ds": {
      "offset": [
        4933.333333333333,
        -3066.8266541280864
      ],
      "scale": 0.2867256637168142
    },
    "frontendVersion": "1.48.7"
  },
  "groups": [
    {
      "bounding": [
        -2200,
        4750,
        1270,
        840
      ],
      "color": "#3f789e",
      "flags": {},
      "id": 1,
      "title": "Prompt Enhancer (Optional)"
    },
    {
      "bounding": [
        -3160,
        4060,
        930,
        1530
      ],
      "color": "#3f789e",
      "flags": {},
      "id": 2,
      "title": "User Inputs"
    },
    {
      "bounding": [
        -900,
        4060,
        1400,
        1540
      ],
      "color": "#3f789e",
      "flags": {},
      "id": 3,
      "title": "Upscale Video to 2K (Optional)"
    },
    {
      "bounding": [
        -2200,
        4060,
        1270,
        670
      ],
      "color": "#A88",
      "flags": {},
      "id": 4,
      "title": "Video Generation (Core)"
    },
    {
      "bounding": [
        -2880,
        5190,
        350,
        360
      ],
      "color": "#3f789e",
      "flags": {},
      "id": 5,
      "title": "Feature Flags"
    }
  ],
  "id": "c23969d8-7734-4984-ac92-ee71859d3c74",
  "last_link_id": 37,
  "last_node_id": 26,
  "links": [
    [
      17,
      7,
      0,
      12,
      1,
      "STRING"
    ],
    [
      18,
      10,
      0,
      13,
      1,
      "VIDEO"
    ],
    [
      21,
      14,
      0,
      12,
      0,
      "STRING"
    ],
    [
      23,
      12,
      0,
      8,
      0,
      "STRING"
    ],
    [
      25,
      19,
      0,
      13,
      2,
      "BOOLEAN"
    ],
    [
      26,
      18,
      0,
      12,
      2,
      "BOOLEAN"
    ],
    [
      37,
      24,
      0,
      13,
      0,
      "VIDEO"
    ],
    [
      36,
      24,
      0,
      2,
      0,
      "VIDEO"
    ],
    [
      20,
      13,
      0,
      11,
      0,
      "VIDEO"
    ],
    [
      31,
      25,
      0,
      24,
      0,
      "IMAGE"
    ],
    [
      35,
      12,
      0,
      24,
      3,
      "STRING"
    ],
    [
      22,
      14,
      0,
      7,
      3,
      "STRING"
    ],
    [
      32,
      25,
      0,
      7,
      6,
      "IMAGE"
    ],
    [
      10,
      2,
      0,
      10,
      0,
      "VIDEO"
    ],
    [
      12,
      8,
      0,
      10,
      4,
      "STRING"
    ],
    [
      34,
      25,
      0,
      10,
      6,
      "IMAGE"
    ]
  ],
  "nodes": [
    {
      "flags": {
        "collapsed": false
      },
      "id": 2,
      "inputs": [
        {
          "link": 36,
          "localized_name": "video",
          "name": "video",
          "type": "VIDEO"
        },
        {
          "link": null,
          "localized_name": "filename_prefix",
          "name": "filename_prefix",
          "type": "STRING",
          "widget": {
            "name": "filename_prefix"
          }
        },
        {
          "link": null,
          "localized_name": "format",
          "name": "format",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "format"
          }
        },
        {
          "link": null,
          "localized_name": "codec",
          "name": "format.codec",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "format.codec"
          }
        },
        {
          "link": null,
          "localized_name": "codec",
          "name": "codec",
          "shape": 7,
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "codec"
          }
        }
      ],
      "mode": 0,
      "order": 11,
      "outputs": [
        {
          "links": [
            10
          ],
          "localized_name": "video",
          "name": "video",
          "type": "VIDEO"
        }
      ],
      "pos": [
        -1720,
        4140
      ],
      "properties": {},
      "size": [
        740,
        150
      ],
      "type": "SaveVideo",
      "widgets_values": [
        "video/video/MiniMax_H3_i2v_768P",
        "auto",
        "auto",
        "auto"
      ],
      "widgets_values_named": {
        "codec": "auto",
        "filename_prefix": "video/video/MiniMax_H3_i2v_768P",
        "format": "auto",
        "format.codec": "auto"
      }
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 7,
      "inputs": [
        {
          "link": null,
          "localized_name": "first_frame",
          "name": "first_frame",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "last_frame",
          "name": "last_frame",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "model",
          "name": "model",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "model"
          }
        },
        {
          "link": 22,
          "localized_name": "prompt",
          "name": "model.prompt",
          "type": "STRING",
          "widget": {
            "name": "model.prompt"
          }
        },
        {
          "link": null,
          "localized_name": "duration",
          "name": "model.duration",
          "type": "INT",
          "widget": {
            "name": "model.duration"
          }
        },
        {
          "link": null,
          "localized_name": "ratio",
          "name": "model.ratio",
          "type": "COMBO",
          "widget": {
            "name": "model.ratio"
          }
        },
        {
          "link": 32,
          "localized_name": "image_1",
          "name": "model.reference_images.image_1",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "image_2",
          "name": "model.reference_images.image_2",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "video_1",
          "name": "model.reference_videos.video_1",
          "shape": 7,
          "type": "VIDEO"
        },
        {
          "link": null,
          "localized_name": "audio_1",
          "name": "model.reference_audios.audio_1",
          "shape": 7,
          "type": "AUDIO"
        }
      ],
      "mode": 0,
      "order": 7,
      "outputs": [
        {
          "links": [
            17
          ],
          "localized_name": "STRING",
          "name": "STRING",
          "type": "STRING"
        }
      ],
      "pos": [
        -2170,
        4830
      ],
      "properties": {
        "Node name for S&R": "MinimaxHailuo03ContextIRNode"
      },
      "size": [
        400,
        315
      ],
      "type": "MinimaxHailuo03ContextIRNode",
      "widgets_values": [
        "MiniMax H3",
        "",
        5,
        "adaptive"
      ],
      "widgets_values_named": {
        "model": "MiniMax H3",
        "model.duration": 5,
        "model.prompt": "",
        "model.ratio": "adaptive"
      }
    },
    {
      "flags": {},
      "id": 8,
      "inputs": [
        {
          "link": 23,
          "localized_name": "text",
          "name": "text",
          "type": "STRING"
        },
        {
          "link": null,
          "localized_name": "filename_prefix",
          "name": "filename_prefix",
          "type": "STRING",
          "widget": {
            "name": "filename_prefix"
          }
        },
        {
          "link": null,
          "localized_name": "format",
          "name": "format",
          "type": "COMBO",
          "widget": {
            "name": "format"
          }
        }
      ],
      "mode": 0,
      "order": 9,
      "outputs": [
        {
          "links": [
            12
          ],
          "localized_name": "text",
          "name": "text",
          "type": "STRING"
        }
      ],
      "pos": [
        -1710,
        4830
      ],
      "properties": {
        "Node name for S&R": "SaveText"
      },
      "size": [
        750,
        650
      ],
      "type": "SaveText",
      "widgets_values": [
        "H3_prompt",
        "txt"
      ],
      "widgets_values_named": {
        "filename_prefix": "H3_prompt",
        "format": "txt"
      }
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 10,
      "inputs": [
        {
          "link": 10,
          "localized_name": "video",
          "name": "video",
          "type": "VIDEO"
        },
        {
          "link": null,
          "localized_name": "first_frame",
          "name": "first_frame",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "last_frame",
          "name": "last_frame",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "model",
          "name": "model",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "model"
          }
        },
        {
          "link": 12,
          "localized_name": "prompt",
          "name": "model.prompt",
          "type": "STRING",
          "widget": {
            "name": "model.prompt"
          }
        },
        {
          "link": null,
          "localized_name": "resolution",
          "name": "model.resolution",
          "type": "COMBO",
          "widget": {
            "name": "model.resolution"
          }
        },
        {
          "link": 34,
          "localized_name": "image_1",
          "name": "model.reference_images.image_1",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "image_2",
          "name": "model.reference_images.image_2",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "video_1",
          "name": "model.reference_videos.video_1",
          "shape": 7,
          "type": "VIDEO"
        },
        {
          "link": null,
          "localized_name": "audio_1",
          "name": "model.reference_audios.audio_1",
          "shape": 7,
          "type": "AUDIO"
        },
        {
          "link": null,
          "localized_name": "watermark",
          "name": "watermark",
          "type": "BOOLEAN",
          "widget": {
            "name": "watermark"
          }
        }
      ],
      "mode": 0,
      "order": 12,
      "outputs": [
        {
          "links": [
            18
          ],
          "localized_name": "VIDEO",
          "name": "VIDEO",
          "type": "VIDEO"
        }
      ],
      "pos": [
        -830,
        4570
      ],
      "properties": {
        "Node name for S&R": "MinimaxHailuo03RegenerateNode"
      },
      "size": [
        400,
        326
      ],
      "type": "MinimaxHailuo03RegenerateNode",
      "widgets_values": [
        "MiniMax H3",
        "",
        "2K",
        false
      ],
      "widgets_values_named": {
        "model": "MiniMax H3",
        "model.prompt": "",
        "model.resolution": "2K",
        "watermark": false
      }
    },
    {
      "flags": {},
      "id": 11,
      "inputs": [
        {
          "link": 20,
          "localized_name": "video",
          "name": "video",
          "type": "VIDEO"
        },
        {
          "link": null,
          "localized_name": "filename_prefix",
          "name": "filename_prefix",
          "type": "STRING",
          "widget": {
            "name": "filename_prefix"
          }
        },
        {
          "link": null,
          "localized_name": "format",
          "name": "format",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "format"
          }
        },
        {
          "link": null,
          "localized_name": "codec",
          "name": "format.codec",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "format.codec"
          }
        },
        {
          "link": null,
          "localized_name": "codec",
          "name": "codec",
          "shape": 7,
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "codec"
          }
        }
      ],
      "mode": 0,
      "order": 14,
      "outputs": [
        {
          "links": [],
          "localized_name": "video",
          "name": "video",
          "type": "VIDEO"
        }
      ],
      "pos": [
        -350,
        4570
      ],
      "properties": {},
      "size": [
        680,
        150
      ],
      "type": "SaveVideo",
      "widgets_values": [
        "video/Minimax_h3_max",
        "auto",
        "auto",
        "auto"
      ],
      "widgets_values_named": {
        "codec": "auto",
        "filename_prefix": "video/Minimax_h3_max",
        "format": "auto",
        "format.codec": "auto"
      }
    },
    {
      "bgcolor": "#533",
      "color": "#322",
      "flags": {},
      "id": 12,
      "inputs": [
        {
          "link": 21,
          "localized_name": "on_false",
          "name": "on_false",
          "shape": 7,
          "type": "STRING"
        },
        {
          "link": 17,
          "localized_name": "on_true",
          "name": "on_true",
          "shape": 7,
          "type": "STRING"
        },
        {
          "link": 26,
          "localized_name": "switch",
          "name": "switch",
          "type": "BOOLEAN",
          "widget": {
            "name": "switch"
          }
        }
      ],
      "mode": 0,
      "order": 8,
      "outputs": [
        {
          "links": [
            23,
            35
          ],
          "localized_name": "output",
          "name": "output",
          "type": "STRING"
        }
      ],
      "pos": [
        -2100,
        5340
      ],
      "properties": {
        "Node name for S&R": "ComfySwitchNode"
      },
      "size": [
        270,
        110
      ],
      "type": "ComfySwitchNode",
      "widgets_values": [
        false
      ],
      "widgets_values_named": {
        "switch": false
      }
    },
    {
      "bgcolor": "#533",
      "color": "#322",
      "flags": {},
      "id": 13,
      "inputs": [
        {
          "link": 37,
          "localized_name": "on_false",
          "name": "on_false",
          "shape": 7,
          "type": "VIDEO"
        },
        {
          "link": 18,
          "localized_name": "on_true",
          "name": "on_true",
          "shape": 7,
          "type": "VIDEO"
        },
        {
          "link": 25,
          "localized_name": "switch",
          "name": "switch",
          "type": "BOOLEAN",
          "widget": {
            "name": "switch"
          }
        }
      ],
      "mode": 0,
      "order": 13,
      "outputs": [
        {
          "links": [
            20
          ],
          "localized_name": "output",
          "name": "output",
          "type": "VIDEO"
        }
      ],
      "pos": [
        -750,
        4990
      ],
      "properties": {
        "Node name for S&R": "ComfySwitchNode"
      },
      "size": [
        270,
        110
      ],
      "type": "ComfySwitchNode",
      "widgets_values": [
        false
      ],
      "widgets_values_named": {
        "switch": false
      }
    },
    {
      "flags": {},
      "id": 14,
      "inputs": [
        {
          "link": null,
          "localized_name": "value",
          "name": "value",
          "type": "STRING",
          "widget": {
            "name": "value"
          }
        }
      ],
      "mode": 0,
      "order": 0,
      "outputs": [
        {
          "links": [
            21,
            22
          ],
          "localized_name": "STRING",
          "name": "STRING",
          "type": "STRING"
        }
      ],
      "pos": [
        -2910,
        4770
      ],
      "properties": {
        "Node name for S&R": "PrimitiveStringMultiline"
      },
      "size": [
        410,
        380
      ],
      "title": "Text (Prompt)",
      "type": "PrimitiveStringMultiline",
      "widgets_values": [
        "[Product] An all-black chunky sneaker (chunky sole, all-black body, black laces) on black velvet, cold-white top-light system, photoreal product photography.\n\n[First frame A (Shot 1, use the reference image or generate per this)]\nAn all-black chunky sneaker floating over black velvet, one cold-white beam from the upper left, the silhouette rimmed with faint edge light, slightly-off frontal view, the shoe centered, vast black negative space around it, 16:9, no text.\n\n[First frame B (Shot 2, with background text layer)]\nThe same all-black chunky sneaker on the same black velvet with the same cold-white top-light system, restaged as a low-angle hero shot looking up: the sole tilted toward the lens, tread pattern and cold steel-gray edge highlight crisp, laces dropping into frame from above. Deep in the blurred darkness behind the shoe, a giant dark-gray sans-serif line \"BUILT IN THE DARK\" is barely visible: far larger than the product, partially occluded by the shoe, out of focus, extremely low luminance, as if printed on the background velvet. 16:9, photoreal product photography.\n\n[First frame C (Shot 3)]\nThe same all-black chunky sneaker on the same black velvet with the same cold-white top-light system, restaged at a 45-degree overhead-side angle: the shoe occupying the right two-thirds, a large area of black negative space on the left, 16:9, no text.\n\n[Shot 1 motion layer (I2V, first frame A)]\nStart from the first frame, inherit its content and lighting; motion only. Action: [0s-2s] Dust drifts upward in the beam, the key light breathing subtly; [2s-5s] The shoe rotates slowly by about 20 degrees as one rim highlight sweeps along the chunky sole from heel to toe, the velvet rippling once. No text. Camera: one slow constant push-in, subtle handheld breathing, no cuts. Audio: a low drone, one muffled kick at 2s, faint velvet rustle.\n\n[Shot 2 motion layer (I2V, first frame B)]\n\nStart from the first frame, inherit its content and lighting; motion only. Action: [0s-1.5s] One highlight sweeps across the tread while the giant dark-gray background type \"BUILT IN THE DARK\" slides very slowly right to left, always behind the shoe, defocused and low-luminance; [1.5s-3.5s] The shoe flips slowly along a diagonal from sole view toward its side profile, briefly occluding more of the background type mid-flip, creating a foreground-silhouette versus background-type interplay; [3.5s-5s] It settles into a breathing hover as the background type slides off the left frame edge, cropping out and fading. Camera: locked macro, no cuts. Audio: the drone continues, one woody click at 1.5s, subtle fabric friction during the flip. Background text rules: the type never crosses in front of the shoe, never covers any part of it, stays defocused and low-contrast throughout, existing purely as a depth layer.\n\n[Shot 3 motion layer (I2V, first frame C)]\nStart from the first frame, inherit its content and lighting; motion only. Action: [0s-1.5s] The shoe hovers with breathing motion as the rim light builds; [1.5s-2.5s] The first half of the copy fades into the left negative space; [2.5s-3.2s] The second half fades in while the first half shifts gently left within the same line; [3.2s-5s] The copy locks, the shoe settles, the frame holds. Text spelled out verbatim: \"Darkness in Motion\", SF Pro Display Semibold, one line, no wrapping, vertically centered left-aligned; \"Darkness in\" in white fading in at 1.5s, \"Motion\" in cold steel gray at 2.5s. Camera: one slow push-in, no cuts. Audio: the drone peaks, one crisp pluck at 1.5s; at 4.5s everything stops leaving the pluck tail.\n\n[Edit & finishing]\nThree 5-second I2V segments, two hard cuts aligned to the kick ending Shot 1 and the pluck opening Shot 3; one unified cool dark LUT across the film, an optional light grain overlay to hide batch differences. The product stays fully black throughout; only the lighting and the shoe's motion change. Copy rhythm: Shot 1 no text, Shot 2 background defocused type only, Shot 3 the main copy; at most one readable text layer on screen at any moment.\n\n[Negative list (all three segments)]\nno product color change, no extra light sources, no readable text besides the Shot 3 copy line, background text in Shot 2 must never overlap or occlude the shoe, no two text rows, no cuts within any single segment, no mirror floor reflections, no dissolve transitions, no logo."
      ],
      "widgets_values_named": {
        "value": "[Product] An all-black chunky sneaker (chunky sole, all-black body, black laces) on black velvet, cold-white top-light system, photoreal product photography.\n\n[First frame A (Shot 1, use the reference image or generate per this)]\nAn all-black chunky sneaker floating over black velvet, one cold-white beam from the upper left, the silhouette rimmed with faint edge light, slightly-off frontal view, the shoe centered, vast black negative space around it, 16:9, no text.\n\n[First frame B (Shot 2, with background text layer)]\nThe same all-black chunky sneaker on the same black velvet with the same cold-white top-light system, restaged as a low-angle hero shot looking up: the sole tilted toward the lens, tread pattern and cold steel-gray edge highlight crisp, laces dropping into frame from above. Deep in the blurred darkness behind the shoe, a giant dark-gray sans-serif line \"BUILT IN THE DARK\" is barely visible: far larger than the product, partially occluded by the shoe, out of focus, extremely low luminance, as if printed on the background velvet. 16:9, photoreal product photography.\n\n[First frame C (Shot 3)]\nThe same all-black chunky sneaker on the same black velvet with the same cold-white top-light system, restaged at a 45-degree overhead-side angle: the shoe occupying the right two-thirds, a large area of black negative space on the left, 16:9, no text.\n\n[Shot 1 motion layer (I2V, first frame A)]\nStart from the first frame, inherit its content and lighting; motion only. Action: [0s-2s] Dust drifts upward in the beam, the key light breathing subtly; [2s-5s] The shoe rotates slowly by about 20 degrees as one rim highlight sweeps along the chunky sole from heel to toe, the velvet rippling once. No text. Camera: one slow constant push-in, subtle handheld breathing, no cuts. Audio: a low drone, one muffled kick at 2s, faint velvet rustle.\n\n[Shot 2 motion layer (I2V, first frame B)]\n\nStart from the first frame, inherit its content and lighting; motion only. Action: [0s-1.5s] One highlight sweeps across the tread while the giant dark-gray background type \"BUILT IN THE DARK\" slides very slowly right to left, always behind the shoe, defocused and low-luminance; [1.5s-3.5s] The shoe flips slowly along a diagonal from sole view toward its side profile, briefly occluding more of the background type mid-flip, creating a foreground-silhouette versus background-type interplay; [3.5s-5s] It settles into a breathing hover as the background type slides off the left frame edge, cropping out and fading. Camera: locked macro, no cuts. Audio: the drone continues, one woody click at 1.5s, subtle fabric friction during the flip. Background text rules: the type never crosses in front of the shoe, never covers any part of it, stays defocused and low-contrast throughout, existing purely as a depth layer.\n\n[Shot 3 motion layer (I2V, first frame C)]\nStart from the first frame, inherit its content and lighting; motion only. Action: [0s-1.5s] The shoe hovers with breathing motion as the rim light builds; [1.5s-2.5s] The first half of the copy fades into the left negative space; [2.5s-3.2s] The second half fades in while the first half shifts gently left within the same line; [3.2s-5s] The copy locks, the shoe settles, the frame holds. Text spelled out verbatim: \"Darkness in Motion\", SF Pro Display Semibold, one line, no wrapping, vertically centered left-aligned; \"Darkness in\" in white fading in at 1.5s, \"Motion\" in cold steel gray at 2.5s. Camera: one slow push-in, no cuts. Audio: the drone peaks, one crisp pluck at 1.5s; at 4.5s everything stops leaving the pluck tail.\n\n[Edit & finishing]\nThree 5-second I2V segments, two hard cuts aligned to the kick ending Shot 1 and the pluck opening Shot 3; one unified cool dark LUT across the film, an optional light grain overlay to hide batch differences. The product stays fully black throughout; only the lighting and the shoe's motion change. Copy rhythm: Shot 1 no text, Shot 2 background defocused type only, Shot 3 the main copy; at most one readable text layer on screen at any moment.\n\n[Negative list (all three segments)]\nno product color change, no extra light sources, no readable text besides the Shot 3 copy line, background text in Shot 2 must never overlap or occlude the shoe, no two text rows, no cuts within any single segment, no mirror floor reflections, no dissolve transitions, no logo."
      }
    },
    {
      "bgcolor": "#000",
      "color": "#222",
      "flags": {},
      "id": 17,
      "inputs": [],
      "mode": 0,
      "order": 1,
      "outputs": [],
      "pos": [
        -3800,
        4090
      ],
      "properties": {},
      "size": [
        580,
        1220
      ],
      "title": "Note: Guide",
      "type": "MarkdownNote",
      "widgets_values": [
        "## How this graph is wired\n\nThis is a MiniMax H3 Max **image-to-video** template (first / last frame), not the multi-reference graph. It has **one required path** and **two optional stages**. You choose whether to run the optional stages. Both start **off**.\n\nOn the canvas, two nodes are marked **red**. Those are **Switch** nodes. Each is the on/off gate for an optional stage, driven by a boolean in the **Feature Flags** group.\n\n### 1. Video generation (required)\n\n**MiniMax H3 First-Last-Frame to Video** is the core. It always runs. Feed it **Text (Prompt)** and a first-frame image from **Load Image**. Last frame is optional. The first **Save Video** is the first-pass output.\n\n### 2. Prompt enhance (optional)\n\n**Boolean (Prompt Enhance)** feeds the red **Switch** in **Prompt Enhancer (Optional)**.\n\n- Set it to `true` to rewrite the prompt with **MiniMax H3 Context IR (Prompt Enhancer)** before generation.\n- Leave it `false` to send your raw prompt straight to video generation.\n\n### 3. Video upscale (optional)\n\n**Boolean (Upscale to 2K)** feeds the red **Switch** in **Upscale Video to 2K (Optional)**.\n\n- Set it to `true` to run **MiniMax H3 Regenerate to 2K** on the first-pass video.\n- Leave it `false` to save the first-pass video as-is.\n\nUpscale **only accepts 768P** source video. If you turn this stage on, generate at **768P**. Other resolutions are not supported by **MiniMax H3 Regenerate to 2K**.\n\nYou can enable section 2, section 3, both, or neither.\n\n### Duration must match\n\nKeep **duration** the same on every MiniMax node you actually use (generation, prompt enhance, and upscale). The clip length must match across those stages. If one node is 5s and another is 6s, enhance or upscale will be out of sync with the generated video.\n\n### Extra inputs must be duplicated\n\nThe generate node, the prompt-enhance node, and the upscale node do **not** share extra context automatically.\n\nThe first-frame image is already wired into all three. If you add more inputs (a last frame, another image, a reference video, audio, or any extra output you plug into generation), **also plug the same wires into**:\n\n- **MiniMax H3 Context IR (Prompt Enhancer)**, so prompt enhance sees the same frames and references\n- **MiniMax H3 Regenerate to 2K**, so upscale sees the same frames and references\n\nIf you only wire extras into generation, enhance and upscale will run without that context and the result will drift."
      ],
      "widgets_values_named": {
        "text": "## How this graph is wired\n\nThis is a MiniMax H3 Max **image-to-video** template (first / last frame), not the multi-reference graph. It has **one required path** and **two optional stages**. You choose whether to run the optional stages. Both start **off**.\n\nOn the canvas, two nodes are marked **red**. Those are **Switch** nodes. Each is the on/off gate for an optional stage, driven by a boolean in the **Feature Flags** group.\n\n### 1. Video generation (required)\n\n**MiniMax H3 First-Last-Frame to Video** is the core. It always runs. Feed it **Text (Prompt)** and a first-frame image from **Load Image**. Last frame is optional. The first **Save Video** is the first-pass output.\n\n### 2. Prompt enhance (optional)\n\n**Boolean (Prompt Enhance)** feeds the red **Switch** in **Prompt Enhancer (Optional)**.\n\n- Set it to `true` to rewrite the prompt with **MiniMax H3 Context IR (Prompt Enhancer)** before generation.\n- Leave it `false` to send your raw prompt straight to video generation.\n\n### 3. Video upscale (optional)\n\n**Boolean (Upscale to 2K)** feeds the red **Switch** in **Upscale Video to 2K (Optional)**.\n\n- Set it to `true` to run **MiniMax H3 Regenerate to 2K** on the first-pass video.\n- Leave it `false` to save the first-pass video as-is.\n\nUpscale **only accepts 768P** source video. If you turn this stage on, generate at **768P**. Other resolutions are not supported by **MiniMax H3 Regenerate to 2K**.\n\nYou can enable section 2, section 3, both, or neither.\n\n### Duration must match\n\nKeep **duration** the same on every MiniMax node you actually use (generation, prompt enhance, and upscale). The clip length must match across those stages. If one node is 5s and another is 6s, enhance or upscale will be out of sync with the generated video.\n\n### Extra inputs must be duplicated\n\nThe generate node, the prompt-enhance node, and the upscale node do **not** share extra context automatically.\n\nThe first-frame image is already wired into all three. If you add more inputs (a last frame, another image, a reference video, audio, or any extra output you plug into generation), **also plug the same wires into**:\n\n- **MiniMax H3 Context IR (Prompt Enhancer)**, so prompt enhance sees the same frames and references\n- **MiniMax H3 Regenerate to 2K**, so upscale sees the same frames and references\n\nIf you only wire extras into generation, enhance and upscale will run without that context and the result will drift."
      }
    },
    {
      "flags": {},
      "id": 18,
      "inputs": [
        {
          "link": null,
          "localized_name": "value",
          "name": "value",
          "type": "BOOLEAN",
          "widget": {
            "name": "value"
          }
        }
      ],
      "mode": 0,
      "order": 2,
      "outputs": [
        {
          "links": [
            26
          ],
          "localized_name": "BOOLEAN",
          "name": "BOOLEAN",
          "type": "BOOLEAN"
        }
      ],
      "pos": [
        -2840,
        5270
      ],
      "properties": {
        "Node name for S&R": "PrimitiveBoolean"
      },
      "size": [
        270,
        90
      ],
      "title": "Boolean (Prompt Enhance)",
      "type": "PrimitiveBoolean",
      "widgets_values": [
        false
      ],
      "widgets_values_named": {
        "value": false
      }
    },
    {
      "flags": {},
      "id": 19,
      "inputs": [
        {
          "link": null,
          "localized_name": "value",
          "name": "value",
          "type": "BOOLEAN",
          "widget": {
            "name": "value"
          }
        }
      ],
      "mode": 0,
      "order": 3,
      "outputs": [
        {
          "links": [
            25
          ],
          "localized_name": "BOOLEAN",
          "name": "BOOLEAN",
          "type": "BOOLEAN"
        }
      ],
      "pos": [
        -2840,
        5420
      ],
      "properties": {
        "Node name for S&R": "PrimitiveBoolean"
      },
      "size": [
        270,
        90
      ],
      "title": "Boolean (Upscale to 2K)",
      "type": "PrimitiveBoolean",
      "widgets_values": [
        false
      ],
      "widgets_values_named": {
        "value": false
      }
    },
    {
      "bgcolor": "#000",
      "color": "#222",
      "flags": {},
      "id": 21,
      "inputs": [],
      "mode": 0,
      "order": 4,
      "outputs": [],
      "pos": [
        -3150,
        5430
      ],
      "properties": {},
      "size": [
        290,
        120
      ],
      "title": "Note: Requirement for Video Upscale",
      "type": "MarkdownNote",
      "widgets_values": [
        "Upscale only accepts **768P** source video. Generate at 768P if you turn on **Boolean (Upscale to 2K)**. Other resolutions are not supported."
      ],
      "widgets_values_named": {
        "text": "Upscale only accepts **768P** source video. Generate at 768P if you turn on **Boolean (Upscale to 2K)**. Other resolutions are not supported."
      }
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 24,
      "inputs": [
        {
          "link": 31,
          "localized_name": "first_frame",
          "name": "first_frame",
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "last_frame",
          "name": "last_frame",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "model",
          "name": "model",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "model"
          }
        },
        {
          "link": 35,
          "localized_name": "prompt",
          "name": "model.prompt",
          "type": "STRING",
          "widget": {
            "name": "model.prompt"
          }
        },
        {
          "link": null,
          "localized_name": "resolution",
          "name": "model.resolution",
          "type": "COMBO",
          "widget": {
            "name": "model.resolution"
          }
        },
        {
          "link": null,
          "localized_name": "duration",
          "name": "model.duration",
          "type": "INT",
          "widget": {
            "name": "model.duration"
          }
        },
        {
          "link": null,
          "localized_name": "prompt_expansion_mode",
          "name": "model.prompt_expansion_mode",
          "type": "COMBO",
          "widget": {
            "name": "model.prompt_expansion_mode"
          }
        },
        {
          "link": null,
          "localized_name": "seed",
          "name": "seed",
          "type": "INT",
          "widget": {
            "name": "seed"
          }
        },
        {
          "link": null,
          "localized_name": "watermark",
          "name": "watermark",
          "type": "BOOLEAN",
          "widget": {
            "name": "watermark"
          }
        }
      ],
      "mode": 0,
      "order": 10,
      "outputs": [
        {
          "links": [
            36,
            37
          ],
          "localized_name": "VIDEO",
          "name": "VIDEO",
          "type": "VIDEO"
        }
      ],
      "pos": [
        -2150,
        4150
      ],
      "properties": {
        "Node name for S&R": "MinimaxHailuo03FirstLastFrameNode"
      },
      "size": [
        400,
        315
      ],
      "type": "MinimaxHailuo03FirstLastFrameNode",
      "widgets_values": [
        "MiniMax H3 Max",
        "",
        "768P",
        5,
        "balanced",
        791669044,
        "randomize",
        false
      ],
      "widgets_values_named": {
        "control_after_generate": "randomize",
        "model": "MiniMax H3 Max",
        "model.duration": 5,
        "model.prompt": "",
        "model.prompt_expansion_mode": "balanced",
        "model.resolution": "768P",
        "seed": 791669044,
        "watermark": false
      }
    },
    {
      "flags": {},
      "id": 25,
      "inputs": [
        {
          "link": null,
          "localized_name": "image",
          "name": "image",
          "type": "COMBO",
          "widget": {
            "name": "image"
          }
        },
        {
          "link": null,
          "localized_name": "choose file to upload",
          "name": "upload",
          "type": "IMAGEUPLOAD",
          "widget": {
            "name": "upload"
          }
        }
      ],
      "mode": 0,
      "order": 5,
      "outputs": [
        {
          "links": [
            31,
            32,
            34
          ],
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE"
        },
        {
          "links": null,
          "localized_name": "MASK",
          "name": "MASK",
          "type": "MASK"
        }
      ],
      "pos": [
        -2910,
        4320
      ],
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "size": [
        410,
        390
      ],
      "type": "LoadImage",
      "widgets_values": [
        "sneaker_black.png",
        "image"
      ],
      "widgets_values_named": {
        "image": "sneaker_black.png",
        "upload": "image"
      }
    },
    {
      "bgcolor": "#000",
      "color": "#222",
      "flags": {},
      "id": 26,
      "inputs": [],
      "mode": 0,
      "order": 6,
      "outputs": [],
      "pos": [
        -4170,
        4090
      ],
      "properties": {},
      "size": [
        320,
        350
      ],
      "type": "MarkdownNote",
      "widgets_values": [
        "## Input Asset\n\n- [sneaker_black.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/sneaker_black.png)\n\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
      ],
      "widgets_values_named": {
        "text": "## Input Asset\n\n- [sneaker_black.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/sneaker_black.png)\n\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
      }
    }
  ],
  "revision": 0,
  "version": 0.4
}