Nodes/Soda Storyboard/导入分镜 · Load Storyboard
ComfyUI Node

导入分镜 · Load Storyboard

The One Node That Actually Reads Your Storyboard Bundle

By cOkieeman·Created 3 days ago·Updated a day ago· 5
导入分镜 · Load Storyboard
    • moss_json
    • width
    • height
    • resolution_json
    • lora_name
    • lora_strength
    • negative
    • page_info
    • draft
    ◄filename上传或拖入 .storyboard.json►
    ◄dialogue_mode▾►
    ◄slant_mode▾►
    ◄include_triggerstrue►
    ◄width0►
    ◄height0►

    Every multi-panel comic project hits the same wall: the model can draw one good image, but a page is a layout, a cast, three lines of dialogue and a reading order, and none of that fits in a prompt box. SodaLoadStoryboard is the pack's answer - it reads a Soda Storyboard bundle (or a bare page file, or a raw MOSS layout), shows you the draft and the exact final prompt before you spend a single sampling step, and outputs the whole bundle of values your graph needs. If you install one node from this pack, install this one.

    What it's actually doing

    The file you drop in is a soda-storyboard-bundle-v1 JSON - project settings, a page with panels and text, and the characters cards. The node loads it through the core library, collects warnings (missing character cards, outfits that are easy to confuse, sizes that had to be inferred, more than one character LoRA), compiles the page into the final MOSS JSON prompt, and re-renders a fresh stick-figure draft. That last part matters: the draft is drawn from the file's current contents, not from whatever stale thumbnail was baked into the bundle when it was exported.

    The UI is where half the value is. Tabs for 分镜图 / 提示词 / 逐格 let you look at the layout, read the exact compiled JSON that will go to the sampler, and check each panel's description, characters and dialogue side by side. The big viewer zooms, pans, highlights the matching panel on hover, and takes Esc, 0, 1, arrows and +/-. Yellow warnings are listed above the draft - read them, they're usually about the thing that was going to ruin the page.

    Inputs you touch

    filename is a dropdown of what's been uploaded to input/soda-storyboard/ - drag a file onto the node's preview area or use the upload button. Drag it onto the existing node; onto blank canvas you'll just create a second import node, which is a confusing way to start.

    dialogue_mode decides who draws the text: 跟随页面 trusts the page's own setting, MOSS 画字 tells the model to draw it, 程序排字 leaves it for SodaLetterPage. slant_mode is cut or hint - whether slanted panels get cut geometry or just a hint in the prompt. include_triggers (on by default) injects the appearing characters' trigger words into each panel's description; turn it off and the auto-added triggers go away but the appearance descriptions stay, and anything you wrote by hand is untouched.

    width and height default to 0, meaning "infer from the file." Fill in positive values to override - that step is stepped at 16 and capped at 16384, and it exists because inference on normalized coordinates or empty items can guess the wrong aspect ratio.

    Outputs, and where each one goes

    Nine. moss_json is the big one: straight into the MOSS sampler's JSON text input, no extra quoting. width and height go to latent size integers. resolution_json goes to a resolution node that accepts {"version":1,"width":W,"height":H} - you'll usually right-click that widget and convert it to an input.

    page_info is the snapshot that the entire finishing half of the pack consumes: crop, character mask, paste-back, cut quads, lettering all take it. draft is an IMAGE of the sketch (long edge capped at 1024), fine for a PreviewImage. lora_name and lora_strength are suggestions - the pack's default templates don't wire them, which is a deliberate choice given that the tutorial page gets by with no LoRA at all. negative is the pack's standard negative string, ready for a negative text encoder.

    Install

    Two installs, and the second one is the one people miss: the nodes come from this repo, the brains come from the separately published soda-storyboard library.

    cd ComfyUI/custom_nodes
    git clone https://github.com/cOkieeman/ComfyUI-Soda-Storyboard
    cd ComfyUI-Soda-Storyboard && python -m pip install --upgrade soda-storyboard
    

    Windows portable, from ComfyUI_windows_portable:

    .\python_embeded\python.exe -m pip install -r .\ComfyUI\custom_nodes\ComfyUI-Soda-Storyboard\requirements.txt
    

    Or Manager → search Soda Storyboard (registry id comfyui-soda-storyboard), which installs the core library from PyPI as a wheel. Then the models: MOSS-Image SFT in models/diffusion_models, qwen3.5_9b_w4a8_gptq.safetensors as a moss_image text encoder, flux2-vae.safetensors in models/vae. Your ComfyUI also has to be recent enough for moss_image, EmptyFlux2LatentImage and SLG.

    Where people get burned

    Uploads are copies. What you drag in gets saved under input/soda-storyboard/, and editing the storyboard in the plugin afterwards does not update it. Re-export, re-upload. The node has an inline editor that makes a working copy under that import folder and refreshes the draft about a second and a half after you save, but the original bundle on disk stays untouched - use "另存为新分镜包" to download your changes.

    Canvas dimensions have to be multiples of 16. A 1000×1000 page is rejected on import, on purpose, because Flux2's latent decodes it as 992×992 and every piece of finishing geometry shifts.

    A bundle without character cards - usually a bare pages/<id>.json - imports, but the LoRA and appearance info are missing and the warnings will say so. And the old caption_auto_en cache format shows up as "旧格式,需要重新翻译": fix the translation in the plugin and re-export rather than trying to patch the JSON by hand.

    CategorySoda Storyboard

    Inputs (6)

    NameTypeDefaultDescription
    filenameCOMBO上传或拖入 .storyboard.json1 options: 上传或拖入 .storyboard.json
    dialogue_modeCOMBO3 options: 跟随页面, MOSS 画字, 程序排字
    slant_modeCOMBO2 options: cut, hint
    include_triggersBOOLEANtrue—
    widthINT00–16384—
    heightINT00–16384—

    Outputs (9)

    NameTypeDescription
    moss_jsonSTRING—
    widthINT—
    heightINT—
    resolution_jsonSTRING—
    lora_nameSTRING—
    lora_strengthFLOAT—
    negativeSTRING—
    page_infoSTRING—
    draftIMAGE—