EZ Generate
The node that actually makes the image
- model
- clip
- vae
- prompt
- sampler
- image
- control_net
- FULL
- PARTIAL
EZ Generate is the heart of the Prompt Helpers pack - the node where all the settings bundles finally turn into an image. Everything upstream (checkpoint, prompt, sampler, image, ControlNet) just prepares data; this is where the sampling happens. If you're learning the pack, learn this node first, because it's the reason the rest of the EZ family exists.
It's a deliberately fat node with six required inputs and one optional:
- model (MODEL) - from EZ Checkpoint, used for denoising.
- clip (CLIP) - also from EZ Checkpoint, used for encoding the text.
- vae (VAE) - from EZ Checkpoint, encodes/decodes latent space.
- prompt (EZ_PROMPT_SETTINGS) - from EZ Prompt, the JSON prompt wrapped up.
- sampler (EZ_SAMPLER_SETTINGS) - from EZ Sampler, the sampler/scheduler/steps/seed.
- image (EZ_IMAGE_SETTINGS) - from EZ txt2img, EZ img2img, EZ Crop, EZ Detail, EZ Batch, or EZ Upscale (Tiled).
- control_net (EZ_CONTROL_NET, optional) - from EZ ControlNet or Empty ControlNet.
Outputs: FULL (the complete output image) and PARTIAL (the cropped-and-masked output on transparent background - the "here's what actually changed" view).
What it actually does
The image settings carry a type, and EZ Generate dispatches on it:
- BLANK (from EZ txt2img) → builds an empty latent at your dimensions and runs text-to-image.
- IMAGE (from EZ img2img) → encodes the source image and runs img2img, or - with a mask - inpainting, using
InpaintModelConditioning. The mask'simage_weightbecomes the denoise dial:denoise = 1 - image_weight. - UPSCALE_TILED (from EZ Upscale Tiled) → tiles the upscaled image, samples each tile, and composites with feathered seams.
In every path it does the same prompt choreography: parse the JSON, expand bundles and regions, sort positive/negative, apply LoRAs via the hidden Apply Loras node, encode each region, then run SamplerCustomAdvanced with a CFGGuider where the CFG is your prompt weight. One neat internal: above 1536×1536 it switches to tiled VAE encode/decode automatically, so big renders don't blow your VRAM on the VAE step.
Reading the output
FULL is what you save. PARTIAL is the honest preview for inpaint work - with EZ Crop it's just the regenerated region, which makes it trivial to spot-check whether the region actually changed before you keep the full render. If PARTIAL looks empty or wrong, the region/mask math upstream is off, not the sampler.
A word on the prompt model
This pack is built around CLIP-era prompt mechanics - weights, BREAK, negative prompts, and the CFG knob being exposed as "weight." That machinery sings on SDXL-lineage checkpoints (Illustrious, NoobAI, Pony) and is dead weight on LLM-encoded models (Flux 2 Klein, Z-Image, Anima), where the encoder ignores weights and there's no chunk boundary. Default weight 8 is classic SDXL CFG; expect to tune 4–9.
Installing it
It ships with the Prompt Helpers pack. In ComfyUI Manager search "Prompt Helpers" (Pauan/comfyui-prompt-helpers), install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Pauan/comfyui-prompt-helpers
Restart ComfyUI. No model downloads; the pack depends on PyYAML and desktop-notifier and needs ComfyUI 0.8.0+.
Most "EZ Generate does nothing" reports trace to a floating socket - every required input must be wired from a matching EZ source node. If the sockets don't fit, you've probably plugged an EZ Image output into the wrong slot; the types are strict, which is the feature.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | The model used for denoising the input latent. | |
| clip | CLIP | The CLIP model used for encoding the text. | |
| vae | VAE | — | |
| prompt | EZ_PROMPT_SETTINGS | — | |
| sampler | EZ_SAMPLER_SETTINGS | — | |
| image | EZ_IMAGE_SETTINGS | — | |
| control_netopt | EZ_CONTROL_NET | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| FULL | IMAGE | The full output image. |
| PARTIAL | IMAGE | The output image, but cropped and masked. |