Nodes/ComfyTV/Storyboard Editor
ComfyUI Node

Storyboard Editor

A full storyboard workbench — layers, onion skin, animatic export — inside one node

By jtydhr88·Created 3 months ago·Updated about 15 hours ago· 725
Storyboard Editor
  • storyboard
  • images
  • image
  • images
  • video
project_id
parent_output_id0
board_state{}
width1280
height720
captured_image
captured_images
animatic_video

If you've ever storyboarded a video idea, you know it's a drawing app problem, not a node problem - you sketch boards, arrange them in time, and preview the sequence as an animatic. Storyboard Editor is the ComfyTV stage that puts the whole drawing app inside a node: per-board layers, onion skin, timeline playback, and animatic export, with the timeline right there on the canvas.

It's a ComfyTV Input stage, which in this pack means it's a content source: instead of producing pixels from upstream data, it's where the visual material gets made. Its outputs then feed downstream stages - the storyboard's boards and animatic become the input to your shot pipeline.

The inputs (mostly internal - don't sweat them)

The visible knobs are the two optional inputs:

  • storyboard (COMFYTV_STORYBOARD) and images (COMFYTV_IMAGES) - ways to feed existing boards or image sets into the editor as a starting point.

Everything else is internal state the frontend manages: board_state is the storyboard document itself (boards, timing, metadata, per-board layers), width/height set the artboard size in pixels (1280×720 by default), and captured_image / captured_images / animatic_video are the /view URLs of the composites and the last exported animatic. All the tooltips say "Internal - populated by the projectStore on the frontend," and that's the truth: you interact with the editor, and these fields carry the result.

The outputs

  • image - the cover board's composite.
  • images - a batch, one composite per board. This is what feeds a shot-by-shot pipeline: each board becomes a reference frame for generating per-shot clips.
  • video - the last exported animatic.

How it works

The editor itself is browser-side, built on the pack's own layer-editor engine (the Pentrado project - the same engine also powers the 2D layer editor, and it's available standalone at pentrado.com). Per board you get real layers: raster, text with actual font parsing, vector shapes, parametric fills, masks, non-destructive transforms, undo, even PSD import/export. On the storyboard level it adds onion skin for seeing the previous board through, timeline playback, and export to animatic video (plus GIF/PDF/ZIP, and Fountain script import for screenplay-driven boards). The backend's job is modest: persist the captured composites so they become downstream snapshots.

Install

ComfyTV ships ~190 stages in one pack; installing the pack gives you this node.

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Restart ComfyUI fully (a browser refresh is not enough) and find it under ComfyTV → Input. ComfyUI Manager also finds it by searching "ComfyTV". No model downloads, no extra Python dependencies. On ComfyUI Desktop or macOS, clone into the running instance's absolute path from the startup log rather than trusting the relative cd.

Troubleshooting

  • The editor doesn't render. This is a heavily frontend-driven node - if the canvas looks broken, the pack's frontend didn't load. Fully restart the ComfyUI backend (quit and relaunch the app/server), not just the page.
  • No image/video outputs. Nothing happens until you actually draw and capture; the outputs are populated by the editor's export actions, so an empty board yields empty outputs.
  • Boards look off-aspect. Set the artboard width/height before drawing - the defaults are 1280×720.

It's the most ambitious node in this batch and the one with the steepest "learn the editor" curve. But for planning a multi-shot video, it replaces a whole external drawing-and-animatic pipeline.

CategoryComfyTV/Input

Inputs (10)

NameTypeDefaultDescription
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
board_stateSTRING{}Internal — storyboard document JSON (boards/timing/metadata/per-board layers).
widthINT128064–4096Internal — board artboard width in pixels.
heightINT72064–4096Internal — board artboard height in pixels.
captured_imageSTRINGInternal — /view URL of the cover board composite.
captured_imagesSTRINGInternal — JSON images batch, one composite per board.
animatic_videoSTRINGInternal — /view URL of the last exported animatic video.
storyboardoptCOMFYTV_STORYBOARD
imagesoptCOMFYTV_IMAGES

Outputs (3)

NameTypeDescription
imageCOMFYTV_IMAGE
imagesCOMFYTV_IMAGES
videoCOMFYTV_VIDEO