ComfyUI Node

SB JSON Parser

Your storyboard JSON, exploded into per-cut prompt lists

By creativeself-kim·Created 10 months ago·Updated 6 months ago· 1
SB JSON Parser
    • time_of_day
    • weather
    • mood
    • location
    • c_description
    • fs_description
    • camera_shot
    • camera_angle
    • composition
    • camera_movement
    • lens_type
    • lighting_style
    • lighting_direction
    • focus_subject
    • character_prompt
    • count
    JSON

    If you work from structured storyboards - JSON files where each scene holds its cuts, camera choices, lighting, and characters - then most of ComfyUI is a black hole: nothing reads your carefully-organized metadata. SBJsonParser is the front door. It reads a storyboard JSON out of your input/ folder and explodes it into fifteen parallel STRING lists - one per field, aligned by cut index - plus a count. Feed those lists into prompt assembly and you can turn a structured storyboard into a batch of per-cut generations without re-typing a single line.

    How it works

    The JSON dropdown scans a folder the pack registers at ComfyUI/input/prompt/ (so that's where your .json files go). On parse, it walks the file's scene structure, expanding each scene's cuts into a flat sequence. Scene-level fields - timeOfDay, weather, mood, location - are broadcast to every cut in that scene; cut-level fields like cameraShot, cDescription, lensType, lightingStyle map one-to-one. Two outputs are derived rather than raw: focus_subject (from the cut) and character_prompt, which is built from the file's character section with the focus subject listed first. All the STRING outputs are lists, and they're aligned by index - list position N of every output describes the same cut.

    It's also an output node: it shows a human-readable preview of scenes and cuts in the UI, which makes it a handy little sanity checker on its own.

    The inputs and outputs

    One input: JSON, the file selector. Outputs: time_of_day, weather, mood, location, c_description, fs_description, camera_shot, camera_angle, composition, camera_movement, lens_type, lighting_style, lighting_direction, focus_subject, character_prompt - all STRING lists - plus count (INT).

    Note the expected shape differs from what the README's example shows. The code wants a scene object whose entries each contain a cuts object, plus a top-level character object:

    {
      "scene": { "1": { "timeOfDay": "morning", "cuts": { "1": { "cDescription": "...", "cameraShot": "close-up" } } } },
      "character": { "hero": { "appearance": "..." } }
    }
    

    If your JSON follows the README's older flat format, you'll get zero cuts and a "No cuts found" preview.

    Install

    Ships in the IXIWORKS pack - ComfyUI Manager → search ComfyUI-VideoDescription, restart, or clone into custom_nodes/. No extra dependencies. It's the highest-leverage node in the StoryBoard category: everything else - prompt building, string merging, filtering - sits downstream of this one, and it turns a file format nobody in ComfyUI could read into usable data.

    CategoryIXIWORKS/StoryBoard

    Inputs (1)

    NameTypeDefaultDescription
    JSONCOMBO1 options: (no files)

    Outputs (16)

    NameTypeDescription
    time_of_daySTRING
    weatherSTRING
    moodSTRING
    locationSTRING
    c_descriptionSTRING
    fs_descriptionSTRING
    camera_shotSTRING
    camera_angleSTRING
    compositionSTRING
    camera_movementSTRING
    lens_typeSTRING
    lighting_styleSTRING
    lighting_directionSTRING
    focus_subjectSTRING
    character_promptSTRING
    countINT