Nodes/comfyui_AcademiaSD/Academia SD Moviola In
ComfyUI Node

Academia SD Moviola In

The last frame of take five is the first frame of take six

By AcademiaSD·Created about a year ago·Updated about 24 hours ago· 86
Academia SD Moviola In
  • base_image
  • image
  • next_index
  • source
  • project_path
◄project_pathmoviola/toma►
◄image_outtrue►

Video models give you a handful of seconds per clip. The way everyone gets past that is the same trick it's always been: generate a short clip, take its last frame, feed that in as the first frame of the next one, repeat. It works, it's how people were making 30-second AI anime back on Wan 2.1, and it degrades a little at every seam. Moviola is AcademiaSD's attempt to turn that manual round trip into a slot on disk.

The three nodes, and why it isn't one node

Moviola is a trio, and the split isn't decorative. Moviola In (this one) runs upstream: it looks in the take folder, serves the highest-numbered frame it finds - or a base_image if the folder is empty - and tells you which take index you're on. Moviola Guide runs downstream, anchoring that frame at frame 0 of the new clip through the conditioning. Moviola Out sits at the end and writes the next pair of files.

You can't merge In and Out because the frame you need exists before generation and the frame you save exists after it. One node doing both is a cycle, and ComfyUI rejects cycles rather than getting clever about them.

What Moviola In gives you

project_path is the whole state. Default moviola/toma means: under ComfyUI's output folder, a subfolder moviola, with files named toma_00001_.png. In scans that folder, matches the pattern, and serves the frame with the highest number - sorted as an integer, not as a string, which matters the moment your loop passes nine takes.

Then it reports what's going on:

  • image - the frame that came back. That's the previous take's final frame, and plugging it into the H3 node's first_frame input is the actual chaining. (The pack uses it for references too; a reference teaches the model what the subject looks like, a first frame is what carries the shot forward.)
  • next_index - the number of takes already on disk, plus one. It's one-based on purpose, because it feeds straight into the index input of the pack's Multi-Prompt node, so loop 3 automatically picks your third prompt instead of making you re-wire anything.
  • source - either the filename it served (e.g. toma_00002_.png) or the string base on the first pass.
  • project_path - a passthrough, so you type the take name once and hand it to Guide and Out.

With base_image left unwired and an empty folder, In raises an error rather than serving nothing. That's the good kind of failure: it's telling you the loop can't start without a seed frame.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/AcademiaSD/comfyui_AcademiaSD
# restart ComfyUI, then right-click → Add Node → Academia SD/Moviola

No extra dependencies - torch, numpy, Pillow and folder_paths are already there in any ComfyUI install. Fair warning on documentation: the pack README covers the downloader, prompt nodes, LoRA loader and the rest, but Moviola isn't in it yet - these three nodes landed in the newest commit, so the source is the documentation. There are no example workflows wired with them either, and no Reddit footprint to read. You're early.

Where people get burned

The folder is the loop counter. Don't rename, renumber or hand-organise files mid-loop. In decides which take you're on from the highest number it can see, and Out pairs each PNG with a .safetensors of the same name. Break the naming and the loop either replays an old frame or skips a beat.

Paths always resolve under output/. project_path is stripped of leading and trailing slashes and joined onto ComfyUI's output directory - so /home/me/takes doesn't mean what it looks like; it lands as output/home/me/takes. A path containing .. raises instead of escaping, deliberately. If your takes need to live on another drive, move ComfyUI's output path rather than typing an absolute one here.

It re-runs every queue, and it should. These nodes return the always-dirty float("NaN") from IS_CHANGED because their inputs don't change but the disk does. That's the correct trade for a loop - don't try to make it cacheable.

H3 only, and H3 has a licence. Moviola is built around MiniMax H3's keyframe and latent conventions, so it's not a Wan or LTX helper. Worth knowing before you invest a weekend: H3's community licence excludes the US, EU, UK and South Korea from its licensed territory - the hosted Hailuo API is fine globally, the local weights are the problem. The model itself is a 33B omni-modal beast with native audio, so expect slow. Check where you stand before the paperwork ambushes you.

CategoryAcademia SD/Moviola

Inputs (3)

NameTypeDefaultDescription
project_pathSTRINGmoviola/toma—
image_outBOOLEANtrue—
base_imageoptIMAGE—

Outputs (4)

NameTypeDescription
imageIMAGE—
next_indexINT—
sourceSTRING—
project_pathSTRING—