Nodes/SDXL Auto Prompter/APNext H3 Manual Scenes (script → lists)
ComfyUI Node

APNext H3 Manual Scenes (script → lists)

Hand-write every H3 scene, get render-ready lists

By dagthomas·Created 3 years ago·Updated about 23 hours ago· 289
APNext H3 Manual Scenes (script → lists)
    • scenes
    • durations
    • lengths
    • scenes_text
    • scene_count
    • total_seconds
    script
    default_duration12.0
    durations

    What it is

    Every multi-scene writer in this pack - Crossover, Scenes, Music Video, Short Film - spits out matching scenes / durations / lengths lists that the render side consumes. H3 Manual Scenes is the version where you author the scenes instead of an LLM. Paste the finished MiniMax H3 prompts yourself, and out come the same three lists, ready to plug into MiniMax H3 Reference to Video exactly like a writer's output would be. No model is called. No API key, no Claude Code, no GPU cost, no waiting - it's pure parsing and frame math.

    Why would you want that? Because sometimes you don't want a model anywhere near your story. You edited a writer's output and want to re-render your exact text. You're building a reusable render harness and don't want to burn LLM quota every time you queue it. Or you just want full control over every shot. This is the "manual override" for the whole family, and it shares the writers' contract so the render side of any of their workflows plugs in unchanged.

    How it works

    The script input accepts two formats, and the node splits them automatically:

    • === SCENE NN | duration: S.S === envelopes - the exact format the writers emit, so you can grab a scenes_text output, paste it, edit to taste, and render.
    • Bare prompts, split wherever a line starts with subject_definitions: - handy for hand-typed scenes that never went through a writer.

    Durations come from three places, in priority order: the envelope's own duration: header, then the optional durations box (comma- or space-separated values in scene order, e.g. 12, 10, 11.5), then default_duration (12 s). Everything gets clamped to H3's 5.2–15.1 s range and snapped to the model's frame grid (5 + 17k frames at 24 fps), so the clip you render is exactly as long as the frame math expects - no audio drift in a music video, no staggered cuts in a film. This is the same snapping the writers use internally, which is why the lists match theirs.

    Inputs and outputs

    Only two inputs matter, both on the node's face:

    • script - your finished H3 scene prompts, in order. Each scene becomes one rendered clip.
    • default_duration - fallback seconds per scene when nothing names one (5.2–15.1).

    Outputs mirror the writers: scenes (list) → the video node's prompt, durations (list, seconds), lengths (list, frame counts - wire this straight into the video node's length, no math node needed), plus scenes_text, scene_count and total_seconds for preview and sanity checks.

    Installing it

    It ships in dagthomas/comfyui_dagthomas. ComfyUI Manager → search comfyui_dagthomas → Install, then restart. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/dagthomas/comfyui_dagthomas
    cd comfyui_dagthomas
    pip install -r requirements.txt
    

    That's it - nothing extra to install for this node, and no model files. To actually render your scenes you still need ComfyUI's MiniMax H3 video node and weights (check the H3 license's territory restrictions before committing), but the node itself is self-contained.

    Common issues

    • Empty script raises an error - paste at least one scene.
    • "No scenes found" means your text matched neither format: use === SCENE NN === envelopes or make sure each scene starts at a subject_definitions: line.
    • Durations get clamped to 5.2–15.1 s. A 3-second scene isn't possible - H3 doesn't render that short, and the node will quietly snap it to the floor rather than error.
    • Durations beyond the durations list just fall back to default_duration, so a long run doesn't need every value spelled out.
    Categorycomfyui_dagthomas/H3

    Inputs (3)

    NameTypeDefaultDescription
    scriptSTRINGThe finished H3 scene prompts, in order. Either `=== SCENE NN | duration: S.S ===` envelopes (the writers' contract), or bare prompts split wherever a line starts with `subject_definitions:`. Each scene is one rendered clip.
    default_durationFLOAT12.05.2–15.1Seconds per scene when neither the envelope header nor the durations box names one. Snapped to H3's frame grid.
    durationsoptSTRINGOptional per-scene durations, comma or space separated in scene order (e.g. `12, 10, 11.5`). An envelope's own `duration:` wins over this list; scenes beyond the list fall back to default_duration.

    Outputs (6)

    NameTypeDescription
    scenesSTRING
    durationsFLOAT
    lengthsINT
    scenes_textSTRING
    scene_countINT
    total_secondsFLOAT