A browser front end for MiniMax H3 Long Shot, served by ComfyUI itself at http://127.0.0.1:8188/longshot (or whatever address your ComfyUI uses). You build a continuous long shot one approved Shot at a time:
The pack adds no nodes. It builds a workflow from your project and queues it on ComfyUI.
Features
| Pack | Needed for |
|---|---|
| H3 Prompt Compiler | Shot, Subject, Ref Prompt Builder r2v (always) |
| H3 Long Shot 1.3.0 or later | rendering; 1.3.0 adds the plan and progress hooks and the saved segments the Studio uses (always) |
| ComfyUI-KJNodes | resizing references, optional Sage attention (always) |
| ComfyUI-VideoHelperSuite | saving the video, loading audio (always) |
| ComfyUI-MiniMax-H3-Turbo | only when Turbo is on |
| ComfyUI-MelBandRoFormer | only for the voice-reference audio route |
| ComfyUI-NVIDIA-RTX-VSR-Pro | only for RTX upscaling (needs an RTX GPU) |
The default scheduler, beta57, comes from RES4LYF.
If you don't have it, pick another scheduler under Advanced.
cd ComfyUI/custom_nodes
git clone https://github.com/r34vtraining/H3_Longshot_Studio
git clone https://github.com/r34vtraining/H3_Prompt_Compiler
git clone https://github.com/r34vtraining/H3_Longshot
git clone https://github.com/kijai/ComfyUI-KJNodes
git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite
Skip any you already have. If you already have H3 Long Shot, update it to 1.3.0 or
later with git pull in its folder.
Optional packs:
git clone https://github.com/Larryvrh/ComfyUI-MiniMax-H3-Turbo # Turbo LoRA
git clone https://github.com/kijai/ComfyUI-MelBandRoFormer # voice-reference route
git clone https://github.com/whmc76/ComfyUI-NVIDIA-RTX-VSR-Pro # RTX upscaling
KJNodes, VideoHelperSuite and some optional packs have Python requirements. Install them with ComfyUI's Python from each pack's folder:
python -m pip install -r requirements.txt
For the Windows portable build, run this from the ComfyUI_windows_portable folder instead:
python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\ComfyUI-KJNodes\requirements.txt
The Studio itself has no extra dependencies.
Restart ComfyUI and open http://127.0.0.1:8188/longshot.
<hero>, <scene1>) and a short description.Updating: run git pull in the Studio's folder (and in H3 Long Shot's), then restart
ComfyUI and hard-refresh the page (Ctrl+Shift+R).
POST /longshot/build turns the project into a ComfyUI API prompt (graph_builder.py,
pure Python). Each render queues the chain of active Shots up to the target. Long Shot reuses every
unchanged earlier segment and samples only what changed./prompt, follows progress on /ws
(including Long Shot's per-segment mmh3.longshot events), and reads the plan and the video
from /history.ComfyUI/user/default/longshot-studio/projects/<slug>.json (see Projects).ComfyUI/output/longshot/<project>_00001.mp4. Video Combine uses NVENC
when your ffmpeg can actually run it (checked with a one-frame test encode), and the
software h264 encoder otherwise.H3\x) still match on Linux (H3/x), and the other way round.- (for example my-chase-scene for "My chase scene"). Names with no Latin letters or
digits get project-<hash>. Rename changes only the display name, so the
project's saved segments (output/longshot/<slug>/segments) and input folder
(input/longshot/<slug>) stay attached.input/longshot/<slug>) first, then the input folder itself.input/longshot/<slug>/ through POST /longshot/upload, from any device
that can reach ComfyUI. The size limit is ComfyUI's --max-upload-size.name (2).png.VHS_LoadAudioUpload validates the file by path, not
by its dropdown, so input/longshot/<slug>/song.mp3 loads. Images and audio in a
project subfolder are tested through ComfyUI's validator and executor
(test_references_and_audio_load_from_a_project_subfolder).The Studio sets Long Shot's cache_name to the project's slug, so each project keeps
its finished segments in output/longshot/<slug>/segments/.
After a crash or restart, reopen the project. The Studio runs a free dry run (Long Shot doesn't load the model for it), and the Plan shows reused (disk) for every finished Shot. Continue picks up exactly where you left off, and nothing that was already rendered is sampled again.
Settings shows Saved segments: N files · X MB, a switch to stop saving them, and Clear saved segments, which works from the ComfyUI machine only. A 5 s Shot takes about 4–5 MB at 0.6 MP.
T) spans the page, with the decision panel beside it.F) puts the video, every control and the decision panel
on screen, with the controls in a translucent bar along the bottom that sits in the
letterbox space first.M
toggles mute. Both are in every view, and the browser remembers the level and mute
state between sessions.Two controls use NVIDIA's RTX Video Super Resolution node (RTXVideoSuperResolution,
"scale by multiplier"), which runs between VAE Decode and Video Combine. Neither ever re-renders a Shot: the upscale runs after Long Shot,
so segments are reused and only the decode, upscale and save run again.
longshot/<project>_final_#####.mp4. After that, the panel shows the saved file
name and offers "again".Restart (top bar, left of the status light) restarts ComfyUI after asking first.
--windows-standalone-build so no extra browser tab opens.The Open input folder and Open output folder buttons open the folder on the machine running ComfyUI. They only work when you browse from that machine (a loopback connection with no proxy headers). From another device, such as over Tailscale, the buttons are hidden and Download video appears instead.
tests/ runs against a real ComfyUI source tree in CPU mode, with no model weights:
test_graph_builder.py: pure Python, no ComfyUI needed. Covers every toggle combination
(the 8 audio-route combinations, bypassed cast and Shots, LoRAs on and off with and without
Turbo, Sage missing, NVENC fallback, missing packs) and MiniMax's size table.test_comfy_integration.py:
validate_prompt accepts every variant, with the real packs loaded.test_studio_server.py: who counts as local, open-folder path safety, portable model names.test_projects.py:
check-inputs path refusal;test_comfy_integration.py also covers crash-resume. After a simulated restart,
nothing is re-sampled and the model never loads until a new Shot renders.set COMFYUI_ROOT=C:\path\to\ComfyUI
set MMH3_PROMPT_PACK=%COMFYUI_ROOT%\custom_nodes\H3_Prompt_Compiler
set MMH3_LONGSHOT_PACK=%COMFYUI_ROOT%\custom_nodes\H3_Longshot
set STUDIO_EXTRA_NODES=%COMFYUI_ROOT%\custom_nodes\ComfyUI-KJNodes;%COMFYUI_ROOT%\custom_nodes\ComfyUI-VideoHelperSuite;%COMFYUI_ROOT%\custom_nodes\ComfyUI-MiniMax-H3-Turbo;%COMFYUI_ROOT%\custom_nodes\ComfyUI-MelBandRoFormer;%COMFYUI_ROOT%\custom_nodes\ComfyUI-NVIDIA-RTX-VSR-Pro
python -m pytest tests -q
Use your ComfyUI's Python. For the portable build that's python_embeded\python.exe -m pip install pytest,
then python_embeded\python.exe -m pytest .... If a pack folder isn't set, the tests that
need it are skipped and say why.
A browser front end for MiniMax H3 Long Shot, served by ComfyUI itself at http://127.0.0.1:8188/longshot (or whatever address your ComfyUI uses). You build a continuous long shot one approved Shot at a time:
The pack adds no nodes. It builds a workflow from your project and queues it on ComfyUI.
Features
| Pack | Needed for |
|---|---|
| H3 Prompt Compiler | Shot, Subject, Ref Prompt Builder r2v (always) |
| H3 Long Shot 1.3.0 or later | rendering; 1.3.0 adds the plan and progress hooks and the saved segments the Studio uses (always) |
| ComfyUI-KJNodes | resizing references, optional Sage attention (always) |
| ComfyUI-VideoHelperSuite | saving the video, loading audio (always) |
| ComfyUI-MiniMax-H3-Turbo | only when Turbo is on |
| ComfyUI-MelBandRoFormer | only for the voice-reference audio route |
| ComfyUI-NVIDIA-RTX-VSR-Pro | only for RTX upscaling (needs an RTX GPU) |
The default scheduler, beta57, comes from RES4LYF.
If you don't have it, pick another scheduler under Advanced.
cd ComfyUI/custom_nodes
git clone https://github.com/r34vtraining/H3_Longshot_Studio
git clone https://github.com/r34vtraining/H3_Prompt_Compiler
git clone https://github.com/r34vtraining/H3_Longshot
git clone https://github.com/kijai/ComfyUI-KJNodes
git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite
Skip any you already have. If you already have H3 Long Shot, update it to 1.3.0 or
later with git pull in its folder.
Optional packs:
git clone https://github.com/Larryvrh/ComfyUI-MiniMax-H3-Turbo # Turbo LoRA
git clone https://github.com/kijai/ComfyUI-MelBandRoFormer # voice-reference route
git clone https://github.com/whmc76/ComfyUI-NVIDIA-RTX-VSR-Pro # RTX upscaling
KJNodes, VideoHelperSuite and some optional packs have Python requirements. Install them with ComfyUI's Python from each pack's folder:
python -m pip install -r requirements.txt
For the Windows portable build, run this from the ComfyUI_windows_portable folder instead:
python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\ComfyUI-KJNodes\requirements.txt
The Studio itself has no extra dependencies.
Restart ComfyUI and open http://127.0.0.1:8188/longshot.
<hero>, <scene1>) and a short description.Updating: run git pull in the Studio's folder (and in H3 Long Shot's), then restart
ComfyUI and hard-refresh the page (Ctrl+Shift+R).
POST /longshot/build turns the project into a ComfyUI API prompt (graph_builder.py,
pure Python). Each render queues the chain of active Shots up to the target. Long Shot reuses every
unchanged earlier segment and samples only what changed./prompt, follows progress on /ws
(including Long Shot's per-segment mmh3.longshot events), and reads the plan and the video
from /history.ComfyUI/user/default/longshot-studio/projects/<slug>.json (see Projects).ComfyUI/output/longshot/<project>_00001.mp4. Video Combine uses NVENC
when your ffmpeg can actually run it (checked with a one-frame test encode), and the
software h264 encoder otherwise.H3\x) still match on Linux (H3/x), and the other way round.- (for example my-chase-scene for "My chase scene"). Names with no Latin letters or
digits get project-<hash>. Rename changes only the display name, so the
project's saved segments (output/longshot/<slug>/segments) and input folder
(input/longshot/<slug>) stay attached.input/longshot/<slug>) first, then the input folder itself.input/longshot/<slug>/ through POST /longshot/upload, from any device
that can reach ComfyUI. The size limit is ComfyUI's --max-upload-size.name (2).png.VHS_LoadAudioUpload validates the file by path, not
by its dropdown, so input/longshot/<slug>/song.mp3 loads. Images and audio in a
project subfolder are tested through ComfyUI's validator and executor
(test_references_and_audio_load_from_a_project_subfolder).The Studio sets Long Shot's cache_name to the project's slug, so each project keeps
its finished segments in output/longshot/<slug>/segments/.
After a crash or restart, reopen the project. The Studio runs a free dry run (Long Shot doesn't load the model for it), and the Plan shows reused (disk) for every finished Shot. Continue picks up exactly where you left off, and nothing that was already rendered is sampled again.
Settings shows Saved segments: N files · X MB, a switch to stop saving them, and Clear saved segments, which works from the ComfyUI machine only. A 5 s Shot takes about 4–5 MB at 0.6 MP.
T) spans the page, with the decision panel beside it.F) puts the video, every control and the decision panel
on screen, with the controls in a translucent bar along the bottom that sits in the
letterbox space first.M
toggles mute. Both are in every view, and the browser remembers the level and mute
state between sessions.Two controls use NVIDIA's RTX Video Super Resolution node (RTXVideoSuperResolution,
"scale by multiplier"), which runs between VAE Decode and Video Combine. Neither ever re-renders a Shot: the upscale runs after Long Shot,
so segments are reused and only the decode, upscale and save run again.
longshot/<project>_final_#####.mp4. After that, the panel shows the saved file
name and offers "again".Restart (top bar, left of the status light) restarts ComfyUI after asking first.
--windows-standalone-build so no extra browser tab opens.The Open input folder and Open output folder buttons open the folder on the machine running ComfyUI. They only work when you browse from that machine (a loopback connection with no proxy headers). From another device, such as over Tailscale, the buttons are hidden and Download video appears instead.
tests/ runs against a real ComfyUI source tree in CPU mode, with no model weights:
test_graph_builder.py: pure Python, no ComfyUI needed. Covers every toggle combination
(the 8 audio-route combinations, bypassed cast and Shots, LoRAs on and off with and without
Turbo, Sage missing, NVENC fallback, missing packs) and MiniMax's size table.test_comfy_integration.py:
validate_prompt accepts every variant, with the real packs loaded.test_studio_server.py: who counts as local, open-folder path safety, portable model names.test_projects.py:
check-inputs path refusal;test_comfy_integration.py also covers crash-resume. After a simulated restart,
nothing is re-sampled and the model never loads until a new Shot renders.set COMFYUI_ROOT=C:\path\to\ComfyUI
set MMH3_PROMPT_PACK=%COMFYUI_ROOT%\custom_nodes\H3_Prompt_Compiler
set MMH3_LONGSHOT_PACK=%COMFYUI_ROOT%\custom_nodes\H3_Longshot
set STUDIO_EXTRA_NODES=%COMFYUI_ROOT%\custom_nodes\ComfyUI-KJNodes;%COMFYUI_ROOT%\custom_nodes\ComfyUI-VideoHelperSuite;%COMFYUI_ROOT%\custom_nodes\ComfyUI-MiniMax-H3-Turbo;%COMFYUI_ROOT%\custom_nodes\ComfyUI-MelBandRoFormer;%COMFYUI_ROOT%\custom_nodes\ComfyUI-NVIDIA-RTX-VSR-Pro
python -m pytest tests -q
Use your ComfyUI's Python. For the portable build that's python_embeded\python.exe -m pip install pytest,
then python_embeded\python.exe -m pytest .... If a pack folder isn't set, the tests that
need it are skipped and say why.