Z-Image Analyzer + Selective Loader V2
Block control plus strength scheduling in one node
- model
- positive
- negative
- model
- positive
- negative
- analysis
- analysis_json
What it is
This is the pack's V2 answer to needing both LoRA Loader + Analyzer and Selective LoRA Loader (Z-Image) wired together - it folds analysis and per-layer control into one node, then adds two things neither V1 node had: strength scheduling (vary the LoRA's influence across the denoising steps, not just a flat value) and a save-to-disk option that lets you bake your block selection into a new, smaller LoRA file. If you're doing serious LoRA surgery on Z-Image rather than a quick strength tweak, this is the node to reach for over its V1 predecessors.
It also passes positive/negative conditioning straight through, which is the tell that this node is meant to sit inline in your main sampling graph rather than off to the side - you wire your prompt conditioning through it the same way you'd wire model and clip.
How it works
Same block-impact scoring as LoRA Loader + Analyzer underneath - 0–100% per layer based on weight magnitude, with the same 30-layer map the author's own testing mapped out (identity concentrating in layers ~18–28, style earlier, plus an "other weights" bucket and four extra Z-Image-specific blocks: context_refiner, noise_refiner, final_layer, x_embedder). What's new is the scheduling: instead of one strength number, you can supply a step:strength sequence like 0:0,1:1 (linear fade-in across the generation) or 0:1,0.5:1,0.6:0,1:0 (full strength for the first half, then cut), picked from over 40 built-in presets covering fades, bell curves, and pulses, or typed by hand.
Inputs and outputs that matter
model,positive,negative,lora_name- this node sits inline with your conditioning, not just your model/clip.strength- the base multiplier (-10 to 10), before any schedule is applied.preset- the block-selection presets: Default, All Off, Half Strength, Late Only (20–29), Peak Impact (18–25), Face Priority, and more.layer_0–layer_29(each with a_strslider), pluscontext_refiner,noise_refiner,final_layer,x_embedder, andother_weights- every one individually toggleable and reweightable.schedule_presetandstrength_schedule(optional) - pick a named schedule or write your ownstep:strengthsequence to vary influence during generation.save_refined_lora,save_path,save_filename(optional) - export your block-filtered result as a standalone LoRA file.- Optional
lora_path_optoverrides the dropdown with a direct path.
Outputs: model, positive, negative (all patched/pass-through, wire straight into your sampler), analysis (readable report), analysis_json (chain into another node if needed).
Installing it
Works out of the box with the rest of the pack - no external backend required. ComfyUI Manager (search "Realtime LoRA Trainer") or:
cd ComfyUI/custom_nodes
git clone https://github.com/ShootTheSound/comfyUI-Realtime-Lora
Restart ComfyUI. The pack's workflows/Lora Analysis, Block and Model Editing/ folder has a dedicated "ADVANCED" demo workflow built around this exact node's scheduling.
Common issues
Scheduling syntax silently does nothing. The format is strict: comma-separated step:strength pairs, steps expressed as 0–1 fractions of the total generation, not step counts. 0:0, 1:1 is a valid linear fade-in; a typo or an out-of-range step number tends to fail quietly rather than error loudly - start from a named preset and modify it rather than writing the string from scratch.
Extra Z-Image blocks (context_refiner, noise_refiner, etc.) get overlooked. These four sit outside the numbered layer_0–29 range and don't show up in most presets by default - worth checking individually if a LoRA still bleeds unwanted style after you've tuned the numbered layers.
Forgot to wire positive/negative through. Because this node passes conditioning inline, a broken conditioning chain here breaks your whole sampling graph, not just the LoRA - if generation looks wrong in an unrelated way, check this node is actually in the conditioning path, not just the model path.
save_refined_lora produces an unexpectedly large or small file. The saved LoRA only contains the blocks you left enabled - a heavily pruned selection produces a smaller file than the source LoRA, which is expected, not a bug.
Inputs (82)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | Positive conditioning from CLIP encode | |
| negative | CONDITIONING | Negative conditioning from CLIP encode | |
| lora_name | COMBO | LoRA file to load and analyze | |
| strength | FLOAT | 1.00-10–10 | Overall LoRA strength (ignored when using schedule) |
| preset | COMBO | Default | Quick preset selection. Individual toggles below override when changed. |
| layer_0 | BOOLEAN | true | — |
| layer_0_str | FLOAT | 1.00-5–5 | — |
| layer_1 | BOOLEAN | true | — |
| layer_1_str | FLOAT | 1.00-5–5 | — |
| layer_2 | BOOLEAN | true | — |
| layer_2_str | FLOAT | 1.00-5–5 | — |
| layer_3 | BOOLEAN | true | — |
| layer_3_str | FLOAT | 1.00-5–5 | — |
| layer_4 | BOOLEAN | true | — |
| layer_4_str | FLOAT | 1.00-5–5 | — |
| layer_5 | BOOLEAN | true | — |
| layer_5_str | FLOAT | 1.00-5–5 | — |
| layer_6 | BOOLEAN | true | — |
| layer_6_str | FLOAT | 1.00-5–5 | — |
| layer_7 | BOOLEAN | true | — |
| layer_7_str | FLOAT | 1.00-5–5 | — |
| layer_8 | BOOLEAN | true | — |
| layer_8_str | FLOAT | 1.00-5–5 | — |
| layer_9 | BOOLEAN | true | — |
| layer_9_str | FLOAT | 1.00-5–5 | — |
| layer_10 | BOOLEAN | true | — |
| layer_10_str | FLOAT | 1.00-5–5 | — |
| layer_11 | BOOLEAN | true | — |
| layer_11_str | FLOAT | 1.00-5–5 | — |
| layer_12 | BOOLEAN | true | — |
| layer_12_str | FLOAT | 1.00-5–5 | — |
| layer_13 | BOOLEAN | true | — |
| layer_13_str | FLOAT | 1.00-5–5 | — |
| layer_14 | BOOLEAN | true | — |
| layer_14_str | FLOAT | 1.00-5–5 | — |
| layer_15 | BOOLEAN | true | — |
| layer_15_str | FLOAT | 1.00-5–5 | — |
| layer_16 | BOOLEAN | true | — |
| layer_16_str | FLOAT | 1.00-5–5 | — |
| layer_17 | BOOLEAN | true | — |
| layer_17_str | FLOAT | 1.00-5–5 | — |
| layer_18 | BOOLEAN | true | — |
| layer_18_str | FLOAT | 1.00-5–5 | — |
| layer_19 | BOOLEAN | true | — |
| layer_19_str | FLOAT | 1.00-5–5 | — |
| layer_20 | BOOLEAN | true | — |
| layer_20_str | FLOAT | 1.00-5–5 | — |
| layer_21 | BOOLEAN | true | — |
| layer_21_str | FLOAT | 1.00-5–5 | — |
| layer_22 | BOOLEAN | true | — |
| layer_22_str | FLOAT | 1.00-5–5 | — |
| layer_23 | BOOLEAN | true | — |
| layer_23_str | FLOAT | 1.00-5–5 | — |
| layer_24 | BOOLEAN | true | — |
| layer_24_str | FLOAT | 1.00-5–5 | — |
| layer_25 | BOOLEAN | true | — |
| layer_25_str | FLOAT | 1.00-5–5 | — |
| layer_26 | BOOLEAN | true | — |
| layer_26_str | FLOAT | 1.00-5–5 | — |
| layer_27 | BOOLEAN | true | — |
| layer_27_str | FLOAT | 1.00-5–5 | — |
| layer_28 | BOOLEAN | true | — |
| layer_28_str | FLOAT | 1.00-5–5 | — |
| layer_29 | BOOLEAN | true | — |
| layer_29_str | FLOAT | 1.00-5–5 | — |
| context_refiner | BOOLEAN | true | — |
| context_refiner_str | FLOAT | 1.00-5–5 | — |
| noise_refiner | BOOLEAN | true | — |
| noise_refiner_str | FLOAT | 1.00-5–5 | — |
| final_layer | BOOLEAN | true | — |
| final_layer_str | FLOAT | 1.00-5–5 | — |
| x_embedder | BOOLEAN | true | — |
| x_embedder_str | FLOAT | 1.00-5–5 | — |
| other_weights | BOOLEAN | true | — |
| other_weights_str | FLOAT | 1.00-5–5 | — |
| lora_path_optopt | STRING | Optional: Override LoRA selection with a path | |
| schedule_presetopt | COMBO | Custom | Select a preset schedule (populates the text field below for editing) |
| strength_scheduleopt | STRING | Strength schedule: 0:.2,.5:.8,1:1.0 (step:strength pairs). Edit freely after selecting preset. | |
| save_refined_loraopt | BOOLEAN | false | Enable to save the refined LoRA to disk |
| save_pathopt | STRING | Directory to save refined LoRA | |
| save_filenameopt | STRING | Filename for saved LoRA (timestamp auto-appended). Leave empty for auto-name. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| model | MODEL | Model with LoRA applied (filtered by enabled blocks). |
| positive | CONDITIONING | Positive conditioning (with hooks if using schedule). |
| negative | CONDITIONING | Negative conditioning (with hooks if using schedule). |
| analysis | STRING | Per-block analysis showing impact scores. |
| analysis_json | STRING | JSON analysis data for UI coloring. |