MiniMax H3 LongForge — FL2VA & REF2VA
Support the project
If LongForge helps you, you can support future development through the Tip button on my Civitai profile or an optional donation:
USDT · TRON (TRC20)
THLU3yu8VpoPqP4bMLCp86FRhoCweJ2Qz4
Please send only USDT through the TRON (TRC20) network. Thank you!
One workflow for generating, continuing and exporting long videos with synchronized audio in ComfyUI.
LongForge carries saved video and audio latent context between scenes to help preserve motion, appearance, camera movement and ambience. Everything stays in one editable graph, with visible model loaders and manual controls.
Two generation modes
FL2VA — text-to-video, image-to-video, and optional first/last-frame guidance.
REF2VA — image, video and audio references: up to 9 images, 3 videos with paired soundtracks, and 3 standalone audio references.
Switch modes inside the same workflow and select the appropriate H3 model.
Main features
One scene editor: add prompts with + Scene.
Flexible generation: process one scene or all pending scenes.
Automatic continuation: each new scene starts from the saved film end.
Saved projects: reopen and continue your film later.
Scene regeneration: replace a selected scene and rebuild its continuation.
Manual settings: resolution, frames, overlap, steps, sampler, scheduler, CFG and seed.
Two optional LoRA loaders: use either, both, or leave them on
NONE.Visible attention patches: KJ Sage Attention and MiniMax H3 Memory Efficient Sage Attention.
Fragment previews and full-film export in the same graph.
Download & installation
Download both archives:
ComfyUI-H3-LongForge-NodePack.zip — required custom nodes and installation README.
H3_LongForge_FL2VA_REF2VA_PROMPT_GUIDE.zip — the workflow and one Russian/English prompt guide.
Extract the node-pack folder into
ComfyUI/custom_nodes/.Follow its README to install dependencies. The supplied graph requires native MiniMax H3 support, ComfyUI-KJNodes and compatible SageAttention.
Restart ComfyUI and open
H3_LongForge_FL2VA_REF2VA.json.Select your diffusion model, text encoder, video VAE and audio VAE. Choose optional LoRAs and enable any image loaders you need.
Models DiT: Comfy-Org / MiniMax-H3
Text Encoders: INT8 ConvRot or NVFP4
Other Custom Nodes: ComfyUI-KJNodes — required only for SAGE Attention and MiniMax H3 Memory Efficient Sage Attention.
Generate your film
Write one prompt per scene. A simple structure works well:
VIDEO: Describe the subject, action, setting and camera.
SOUND: Describe ambience, effects and dialogue.
MUSIC: No music.These headings are optional. The included guide explains both modes, continuation prompts and reference numbering.
In REF2VA, use native markers such as <Picture 1>, or optional names such as {hero}. References can apply to the first scene or every scene.
Choose GENERATE NEXT and press Run to generate. When ready, choose EXPORT FILM and press Run to assemble the saved scenes into one MP4 with audio.
Optional final post-processing
If additional upscaling or frame interpolation is required, process the completed video afterward with:
It supports RTX Video Super Resolution, DLSS Neural Rendering, and optional frame generation. It is a separate application and is not required for these ComfyUI workflows.
Download DLSS 5 Visual Enhancer
My Telegram channel:
Description
FAQ
Comments (7)
This works really really well. Nice work! Verry clean as well! As someone who uses spaghetti workflows this is refreshing.
Is there actually a way to use a audioref for these long videos tho? I keep getting the tensor mismatch error after the first scene/sampler...
Does this happen when you connect an audio reference? The first diagnostic step is to set audio_history_frames = 0.
@AIBOB1199 Forgot to mention that I fixed this. Just turned off preserve_audio and that was it. Amazing workflow once again.
Another question I have, does each scene get saved in the outputs somewhere as an mp4 or is it only when you export the full thing? And if its not saved as mp4s, is there a way to just export them somehow as mp4s?
Ty again!
@123sirako123521 The original plan was to export the finished film as a whole, but you can also export each scene individually by selecting "One scene" and then "Export," which will result in separate MP4 files for each scene.
I tried your workflow, I had two scenes, enabled "Scenes per run - All Pending" and then after it successfully ran and generated the first one, I get the following error when it tries to generated the next scene:
2026-09-10T13:38:59.047035 - [1m[31m[ERROR][0m !!! Exception during processing !!! The project changed during generation. Current history was preserved; run again from its new head. 2026-09-10T13:38:59.061264 - [1m[31m[ERROR][0m Traceback (most recent call last): File "C:\ComfyUI\ComfyUI_windows_portable\ComfyUI\execution.py", line 545, in execute output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI_windows_portable\ComfyUI\execution.py", line 344, in get_output_data return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI_windows_portable\ComfyUI\execution.py", line 318, in _async_map_node_over_list await process_inputs(input_dict, i) File "C:\ComfyUI\ComfyUI_windows_portable\ComfyUI\execution.py", line 306, in process_inputs result = f(**inputs) ^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI_windows_portable\ComfyUI\comfy_api\internal\__init__.py", line 149, in wrapped_func return method(locked_class, **inputs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI_windows_portable\ComfyUI\comfy_api\latest\_io.py", line 1990, in EXECUTE_NORMALIZED to_return = cls.execute(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-H3-LongForge-NodePack\nodes.py", line 170, in execute result = engine.run(job, video_settings, sampling, model, clip, video_vae, audio_vae, media, preview_new_scene, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-H3-LongForge-NodePack\engine.py", line 99, in run head = project.commit(name, head, result, item['name'], index+1, job['story'], record, job['story_hash']) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-H3-LongForge-NodePack\project.py", line 95, in commit raise RuntimeError('The project changed during generation. Current history was preserved; run again from its new head.') RuntimeError: The project changed during generation. Current history was preserved; run again from its new head.
Actually I fixed it by editing the h3_avbank_probe.py file. It seemed to ignore the audio attached to minimax_keyframes .
I changed the following block:
aud = [r["audio_latent"] for r in refs
if r.get("audio_latent") is not None]
into:
aud = (
[k["audio_latent"] for k in kf
if k.get("audio_latent") is not None]
+
[r["audio_latent"] for r in refs
if r.get("audio_latent") is not None]
)
@philsantay197 I'm glad you managed to solve the problem; I haven't encountered that myself.
