Nodes/ComfyUI-WanActivationEditor/WanVideo Block Activation Builder
ComfyUI Node

WanVideo Block Activation Builder

Never hand-type a 40-character binary string again

By fblissjr·Created about a year ago·Updated about a year ago· 9
WanVideo Block Activation Builder
    • block_activations
    preset
    block_0false
    block_1false
    block_2false
    block_3false
    block_4false
    block_5false
    block_6false
    block_7false
    block_8false
    block_9false
    block_10false
    block_11false
    block_12false
    block_13false
    block_14false
    block_15false
    block_16false
    block_17false
    block_18false
    block_19false
    block_20false
    block_21false
    block_22false
    block_23false
    block_24false
    block_25false
    block_26false
    block_27false
    block_28false
    block_29false
    block_30false
    block_31false
    block_32false
    block_33false
    block_34false
    block_35false
    block_36false
    block_37false
    block_38false
    block_39false

    The WanVideoActivationEditor wants its block selection as a single string of 40 characters, one 0-or-1 per transformer block. That's the API the underlying patch code reads. And it is a miserable way to pick blocks - which is exactly why this node exists. It's a tiny helper with one job: turn toggles and presets into that string so you never have to count characters in your head.

    You'll use it in almost every activation workflow, and it slots in right before the editor: builder's block_activations output → editor's block_activations input. That's the whole loop.

    What you actually set

    • preset - the quick path. all, none, first_half, second_half, then the three that encode the "early = low-level, late = semantic" hypothesis: early_blocks (blocks 0–9), mid_blocks (10–29), late_blocks (30–39). Plus alternating (every other) and sparse (every 4th). The author picked these as starting points, with exactly the right amount of "who knows, seemed useful" energy.
    • block_0 … block_39 - individual toggles, all optional, default off. Set the preset to custom and these become your manual selector. The UI is JavaScript-enhanced, so flipping the preset updates the checkboxes live and vice versa.

    The only output is block_activations, a STRING, and it's meant for the editor (or the viewer, if you're debugging). If you want per-block strength rather than on/off, that's the separate WanVideoBlockStrengthBuilder + WanVideoAdvancedActivationEditor path - this node is purely the binary on/off selector.

    Where presets come from (and how much to trust them)

    Wan 2.1/2.2 is a 40-block DiT with cross-attention injecting text conditioning at every depth. The "early vs late" story is real in the broad sense - deep transformer layers do tend to carry more semantic content - but as the README and the pack's own WAN_BLOCK_RESEARCH.md admit, it's messy. Features are distributed and entangled; one block might handle color in one context and motion in another. So treat early_blocks as "a hypothesis about low-level features," not a law. The entire point of this pack is that you're supposed to experiment and log results.

    Install & troubleshooting

    Same pack, same story: it needs kijai's ComfyUI-WanVideoWrapper installed first (the WANVIDEOTEXTEMBEDS types it interacts with come from there). Install via ComfyUI Manager (search "ComfyUI-WanActivationEditor") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/fblissjr/ComfyUI-WanActivationEditor
    cd ComfyUI-WanActivationEditor && pip install -r requirements.txt
    

    then restart. The deps are minimal - torch, numpy, duckdb, zstandard.

    The only real gotcha: if you wire this into WanVideoActivationEditor and see "No blocks activated" warnings, you've got an all-zeros string - check that your preset actually selected something and you didn't accidentally leave it on custom with no checkboxes. And if your output string looks short (like 40 characters but your eye says "that's fewer"), count again - it must be exactly 40 for the editor to parse it cleanly.

    CategoryWanVideoWrapper/Experimental

    Inputs (41)

    NameTypeDefaultDescription
    presetCOMBO10 options: custom, all, none, first_half, second_half, early_blocks, +4
    block_0optBOOLEANfalse
    block_1optBOOLEANfalse
    block_2optBOOLEANfalse
    block_3optBOOLEANfalse
    block_4optBOOLEANfalse
    block_5optBOOLEANfalse
    block_6optBOOLEANfalse
    block_7optBOOLEANfalse
    block_8optBOOLEANfalse
    block_9optBOOLEANfalse
    block_10optBOOLEANfalse
    block_11optBOOLEANfalse
    block_12optBOOLEANfalse
    block_13optBOOLEANfalse
    block_14optBOOLEANfalse
    block_15optBOOLEANfalse
    block_16optBOOLEANfalse
    block_17optBOOLEANfalse
    block_18optBOOLEANfalse
    block_19optBOOLEANfalse
    block_20optBOOLEANfalse
    block_21optBOOLEANfalse
    block_22optBOOLEANfalse
    block_23optBOOLEANfalse
    block_24optBOOLEANfalse
    block_25optBOOLEANfalse
    block_26optBOOLEANfalse
    block_27optBOOLEANfalse
    block_28optBOOLEANfalse
    block_29optBOOLEANfalse
    block_30optBOOLEANfalse
    block_31optBOOLEANfalse
    block_32optBOOLEANfalse
    block_33optBOOLEANfalse
    block_34optBOOLEANfalse
    block_35optBOOLEANfalse
    block_36optBOOLEANfalse
    block_37optBOOLEANfalse
    block_38optBOOLEANfalse
    block_39optBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    block_activationsSTRING