Simple Controlnet
Apply a ControlNet to your conditioning in one node
- positive
- image
- positive
Simple Controlnet (zsqcontrolnet) from the zsq_prompt pack is the one-stop ControlNet node: feed it a positive conditioning, a reference image, and a ControlNet model, and it returns a new positive conditioning with the ControlNet baked in. For the tiling, edge-following, and pose-following workflows where you'd otherwise string together a loader plus an Apply ControlNet node, this collapses the whole thing into a single node.
How it works
You provide positive (CONDITIONING), image (the control hint - canny edges, depth map, a scribble, whatever your preprocessor produced), controlnet_name (dropdown from your models/controlnet/ folder), and controlnet_strength (0 to 10, default 1.0).
Under the hood it loads the ControlNet via ComfyUI's own load_controlnet, sets the image as the conditioning hint with your strength, and stamps the conditioning so the sampler applies control on the positive side (control_apply_to_uncond is set to false - the negative isn't controlled, which is the standard and usually correct behavior). Two passthrough behaviors are built in: if controlnet_name is "None" or controlnet_strength is 0, it returns your positive untouched. That makes it safe to leave in a workflow while you dial things in.
The output is a single positive (CONDITIONING), ready for a sampler.
Inputs and outputs that matter
- positive - your existing positive conditioning, usually from a CLIP text encode.
- image - the control condition image. This is the input where people go wrong: it needs to be a preprocessed control map, not a raw photo, unless you're doing tile/img2img-style control where the photo is the map.
- controlnet_name - the model, from your controlnet folder.
- controlnet_strength - how hard the condition bites. The ControlNet playbook: 0.3–0.7 for loose guidance, 0.8–1.2 for strict adherence, and many 2025-26 union models prefer lower numbers than the old SD-era defaults.
- Output: positive (CONDITIONING).
Where it fits
ControlNet is how you make generation follow structure - edges, depth, pose, or the layout of a reference - and this node is how you apply it inside this pack. It pairs naturally with the pack's imageScaleDown (get a huge reference down to a workable base) and with preprocessors from ComfyUI's ControlNet Aux Preprocessors pack, which is the standard source of the edge/depth/pose maps this node wants.
The honest limitation: there's no start/end step control here. The community's single most-repeated ControlNet tip is that you should often release the condition once composition has formed (start 0.0, end ~0.5). If you need that precision, you want core ControlNet Apply with ControlNetLoader and its start/end controls - this node is the quick version, not the fine-tuned one.
Installing zsq_prompt
Shared pack install. ComfyUI Manager → search zsq_prompt → install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/windfancy/zsq_prompt
Restart ComfyUI. Heavy shared deps (transformers, opencv-python, opencv-contrib-python, scikit-image, timm, onnx, ultralytics) come with the pack; if Manager flags "conflicting with zsq_prompt" on a workflow, that's dependency-overlap noise, only meaningful once the pack is installed. ControlNet model files are not downloaded - you need to drop the right .safetensors into models/controlnet/ yourself (and make sure it matches your base model's architecture; an SD 1.5 ControlNet will not work on SDXL or Flux).
Gotchas
- No start/end step controls - for control-release timing you need core ControlNet nodes.
control_apply_to_uncondis false, so control never touches the negative side. That's standard behavior, but worth knowing if you're debugging weak control.- Strength up to 10 is allowed by the UI, but anything above ~2 is a sign you're compensating for the wrong condition image, not the wrong strength.
- If the dropdown is empty, it's not a node bug - it means you have no ControlNet files in
models/controlnet/.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| image | IMAGE | — | |
| controlnet_name | COMBO | 1 options: None | |
| controlnet_strength | FLOAT | 1.000–10 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |