{
  "id": "351974f4-436e-4f5a-9552-2cbd5eb7fad9",
  "revision": 0,
  "last_node_id": 227,
  "last_link_id": 114,
  "nodes": [
    {
      "id": 1,
      "type": "UNETLoader",
      "pos": [
        936.1792900000003,
        118.98917999999986
      ],
      "size": [
        270,
        82
      ],
      "flags": {},
      "order": 0,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            35
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "UNETLoader"
      },
      "widgets_values": [
        "minimax_h3_ref2va_pruned_int8_convrot.safetensors",
        "default"
      ],
      "widgets_values_named": {
        "unet_name": "minimax_h3_ref2va_pruned_int8_convrot.safetensors",
        "weight_dtype": "default"
      }
    },
    {
      "id": 2,
      "type": "MiniMaxH3SigmaShift",
      "pos": [
        1306.1792900000005,
        118.98917999999986
      ],
      "size": [
        276.9,
        82
      ],
      "flags": {},
      "order": 9,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 35
        }
      ],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            36
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "MiniMaxH3SigmaShift"
      },
      "widgets_values": [
        12,
        3
      ],
      "widgets_values_named": {
        "shift_video": 12,
        "shift_audio": 3
      }
    },
    {
      "id": 3,
      "type": "ModelAttentionBackend",
      "pos": [
        1306.1792900000005,
        268.9891799999998
      ],
      "size": [
        270,
        58
      ],
      "flags": {},
      "order": 12,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 36
        }
      ],
      "outputs": [
        {
          "name": "model",
          "type": "MODEL",
          "links": [
            37
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "ModelAttentionBackend"
      },
      "widgets_values": [
        "comfy kitchen attention"
      ],
      "widgets_values_named": {
        "attention": "comfy kitchen attention"
      }
    },
    {
      "id": 4,
      "type": "LoraLoaderModelOnly",
      "pos": [
        1306.1792900000005,
        558.9891799999996
      ],
      "size": [
        270,
        82
      ],
      "flags": {},
      "order": 15,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 69
        }
      ],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            114
          ]
        }
      ],
      "title": "Character Swap v1",
      "properties": {
        "Node name for S&R": "LoraLoaderModelOnly"
      },
      "widgets_values": [
        "h3-character-swap-v1/h3_character_swap_pro4500_1000.safetensors",
        1
      ],
      "widgets_values_named": {
        "lora_name": "h3-character-swap-v1/h3_character_swap_pro4500_1000.safetensors",
        "strength_model": 1
      }
    },
    {
      "id": 6,
      "type": "CLIPLoader",
      "pos": [
        936.1792900000003,
        268.9891799999998
      ],
      "size": [
        270,
        106
      ],
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "CLIP",
          "type": "CLIP",
          "links": [
            70
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "CLIPLoader"
      },
      "widgets_values": [
        "qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors",
        "minimax",
        "default"
      ],
      "widgets_values_named": {
        "clip_name": "qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors",
        "type": "minimax",
        "device": "default"
      }
    },
    {
      "id": 7,
      "type": "VAELoader",
      "pos": [
        936.1792900000003,
        578.9891799999996
      ],
      "size": [
        270,
        58
      ],
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "VAE",
          "type": "VAE",
          "links": [
            100
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "VAELoader"
      },
      "widgets_values": [
        "minimax_h3_video_vae_fp16.safetensors"
      ],
      "widgets_values_named": {
        "vae_name": "minimax_h3_video_vae_fp16.safetensors"
      }
    },
    {
      "id": 8,
      "type": "VAELoader",
      "pos": [
        936.1792900000003,
        708.9891799999996
      ],
      "size": [
        270,
        58
      ],
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "VAE",
          "type": "VAE",
          "links": [
            101
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "VAELoader"
      },
      "widgets_values": [
        "minimax_h3_audio_vae_fp32.safetensors"
      ],
      "widgets_values_named": {
        "vae_name": "minimax_h3_audio_vae_fp32.safetensors"
      }
    },
    {
      "id": 9,
      "type": "LoadImage",
      "pos": [
        -11.105016999999979,
        1097.644323
      ],
      "size": [
        365.8564,
        507.76170000000025
      ],
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            106
          ]
        },
        {
          "name": "MASK",
          "type": "MASK",
          "links": null
        }
      ],
      "title": "2 · Upload character reference",
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "widgets_values": [
        "labs-turbo8-character.png",
        "image"
      ],
      "widgets_values_named": {
        "image": "labs-turbo8-character.png",
        "upload": "image"
      }
    },
    {
      "id": 11,
      "type": "PrimitiveStringMultiline",
      "pos": [
        428.53050000000036,
        1099.8984999999993
      ],
      "size": [
        398.2591000000002,
        399.00520000000006
      ],
      "flags": {},
      "order": 5,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            107
          ]
        }
      ],
      "title": "Swap prompt · preserved",
      "properties": {
        "Node name for S&R": "PrimitiveStringMultiline"
      },
      "widgets_values": [
        "Replace the person in <Video 1> with the character shown in <Picture 1>. \n\nsubject_definitions:\n<Subject 1> is the replacement character whose appearance comes from <Picture 1> and whose performance comes from the person being replaced in <Video 1>. Preserve the reference character's facial features, hairstyle, skin tone, body proportions, clothing, colors, and distinctive visual style. The reference image supplies appearance only, not the character's pose, expression, background, or framing.\n<Subject 2> is the surrounding scene from <Video 1>, including its background, lighting, objects, and any people other than the person being replaced.\n<Video 1> is the source video being edited and supplies the shot composition, camera movement, timing, and sequence of actions.\n\nsummary:\n[video editing + reference generation] The target video is an edited version of <Video 1>. Replace the original person with <Subject 1>, transferring their complete visible performance to the reference character while preserving <Subject 2> and the source video's framing and timing.\n\nretention_analysis:\n<Subject 1> (throughout [Shot 1]): fully_preserved - maintain the character's referenced identity, clothing, proportions, and visual style consistently as the character performs the source person's movements.\n<Subject 2> (throughout [Shot 1]): fully_preserved - retain the surrounding scene and its changes over time.\n<Video 1>: partially_preserved - retain composition, camera motion, action timing, and duration; replace only the selected person's appearance.\n\ndetailed_description:\nPreserve the source scene's visual treatment while retaining the replacement character's distinctive design. Adapt illumination, shading, and perspective to the source scene.\n\n[Shot 1] Begin with the same composition and camera viewpoint as <Video 1>. <Subject 1> occupies the original person's position and follows their movement through the frame. Match the original performance moment by moment: body posture, gestures, head turns, gaze, blinking, facial expressions, and visible mouth movements.\n\nMaintain the reference character's identity through every expression and viewing angle. Hair and clothing move naturally with the transferred performance. Preserve interactions with source-scene objects and the ordering of foreground and background occlusions.\n\nKeep the source video's crop and shot scale. Show only the portions of the replacement character that belong within that framing; do not widen the shot to reproduce the full-body reference. Do not import the reference image's background, static pose, or handheld props. Preserve the source camera movement and action timing through the final frame.\n\noverall_soundscape:\nRetain the source clip's existing sound without adding new dialogue or sound effects.\n\nnon_diegetic_music:\nRetain existing source music, if present; add no new music."
      ],
      "widgets_values_named": {
        "value": "Replace the person in <Video 1> with the character shown in <Picture 1>. \n\nsubject_definitions:\n<Subject 1> is the replacement character whose appearance comes from <Picture 1> and whose performance comes from the person being replaced in <Video 1>. Preserve the reference character's facial features, hairstyle, skin tone, body proportions, clothing, colors, and distinctive visual style. The reference image supplies appearance only, not the character's pose, expression, background, or framing.\n<Subject 2> is the surrounding scene from <Video 1>, including its background, lighting, objects, and any people other than the person being replaced.\n<Video 1> is the source video being edited and supplies the shot composition, camera movement, timing, and sequence of actions.\n\nsummary:\n[video editing + reference generation] The target video is an edited version of <Video 1>. Replace the original person with <Subject 1>, transferring their complete visible performance to the reference character while preserving <Subject 2> and the source video's framing and timing.\n\nretention_analysis:\n<Subject 1> (throughout [Shot 1]): fully_preserved - maintain the character's referenced identity, clothing, proportions, and visual style consistently as the character performs the source person's movements.\n<Subject 2> (throughout [Shot 1]): fully_preserved - retain the surrounding scene and its changes over time.\n<Video 1>: partially_preserved - retain composition, camera motion, action timing, and duration; replace only the selected person's appearance.\n\ndetailed_description:\nPreserve the source scene's visual treatment while retaining the replacement character's distinctive design. Adapt illumination, shading, and perspective to the source scene.\n\n[Shot 1] Begin with the same composition and camera viewpoint as <Video 1>. <Subject 1> occupies the original person's position and follows their movement through the frame. Match the original performance moment by moment: body posture, gestures, head turns, gaze, blinking, facial expressions, and visible mouth movements.\n\nMaintain the reference character's identity through every expression and viewing angle. Hair and clothing move naturally with the transferred performance. Preserve interactions with source-scene objects and the ordering of foreground and background occlusions.\n\nKeep the source video's crop and shot scale. Show only the portions of the replacement character that belong within that framing; do not widen the shot to reproduce the full-body reference. Do not import the reference image's background, static pose, or handheld props. Preserve the source camera movement and action timing through the final frame.\n\noverall_soundscape:\nRetain the source clip's existing sound without adding new dialogue or sound effects.\n\nnon_diegetic_music:\nRetain existing source music, if present; add no new music."
      }
    },
    {
      "id": 23,
      "type": "CreateVideo",
      "pos": [
        2504.587106444448,
        121.6777912222221
      ],
      "size": [
        270,
        150
      ],
      "flags": {},
      "order": 17,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 108
        },
        {
          "name": "audio",
          "shape": 7,
          "type": "AUDIO",
          "link": 96
        },
        {
          "name": "fps",
          "type": "FLOAT",
          "widget": {
            "name": "fps"
          },
          "link": 97
        }
      ],
      "outputs": [
        {
          "name": "VIDEO",
          "type": "VIDEO",
          "links": [
            65
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "CreateVideo"
      },
      "widgets_values": [
        24,
        "auto",
        "sRGB",
        "none"
      ],
      "widgets_values_named": {
        "fps": 24,
        "bit_depth": "auto",
        "color_space": "sRGB",
        "codec": "none"
      }
    },
    {
      "id": 24,
      "type": "SaveVideo",
      "pos": [
        2989.074698451792,
        131.17460009588893
      ],
      "size": [
        1101.0260309295372,
        2141.6096810597865
      ],
      "flags": {
        "collapsed": false
      },
      "order": 19,
      "mode": 0,
      "inputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "link": 65
        }
      ],
      "outputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "links": null
        }
      ],
      "properties": {},
      "widgets_values": [
        "labs-swap-relay/result",
        "mp4",
        "h264",
        "re-encode",
        16,
        "auto"
      ],
      "widgets_values_named": {
        "filename_prefix": "labs-swap-relay/result",
        "format": "mp4",
        "format.codec": "h264",
        "format.codec.encoding": "re-encode",
        "format.codec.encoding.crf": 16,
        "codec": "auto"
      }
    },
    {
      "id": 30,
      "type": "LoadVideo",
      "pos": [
        -42.94289999999993,
        116.91040000000001
      ],
      "size": [
        464,
        893.7784256559767
      ],
      "flags": {},
      "order": 6,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "VIDEO",
          "type": "VIDEO",
          "links": [
            83
          ]
        }
      ],
      "title": "1 · Upload source video",
      "properties": {
        "Node name for S&R": "LoadVideo"
      },
      "widgets_values": [
        "recording_20260927_132132.mp4",
        "image"
      ],
      "widgets_values_named": {
        "file": "recording_20260927_132132.mp4",
        "upload": "image"
      }
    },
    {
      "id": 204,
      "type": "LoraLoaderModelOnly",
      "pos": [
        1306.1792900000005,
        408.9891799999997
      ],
      "size": [
        270,
        82
      ],
      "flags": {},
      "order": 14,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 37
        }
      ],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            69
          ]
        }
      ],
      "title": "Turbo 8 — strength 1.0",
      "properties": {
        "Node name for S&R": "LoraLoaderModelOnly"
      },
      "widgets_values": [
        "minimax_h3_fl2v_turbo_8step_v1.0_768p_comfyui_bf16.safetensors",
        1
      ],
      "widgets_values_named": {
        "lora_name": "minimax_h3_fl2v_turbo_8step_v1.0_768p_comfyui_bf16.safetensors",
        "strength_model": 1
      }
    },
    {
      "id": 205,
      "type": "SelectCLIPDevice",
      "pos": [
        936.1792900000003,
        448.9891799999997
      ],
      "size": [
        270,
        58
      ],
      "flags": {},
      "order": 10,
      "mode": 0,
      "inputs": [
        {
          "color_off": null,
          "color_on": null,
          "dir": null,
          "label": null,
          "locked": null,
          "name": "clip",
          "nameLocked": null,
          "removable": null,
          "type": "CLIP",
          "pos": null,
          "link": 70
        }
      ],
      "outputs": [
        {
          "color_off": null,
          "color_on": null,
          "dir": null,
          "label": null,
          "locked": null,
          "name": "CLIP",
          "nameLocked": null,
          "removable": null,
          "type": "CLIP",
          "pos": null,
          "slot_index": null,
          "links": [
            99
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "SelectCLIPDevice"
      },
      "widgets_values": [
        "gpu:0"
      ],
      "widgets_values_named": {
        "device": "gpu:0"
      }
    },
    {
      "id": 219,
      "type": "LabsH3PrepareVideo",
      "pos": [
        455.1383999999996,
        114.88970000000002
      ],
      "size": [
        367.7617,
        274.3642
      ],
      "flags": {},
      "order": 11,
      "mode": 0,
      "inputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "link": 83
        }
      ],
      "outputs": [
        {
          "name": "reference_frames",
          "type": "IMAGE",
          "links": [
            102
          ]
        },
        {
          "name": "source_audio",
          "type": "AUDIO",
          "links": [
            96,
            103
          ]
        },
        {
          "name": "width",
          "type": "INT",
          "links": []
        },
        {
          "name": "height",
          "type": "INT",
          "links": []
        },
        {
          "name": "h3_length",
          "type": "INT",
          "links": []
        },
        {
          "name": "source_frames",
          "type": "INT",
          "links": [
            104
          ]
        },
        {
          "name": "fps",
          "type": "FLOAT",
          "links": [
            97,
            105
          ]
        },
        {
          "name": "summary",
          "type": "STRING",
          "links": [
            92
          ]
        },
        {
          "name": "prepared_video",
          "type": "VIDEO",
          "links": null
        }
      ],
      "title": "Resolution budget & output duration",
      "properties": {
        "Node name for S&R": "LabsH3PrepareVideo"
      },
      "widgets_values": [
        "480",
        0
      ],
      "widgets_values_named": {
        "resolution": "480",
        "duration_seconds": 0
      }
    },
    {
      "id": 221,
      "type": "PreviewAny",
      "pos": [
        427.3205000000002,
        462.4308000000001
      ],
      "size": [
        401.43600000000015,
        192.43079999999998
      ],
      "flags": {},
      "order": 13,
      "mode": 0,
      "inputs": [
        {
          "name": "source",
          "type": "*",
          "link": 92
        }
      ],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": null
        }
      ],
      "title": "Prepared dimensions & duration",
      "properties": {
        "Node name for S&R": "PreviewAny"
      },
      "widgets_values": [],
      "widgets_values_named": {}
    },
    {
      "id": 222,
      "type": "MarkdownNote",
      "pos": [
        -65.09784262999979,
        -342.860999689994
      ],
      "size": [
        509.56255555555583,
        338.52722222222224
      ],
      "flags": {},
      "order": 7,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "How to use",
      "properties": {},
      "widgets_values": [
        "## Character Swap · adjustable relay\n\nUpload a video + character image; choose 480 (~0.5 MP) or 768 (~1 MP). Duration 0 uses the entire clip. Prompt and both LoRAs are preserved from the saved single-window workflow.\n\n**Window frames:** default 124 (~5.17 s); try 107 (~4.46 s) for a strict under-five-second window. H3 accepts 17n+5.\n\n**History frames:** 18 = 17 generated past frames + the boundary frame. Try 1 (boundary only), 35 or 52. 0 disables history. History must be smaller than the window. It precedes the target timeline; ordinary windows advance by W−1. The final window may shift backward for a full source window. The plan shows exact source ranges and discarded overlap.\n\n**Previews:** each window appears when decoded. Hover to play. Reroll rebuilds that window onward, automatically keeping earlier results. Regenerate all uses fresh seeds for every window. Run reuses current results. Changed inputs/settings automatically start fresh windows on Run. Previews persist after refresh.\n\nThe original source audio is used for final delivery. Generated audio is only internal history. Inputs and the saved single-window workflow are preserved."
      ],
      "widgets_values_named": {
        "text": "## Character Swap · adjustable relay\n\nUpload a video + character image; choose 480 (~0.5 MP) or 768 (~1 MP). Duration 0 uses the entire clip. Prompt and both LoRAs are preserved from the saved single-window workflow.\n\n**Window frames:** default 124 (~5.17 s); try 107 (~4.46 s) for a strict under-five-second window. H3 accepts 17n+5.\n\n**History frames:** 18 = 17 generated past frames + the boundary frame. Try 1 (boundary only), 35 or 52. 0 disables history. History must be smaller than the window. It precedes the target timeline; ordinary windows advance by W−1. The final window may shift backward for a full source window. The plan shows exact source ranges and discarded overlap.\n\n**Previews:** each window appears when decoded. Hover to play. Reroll rebuilds that window onward, automatically keeping earlier results. Regenerate all uses fresh seeds for every window. Run reuses current results. Changed inputs/settings automatically start fresh windows on Run. Previews persist after refresh.\n\nThe original source audio is used for final delivery. Generated audio is only internal history. Inputs and the saved single-window workflow are preserved."
      },
      "color": "#432",
      "bgcolor": "#653"
    },
    {
      "id": 223,
      "type": "H3RelayWindowedEdit",
      "pos": [
        1713.1996246666686,
        124.9920887777782
      ],
      "size": [
        628.2280000000001,
        1138.478
      ],
      "flags": {},
      "order": 16,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 114
        },
        {
          "name": "clip",
          "type": "CLIP",
          "link": 99
        },
        {
          "name": "video_vae",
          "type": "VAE",
          "link": 100
        },
        {
          "name": "audio_vae",
          "type": "VAE",
          "link": 101
        },
        {
          "name": "source",
          "type": "IMAGE",
          "link": 102
        },
        {
          "name": "reference_image",
          "type": "IMAGE",
          "link": 106
        },
        {
          "name": "source_audio",
          "shape": 7,
          "type": "AUDIO",
          "link": 103
        },
        {
          "name": "fps",
          "type": "FLOAT",
          "widget": {
            "name": "fps"
          },
          "link": 105
        },
        {
          "name": "prompt",
          "type": "STRING",
          "widget": {
            "name": "prompt"
          },
          "link": 107
        },
        {
          "name": "source_count",
          "shape": 7,
          "type": "INT",
          "widget": {
            "name": "source_count"
          },
          "link": 104
        }
      ],
      "outputs": [
        {
          "name": "edited_frames",
          "type": "IMAGE",
          "links": [
            108
          ]
        },
        {
          "name": "window_plan",
          "type": "STRING",
          "links": [
            109
          ]
        }
      ],
      "title": "H3 Relay · Character Swap · windows & rerolls",
      "properties": {
        "Node name for S&R": "H3RelayWindowedEdit",
        "h3_removal_preview_run": "785541047e764e17a27981cab2ad755f"
      },
      "widgets_values": [
        24,
        "Replace the person in <Video 1> with the character in <Picture 1>. Preserve motion, framing and scene.",
        "124",
        "18",
        904234,
        "fixed",
        8,
        1,
        "er_sde",
        "simple",
        1,
        0,
        "{\"windows\":{\"0\":{\"seed\":\"904234\",\"locked\":true,\"record_id\":\"cc3721f490bb412a8590280fa4822f2b\"},\"1\":{\"seed\":\"904235\",\"locked\":true,\"record_id\":\"1089c71c34bf438c8f675738b9dce84a\"},\"2\":{\"seed\":\"904236\",\"locked\":true,\"record_id\":\"4bfd84a1bac34398841bcc433f35fad4\"}},\"config_key\":\"5b0cfdb09553ec9db0cc8fe6a238c27596911f389ca29cba4249297df50d1962\"}"
      ],
      "widgets_values_named": {
        "fps": 24,
        "prompt": "Replace the person in <Video 1> with the character in <Picture 1>. Preserve motion, framing and scene.",
        "window_frames": "124",
        "history_frames": "18",
        "seed": 904234,
        "control_after_generate": "fixed",
        "steps": 8,
        "cfg": 1,
        "sampler_name": "er_sde",
        "scheduler": "simple",
        "denoise": 1,
        "source_count": 0,
        "window_controls": "{\"windows\":{\"0\":{\"seed\":\"904234\",\"locked\":true,\"record_id\":\"cc3721f490bb412a8590280fa4822f2b\"},\"1\":{\"seed\":\"904235\",\"locked\":true,\"record_id\":\"1089c71c34bf438c8f675738b9dce84a\"},\"2\":{\"seed\":\"904236\",\"locked\":true,\"record_id\":\"4bfd84a1bac34398841bcc433f35fad4\"}},\"config_key\":\"5b0cfdb09553ec9db0cc8fe6a238c27596911f389ca29cba4249297df50d1962\"}"
      }
    },
    {
      "id": 224,
      "type": "PreviewAny",
      "pos": [
        2497.0072420000015,
        356.9353078888884
      ],
      "size": [
        400,
        278.8888888888889
      ],
      "flags": {},
      "order": 18,
      "mode": 0,
      "inputs": [
        {
          "name": "source",
          "type": "*",
          "link": 109
        }
      ],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": null
        }
      ],
      "title": "Window plan · exact source-frame mapping",
      "properties": {
        "Node name for S&R": "PreviewAny"
      },
      "widgets_values": [],
      "widgets_values_named": {}
    },
    {
      "id": 227,
      "type": "MarkdownNote",
      "pos": [
        -570.8490329268661,
        69.95486541820233
      ],
      "size": [
        450,
        652.75
      ],
      "flags": {},
      "order": 8,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "Note: Model Links",
      "properties": {},
      "widgets_values": [
        "## Model Links\n\n**vae**\n\n- [minimax_h3_video_vae_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_video_vae_int8_convrot.safetensors)\n- [minimax_h3_audio_vae_fp32.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_audio_vae_fp32.safetensors)\n\n**diffusion_models**\n\n- [minimax_h3_fl2va_pruned_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/diffusion_models/minimax_h3_fl2va_pruned_int8_convrot.safetensors)\n\n**text_encoders**\n\n- [qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors)\n\n**loras**\n\n- 8 steps:  [minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors](https://huggingface.co/lightx2v/Minimax-h3-Turbo/resolve/main/minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors)\n-  4 steps: [minimax_h3_fl2v_turbo_4step_v1.0_768p_comfyui_bf16.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/loras/minimax_h3_fl2v_turbo_4step_v1.0_768p_comfyui_bf16.safetensors)\n- [h3_character_swap_pro4500_1000.safetensors](https://huggingface.co/akatz-ai/MiniMax-H3-Character-Swap-LoRA/blob/main/h3_character_swap_pro4500_1000.safetensors?download=true)\n\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│   ├── 📂 vae/\n│   │   ├── minimax_h3_video_vae_int8_convrot.safetensors\n│   │   └── minimax_h3_audio_vae_fp32.safetensors\n│   ├── 📂 diffusion_models/\n│   │   └── minimax_h3_fl2va_pruned_int8_convrot.safetensors\n│   ├── 📂 text_encoders/\n│   │   └── qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors\n│   ├── 📂 loras/\n│   │   └── minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors\n│   │   └── h3_character_swap_pro4500_1000.safetensors\n```\n\n## Custom Node:\n\nInstall the accompanying [H3 Relay](https://github.com/akatz-ai/h3-relay) custom node into `ComfyUI/custom_nodes/h3-relay`, then restart ComfyUI. Use a current ComfyUI with native H3 and SAM3 support. Models retain their upstream licenses.\n\n## Credits:\n\nWorkflow and LoRA by [akatz-ai](https://huggingface.co/akatz-ai)\n"
      ],
      "widgets_values_named": {
        "text": "## Model Links\n\n**vae**\n\n- [minimax_h3_video_vae_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_video_vae_int8_convrot.safetensors)\n- [minimax_h3_audio_vae_fp32.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_audio_vae_fp32.safetensors)\n\n**diffusion_models**\n\n- [minimax_h3_fl2va_pruned_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/diffusion_models/minimax_h3_fl2va_pruned_int8_convrot.safetensors)\n\n**text_encoders**\n\n- [qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors)\n\n**loras**\n\n- 8 steps:  [minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors](https://huggingface.co/lightx2v/Minimax-h3-Turbo/resolve/main/minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors)\n-  4 steps: [minimax_h3_fl2v_turbo_4step_v1.0_768p_comfyui_bf16.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/loras/minimax_h3_fl2v_turbo_4step_v1.0_768p_comfyui_bf16.safetensors)\n- [h3_character_swap_pro4500_1000.safetensors](https://huggingface.co/akatz-ai/MiniMax-H3-Character-Swap-LoRA/blob/main/h3_character_swap_pro4500_1000.safetensors?download=true)\n\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│   ├── 📂 vae/\n│   │   ├── minimax_h3_video_vae_int8_convrot.safetensors\n│   │   └── minimax_h3_audio_vae_fp32.safetensors\n│   ├── 📂 diffusion_models/\n│   │   └── minimax_h3_fl2va_pruned_int8_convrot.safetensors\n│   ├── 📂 text_encoders/\n│   │   └── qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors\n│   ├── 📂 loras/\n│   │   └── minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors\n│   │   └── h3_character_swap_pro4500_1000.safetensors\n```\n\n## Custom Node:\n\nInstall the accompanying [H3 Relay](https://github.com/akatz-ai/h3-relay) custom node into `ComfyUI/custom_nodes/h3-relay`, then restart ComfyUI. Use a current ComfyUI with native H3 and SAM3 support. Models retain their upstream licenses.\n\n## Credits:\n\nWorkflow and LoRA by [akatz-ai](https://huggingface.co/akatz-ai)\n"
      },
      "color": "#222",
      "bgcolor": "#000"
    }
  ],
  "links": [
    [
      35,
      1,
      0,
      2,
      0,
      "MODEL"
    ],
    [
      36,
      2,
      0,
      3,
      0,
      "MODEL"
    ],
    [
      37,
      3,
      0,
      204,
      0,
      "MODEL"
    ],
    [
      69,
      204,
      0,
      4,
      0,
      "MODEL"
    ],
    [
      70,
      6,
      0,
      205,
      0,
      "CLIP"
    ],
    [
      83,
      30,
      0,
      219,
      0,
      "VIDEO"
    ],
    [
      92,
      219,
      7,
      221,
      0,
      "STRING"
    ],
    [
      96,
      219,
      1,
      23,
      1,
      "AUDIO"
    ],
    [
      97,
      219,
      6,
      23,
      2,
      "FLOAT"
    ],
    [
      108,
      223,
      0,
      23,
      0,
      "IMAGE"
    ],
    [
      109,
      223,
      1,
      224,
      0,
      "STRING"
    ],
    [
      99,
      205,
      0,
      223,
      1,
      "CLIP"
    ],
    [
      100,
      7,
      0,
      223,
      2,
      "VAE"
    ],
    [
      101,
      8,
      0,
      223,
      3,
      "VAE"
    ],
    [
      102,
      219,
      0,
      223,
      4,
      "IMAGE"
    ],
    [
      106,
      9,
      0,
      223,
      5,
      "IMAGE"
    ],
    [
      103,
      219,
      1,
      223,
      6,
      "AUDIO"
    ],
    [
      105,
      219,
      6,
      223,
      7,
      "FLOAT"
    ],
    [
      107,
      11,
      0,
      223,
      8,
      "STRING"
    ],
    [
      104,
      219,
      5,
      223,
      9,
      "INT"
    ],
    [
      114,
      4,
      0,
      223,
      0,
      "MODEL"
    ],
    [
      65,
      23,
      0,
      24,
      0,
      "VIDEO"
    ]
  ],
  "groups": [
    {
      "id": 1,
      "title": "Inputs · resolution · prompt",
      "bounding": [
        -78.31529999999992,
        28.5359,
        945.6022999999998,
        1610.5567999999998
      ],
      "color": "#2b737b",
      "flags": {}
    },
    {
      "id": 2,
      "title": "Models & speed controls",
      "bounding": [
        889.7372500000004,
        31.610509999999998,
        761.832096666667,
        790.2203511111109
      ],
      "color": "#554477",
      "flags": {}
    },
    {
      "id": 3,
      "title": "Reference conditioning",
      "bounding": [
        1673.2952100000005,
        34.831529999999994,
        710.1500000000001,
        1269.4855555555553
      ],
      "color": "#3f596e",
      "flags": {}
    },
    {
      "id": 4,
      "title": "Sampling & output",
      "bounding": [
        2423.6671064444495,
        40.21779122222221,
        1884.075028824443,
        1270.3317907639996
      ],
      "color": "#3e6e56",
      "flags": {}
    }
  ],
  "config": {},
  "extra": {
    "ds": {
      "scale": 0.7513148009015777,
      "offset": [
        577.7202725891511,
        162.62432893319112
      ]
    },
    "frontendVersion": "1.53.6"
  },
  "version": 0.4
}