ToDetailerPipeSDXL
Bundle raw SDXL base+refiner components into one detailer pipe
- model
- clip
- vae
- positive
- negative
- refiner_model
- refiner_clip
- refiner_positive
- refiner_negative
- bbox_detector
- sam_model_opt
- segm_detector_opt
- detailer_hook
- detailer_pipe
If you're running SDXL with its base+refiner split and you want your face/hand detail passes to use both models too, this is the node that packs everything into one DETAILER_PIPE. It's the SDXL-flavored sibling of the plain ToDetailerPipe: same idea (stop dragging a dozen wires across your canvas), but with a second full set of model/clip/conditioning inputs for the refiner sitting alongside the base.
The distinction worth knowing up front: this node takes the raw components directly - model, clip, positive, negative and their refiner_* counterparts as separate wires. If you've already got your base and refiner each bundled into a BASIC_PIPE, you don't want this node - you want BasicPipe -> DetailerPipe (SDXL), which takes two pre-built pipes instead of nine loose wires. Same output type, different input shape. Use whichever matches what you're already holding.
How it works
You feed in the base set, the refiner set, a detector, and get back a single detailer_pipe that a refiner-aware detailer (FaceDetailer (pipe), DetailerForEach (pipe)) can unpack. Downstream, that detailer runs most of the sampling steps with the base model and hands the tail off to the refiner, same two-stage pattern as a normal SDXL generation - except now it's happening per detected region instead of once on the whole image.
The inputs and outputs that matter
The base set: model, clip, vae, positive, negative. The refiner set, all required: refiner_model, refiner_clip, refiner_positive, refiner_negative - note there's no separate refiner_vae; the pipe shares the one vae you supply. bbox_detector is required too - without it there's nothing to detect, and this stays a bundle with no detailing purpose.
wildcard is an optional multiline prompt override for the detail pass, using Impact Pack's __wildcard__ / {a|b|c} syntax. The two "Select to add LoRA" and "Select to add Wildcard" fields are UI convenience dropdowns that paste syntax into the wildcard box - not real data connections.
Optional inputs round out detection quality: sam_model_opt (a SAM model for masks that follow the actual silhouette instead of a rectangle), segm_detector_opt (a segmentation detector), and detailer_hook for attaching advanced hook behavior (noise injection, a denoise schedule, custom samplers).
Output is one detailer_pipe (DETAILER_PIPE), ready for an SDXL-aware detailer node.
How to install it
Comes with the Impact Pack. ComfyUI Manager: search ComfyUI Impact Pack, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack comfyui-impact-pack
cd comfyui-impact-pack
pip install -r requirements.txt
then restart - auto-install was dropped at v7.6, so this step isn't optional. Your bbox_detector will typically come from UltralyticsDetectorProvider, which since v8.0 lives in the separate ComfyUI-Impact-Subpack, not the base pack.
Common issues & troubleshooting
Nine required inputs and it still won't build. Every base and refiner field here is required - leave one refiner input unconnected and the node has nothing to build a valid pipe with. If you don't actually have a refiner checkpoint loaded, this is the wrong node; use plain ToDetailerPipe and skip the refiner entirely.
You built two BASIC_PIPEs already and this feels redundant. It probably is, for your case - BasicPipe -> DetailerPipe (SDXL) takes the two pipes directly and saves you re-wiring nine components you've already bundled. This node exists for the opposite situation, where you're wiring raw model/clip/conditioning straight from loaders rather than through an intermediate basic pipe.
Detailer complains about a missing detector. Same as the non-SDXL pipe nodes: bbox_detector is required, and without a real YOLO provider connected (from the Impact Subpack), the pipe has nothing to detect with, regardless of how correctly the model side is wired.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| vae | VAE | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| refiner_model | MODEL | — | |
| refiner_clip | CLIP | — | |
| refiner_positive | CONDITIONING | — | |
| refiner_negative | CONDITIONING | — | |
| bbox_detector | BBOX_DETECTOR | — | |
| wildcard | STRING | — | |
| Select to add LoRA | COMBO | 1 options: Select the LoRA to add to the text | |
| Select to add Wildcard | COMBO | 1 options: Select the Wildcard to add to the text | |
| sam_model_optopt | SAM_MODEL | — | |
| segm_detector_optopt | SEGM_DETECTOR | — | |
| detailer_hookopt | DETAILER_HOOK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| detailer_pipe | DETAILER_PIPE | — |