Nodes/WWAA-CustomNodes/🪠️ WWAA JSON Prompt Builder
ComfyUI Node

🪠️ WWAA JSON Prompt Builder

Build structured JSON prompts from dropdowns, not typing

By hgabha·Created 2 years ago·Updated 6 months ago· 38
🪠️ WWAA JSON Prompt Builder
    • json_prompt
    scene_descriptionA retro indoor photo shoot with pastel balloons.
    subject_categoryhuman
    enable_subject_detailstrue
    gender_presentationN/A
    age_bracketN/A
    hair_lengthN/A
    hair_style
    hair_color
    facial_expression
    makeup_details
    face_accessories
    body_pose
    clothing
    body_features
    subject_description
    backgroundplain white wall with colorful balloons
    floorwhite or light-colored, scattered balloons
    lightingdirect_flash
    lighting_customhigh contrast, vintage tone
    moodplayful
    mood_customretro, slightly chaotic energy
    photography_styledisposable_camera
    photography_custom90s disposable camera look, slightly grainy
    color_palettewarm whites, soft pinks, reds, and blues
    aspect_ratio3:4
    aspect_ratio_custom
    render_intentphoto
    camera_anglehigh_angle
    camera_angle_customsubject looking up
    depth_of_fieldshallow
    output_lightingharsh frontal flash
    include_empty_fieldsfalse
    indent_jsontrue
    custom_fields

    Prompt syntax has moved on. Modern LLM-encoded models like Qwen-class and Flux.2 read natural language, and the current advice for structured, repeatable generation is to keep your fields separate - which is exactly what JSON does. WWAA JSON Prompt Builder is a giant form that turns ~30 labelled fields and dropdowns into one clean JSON string, so you get consistent, schema-shaped prompts without hand-typing braces.

    The mental model is a photography brief: you fill in the scene, the subject, the environment, the lighting, and the output parameters, and the node assembles it all. Its defaults are suspiciously specific - a retro balloon photo shoot with direct flash and a disposable camera look - which tells you this was built for a particular character-photo workflow at WeirdWonderfulAI.Art. Ignore those defaults and it becomes a general structured-prompt generator.

    The inputs that matter

    There are a lot, but you'll realistically touch these:

    • scene_description - the free-text scene, the one required field you type into.
    • subject_category - human/animal/object/abstract/landscape/architecture; it decides whether the subject-detail fields get used.
    • enable_subject_details - master switch for the whole subject block (hair, face, pose, clothing…). Flip it off for pure landscapes and the form stops shoving empty fields at you.
    • lighting, mood, photography_style, camera_angle - dropdowns with sensible presets, each paired with a *_custom text box for when a preset doesn't fit.
    • aspect_ratio and render_intent - output-level metadata, useful if you're piping this JSON to an LLM or a workflow that parses it.
    • custom_fields - free-form extra key-value pairs (newline separated) when the form genuinely lacks a field.
    • include_empty_fields and indent_json - the first drops empty strings from the output to keep it lean; the second controls pretty-printing. If you're feeding a captioner or LLM that's picky, indent_json: false gives you compact single-line JSON.

    Output is a single json_prompt string, which you'd usually wire into a prompt encoder or an LLM node that understands structured input.

    Install

    In ComfyUI Manager, search "WWAA Custom Nodes" and install. Manual:

    cd ComfyUI/custom_nodes
    git clone https://github.com/hgabha/WWAA-CustomNodes
    # restart ComfyUI
    

    The pack declares zero extra requirements - numpy, Pillow, torch only, all stock - so there's no dependency roulette. Look under the 🪠️ WWAA menu.

    Should you use it?

    Honest take: if you write prompts by hand and like it, this form will feel like bureaucracy. It earns its keep in two scenarios - when you want consistent, repeatable structure across hundreds of generations (LoRA dataset captions, batch photography-style work), and when a downstream LLM or captioner genuinely consumes JSON and you want field separation you can rely on. For everyone else, it's a fun toy and a decent way to see how a professional studio structures a prompt. Just remember: the JSON is a prompt, not magic. A good JSON brief still needs good words inside it.

    Category🪠️ WWAA/String

    Inputs (34)

    NameTypeDefaultDescription
    scene_descriptionSTRINGA retro indoor photo shoot with pastel balloons.
    subject_categoryCOMBOhuman6 options: human, animal, object, abstract, landscape, architecture
    enable_subject_detailsBOOLEANtrue
    gender_presentationoptCOMBON/A5 options: male, female, non-binary, androgynous, N/A
    age_bracketoptCOMBON/A6 options: child, teen, young_adult, middle_aged, elderly, N/A
    hair_lengthoptCOMBON/A7 options: bald, very_short, short, medium, long, very_long, +1
    hair_styleoptSTRING
    hair_coloroptSTRING
    facial_expressionoptSTRING
    makeup_detailsoptSTRING
    face_accessoriesoptSTRING
    body_poseoptSTRING
    clothingoptSTRING
    body_featuresoptSTRING
    subject_descriptionoptSTRING
    backgroundoptSTRINGplain white wall with colorful balloons
    flooroptSTRINGwhite or light-colored, scattered balloons
    lightingoptCOMBOdirect_flash10 options: natural_soft, natural_harsh, studio_soft, studio_harsh, direct_flash, rim_light, +4
    lighting_customoptSTRINGhigh contrast, vintage tone
    moodoptCOMBOplayful10 options: joyful, serene, melancholic, energetic, mysterious, romantic, +4
    mood_customoptSTRINGretro, slightly chaotic energy
    photography_styleoptCOMBOdisposable_camera10 options: digital_modern, film_35mm, film_medium_format, disposable_camera, polaroid, vintage_90s, +4
    photography_customoptSTRING90s disposable camera look, slightly grainy
    color_paletteoptSTRINGwarm whites, soft pinks, reds, and blues
    aspect_ratiooptCOMBO3:48 options: 1:1, 3:4, 4:3, 16:9, 9:16, 2:3, +2
    aspect_ratio_customoptSTRING
    render_intentoptCOMBOphoto6 options: photo, illustration, 3d_render, painting, sketch, mixed_media
    camera_angleoptCOMBOhigh_angle8 options: eye_level, high_angle, low_angle, bird_eye, worm_eye, dutch_angle, +2
    camera_angle_customoptSTRINGsubject looking up
    depth_of_fieldoptCOMBOshallow4 options: shallow, medium, deep, bokeh
    output_lightingoptSTRINGharsh frontal flash
    include_empty_fieldsoptBOOLEANfalse
    indent_jsonoptBOOLEANtrue
    custom_fieldsoptSTRING

    Outputs (1)

    NameTypeDescription
    json_promptSTRING