Qwen Edit Output Extractor
Unpack the Custom node's output bundle
- custom_output
- pad_info
- full_refs_cond
- main_ref_cond
- main_image
- vae_images
- ref_latents
- vl_images
- full_prompt
- llama_template
- no_refs_cond
- mask
If you're using TextEncodeQwenImageEditPlusCustom, you need this node too. Custom deliberately hands back most of its work as a single opaque custom_output dictionary - one wire instead of a dozen - and this is the node that opens the box. Feed it that dictionary and it fans out into eleven named sockets: every conditioning variant, every intermediate image list, the assembled prompt, the mask, and the pad info. It's plumbing, but it's the plumbing that makes the Custom node actually usable.
The design is sensible once you see it: Custom keeps its output compact so your graph isn't a spaghetti of sockets, and you attach an Extractor only for the pieces you want. Most people tap two or three of the outputs and ignore the rest.
How it works
There's no computation here. Custom already produced everything during encoding and packed it into the dict; this node just reads keys back out as typed outputs. That's why it takes an ANY input and emits specific types - it's a demultiplexer for one specific dictionary shape.
The inputs and outputs that matter
Input: custom_output - the ANY dictionary straight off the Custom node. That's the only input.
The outputs, and what you'd wire each into:
- full_refs_cond / main_ref_cond / no_refs_cond - three flavors of conditioning: all references, main reference only, or no reference latents at all. Pick one for your KSampler positive depending on how tightly you want the edit bound to the input.
- pad_info - the ANY scale/pad dictionary. This is the one to route into CropWithPadInfo to crop your generated result back to the original content area.
- main_image - the processed main reference image (for compositing).
- vae_images / ref_latents / vl_images - the lists of processed VAE images, reference latents, and VL images. Pull individual items with QwenEditListExtractor.
- full_prompt / llama_template - the assembled prompt string and the system template that was applied, useful for debugging what the model actually saw.
- mask - the processed region-of-interest mask.
Installing it
Part of the pack. ComfyUI Manager: search Comfyui-QwenEditUtils, install, restart. Or cd ComfyUI/custom_nodes && git clone https://github.com/lrzjason/Comfyui-QwenEditUtils, restart. No models, no dependencies; it's a helper under advanced/conditioning.
Common issues
There's not much to break here - it either receives a valid Custom output dict or it doesn't. The one real gotcha: this node only makes sense downstream of TextEncodeQwenImageEditPlusCustom. Its ANY input expects that exact dictionary shape, so wiring some other node's ANY output into it won't give you meaningful results. The likely reason you're here at all is the pad_info output - that's the handle for the crop-and-stitch trick that fixes Qwen edit's whole-frame drift, and pairing it with CropWithPadInfo is the standard move. The vae_images and friends come out as lists, so remember you'll need QwenEditListExtractor (or one of the Any2 casters) to turn a list into a single image or latent a downstream node can use.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| custom_output | ANY | — |
Outputs (11)
| Name | Type | Description |
|---|---|---|
| pad_info | ANY | — |
| full_refs_cond | CONDITIONING | — |
| main_ref_cond | CONDITIONING | — |
| main_image | IMAGE | — |
| vae_images | LIST | — |
| ref_latents | LIST | — |
| vl_images | LIST | — |
| full_prompt | STRING | — |
| llama_template | STRING | — |
| no_refs_cond | CONDITIONING | — |
| mask | MASK | — |