Nodes/comfyui-daz-tools/Workflow Config WAN2.2
ComfyUI Node

Workflow Config WAN2.2

Save a whole Wan 2.2 setup as one dropdown

By denyazzolin·Created 3 months ago·Updated 9 days ago· 3
Workflow Config WAN2.2
    • unet_high
    • unet_low
    • vae
    • clip
    • image
    • audio
    • width
    • height
    • steps
    • split_step
    • seed
    • master_prmt
    • pos_prompt
    • neg_prompt
    • is_relay_prompt
    • cfg_high
    • cfg_low
    • total_frames
    • fps
    • lora_1_high
    • lora_1_low
    • lora_2_high
    • lora_2_low
    • lora_3_high
    • lora_3_low
    • lora_4_high
    • lora_4_low
    • filename
    • unet_stack_high
    • unet_stack_low
    • shift_high
    • shift_low
    • is_t2v
    • flag_1
    • flag_2
    • flag_3
    • custom_1
    • custom_2
    movie
    scene
    take

    Wan 2.2 workflows are the worst kind of complicated: two-pass, with a separate high-noise and low-noise model, four-plus LoRAs, per-pass CFG and timestep shift, and a prompt setup that changes per shot. Change one scene and you're hunting through twenty nodes for the model dropdown that lives on the wrong one. Workflow Config WAN2.2 exists to make that entire bundle - models, VAE, CLIP, LoRAs, prompts, dimensions, sampler settings - one saved thing you switch with a single dropdown. It's the closest thing this ecosystem has to a proper scene file.

    The movie / scene / take model

    Configs are stored as JSON in ComfyUI/user/default/workflows/.dx_mgr/, and the mental model is a film shoot:

    • A movie is a config file (dx_*.json). Drop more than one in the folder and a movie dropdown appears, so you can split setups by project or client.
    • Each movie holds scenes - named presets with a Name, Group, Type (I2V / T2V / MULTI), a note, and a reference image.
    • Each scene holds takes: numbered versions of the same scene's settings. That's your iteration system - change the prompt or swap a LoRA, hit "+ Version", and the old take survives for comparison.

    Hit NEW (or Edit / double-click) to open the full-screen editor. Save writes the current take; Duplicate, Delete Version, and Del All handle the rest. There's also a preset library (dx_workflow_presets.json) so you can save a model-and-parameters template and apply it to any scene of the same class instead of rebuilding from scratch.

    Inputs and the outputs that matter

    The node's own inputs are just the three selectors: movie, scene, take. Everything else flows out.

    The two outputs you actually wire into the sampler are unet_stack_high and unet_stack_low. These are the star of the show: ready-to-use model stacks for each pass with all enabled LoRAs applied and the timestep shift already patched in. Wan 2.2's two-pass architecture means the high-noise pass carries motion and composition while the low-noise pass refines detail - the node applies 4 LoRA slots to each, and split_step is where the sampler hands off. shift_high/shift_low default to 5.0 and behave like ComfyUI's ModelSamplingSD3 node, so you don't need a separate patch node.

    Then there's the plumbing: vae, clip, image and audio (a reference audio path decodes straight to the audio output), width, height, steps, seed, total_frames, fps, cfg_high/cfg_low, master_prmt/pos_prompt/neg_prompt, is_relay_prompt, is_t2v, plus filename and three flag_* toggles you can relabel for routing. The custom_1/custom_2 string outputs are free-form pass-throughs.

    One prompt detail worth knowing: Smart type expects the positive prompt split into pipe-separated frame-range segments (text [0-20] | text [21-40]) for a downstream Prompt Relay node - the node has a sibling pack node for that. Simple is a flat string, Beats aligns segments to seconds. For Simple and Beats, the master prompt is prepended automatically.

    Installing it

    Same shared install as the rest of the pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/denyazzolin/comfyui-daz-tools
    

    Restart ComfyUI. No Python dependencies beyond ComfyUI itself. If you want GGUF-quantized unets in the model dropdown, you need the separate ComfyUI-GGUF pack (city96) - the node detects the .gguf file, checks a read-only gguf flag, and loads through GGUF's unet loader automatically.

    Gotchas

    • GGUF without ComfyUI-GGUF is a hard error, on purpose. No silent fallback - install the pack or don't pick .gguf files.
    • Missing model files raise at run time ("diffusion model not found"). The scene is saved; the file isn't. Check the model names in the editor.
    • Randomize on the seed isn't a lie: each run picks a new seed and writes it back into the config JSON, so the take you reloaded keeps its last-used seed.
    • Configs live in user/default/workflows/.dx_mgr/ - back that folder up with your models. You can relocate it by dropping a dx_root_dir_config.json (key "workflows_root_dir") into custom_nodes/comfyui-daz-tools/.

    The one honest grumble: like any heavily custom-UI node, this one is sensitive to ComfyUI's frontend churn - if the editor panel misbehaves after a big ComfyUI update, check whether the Nodes 2.0 canvas feature got enabled, since that's the ecosystem-wide breaker for custom node UIs. Turn it off and the node tends to come back to life.

    Categoryutils

    Inputs (3)

    NameTypeDefaultDescription
    movieCOMBO1 options: (default)
    sceneCOMBO1 options: (no configs)
    takeCOMBO1 options: 1

    Outputs (38)

    NameTypeDescription
    unet_highMODEL
    unet_lowMODEL
    vaeVAE
    clipCLIP
    imageIMAGE
    audioAUDIO
    widthINT
    heightINT
    stepsINT
    split_stepINT
    seedINT
    master_prmtSTRING
    pos_promptSTRING
    neg_promptSTRING
    is_relay_promptBOOLEAN
    cfg_highFLOAT
    cfg_lowFLOAT
    total_framesINT
    fpsFLOAT
    lora_1_highLORA
    lora_1_lowLORA
    lora_2_highLORA
    lora_2_lowLORA
    lora_3_highLORA
    lora_3_lowLORA
    lora_4_highLORA
    lora_4_lowLORA
    filenameSTRING
    unet_stack_highMODEL
    unet_stack_lowMODEL
    shift_highFLOAT
    shift_lowFLOAT
    is_t2vBOOLEAN
    flag_1BOOLEAN
    flag_2BOOLEAN
    flag_3BOOLEAN
    custom_1STRING
    custom_2STRING