Export Tools
Save your whole storyboard plan as one versioned JSON file
- saved_path
Every other node in this pack passes JSON around as strings on wires - ephemeral, invisible, gone when you close the graph. Export Tools is the one that makes your layout real: it bundles whatever parts of the pipeline you've connected into a single project JSON file and writes it to disk, versioned so you never clobber an earlier attempt. It's the hand-off node - the thing you use when the layout needs to leave ComfyUI and go somewhere else, whether that's another tool, another machine, or just next week's you.
What it bundles
Wire in any combination of the three JSON outputs the pipeline produces:
shot_json- the normalized shot record.layout_json- composition plus slot assignments.bbox_json- the actual subject boxes.
The node doesn't care which subset you connect. One stage connected, or all three - it packs up whatever's there into a StoryboardProject envelope with a schema version, a generator and created timestamp in the metadata, and an optional title string you can set on the node. The file it writes conforms to the pack's project.schema.json, so it's a stable interchange format, not a dump of whatever happened to be in the sockets. You must connect at least one of the three JSONs, though - export with nothing wired errors out with "provide at least one of shot_json, layout_json, bbox_json".
The filename behavior
The one required input is filename_prefix (default storyboard). Export writes to ComfyUI's output directory - the same folder your saved images go to. The first run produces storyboard.json; if that file already exists, it steps up to storyboard_001.json, then storyboard_002.json, and so on. That's the versioning, and it's why you can iterate a shot plan five times and keep all five on disk instead of silently overwriting. The output, saved_path, is a STRING with the full path it just wrote - wire it into a Text/Display node if you want it visible, or just check the output folder.
Why you'd reach for it
Layout work in a pipeline is all about hand-off. You've built a shot plan in ComfyUI - now the bbox JSON needs to feed your actual render workflow, or a review tool, or a teammate who isn't running ComfyUI at all. A single human-readable project file is the cleanest possible way to make that move. It's also just a good habit for iteration: because the pack is deterministic, you can diff two exported files and see exactly what changed between attempts.
Install and gotchas
Same install as the rest of the pack - cd ComfyUI/custom_nodes && git clone https://github.com/SurrealByDesign/ComfyUI-Storyboard-Layout, restart, or grab it from ComfyUI Manager. No extra dependencies, no models to download. This is an OUTPUT_NODE, so it always runs at the end of the graph (it won't get skipped by ComfyUI's caching), and it shows the standard "save output" indicator in the UI.
Things to watch:
- Files land in your output directory, not in
custom_nodes. People go looking for the file next to the node and it's not there. The output folder is where saved images go; that's where your project JSONs go too. - The
storyboard_001suffix means a previous file exists, not that something's wrong. Delete old exports if you wantstoryboard.jsonback. - Non-blank inputs that aren't valid JSON objects get a hard error, not a silent skip. The pack would rather tell you than write a broken file - which is the right call for an export node.
If you're using this pack at all, Export Tools is worth having at the end of the chain even when you think you don't need it yet. The file it writes is the artifact you'll be glad you have.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| filename_prefix | STRING | storyboard | — |
| shot_jsonopt | STRING | — | |
| layout_jsonopt | STRING | — | |
| bbox_jsonopt | STRING | — | |
| titleopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| saved_path | STRING | — |