toobusy Whiteboard
A mood board that actually outputs keyframes
- image
- board_data
- keyframes
- keyframe_count
- artboards
- artboard_count
Planning a video or a multi-shot sequence in ComfyUI usually means juggling a second app: arrange your images somewhere, export a reference sheet, import it back, and pray the graph and the board don't drift apart. toobusy Storyboard Board (display name "toobusy Whiteboard") drags that board into the graph - and unlike a glorified notepad, it turns the layout into actual IMAGE tensors you can wire into generation.
The pitch is in the README's before/after table: it replaces "external board app + capture + import" with "right in the node." You place image cards and text on a board, mark keyframes with a hotkey, and the node hands you the marked frames as real image output. That's the part that separates it from a screenshot tool - the board is a keyframe hub, not a memo.
How it works
Everything lives in board_data, a JSON document of positioned items (image cards, text blocks) that the node's backend composites over a background color with Pillow. Because the layout is data, the same board renders identically every time you reopen the workflow. The interesting output plumbing is that the node distinguishes between "the whole board as a picture" (image) and "just the keyframe-marked cards" (keyframes), plus per-artboard outputs.
Inputs and outputs that matter
board_data- the serialized board state. The custom UI owns it.width/height- the board canvas, defaults 1280×720, 256–4096 in steps of 8. This is also the size each keyframe is normalized to.background- the canvas fill, default a light gray#f8f9fa.keyframe_fit- how each keyframe image is fitted to the canvas:crop(fill and center-crop, the default),pad(letterbox on the background color), orstretch(ignore aspect ratio). For keyframes,cropis usually what you want; for reference sheets you might preferpadso nothing gets cut.
Six outputs: image (the full board render), board_data (state back out, for chaining), keyframes (the marked frames as an IMAGE batch), keyframe_count, artboards (a list of IMAGEs), and artboard_count.
Installing it
Part of nicekriss/toobusy:
cd ComfyUI/custom_nodes
git clone https://github.com/nicekriss/toobusy.git toobusy
or search "toobusy" in ComfyUI Manager. Restart ComfyUI, hard-refresh the browser - this is a custom-UI node, so the frontend JS has to reload for the board to render. Dependencies are Pillow, numpy and torch; no optional requirement files involved.
Where people get burned
The standing pack caveat applies double here: the board embeds every image into board_data, so a rich storyboard produces a workflow JSON measured in megabytes. Fine on your own machine, obnoxious to share. And don't expect this to be a substitute for a real storyboard app for heavy pre-production - it's a fast in-graph planning surface with clean output plumbing, not an editing suite. If you want images out of the board and into your video generation chain without leaving ComfyUI, that's exactly the gap it fills.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| board_data | STRING | {"version": 1, "items": [{"type": "text", "x": 64, "y": 48, "w": 420, "h": 80, "text": "Storyboard / mood board", "fontSize": 36, "color": "#111111"}]} | — |
| width | INT | 1280256–4096 | — |
| height | INT | 720256–4096 | — |
| background | STRING | #f8f9fa | — |
| keyframe_fit | COMBO | crop | How keyframe images are fitted to width x height: crop = fill and center-crop, pad = letterbox on the background color, stretch = ignore aspect. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| board_data | STRING | — |
| keyframes | IMAGE | — |
| keyframe_count | INT | — |
| artboards | IMAGE | — |
| artboard_count | INT | — |