From a7f118854829b75222ab410e9c252c5d8bcbfa1e Mon Sep 17 00:00:00 2001 From: Morpheus Date: Sun, 16 Aug 2026 18:09:01 +0000 Subject: [PATCH] Import new MiniMax and Z-Image workflows --- .../minimax-h3-seamless-chain-v2/README.md | 62 + .../workflow.json | 3752 +++++++++++++++++ .../README.md | 56 + .../workflow.png | Bin 0 -> 700798 bytes 4 files changed, 3870 insertions(+) create mode 100644 models/minimax/minimax-h3-seamless-chain-v2/README.md create mode 100644 models/minimax/minimax-h3-seamless-chain-v2/workflow.json create mode 100644 models/zimage/qujincheng-z-image-lora-facetailer/README.md create mode 100644 models/zimage/qujincheng-z-image-lora-facetailer/workflow.png diff --git a/models/minimax/minimax-h3-seamless-chain-v2/README.md b/models/minimax/minimax-h3-seamless-chain-v2/README.md new file mode 100644 index 0000000..1468c75 --- /dev/null +++ b/models/minimax/minimax-h3-seamless-chain-v2/README.md @@ -0,0 +1,62 @@ +# MiniMax H3 Seamless Chain v2 + +## Summary + +Same-day `MiniMax-H3` multishot workflow from `joeygambino`. This is the full +graph, not the CORE cut-down version: it adds the LLM prompt lane, remote text +encoder support, raw-latent continuity, and the speed/VRAM helper switches. + +## Model Family + +- `minimax` + +## Status + +- `imported-only` + +## Source + +- Workflow pack page: +- Workflow file: +- Original publisher: `joeygambino` +- Date imported: `2026-08-16` + +## Developer notes + +- The source README says the full pack adds Motion-Context, RES4LYF, sol-attn, + block cache, custom scripts, and GGUF support on top of the base H3 pack. +- The workflow is built around the `ComfyUI-H3-Multishot` node pack and the + same MiniMax-H3 weight family used by the CORE workflow. +- The prompt-writer lane expects a `qwen3:14b`-class local or remote + OpenAI-compatible endpoint if you keep it enabled. + +## Our notes + +- This is the more interesting same-day MiniMax import if you want the full + feature set and are willing to pay for it in complexity. +- On an `RTX 3070 8 GB`, this is a heavy workflow, but the memory and remote + encoder options are the kind of practical extras that make it worth keeping. +- If you want the simpler starting point, the CORE workflow is still the + cleaner local baseline. + +## Required custom nodes + +- `ComfyUI-H3-Multishot` +- `ComfyUI-H3-Motion-Context` for the context-pin lane +- `RES4LYF` +- `ComfyUI-sol-attn` +- `comfyui-minimax-h3-blockcache-T8` +- `ComfyUI-Custom-Scripts` +- `ComfyUI-GGUF` if you run GGUF weights + +## Required model files + +- MiniMax-H3 weights from `Comfy-Org/MiniMax-H3` +- matching MiniMax-H3 text encoder and audio/video VAEs from the same family +- optional `qwen3:14b`-class prompt-writer model or endpoint if the LLM lane + stays enabled + +## Notes + +- Load `workflow.json` directly in ComfyUI. +- Best kept as the full-feature reference for MiniMax H3 multishot work. diff --git a/models/minimax/minimax-h3-seamless-chain-v2/workflow.json b/models/minimax/minimax-h3-seamless-chain-v2/workflow.json new file mode 100644 index 0000000..472b2f1 --- /dev/null +++ b/models/minimax/minimax-h3-seamless-chain-v2/workflow.json @@ -0,0 +1,3752 @@ +{ + "id": "h3-seamless-chain-v1", + "revision": 0, + "last_node_id": 69, + "last_link_id": 95, + "nodes": [ + { + "id": 28, + "type": "SaveAudio", + "pos": [ + -18.759509512354928, + -544.7346051143835 + ], + "size": [ + 275.2406482742714, + 112 + ], + "flags": {}, + "order": 59, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 46 + } + ], + "outputs": [ + { + "name": "audio", + "type": "AUDIO", + "slot_index": 0, + "links": [] + } + ], + "title": "SAVE AUDIO (same name, .flac)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.30.0", + "Node name for S&R": "SaveAudio" + }, + "widgets_values": [ + "audio/H3CHAIN/master" + ] + }, + { + "id": 27, + "type": "SaveVideo", + "pos": [ + -290.81363344046576, + -380.16630402798296 + ], + "size": [ + 547.0835324424006, + 106 + ], + "flags": {}, + "order": 58, + "mode": 0, + "inputs": [ + { + "name": "video", + "type": "VIDEO", + "link": 32 + } + ], + "outputs": [ + { + "name": "video", + "type": "VIDEO", + "slot_index": 0, + "links": [] + } + ], + "title": "SAVE VIDEO", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.30.0", + "Node name for S&R": "SaveVideo" + }, + "widgets_values": [ + "video/H3CHAIN/master", + "auto", + "auto" + ] + }, + { + "id": 35, + "type": "LoadImage", + "pos": [ + -1719.5856894144158, + 1618.5371419139042 + ], + "size": [ + 282.798828125, + 314 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 56 + ] + }, + { + "name": "MASK", + "type": "MASK", + "slot_index": 1, + "links": [] + } + ], + "title": "BOUNDARY PLATE 2", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.30.0", + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "example.png", + "image" + ] + }, + { + "id": 38, + "type": "ImageBatch", + "pos": [ + -1089.809041647822, + 1772.7620089591164 + ], + "size": [ + 140, + 46 + ], + "flags": {}, + "order": 44, + "mode": 0, + "inputs": [ + { + "name": "image1", + "type": "IMAGE", + "link": 55 + }, + { + "name": "image2", + "type": "IMAGE", + "link": 56 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 57 + ] + } + ], + "title": "plates +2", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.30.0", + "Node name for S&R": "ImageBatch" + }, + "widgets_values": [] + }, + { + "id": 39, + "type": "ImageBatch", + "pos": [ + -1088.5070180584812, + 1879.97659614565 + ], + "size": [ + 140, + 46 + ], + "flags": {}, + "order": 47, + "mode": 0, + "inputs": [ + { + "name": "image1", + "type": "IMAGE", + "link": 57 + }, + { + "name": "image2", + "type": "IMAGE", + "link": 58 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 59 + ] + } + ], + "title": "plates +3", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.30.0", + "Node name for S&R": "ImageBatch" + }, + "widgets_values": [] + }, + { + "id": 37, + "type": "ImageBatch", + "pos": [ + -1089.809041647822, + 1666.1984335672532 + ], + "size": [ + 140, + 46 + ], + "flags": {}, + "order": 39, + "mode": 0, + "inputs": [ + { + "name": "image1", + "type": "IMAGE", + "link": 53 + }, + { + "name": "image2", + "type": "IMAGE", + "link": 54 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 55 + ] + } + ], + "title": "plates 0+1", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.30.0", + "Node name for S&R": "ImageBatch" + }, + "widgets_values": [] + }, + { + "id": 41, + "type": "LoadAudio", + "pos": [ + -719.6195655803556, + 1555.24063236239 + ], + "size": [ + 413.28671875, + 136 + ], + "flags": {}, + "order": 1, + "mode": 2, + "inputs": [], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "slot_index": 0, + "links": [ + 61 + ] + } + ], + "title": "AUDIO SPINE (optional)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.30.0", + "Node name for S&R": "LoadAudio" + }, + "widgets_values": [ + "", + null, + null + ] + }, + { + "id": 18, + "type": "VAELoader", + "pos": [ + -1162.0894513803705, + 20.205734485951496 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "slot_index": 0, + "links": [ + 37 + ] + } + ], + "title": "video VAE", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.30.0", + "Node name for S&R": "VAELoader" + }, + "widgets_values": [ + "minimax_h3_video_vae_fp16.safetensors" + ] + }, + { + "id": 30, + "type": "H3MultishotMemorySampler", + "pos": [ + -712.9886114768343, + -540.9185872134501 + ], + "size": [ + 400, + 1260 + ], + "flags": {}, + "order": 60, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 91 + }, + { + "name": "clip", + "type": "CLIP", + "link": 94 + }, + { + "name": "video_vae", + "type": "VAE", + "link": 37 + }, + { + "name": "audio_vae", + "type": "VAE", + "link": 38 + }, + { + "name": "start_image", + "shape": 7, + "type": "IMAGE", + "link": 39 + }, + { + "name": "keyframe_images", + "shape": 7, + "type": "IMAGE", + "link": 60 + }, + { + "name": "guide_audio", + "shape": 7, + "type": "AUDIO", + "link": 61 + }, + { + "name": "reference_images", + "shape": 7, + "type": "IMAGE", + "link": 75 + }, + { + "name": "voice_ref", + "shape": 7, + "type": "AUDIO", + "link": 40 + }, + { + "name": "sampler_override", + "shape": 7, + "type": "STRING", + "link": 49 + }, + { + "name": "scheduler_override", + "shape": 7, + "type": "STRING", + "link": 50 + }, + { + "name": "sigmas", + "shape": 7, + "type": "SIGMAS", + "link": null + }, + { + "name": "reference_video", + "shape": 7, + "type": "IMAGE", + "link": 88 + }, + { + "name": "reference_video_audio", + "shape": 7, + "type": "AUDIO", + "link": 89 + }, + { + "name": "script", + "type": "STRING", + "widget": { + "name": "script" + }, + "link": 71 + }, + { + "name": "shot_count", + "type": "INT", + "widget": { + "name": "shot_count" + }, + "link": 62 + }, + { + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": 42 + }, + { + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": 43 + }, + { + "name": "frames_per_shot", + "type": "INT", + "widget": { + "name": "frames_per_shot" + }, + "link": 44 + }, + { + "name": "steps", + "type": "INT", + "widget": { + "name": "steps" + }, + "link": 45 + } + ], + "outputs": [ + { + "name": "master_frames", + "type": "IMAGE", + "links": [ + 48 + ] + }, + { + "name": "master_audio", + "type": "AUDIO", + "links": [ + 46, + 47 + ] + }, + { + "name": "shots_rendered", + "type": "INT", + "links": null + }, + { + "name": "video_latents", + "type": "LATENT", + "links": null + }, + { + "name": "audio_latents", + "type": "LATENT", + "links": null + }, + { + "name": "head_frames", + "type": "INT", + "links": null + }, + { + "name": "master_path", + "type": "STRING", + "links": null + } + ], + "properties": { + "Node name for S&R": "H3MultishotMemorySampler", + "h3_widget_values": { + "script": "A static camera sits at the end of the table and frames both of them from the chest up in a two-shot; the framing never changes. Live-action, shallow depth of field, fine 35mm grain. A man in his fifties with close-cropped grey hair, deep lines around the eyes and a heavy salt-and-pepper moustache, wearing a faded blue mechanic's jacket over a white t-shirt sits on one side of a late-night roadside diner booth: cracked red vinyl seats, a scratched formica table with two chipped white coffee mugs and a steel napkin dispenser, a rain-streaked window behind them reflecting an empty parking lot, and one warm pendant lamp directly above the table as the only light, the rest of the diner falling away into darkness. Across from him sits a woman in her late twenties with dark curly hair tied back, round wire-frame glasses and chipped green nail polish, wearing an oversized cream cable-knit sweater. He leans forward on his forearms, turning his mug slowly on the table, and the man in the faded blue mechanic's jacket says, \"So let me get this straight. The whole street goes dark for six minutes - traffic lights, the gas station, everything - and your shop keeps its lights on.\" He settles back against the vinyl with both hands around his mug and waits, watching her.\n---\nA static camera sits at the end of the table and frames both of them from the chest up in a two-shot; the framing never changes. Live-action, shallow depth of field, fine 35mm grain. A man in his fifties with close-cropped grey hair, deep lines around the eyes and a heavy salt-and-pepper moustache, wearing a faded blue mechanic's jacket over a white t-shirt sits on one side of a late-night roadside diner booth: cracked red vinyl seats, a scratched formica table with two chipped white coffee mugs and a steel napkin dispenser, a rain-streaked window behind them reflecting an empty parking lot, and one warm pendant lamp directly above the table as the only light, the rest of the diner falling away into darkness. Across from him sits a woman in her late twenties with dark curly hair tied back, round wire-frame glasses and chipped green nail polish, wearing an oversized cream cable-knit sweater. Both of them sit exactly as they were, hands resting on the table, the mugs untouched. For the first couple of seconds neither speaks - one of them shifts their weight slightly and breathes - and only then the woman in the cream cable-knit sweater says, \"Not just on. Brighter. The bulbs over the workbench went so white I had to look away. And the meter outside was spinning backwards.\" She settles back with both hands flat on the table and waits, watching him.\n---\nA static camera sits at the end of the table and frames both of them from the chest up in a two-shot; the framing never changes. Live-action, shallow depth of field, fine 35mm grain. A man in his fifties with close-cropped grey hair, deep lines around the eyes and a heavy salt-and-pepper moustache, wearing a faded blue mechanic's jacket over a white t-shirt sits on one side of a late-night roadside diner booth: cracked red vinyl seats, a scratched formica table with two chipped white coffee mugs and a steel napkin dispenser, a rain-streaked window behind them reflecting an empty parking lot, and one warm pendant lamp directly above the table as the only light, the rest of the diner falling away into darkness. Across from him sits a woman in her late twenties with dark curly hair tied back, round wire-frame glasses and chipped green nail polish, wearing an oversized cream cable-knit sweater. Both of them sit exactly as they were, hands resting on the table, the mugs untouched. For the first couple of seconds neither speaks - one of them shifts their weight slightly and breathes - and only then the man in the faded blue mechanic's jacket says, \"Meters do not spin backwards, and buildings do not get brighter when the grid drops. Somebody crossed a line upstream, and you will get a confusing bill.\" He settles back against the vinyl with both hands around his mug and waits, watching her.\n---\nA static camera sits at the end of the table and frames both of them from the chest up in a two-shot; the framing never changes. Live-action, shallow depth of field, fine 35mm grain. A man in his fifties with close-cropped grey hair, deep lines around the eyes and a heavy salt-and-pepper moustache, wearing a faded blue mechanic's jacket over a white t-shirt sits on one side of a late-night roadside diner booth: cracked red vinyl seats, a scratched formica table with two chipped white coffee mugs and a steel napkin dispenser, a rain-streaked window behind them reflecting an empty parking lot, and one warm pendant lamp directly above the table as the only light, the rest of the diner falling away into darkness. Across from him sits a woman in her late twenties with dark curly hair tied back, round wire-frame glasses and chipped green nail polish, wearing an oversized cream cable-knit sweater. Both of them sit exactly as they were, hands resting on the table, the mugs untouched. For the first couple of seconds neither speaks - one of them shifts their weight slightly and breathes - and only then the woman in the cream cable-knit sweater says, \"Then come and look at it yourself. Tomorrow, early, before the utility crew pulls the panel apart. There is nothing upstream of that meter but road.\" She settles back with both hands flat on the table and waits, watching him.", + "shot_count": 0, + "width": 768, + "height": 1344, + "frames_per_shot": 243, + "seed": 721031366213963, + "control_after_generate": "randomize", + "steps": 20, + "seed_per_shot": true, + "memory_frames": 0, + "anchor_frames": 1, + "sampler_name": "euler", + "scheduler": "beta57", + "bank_pinned": 1, + "chain_gain_control": "flatten", + "continuity": "context_pin", + "bank_clip_frames": 22, + "color_level": "off", + "join_anchor_noise": 0, + "join_blend": true, + "handoff_release": 0, + "bank_ref_noise": 0, + "end_anchor": false, + "join_fx": "off", + "audio_lock": false, + "handoff_taper": 0, + "handoff_depth": "block", + "self_anchor_voice": true, + "reference_image_size": "match", + "preview_first_shot": true, + "output_scale": 1, + "save_every_shot": false, + "upscale_model_name": "(none)", + "master_normalize": "luma+contrast", + "pin_frames": "22", + "pin_noise": 0.05, + "pin_renorm": true, + "reference_subjects": "", + "low_ram_master": false + } + }, + "widgets_values": [ + "A static camera sits at the end of the table and frames both of them from the chest up in a two-shot; the framing never changes. Live-action, shallow depth of field, fine 35mm grain. A man in his fifties with close-cropped grey hair, deep lines around the eyes and a heavy salt-and-pepper moustache, wearing a faded blue mechanic's jacket over a white t-shirt sits on one side of a late-night roadside diner booth: cracked red vinyl seats, a scratched formica table with two chipped white coffee mugs and a steel napkin dispenser, a rain-streaked window behind them reflecting an empty parking lot, and one warm pendant lamp directly above the table as the only light, the rest of the diner falling away into darkness. Across from him sits a woman in her late twenties with dark curly hair tied back, round wire-frame glasses and chipped green nail polish, wearing an oversized cream cable-knit sweater. He leans forward on his forearms, turning his mug slowly on the table, and the man in the faded blue mechanic's jacket says, \"So let me get this straight. The whole street goes dark for six minutes - traffic lights, the gas station, everything - and your shop keeps its lights on.\" He settles back against the vinyl with both hands around his mug and waits, watching her.\n---\nA static camera sits at the end of the table and frames both of them from the chest up in a two-shot; the framing never changes. Live-action, shallow depth of field, fine 35mm grain. A man in his fifties with close-cropped grey hair, deep lines around the eyes and a heavy salt-and-pepper moustache, wearing a faded blue mechanic's jacket over a white t-shirt sits on one side of a late-night roadside diner booth: cracked red vinyl seats, a scratched formica table with two chipped white coffee mugs and a steel napkin dispenser, a rain-streaked window behind them reflecting an empty parking lot, and one warm pendant lamp directly above the table as the only light, the rest of the diner falling away into darkness. Across from him sits a woman in her late twenties with dark curly hair tied back, round wire-frame glasses and chipped green nail polish, wearing an oversized cream cable-knit sweater. Both of them sit exactly as they were, hands resting on the table, the mugs untouched. For the first couple of seconds neither speaks - one of them shifts their weight slightly and breathes - and only then the woman in the cream cable-knit sweater says, \"Not just on. Brighter. The bulbs over the workbench went so white I had to look away. And the meter outside was spinning backwards.\" She settles back with both hands flat on the table and waits, watching him.\n---\nA static camera sits at the end of the table and frames both of them from the chest up in a two-shot; the framing never changes. Live-action, shallow depth of field, fine 35mm grain. A man in his fifties with close-cropped grey hair, deep lines around the eyes and a heavy salt-and-pepper moustache, wearing a faded blue mechanic's jacket over a white t-shirt sits on one side of a late-night roadside diner booth: cracked red vinyl seats, a scratched formica table with two chipped white coffee mugs and a steel napkin dispenser, a rain-streaked window behind them reflecting an empty parking lot, and one warm pendant lamp directly above the table as the only light, the rest of the diner falling away into darkness. Across from him sits a woman in her late twenties with dark curly hair tied back, round wire-frame glasses and chipped green nail polish, wearing an oversized cream cable-knit sweater. Both of them sit exactly as they were, hands resting on the table, the mugs untouched. For the first couple of seconds neither speaks - one of them shifts their weight slightly and breathes - and only then the man in the faded blue mechanic's jacket says, \"Meters do not spin backwards, and buildings do not get brighter when the grid drops. Somebody crossed a line upstream, and you will get a confusing bill.\" He settles back against the vinyl with both hands around his mug and waits, watching her.\n---\nA static camera sits at the end of the table and frames both of them from the chest up in a two-shot; the framing never changes. Live-action, shallow depth of field, fine 35mm grain. A man in his fifties with close-cropped grey hair, deep lines around the eyes and a heavy salt-and-pepper moustache, wearing a faded blue mechanic's jacket over a white t-shirt sits on one side of a late-night roadside diner booth: cracked red vinyl seats, a scratched formica table with two chipped white coffee mugs and a steel napkin dispenser, a rain-streaked window behind them reflecting an empty parking lot, and one warm pendant lamp directly above the table as the only light, the rest of the diner falling away into darkness. Across from him sits a woman in her late twenties with dark curly hair tied back, round wire-frame glasses and chipped green nail polish, wearing an oversized cream cable-knit sweater. Both of them sit exactly as they were, hands resting on the table, the mugs untouched. For the first couple of seconds neither speaks - one of them shifts their weight slightly and breathes - and only then the woman in the cream cable-knit sweater says, \"Then come and look at it yourself. Tomorrow, early, before the utility crew pulls the panel apart. There is nothing upstream of that meter but road.\" She settles back with both hands flat on the table and waits, watching him.", + 0, + 768, + 1344, + 243, + 721031366213963, + "randomize", + 20, + true, + 0, + 1, + "euler", + "beta57", + 1, + "flatten", + "context_pin", + 22, + "off", + 0, + true, + 0, + 0, + false, + "off", + false, + 0, + "block", + true, + "match", + true, + 1, + false, + "(none)", + "luma+contrast", + "22", + 0.05, + true, + "", + false + ] + }, + { + "id": 17, + "type": "H3LoraStack", + "pos": [ + -1143.486312807028, + -252.27040450310173 + ], + "size": [ + 386.62422412583066, + 226 + ], + "flags": {}, + "order": 43, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 2 + } + ], + "outputs": [ + { + "name": "model", + "type": "MODEL", + "slot_index": 0, + "links": [ + 3, + 4 + ] + } + ], + "title": "LoRA stack (inert until a slot is set)", + "properties": { + "Node name for S&R": "H3LoraStack" + }, + "widgets_values": [ + "None", + 0, + "None", + 1, + "None", + 1, + "None", + 1 + ] + }, + { + "id": 16, + "type": "H3ClipLoaderAny", + "pos": [ + -1143.4863128070278, + -405.09634671059996 + ], + "size": [ + 385.933458933143, + 106 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "slot_index": 0, + "links": [ + 92 + ] + } + ], + "title": "text encoder", + "properties": { + "Node name for S&R": "H3ClipLoaderAny" + }, + "widgets_values": [ + "qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors", + "minimax", + "(auto)" + ] + }, + { + "id": 33, + "type": "LoadImage", + "pos": [ + -1722.2680078279002, + 1252.7361035246017 + ], + "size": [ + 282.798828125, + 314 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 53 + ] + }, + { + "name": "MASK", + "type": "MASK", + "slot_index": 1, + "links": [] + } + ], + "title": "BOUNDARY PLATE 0", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.30.0", + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "example.png", + "image" + ] + }, + { + "id": 14, + "type": "H3AnySwitch", + "pos": [ + -1362.3228245783803, + 1056.1629296808258 + ], + "size": [ + 159.7818359375, + 66 + ], + "flags": { + "collapsed": true + }, + "order": 55, + "mode": 0, + "inputs": [ + { + "name": "use_on", + "type": "BOOLEAN", + "link": 14 + }, + { + "name": "off_path", + "shape": 7, + "type": "*", + "link": 12 + }, + { + "name": "on_path", + "shape": 7, + "type": "*", + "link": 13 + } + ], + "outputs": [ + { + "name": "value", + "type": "*", + "slot_index": 0, + "links": [ + 90 + ] + } + ], + "title": "gate: block_cache", + "properties": { + "Node name for S&R": "H3AnySwitch" + }, + "widgets_values": [] + }, + { + "id": 10, + "type": "H3AnySwitch", + "pos": [ + -1715.15979269075, + 1057.1396536438865 + ], + "size": [ + 140, + 66 + ], + "flags": { + "collapsed": true + }, + "order": 49, + "mode": 0, + "inputs": [ + { + "name": "use_on", + "type": "BOOLEAN", + "link": 6 + }, + { + "name": "off_path", + "shape": 7, + "type": "*", + "link": 4 + }, + { + "name": "on_path", + "shape": 7, + "type": "*", + "link": 5 + } + ], + "outputs": [ + { + "name": "value", + "type": "*", + "slot_index": 0, + "links": [ + 7, + 8 + ] + } + ], + "title": "gate: sol_attn", + "properties": { + "Node name for S&R": "H3AnySwitch" + }, + "widgets_values": [] + }, + { + "id": 12, + "type": "H3AnySwitch", + "pos": [ + -1539.5714839176276, + 1057.818763618459 + ], + "size": [ + 141.905859375, + 66 + ], + "flags": { + "collapsed": true + }, + "order": 53, + "mode": 0, + "inputs": [ + { + "name": "use_on", + "type": "BOOLEAN", + "link": 10 + }, + { + "name": "off_path", + "shape": 7, + "type": "*", + "link": 8 + }, + { + "name": "on_path", + "shape": 7, + "type": "*", + "link": 9 + } + ], + "outputs": [ + { + "name": "value", + "type": "*", + "slot_index": 0, + "links": [ + 11, + 12 + ] + } + ], + "title": "gate: chunk_ffn", + "properties": { + "Node name for S&R": "H3AnySwitch" + }, + "widgets_values": [] + }, + { + "id": 6, + "type": "JoyEcho_LLMEnhance", + "pos": [ + -1729.7353549979036, + -540.6946733729105 + ], + "size": [ + 539.473041617184, + 406 + ], + "flags": {}, + "order": 48, + "mode": 0, + "inputs": [ + { + "name": "story_idea", + "type": "STRING", + "widget": { + "name": "story_idea" + }, + "link": 67 + }, + { + "name": "num_shots", + "shape": 7, + "type": "INT", + "widget": { + "name": "num_shots" + }, + "link": 63 + }, + { + "name": "num_frames", + "shape": 7, + "type": "INT", + "widget": { + "name": "num_frames" + }, + "link": 26 + } + ], + "outputs": [ + { + "name": "prompts_json", + "type": "STRING", + "slot_index": 0, + "links": [ + 27, + 71 + ] + } + ], + "title": "REWRITER (story -> chained shot prompts)", + "properties": { + "aux_id": "RealRebelAI/ComfyUI_JoyAI_Echo_GGUF_Nodes", + "Node name for S&R": "JoyEcho_LLMEnhance", + "ver": "0d9e32fcd2d255a16604368fcaa1875c380c7f3b", + "je_widget_values": { + "story_idea": "Two people talk across a booth in a late-night roadside diner about an impossible power outage: the whole street went dark for six minutes but her repair shop kept running, its lights got brighter, and the meter outside ran backwards. He is a sceptical man in his fifties in a faded blue mechanic's jacket; she is a woman in her late twenties in an oversized cream sweater and round wire-frame glasses. One warm pendant lamp above the table is the only light, rain on the window behind them, static camera at the end of the table holding both of them in a two-shot the whole time. Four shots, one continuous conversation, no camera cuts.", + "mode": "long_story (multi-shot)", + "api_key": "", + "system_prompt": "", + "base_url": "http://localhost:11434/v1", + "model_name": "qwen3:14b", + "num_shots": 4, + "temperature": 0.7, + "num_frames": 0, + "fps": 24, + "model_name_custom": "", + "join_style": "continuous take (chained, no cuts)", + "unload_model_after": true + } + }, + "widgets_values": [ + "Two people talk across a booth in a late-night roadside diner about an impossible power outage: the whole street went dark for six minutes but her repair shop kept running, its lights got brighter, and the meter outside ran backwards. He is a sceptical man in his fifties in a faded blue mechanic's jacket; she is a woman in her late twenties in an oversized cream sweater and round wire-frame glasses. One warm pendant lamp above the table is the only light, rain on the window behind them, static camera at the end of the table holding both of them in a two-shot the whole time. Four shots, one continuous conversation, no camera cuts.", + "long_story (multi-shot)", + "", + "", + "http://localhost:11434/v1", + "qwen3:14b", + 4, + 0.7, + 0, + 24, + "", + "continuous take (chained, no cuts)", + true + ] + }, + { + "id": 51, + "type": "ImageBatch", + "pos": [ + -2582.009842829537, + 1136.0292081407952 + ], + "size": [ + 140, + 46 + ], + "flags": { + "collapsed": true + }, + "order": 35, + "mode": 0, + "inputs": [ + { + "name": "image1", + "type": "IMAGE", + "link": 72 + }, + { + "name": "image2", + "type": "IMAGE", + "link": 73 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 82 + ] + } + ], + "title": "references 1+2", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.30.0", + "Node name for S&R": "ImageBatch" + }, + "widgets_values": [] + }, + { + "id": 49, + "type": "LoadImage", + "pos": [ + -2583.4862919122725, + 1261.2350651000709 + ], + "size": [ + 300.0083984375, + 314 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 72 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": [] + } + ], + "title": "REFERENCE 1 (ref2va identity)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.30.0", + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "example.png", + "image" + ] + }, + { + "id": 50, + "type": "LoadImage", + "pos": [ + -2583.5884958767797, + 1610.1483776240293 + ], + "size": [ + 302.8521484375, + 314 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 73 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": [] + } + ], + "title": "REFERENCE 2 (ref2va identity)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.30.0", + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "example.png", + "image" + ] + }, + { + "id": 57, + "type": "ImageBatch", + "pos": [ + -2204.315668416005, + 1132.1128904695718 + ], + "size": [ + 234.61484375, + 46 + ], + "flags": { + "collapsed": true + }, + "order": 63, + "mode": 0, + "inputs": [ + { + "name": "image1", + "type": "IMAGE", + "link": 77 + }, + { + "name": "image2", + "type": "IMAGE", + "link": 78 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": null, + "links": [ + 79 + ] + } + ], + "title": "auto refs 1+2", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "ImageBatch" + }, + "widgets_values": [] + }, + { + "id": 60, + "type": "PrimitiveBoolean", + "pos": [ + -2239.719668751282, + 1201.2431022131907 + ], + "size": [ + 472.335546875, + 58 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "BOOLEAN", + "type": "BOOLEAN", + "slot_index": null, + "links": [ + 83 + ] + } + ], + "title": "USE AUTO REFS (off = the two manual LoadImage slots)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "PrimitiveBoolean" + }, + "widgets_values": [ + false + ] + }, + { + "id": 58, + "type": "ImageBatch", + "pos": [ + -2202.246562478545, + 1166.043343639111 + ], + "size": [ + 234.61484375, + 46 + ], + "flags": { + "collapsed": true + }, + "order": 64, + "mode": 0, + "inputs": [ + { + "name": "image1", + "type": "IMAGE", + "link": 79 + }, + { + "name": "image2", + "type": "IMAGE", + "link": 80 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": null, + "links": [ + 81 + ] + } + ], + "title": "auto refs +3", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "ImageBatch" + }, + "widgets_values": [] + }, + { + "id": 56, + "type": "H3AutoRefs", + "pos": [ + -2247.312640975518, + 1299.0918739796418 + ], + "size": [ + 481.7271484375, + 354 + ], + "flags": {}, + "order": 62, + "mode": 0, + "inputs": [ + { + "name": "prompt_text", + "type": "STRING", + "link": 76 + } + ], + "outputs": [ + { + "name": "ref_1", + "type": "IMAGE", + "slot_index": null, + "links": [ + 77 + ] + }, + { + "name": "ref_2", + "type": "IMAGE", + "slot_index": null, + "links": [ + 78 + ] + }, + { + "name": "ref_3", + "type": "IMAGE", + "slot_index": null, + "links": [ + 80 + ] + }, + { + "name": "ref_4", + "type": "IMAGE", + "slot_index": null, + "links": null + }, + { + "name": "ref_5", + "type": "IMAGE", + "slot_index": null, + "links": null + }, + { + "name": "ref_6", + "type": "IMAGE", + "slot_index": null, + "links": null + }, + { + "name": "ref_7", + "type": "IMAGE", + "slot_index": null, + "links": null + }, + { + "name": "ref_8", + "type": "IMAGE", + "slot_index": null, + "links": null + }, + { + "name": "ref_9", + "type": "IMAGE", + "slot_index": null, + "links": null + }, + { + "name": "prompt_out", + "type": "STRING", + "slot_index": null, + "links": null + }, + { + "name": "report", + "type": "STRING", + "slot_index": null, + "links": null + } + ], + "title": "AUTO REFS - scans the script for character folders under refs_root", + "properties": { + "Node name for S&R": "H3AutoRefs" + }, + "widgets_values": [ + 3, + "", + "", + "", + "error" + ] + }, + { + "id": 15, + "type": "H3ModelLoaderAny", + "pos": [ + -1138.2782184496637, + -541.184899110452 + ], + "size": [ + 378.86105961417525, + 82 + ], + "flags": {}, + "order": 38, + "mode": 0, + "inputs": [ + { + "name": "activation_reserve_gb", + "shape": 7, + "type": "FLOAT", + "widget": { + "name": "activation_reserve_gb" + }, + "link": 1 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 2 + ] + } + ], + "title": "H3 model", + "properties": { + "Node name for S&R": "H3ModelLoaderAny" + }, + "widgets_values": [ + "MiniMax-H3-ref2va-curve-Q5_1.gguf", + 0 + ] + }, + { + "id": 61, + "type": "LoadVideo", + "pos": [ + -3009.7496777868246, + 1149.1346505920278 + ], + "size": [ + 326.4498046875, + 82 + ], + "flags": {}, + "order": 8, + "mode": 2, + "inputs": [], + "outputs": [ + { + "name": "VIDEO", + "type": "VIDEO", + "links": [ + 85 + ] + } + ], + "title": "LOAD VIDEO (your reference clip)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "LoadVideo" + }, + "widgets_values": [ + "", + "image" + ] + }, + { + "id": 62, + "type": "GetVideoComponents", + "pos": [ + -2998.9401148790407, + 1286.518721954194 + ], + "size": [ + 199.3619140625, + 86 + ], + "flags": {}, + "order": 36, + "mode": 2, + "inputs": [ + { + "name": "video", + "type": "VIDEO", + "link": 85 + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", + "links": [ + 86 + ] + }, + { + "name": "audio", + "type": "AUDIO", + "links": [ + 87 + ] + }, + { + "name": "fps", + "type": "FLOAT", + "links": [] + }, + { + "name": "bit_depth", + "type": "INT", + "links": [] + } + ], + "title": "split into frames + audio", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.32.0", + "Node name for S&R": "GetVideoComponents" + }, + "widgets_values": [] + }, + { + "id": 63, + "type": "H3ReferenceVideo", + "pos": [ + -3015.697402650093, + 1433.3478398754492 + ], + "size": [ + 390.4751953125, + 146 + ], + "flags": {}, + "order": 42, + "mode": 2, + "inputs": [ + { + "name": "frames", + "type": "IMAGE", + "link": 86 + }, + { + "name": "audio", + "shape": 7, + "type": "AUDIO", + "link": 87 + } + ], + "outputs": [ + { + "name": "ref_frames", + "type": "IMAGE", + "links": [ + 88 + ] + }, + { + "name": "ref_audio", + "type": "AUDIO", + "links": [ + 89 + ] + }, + { + "name": "info", + "type": "STRING", + "links": [] + } + ], + "title": "H3 REFERENCE VIDEO (trim - keep it short)", + "properties": { + "Node name for S&R": "H3ReferenceVideo" + }, + "widgets_values": [ + 0, + 3, + 24 + ] + }, + { + "id": 64, + "type": "Note", + "pos": [ + -3011.3748836783366, + 1632.678905130506 + ], + "size": [ + 387.359018006352, + 180.70520039327334 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "V2V REFERENCE", + "properties": { + "Node name for S&R": "Note" + }, + "widgets_values": [ + "VIDEO REFERENCE (optional - ships muted)\n\nHand it a video clip and your render copies that clip's look, room and framing (NOT its motion). Community tip: load a single IMAGE here and add \"Start Frame is