Nodes/ComfyUI Nox Prompter/Nox Prompt Builder
ComfyUI Node

Nox Prompt Builder

The formula-driven Wan 2.2 prompt assembler at the heart of the pack

By jamesk9526·Created about a year ago·Updated 28 days ago· 1
Nox Prompt Builder
    • prompt
    • negative_prompt
    • aesthetic_notes
    • dynamic_notes
    • preset_status
    ◄formulaAdvanced Formula►
    ◄subject_focusBattle-hardened warrior drenched in rain, wearing leather armor and fur►
    ◄scene_settingMuddy battlefield at night, lightning in the distance, flames flickering►
    ◄motion_arcCharges forward roaring, swings blade in a slow-motion crash zoom►
    ◄narrative_hookCamera locks onto her determined eyes as thunder cracks overhead►
    ◄model_emphasisCinematic aesthetic control, precise semantic adherence►
    ◄aesthetic_paletteDaylight rim lighting | Soft diffusion fill | Warm tone bounce | Balanced composition►
    ◄dynamic_paletteRunning motion arcs | Joyful expressions | Pan-right sweep | Crane follow►
    ◄style_paletteAnime cinematic tonality | Tilt-shift miniature effect►
    ◄keyword_styleauto►
    ◄quality_profileBalanced►
    ◄extra_descriptorsModel feature emphasis: complex & dynamic motion►
    ◄lighting_prompt►
    ◄lighting_summary►
    ◄lighting_technical_notes►
    ◄custom_keywords►
    ◄negative_prompt►
    ◄prompt_prefix►
    ◄prompt_suffix►
    ◄camera_prompt►
    ◄camera_summary►
    ◄camera_notes►
    ◄camera_directives►
    ◄prompt_filter_enabledtrue►
    ◄prompt_filter_profilebalanced►
    ◄preset_actionnone►
    ◄preset_name►

    This is the node the whole pack is built around. Nox Prompt Builder is described in the README as a "formula-driven Wan 2.2 builder," and that's the honest pitch: it takes a subject, a scene, and a motion arc, then assembles them into a structured prompt using one of four formulas, with curated vocabulary for lighting, camera, color, motion, and style - plus inline overrides and seeded randomization. If you've been typing the same "cinematic, highly detailed" preamble into every prompt, this is the node that turns prompt writing into filling in a form.

    How it works

    The four formula options in constants.py define the assembly order: Basic is Subject + Scene + Motion; Advanced adds aesthetic controls and stylization; Story Spotlight focuses subject, environmental beat, camera language, and emotional tone; Trailer Teaser opens on the hook. The builder resolves your dropdowns (light source, light quality, time of day, shot size, lens, color tone, motion type, emotion, visual style, special effect) against the shared vocabulary dictionaries, then formats the result according to keyword_style.

    keyword_style is the control that matters for model fit: auto emits labeled clauses, inline flows as natural prose, compact produces dense strings - which is the Wan-style format the pack is tuned for. There's also randomize_missing: leave dropdowns at "None" and it fills them from its curated vocabularies using random_seed, which is genuinely great for idea batches where you want a loose family of variations. palette_overrides and custom_keywords let you inject output from Nox Prompt Palette Mixer, and lighting_prompt / camera_prompt (plus their summary and notes siblings) are pass-throughs for Nox Prompt Lighting Master and Nox Prompt Camera Master - that's the pack's whole "centralized lighting/camera control" story.

    Inputs and outputs that matter

    The required four are formula, subject_focus, scene_setting, and motion_arc. After that, set keyword_style, pick your aesthetic dropdowns, and enable randomize_missing with a seed if you want batch variation. Outputs: prompt (the goods - straight to positive conditioning), negative_prompt, aesthetic_notes and dynamic_notes (human-readable summaries, useful for review), and preset_status. Standard preset_action/preset_name save/load applies.

    Installing it

    Pack install, once. ComfyUI Manager: search "Nox Prompter", install, restart. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/jamesk9526/NoxPrompter-ComfyUI-CustomNode
    

    Restart and the NoxPrompter category appears. No requirements.txt, no model downloads - pure stdlib.

    Where people get burned

    The Wan 2.2 framing cuts both ways. The pack's compact style and block structure are exactly what an LLM-encoded video model wants, but a few habits leak in from SDXL days that do nothing on Wan: the default model_emphasis ("cinematic aesthetic control, precise semantic adherence") is flavor text that an LLM encoder mostly ignores, and any (word:1.3)-style weights you add elsewhere get silently discarded. If you're feeding this into an SDXL-lineage checkpoint instead, the compact style reads worse - that family wants tag-style prompting, and you'll want keyword_style on inline. Also note the README's python test_nodes.py verification step doesn't ship in the repo, and its old ComfyNoxPrompter URL is stale - use the clone command above.

    CategoryNoxPrompter/Builders

    Inputs (27)

    NameTypeDefaultDescription
    formulaCOMBOAdvanced Formula4 options: Basic Formula, Advanced Formula, Story Spotlight, Trailer Teaser
    subject_focusSTRINGBattle-hardened warrior drenched in rain, wearing leather armor and fur—
    scene_settingSTRINGMuddy battlefield at night, lightning in the distance, flames flickering—
    motion_arcSTRINGCharges forward roaring, swings blade in a slow-motion crash zoom—
    narrative_hookoptSTRINGCamera locks onto her determined eyes as thunder cracks overhead—
    model_emphasisoptSTRINGCinematic aesthetic control, precise semantic adherence—
    aesthetic_paletteoptSTRINGDaylight rim lighting | Soft diffusion fill | Warm tone bounce | Balanced composition—
    dynamic_paletteoptSTRINGRunning motion arcs | Joyful expressions | Pan-right sweep | Crane follow—
    style_paletteoptSTRINGAnime cinematic tonality | Tilt-shift miniature effect—
    keyword_styleoptCOMBOauto3 options: auto, inline, compact
    quality_profileoptCOMBOBalanced4 options: Balanced, Cinematic, Minimal, Narrative
    extra_descriptorsoptSTRINGModel feature emphasis: complex & dynamic motion—
    lighting_promptoptSTRING—
    lighting_summaryoptSTRING—
    lighting_technical_notesoptSTRING—
    custom_keywordsoptSTRING—
    negative_promptoptSTRING—
    prompt_prefixoptSTRING—
    prompt_suffixoptSTRING—
    camera_promptoptSTRING—
    camera_summaryoptSTRING—
    camera_notesoptSTRING—
    camera_directivesoptSTRING—
    prompt_filter_enabledoptBOOLEANtrue—
    prompt_filter_profileoptCOMBObalanced4 options: balanced, cinematic, minimal, narrative
    preset_actionoptCOMBOnone4 options: none, save, load, list
    preset_nameoptSTRING—

    Outputs (5)

    NameTypeDescription
    promptSTRING—
    negative_promptSTRING—
    aesthetic_notesSTRING—
    dynamic_notesSTRING—
    preset_statusSTRING—