From 5820343001004460dca5a27ffd36e73a2feded9d Mon Sep 17 00:00:00 2001 From: Morpheus Date: Sun, 16 Aug 2026 09:55:41 +0000 Subject: [PATCH] Add MiniMax H3 extender import and 3070 R2V variant --- .../minimax-h3-extender-ref2va/README.md | 61 + .../minimax-h3-extender-ref2va/workflow.json | 1042 +++++++++++++++++ .../README.md | 61 + .../workflow.json | 1042 +++++++++++++++++ optimized/notes/minimax.md | 2 + 5 files changed, 2208 insertions(+) create mode 100644 models/minimax/minimax-h3-extender-ref2va/README.md create mode 100644 models/minimax/minimax-h3-extender-ref2va/workflow.json create mode 100644 optimized/image-to-video/minimax-h3-extender-3070-r2v-480p-clip-by-clip/README.md create mode 100644 optimized/image-to-video/minimax-h3-extender-3070-r2v-480p-clip-by-clip/workflow.json diff --git a/models/minimax/minimax-h3-extender-ref2va/README.md b/models/minimax/minimax-h3-extender-ref2va/README.md new file mode 100644 index 0000000..25c2af1 --- /dev/null +++ b/models/minimax/minimax-h3-extender-ref2va/README.md @@ -0,0 +1,61 @@ +# MiniMax H3 Extender Ref2VA + +## Summary + +Imported `MiniMax H3` continuation workflow based on +`tritant/ComfyUI_MiniMax_H3_Extender`. This is a `Ref2VA`-first extender with +shared image references, optional audio reference, Motion Context continuity, +validated clip-by-clip reuse, and final joined video/audio decode. + +## Model Family + +- `minimax` + +## Status + +- `imported-only` + +## Source + +- Repo: +- Workflow file: +- Original publisher: `tritant` +- Date imported: `2026-08-16` + +## Developer notes + +- The upstream node is built around a single horizontal sequence node instead of + a large repeated graph. +- It keeps a validated disk cache, supports `clip_by_clip` and `full_batch`, + and is explicitly designed for longer `MiniMax H3` continuation chains. +- The upstream README says it combines `Ref2VA`, Motion Context, disk caching, + per-clip prompts, per-clip seeds, and final decode/export into a simpler + flow. + +## Our notes + +- This import is worth keeping because it is natively `reference-to-video` + oriented and closer to Chris's actual MiniMax use than generic `t2v` graphs. +- I replaced the source repo's very specific demo clip script with a neutral + reusable starter clip state so the imported workflow opens as a practical + template instead of someone else's scene. +- The graph still uses the upstream source-leaning stack, so it is more of a + donor / comparison import than the first `3070` workflow to run. + +## Required custom nodes + +- `ComfyUI_MiniMax_H3_Extender` + +## Required models + +- `MiniMax H3` `Ref2VA` checkpoint +- matching `MiniMax H3` text encoder +- `MiniMax H3` video VAE +- `MiniMax H3` audio VAE +- optional turbo LoRA path if enabled + +## Notes + +- Use this when you want the upstream extender logic itself. +- For the tighter local-first variant, use the optimized companion workflow in + `optimized/image-to-video/minimax-h3-extender-3070-r2v-480p-clip-by-clip/`. diff --git a/models/minimax/minimax-h3-extender-ref2va/workflow.json b/models/minimax/minimax-h3-extender-ref2va/workflow.json new file mode 100644 index 0000000..3003f3a --- /dev/null +++ b/models/minimax/minimax-h3-extender-ref2va/workflow.json @@ -0,0 +1,1042 @@ +{ + "id": "b20b267f-c288-4f81-a931-1122cf7b28db", + "revision": 0, + "last_node_id": 11, + "last_link_id": 19, + "nodes": [ + { + "id": 4, + "type": "CLIPLoader", + "pos": [ + -1350, + 4660 + ], + "size": [ + 470, + 110 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [ + { + "localized_name": "clip_name", + "name": "clip_name", + "type": "COMBO", + "widget": { + "name": "clip_name" + }, + "link": null + }, + { + "localized_name": "type", + "name": "type", + "type": "COMBO", + "widget": { + "name": "type" + }, + "link": null + }, + { + "localized_name": "device", + "name": "device", + "shape": 7, + "type": "COMBO", + "widget": { + "name": "device" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "CLIP", + "name": "CLIP", + "type": "CLIP", + "links": [ + 3 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "CLIPLoader", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + "qwen3vl_32b_minimax_h3_int4_convrot.safetensors", + "minimax", + "default" + ] + }, + { + "id": 5, + "type": "VAELoader", + "pos": [ + -1350, + 4820 + ], + "size": [ + 470, + 60 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "localized_name": "vae_name", + "name": "vae_name", + "type": "COMBO", + "widget": { + "name": "vae_name" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "VAE", + "name": "VAE", + "type": "VAE", + "links": [ + 4, + 5 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "VAELoader", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + "minimax_h3_video_vae_fp16.safetensors" + ] + }, + { + "id": 6, + "type": "VAELoader", + "pos": [ + -1350, + 4920 + ], + "size": [ + 470, + 60 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "localized_name": "vae_name", + "name": "vae_name", + "type": "COMBO", + "widget": { + "name": "vae_name" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "VAE", + "name": "VAE", + "type": "VAE", + "links": [ + 6, + 13 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "VAELoader", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + "minimax_h3_audio_vae_fp32.safetensors" + ] + }, + { + "id": 8, + "type": "GetImageSize", + "pos": [ + -1050, + 5030 + ], + "size": [ + 210, + 140 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "localized_name": "image", + "name": "image", + "type": "IMAGE", + "link": 7 + } + ], + "outputs": [ + { + "localized_name": "width", + "name": "width", + "type": "INT", + "links": [ + 8 + ] + }, + { + "localized_name": "height", + "name": "height", + "type": "INT", + "links": [ + 9 + ] + }, + { + "localized_name": "batch_size", + "name": "batch_size", + "type": "INT", + "links": null + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "GetImageSize", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [] + }, + { + "id": 10, + "type": "LoadImage", + "pos": [ + -1130, + 5220 + ], + "size": [ + 290, + 320 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "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" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 17 + ] + }, + { + "localized_name": "MASK", + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "title": "image 2", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "LoadImage", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + "2026-08-02-161625-196_330352305171789_2f87a7.png", + "image" + ] + }, + { + "id": 9, + "type": "LoadImage", + "pos": [ + -1450, + 5220 + ], + "size": [ + 290, + 320 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "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" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 10, + 16 + ] + }, + { + "localized_name": "MASK", + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "title": "image 1", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "LoadImage", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + "2026-07-26-042833-257_443060221197683_a5100c.png", + "image" + ] + }, + { + "id": 7, + "type": "ImageScaleToTotalPixels", + "pos": [ + -1350, + 5030 + ], + "size": [ + 280, + 130 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "localized_name": "image", + "name": "image", + "type": "IMAGE", + "link": 10 + }, + { + "localized_name": "upscale_method", + "name": "upscale_method", + "type": "COMBO", + "widget": { + "name": "upscale_method" + }, + "link": null + }, + { + "localized_name": "megapixels", + "name": "megapixels", + "type": "FLOAT", + "widget": { + "name": "megapixels" + }, + "link": null + }, + { + "localized_name": "resolution_steps", + "name": "resolution_steps", + "type": "INT", + "widget": { + "name": "resolution_steps" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 7 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "ImageScaleToTotalPixels", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + "nearest-exact", + 0.9, + 1 + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 2, + "type": "MiniMaxH3MotionContextDiskFinalDecode", + "pos": [ + 550, + 4530 + ], + "size": [ + 890, + 1290 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "localized_name": "cache", + "name": "cache", + "type": "H3_MOTION_DISK_CACHE", + "link": 1 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5 + }, + { + "localized_name": "audio_vae", + "name": "audio_vae", + "type": "VAE", + "link": 6 + }, + { + "localized_name": "fps", + "name": "fps", + "type": "FLOAT", + "widget": { + "name": "fps" + }, + "link": null + }, + { + "localized_name": "filename_prefix", + "name": "filename_prefix", + "type": "STRING", + "widget": { + "name": "filename_prefix" + }, + "link": null + }, + { + "localized_name": "output_directory", + "name": "output_directory", + "type": "STRING", + "widget": { + "name": "output_directory" + }, + "link": null + }, + { + "localized_name": "codec", + "name": "codec", + "type": "COMBO", + "widget": { + "name": "codec" + }, + "link": null + }, + { + "localized_name": "crf", + "name": "crf", + "type": "INT", + "widget": { + "name": "crf" + }, + "link": null + }, + { + "localized_name": "preset", + "name": "preset", + "type": "COMBO", + "widget": { + "name": "preset" + }, + "link": null + }, + { + "localized_name": "audio_bitrate", + "name": "audio_bitrate", + "type": "COMBO", + "widget": { + "name": "audio_bitrate" + }, + "link": null + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "MiniMaxH3MotionContextDiskFinalDecode", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + 24, + "MiniMax_H3_cached", + "", + "H.264", + 17, + "fast", + "192k", + "" + ] + }, + { + "id": 3, + "type": "UNETLoader", + "pos": [ + -1350, + 4520 + ], + "size": [ + 480, + 90 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "localized_name": "unet_name", + "name": "unet_name", + "type": "COMBO", + "widget": { + "name": "unet_name" + }, + "link": null + }, + { + "localized_name": "weight_dtype", + "name": "weight_dtype", + "type": "COMBO", + "widget": { + "name": "weight_dtype" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "MODEL", + "name": "MODEL", + "type": "MODEL", + "links": [ + 18 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "UNETLoader", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + "minimax_h3_ref2va_pruned_int8_convrot.safetensors", + "default" + ] + }, + { + "id": 11, + "type": "LoraLoaderModelOnly", + "pos": [ + -1350, + 4380 + ], + "size": [ + 480, + 90 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 18 + }, + { + "localized_name": "lora_name", + "name": "lora_name", + "type": "COMBO", + "widget": { + "name": "lora_name" + }, + "link": null + }, + { + "localized_name": "strength_model", + "name": "strength_model", + "type": "FLOAT", + "widget": { + "name": "strength_model" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "MODEL", + "name": "MODEL", + "type": "MODEL", + "links": [ + 19 + ] + } + ], + "properties": { + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {} + }, + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "LoraLoaderModelOnly" + }, + "widgets_values": [ + "minimax_h3_ref2v_turbo_4step_v0.1_comfyui_bf16(1).safetensors", + 1 + ] + }, + { + "id": 1, + "type": "MiniMaxH3Extender", + "pos": [ + -820, + 4610 + ], + "size": [ + 1350, + 850 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 19 + }, + { + "localized_name": "clip", + "name": "clip", + "type": "CLIP", + "link": 3 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 4 + }, + { + "localized_name": "audio_vae", + "name": "audio_vae", + "shape": 7, + "type": "VAE", + "link": 13 + }, + { + "localized_name": "ref_audio", + "name": "ref_audio", + "shape": 7, + "type": "AUDIO", + "link": null + }, + { + "localized_name": "ref_1", + "name": "ref_1", + "shape": 7, + "type": "IMAGE", + "link": 16 + }, + { + "localized_name": "run_mode", + "name": "run_mode", + "type": "COMBO", + "widget": { + "name": "run_mode" + }, + "link": null + }, + { + "localized_name": "width", + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": 8 + }, + { + "localized_name": "height", + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": 9 + }, + { + "localized_name": "ref_image_size", + "name": "ref_image_size", + "type": "COMBO", + "widget": { + "name": "ref_image_size" + }, + "link": null + }, + { + "localized_name": "steps", + "name": "steps", + "type": "INT", + "widget": { + "name": "steps" + }, + "link": null + }, + { + "localized_name": "sampler_name", + "name": "sampler_name", + "type": "COMBO", + "widget": { + "name": "sampler_name" + }, + "link": null + }, + { + "localized_name": "scheduler", + "name": "scheduler", + "type": "COMBO", + "widget": { + "name": "scheduler" + }, + "link": null + }, + { + "localized_name": "denoise", + "name": "denoise", + "type": "FLOAT", + "widget": { + "name": "denoise" + }, + "link": null + }, + { + "localized_name": "context_length", + "name": "context_length", + "type": "COMBO", + "widget": { + "name": "context_length" + }, + "link": null + }, + { + "localized_name": "audio_context_length", + "name": "audio_context_length", + "type": "INT", + "widget": { + "name": "audio_context_length" + }, + "link": null + }, + { + "localized_name": "clips_json", + "name": "clips_json", + "type": "STRING", + "widget": { + "name": "clips_json" + }, + "link": null + }, + { + "name": "ref_2", + "type": "IMAGE", + "link": 17 + }, + { + "name": "ref_3", + "type": "IMAGE", + "link": null + } + ], + "outputs": [ + { + "localized_name": "cache", + "name": "cache", + "type": "H3_MOTION_DISK_CACHE", + "links": [ + 1 + ] + }, + { + "localized_name": "clip_count", + "name": "clip_count", + "type": "INT", + "links": null + }, + { + "localized_name": "validated_count", + "name": "validated_count", + "type": "INT", + "links": null + }, + { + "localized_name": "status", + "name": "status", + "type": "STRING", + "links": null + }, + { + "localized_name": "cache_size_mb", + "name": "cache_size_mb", + "type": "FLOAT", + "links": null + }, + { + "localized_name": "build", + "name": "build", + "type": "STRING", + "links": null + } + ], + "properties": { + "Node name for S&R": "MiniMaxH3Extender", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + "clip_by_clip", + 896, + 576, + "match", + 4, + "euler", + "simple", + 1, + "22", + 0, + "{\"version\":1,\"clips\":[{\"id\":\"clip_1\",\"prompt\":\"subject_definitions:\\n is the main reference for the exact visual identity, clothing, proportions, and overall appearance of , and it also establishes the environment and scene context.\\n\\nsummary:\\nCreate the first continuation beat from the reference image. begins in the same environment and moves naturally through the space while preserving identity, wardrobe, lighting direction, and scene continuity.\\n\\ndetailed_description:\\n[Shot 1] Begin from the identity and environment established by . Preserve the same subject, the same clothing, the same face, and the same scene context. Use natural motion, grounded camera movement, and realistic continuity. End with the action still slightly unresolved so the next clip can extend it cleanly.\\n\\noverall_soundscape:\\nPreserve the same environmental ambience and synchronized movement sounds. No sudden audio reset at the clip boundary.\\n\\nnon_diegetic_music:\\nNone unless already established by the source material.\",\"seed\":4001,\"seed_mode\":\"fixed\",\"duration\":10,\"validated\":false},{\"id\":\"clip_2\",\"prompt\":\"subject_definitions:\\n remains the main reference for the exact visual identity, clothing, proportions, and environment of .\\n\\nsummary:\\nContinue directly from the previous clip with no restart. Preserve identity and environment while extending the action into the next natural beat.\\n\\ndetailed_description:\\n[Shot 1] Continue seamlessly from the validated previous clip. Keep the same subject, wardrobe, lighting, environment, and camera logic. Extend the motion naturally through the same connected space, then settle into a readable ending composition without freezing the subject or breaking continuity.\\n\\noverall_soundscape:\\nMaintain continuous ambience and synchronized movement sounds across the join.\\n\\nnon_diegetic_music:\\nNone unless already established by the source material.\",\"seed\":4002,\"seed_mode\":\"fixed\",\"duration\":10,\"validated\":false}]}" + ], + "color": "#222", + "bgcolor": "#000" + } + ], + "links": [ + [ + 1, + 1, + 0, + 2, + 0, + "H3_MOTION_DISK_CACHE" + ], + [ + 3, + 4, + 0, + 1, + 1, + "CLIP" + ], + [ + 4, + 5, + 0, + 1, + 2, + "VAE" + ], + [ + 5, + 5, + 0, + 2, + 1, + "VAE" + ], + [ + 6, + 6, + 0, + 2, + 2, + "VAE" + ], + [ + 7, + 7, + 0, + 8, + 0, + "IMAGE" + ], + [ + 8, + 8, + 0, + 1, + 7, + "INT" + ], + [ + 9, + 8, + 1, + 1, + 8, + "INT" + ], + [ + 10, + 9, + 0, + 7, + 0, + "IMAGE" + ], + [ + 13, + 6, + 0, + 1, + 3, + "VAE" + ], + [ + 16, + 9, + 0, + 1, + 5, + "IMAGE" + ], + [ + 17, + 10, + 0, + 1, + 17, + "IMAGE" + ], + [ + 18, + 3, + 0, + 11, + 0, + "MODEL" + ], + [ + 19, + 11, + 0, + 1, + 0, + "MODEL" + ] + ], + "groups": [], + "config": {}, + "extra": { + "ue_links": [], + "ds": { + "scale": 0.674703363147552, + "offset": [ + 1443.4844652677814, + -4415.190039549854 + ] + }, + "links_added_by_ue": [] + }, + "version": 0.4 +} diff --git a/optimized/image-to-video/minimax-h3-extender-3070-r2v-480p-clip-by-clip/README.md b/optimized/image-to-video/minimax-h3-extender-3070-r2v-480p-clip-by-clip/README.md new file mode 100644 index 0000000..a9b2fb7 --- /dev/null +++ b/optimized/image-to-video/minimax-h3-extender-3070-r2v-480p-clip-by-clip/README.md @@ -0,0 +1,61 @@ +# MiniMax H3 Extender 3070 R2V 480p Clip By Clip + +## Summary + +`MiniMax H3 Extender` optimized for Chris's actual MiniMax lane: +`reference-to-video` first, incremental continuation, and safer `3070` +execution. This variant keeps the extender's validated cache / clip approval +model, but swaps it toward the lighter stack already used by the current local +MiniMax extension masters. + +## Status + +- `best-current-extender-r2v-safe-start` + +## Workflow asset + +- `workflow.json` + +## Built from + +- `models/minimax/minimax-h3-extender-ref2va/` +- upstream repo: `tritant/ComfyUI_MiniMax_H3_Extender` + +## Key model stack + +- `minimax_h3_ref2va_pruned_w4a8_mixed.safetensors` +- `qwen3vl_32b_heretic_minimax_h3_nvfp4.safetensors` +- `minimax_h3_video_vae_int8_convrot.safetensors` +- `minimax_h3_audio_vae_fp32.safetensors` +- `minimax\minimax_h3_fl2v_lightx2v_turbo_4step_v0.1_comfy.safetensors` + +## Main changes + +- switched the workflow to `clip_by_clip` so each clip can be generated, + reviewed, and validated before the chain continues +- reduced the working canvas from `896x576` to `864x480` +- raised the step count from `4` to `5` for a slightly less brittle low-step + path +- swapped the source stack toward the lighter local stack already used by the + compact MiniMax continuation masters +- replaced the source demo story with a neutral reusable `R2V` continuation + starter in `clips_json` + +## Why this exists + +- the upstream extender logic is genuinely useful, but the shipped example is + more optimistic than Chris's `3070 / 8 GB` box wants +- Chris's primary MiniMax lane is `reference-to-video`, so the optimized + variant should open in an `R2V`-friendly continuation shape instead of + generic batch-generation mode +- `clip_by_clip` plus validation is a better fit than `full_batch` when trying + to preserve continuity without wasting render time on bad downstream clips + +## Notes + +- This is the right workflow to test if the goal is "can the extender model be + useful on the local box?" +- It does not replace the current compact `Contex Loop` extension masters yet; + it is the best direct `Extender`-style challenger to compare against them. +- Start with one reference image, short `10s` clips, and explicit + `subject_definitions` blocks before scaling up. diff --git a/optimized/image-to-video/minimax-h3-extender-3070-r2v-480p-clip-by-clip/workflow.json b/optimized/image-to-video/minimax-h3-extender-3070-r2v-480p-clip-by-clip/workflow.json new file mode 100644 index 0000000..c6be5a3 --- /dev/null +++ b/optimized/image-to-video/minimax-h3-extender-3070-r2v-480p-clip-by-clip/workflow.json @@ -0,0 +1,1042 @@ +{ + "id": "b20b267f-c288-4f81-a931-1122cf7b28db", + "revision": 0, + "last_node_id": 11, + "last_link_id": 19, + "nodes": [ + { + "id": 4, + "type": "CLIPLoader", + "pos": [ + -1350, + 4660 + ], + "size": [ + 470, + 110 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [ + { + "localized_name": "clip_name", + "name": "clip_name", + "type": "COMBO", + "widget": { + "name": "clip_name" + }, + "link": null + }, + { + "localized_name": "type", + "name": "type", + "type": "COMBO", + "widget": { + "name": "type" + }, + "link": null + }, + { + "localized_name": "device", + "name": "device", + "shape": 7, + "type": "COMBO", + "widget": { + "name": "device" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "CLIP", + "name": "CLIP", + "type": "CLIP", + "links": [ + 3 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "CLIPLoader", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + "qwen3vl_32b_heretic_minimax_h3_nvfp4.safetensors", + "minimax", + "default" + ] + }, + { + "id": 5, + "type": "VAELoader", + "pos": [ + -1350, + 4820 + ], + "size": [ + 470, + 60 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "localized_name": "vae_name", + "name": "vae_name", + "type": "COMBO", + "widget": { + "name": "vae_name" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "VAE", + "name": "VAE", + "type": "VAE", + "links": [ + 4, + 5 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "VAELoader", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + "minimax_h3_video_vae_int8_convrot.safetensors" + ] + }, + { + "id": 6, + "type": "VAELoader", + "pos": [ + -1350, + 4920 + ], + "size": [ + 470, + 60 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "localized_name": "vae_name", + "name": "vae_name", + "type": "COMBO", + "widget": { + "name": "vae_name" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "VAE", + "name": "VAE", + "type": "VAE", + "links": [ + 6, + 13 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "VAELoader", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + "minimax_h3_audio_vae_fp32.safetensors" + ] + }, + { + "id": 8, + "type": "GetImageSize", + "pos": [ + -1050, + 5030 + ], + "size": [ + 210, + 140 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "localized_name": "image", + "name": "image", + "type": "IMAGE", + "link": 7 + } + ], + "outputs": [ + { + "localized_name": "width", + "name": "width", + "type": "INT", + "links": [ + 8 + ] + }, + { + "localized_name": "height", + "name": "height", + "type": "INT", + "links": [ + 9 + ] + }, + { + "localized_name": "batch_size", + "name": "batch_size", + "type": "INT", + "links": null + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "GetImageSize", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [] + }, + { + "id": 10, + "type": "LoadImage", + "pos": [ + -1130, + 5220 + ], + "size": [ + 290, + 320 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "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" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 17 + ] + }, + { + "localized_name": "MASK", + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "title": "image 2", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "LoadImage", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + "2026-08-02-161625-196_330352305171789_2f87a7.png", + "image" + ] + }, + { + "id": 9, + "type": "LoadImage", + "pos": [ + -1450, + 5220 + ], + "size": [ + 290, + 320 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "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" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 10, + 16 + ] + }, + { + "localized_name": "MASK", + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "title": "image 1", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "LoadImage", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + "2026-07-26-042833-257_443060221197683_a5100c.png", + "image" + ] + }, + { + "id": 7, + "type": "ImageScaleToTotalPixels", + "pos": [ + -1350, + 5030 + ], + "size": [ + 280, + 130 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "localized_name": "image", + "name": "image", + "type": "IMAGE", + "link": 10 + }, + { + "localized_name": "upscale_method", + "name": "upscale_method", + "type": "COMBO", + "widget": { + "name": "upscale_method" + }, + "link": null + }, + { + "localized_name": "megapixels", + "name": "megapixels", + "type": "FLOAT", + "widget": { + "name": "megapixels" + }, + "link": null + }, + { + "localized_name": "resolution_steps", + "name": "resolution_steps", + "type": "INT", + "widget": { + "name": "resolution_steps" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 7 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "ImageScaleToTotalPixels", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + "nearest-exact", + 0.9, + 1 + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 2, + "type": "MiniMaxH3MotionContextDiskFinalDecode", + "pos": [ + 550, + 4530 + ], + "size": [ + 890, + 1290 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "localized_name": "cache", + "name": "cache", + "type": "H3_MOTION_DISK_CACHE", + "link": 1 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5 + }, + { + "localized_name": "audio_vae", + "name": "audio_vae", + "type": "VAE", + "link": 6 + }, + { + "localized_name": "fps", + "name": "fps", + "type": "FLOAT", + "widget": { + "name": "fps" + }, + "link": null + }, + { + "localized_name": "filename_prefix", + "name": "filename_prefix", + "type": "STRING", + "widget": { + "name": "filename_prefix" + }, + "link": null + }, + { + "localized_name": "output_directory", + "name": "output_directory", + "type": "STRING", + "widget": { + "name": "output_directory" + }, + "link": null + }, + { + "localized_name": "codec", + "name": "codec", + "type": "COMBO", + "widget": { + "name": "codec" + }, + "link": null + }, + { + "localized_name": "crf", + "name": "crf", + "type": "INT", + "widget": { + "name": "crf" + }, + "link": null + }, + { + "localized_name": "preset", + "name": "preset", + "type": "COMBO", + "widget": { + "name": "preset" + }, + "link": null + }, + { + "localized_name": "audio_bitrate", + "name": "audio_bitrate", + "type": "COMBO", + "widget": { + "name": "audio_bitrate" + }, + "link": null + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "MiniMaxH3MotionContextDiskFinalDecode", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + 24, + "MiniMax_H3_cached", + "", + "H.264", + 17, + "fast", + "192k", + "" + ] + }, + { + "id": 3, + "type": "UNETLoader", + "pos": [ + -1350, + 4520 + ], + "size": [ + 480, + 90 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "localized_name": "unet_name", + "name": "unet_name", + "type": "COMBO", + "widget": { + "name": "unet_name" + }, + "link": null + }, + { + "localized_name": "weight_dtype", + "name": "weight_dtype", + "type": "COMBO", + "widget": { + "name": "weight_dtype" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "MODEL", + "name": "MODEL", + "type": "MODEL", + "links": [ + 18 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "UNETLoader", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + "minimax_h3_ref2va_pruned_w4a8_mixed.safetensors", + "default" + ] + }, + { + "id": 11, + "type": "LoraLoaderModelOnly", + "pos": [ + -1350, + 4380 + ], + "size": [ + 480, + 90 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 18 + }, + { + "localized_name": "lora_name", + "name": "lora_name", + "type": "COMBO", + "widget": { + "name": "lora_name" + }, + "link": null + }, + { + "localized_name": "strength_model", + "name": "strength_model", + "type": "FLOAT", + "widget": { + "name": "strength_model" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "MODEL", + "name": "MODEL", + "type": "MODEL", + "links": [ + 19 + ] + } + ], + "properties": { + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {} + }, + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "LoraLoaderModelOnly" + }, + "widgets_values": [ + "minimax\\minimax_h3_fl2v_lightx2v_turbo_4step_v0.1_comfy.safetensors", + 1 + ] + }, + { + "id": 1, + "type": "MiniMaxH3Extender", + "pos": [ + -820, + 4610 + ], + "size": [ + 1350, + 850 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 19 + }, + { + "localized_name": "clip", + "name": "clip", + "type": "CLIP", + "link": 3 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 4 + }, + { + "localized_name": "audio_vae", + "name": "audio_vae", + "shape": 7, + "type": "VAE", + "link": 13 + }, + { + "localized_name": "ref_audio", + "name": "ref_audio", + "shape": 7, + "type": "AUDIO", + "link": null + }, + { + "localized_name": "ref_1", + "name": "ref_1", + "shape": 7, + "type": "IMAGE", + "link": 16 + }, + { + "localized_name": "run_mode", + "name": "run_mode", + "type": "COMBO", + "widget": { + "name": "run_mode" + }, + "link": null + }, + { + "localized_name": "width", + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": 8 + }, + { + "localized_name": "height", + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": 9 + }, + { + "localized_name": "ref_image_size", + "name": "ref_image_size", + "type": "COMBO", + "widget": { + "name": "ref_image_size" + }, + "link": null + }, + { + "localized_name": "steps", + "name": "steps", + "type": "INT", + "widget": { + "name": "steps" + }, + "link": null + }, + { + "localized_name": "sampler_name", + "name": "sampler_name", + "type": "COMBO", + "widget": { + "name": "sampler_name" + }, + "link": null + }, + { + "localized_name": "scheduler", + "name": "scheduler", + "type": "COMBO", + "widget": { + "name": "scheduler" + }, + "link": null + }, + { + "localized_name": "denoise", + "name": "denoise", + "type": "FLOAT", + "widget": { + "name": "denoise" + }, + "link": null + }, + { + "localized_name": "context_length", + "name": "context_length", + "type": "COMBO", + "widget": { + "name": "context_length" + }, + "link": null + }, + { + "localized_name": "audio_context_length", + "name": "audio_context_length", + "type": "INT", + "widget": { + "name": "audio_context_length" + }, + "link": null + }, + { + "localized_name": "clips_json", + "name": "clips_json", + "type": "STRING", + "widget": { + "name": "clips_json" + }, + "link": null + }, + { + "name": "ref_2", + "type": "IMAGE", + "link": 17 + }, + { + "name": "ref_3", + "type": "IMAGE", + "link": null + } + ], + "outputs": [ + { + "localized_name": "cache", + "name": "cache", + "type": "H3_MOTION_DISK_CACHE", + "links": [ + 1 + ] + }, + { + "localized_name": "clip_count", + "name": "clip_count", + "type": "INT", + "links": null + }, + { + "localized_name": "validated_count", + "name": "validated_count", + "type": "INT", + "links": null + }, + { + "localized_name": "status", + "name": "status", + "type": "STRING", + "links": null + }, + { + "localized_name": "cache_size_mb", + "name": "cache_size_mb", + "type": "FLOAT", + "links": null + }, + { + "localized_name": "build", + "name": "build", + "type": "STRING", + "links": null + } + ], + "properties": { + "Node name for S&R": "MiniMaxH3Extender", + "ue_properties": { + "widget_ue_connectable": {}, + "input_ue_unconnectable": {}, + "version": "7.5.2" + } + }, + "widgets_values": [ + "clip_by_clip", + 864, + 480, + "match", + 5, + "euler", + "simple", + 1, + "22", + 0, + "{\"version\":1,\"clips\":[{\"id\":\"clip_1\",\"prompt\":\"subject_definitions:\\n is the main reference for the exact visual identity, clothing, proportions, and overall appearance of , and it also establishes the environment and scene context.\\n\\nsummary:\\nCreate the first continuation beat from the reference image. begins in the same environment and moves naturally through the space while preserving identity, wardrobe, lighting direction, and scene continuity.\\n\\ndetailed_description:\\n[Shot 1] Begin from the identity and environment established by . Preserve the same subject, the same clothing, the same face, and the same scene context. Use natural motion, grounded camera movement, and realistic continuity. End with the action still slightly unresolved so the next clip can extend it cleanly.\\n\\noverall_soundscape:\\nPreserve the same environmental ambience and synchronized movement sounds. No sudden audio reset at the clip boundary.\\n\\nnon_diegetic_music:\\nNone unless already established by the source material.\",\"seed\":4001,\"seed_mode\":\"fixed\",\"duration\":10,\"validated\":false},{\"id\":\"clip_2\",\"prompt\":\"subject_definitions:\\n remains the main reference for the exact visual identity, clothing, proportions, and environment of .\\n\\nsummary:\\nContinue directly from the previous clip with no restart. Preserve identity and environment while extending the action into the next natural beat.\\n\\ndetailed_description:\\n[Shot 1] Continue seamlessly from the validated previous clip. Keep the same subject, wardrobe, lighting, environment, and camera logic. Extend the motion naturally through the same connected space, then settle into a readable ending composition without freezing the subject or breaking continuity.\\n\\noverall_soundscape:\\nMaintain continuous ambience and synchronized movement sounds across the join.\\n\\nnon_diegetic_music:\\nNone unless already established by the source material.\",\"seed\":4002,\"seed_mode\":\"fixed\",\"duration\":10,\"validated\":false}]}" + ], + "color": "#222", + "bgcolor": "#000" + } + ], + "links": [ + [ + 1, + 1, + 0, + 2, + 0, + "H3_MOTION_DISK_CACHE" + ], + [ + 3, + 4, + 0, + 1, + 1, + "CLIP" + ], + [ + 4, + 5, + 0, + 1, + 2, + "VAE" + ], + [ + 5, + 5, + 0, + 2, + 1, + "VAE" + ], + [ + 6, + 6, + 0, + 2, + 2, + "VAE" + ], + [ + 7, + 7, + 0, + 8, + 0, + "IMAGE" + ], + [ + 8, + 8, + 0, + 1, + 7, + "INT" + ], + [ + 9, + 8, + 1, + 1, + 8, + "INT" + ], + [ + 10, + 9, + 0, + 7, + 0, + "IMAGE" + ], + [ + 13, + 6, + 0, + 1, + 3, + "VAE" + ], + [ + 16, + 9, + 0, + 1, + 5, + "IMAGE" + ], + [ + 17, + 10, + 0, + 1, + 17, + "IMAGE" + ], + [ + 18, + 3, + 0, + 11, + 0, + "MODEL" + ], + [ + 19, + 11, + 0, + 1, + 0, + "MODEL" + ] + ], + "groups": [], + "config": {}, + "extra": { + "ue_links": [], + "ds": { + "scale": 0.674703363147552, + "offset": [ + 1443.4844652677814, + -4415.190039549854 + ] + }, + "links_added_by_ue": [] + }, + "version": 0.4 +} diff --git a/optimized/notes/minimax.md b/optimized/notes/minimax.md index b2329a3..f0b672a 100644 --- a/optimized/notes/minimax.md +++ b/optimized/notes/minimax.md @@ -11,6 +11,7 @@ - `models/minimax/minimax-h3-official-i2v/` - `models/minimax/minimax-h3-turbo-lora-community/` - `models/minimax/minimax-h3-int8-r2v-community/` +- `models/minimax/minimax-h3-extender-ref2va/` ## Strong current heuristics @@ -27,6 +28,7 @@ - Keep `optimized/text-to-video/minimax-h3-3070-turbo-master/` as the first MiniMax default. - Keep the INT8 reference-video workflow as the next donor for future low-VRAM optimization. +- Keep `optimized/image-to-video/minimax-h3-extender-3070-r2v-480p-clip-by-clip/` as the first `MiniMax H3 Extender` path to compare against the compact `Contex Loop` masters. ## Ref2VA prompt guidance