| name | ernie-image |
| description | Build Baidu ERNIE-Image / ERNIE-Image-Turbo workflows — primarily TEXT-TO-IMAGE. Pick ERNIE when you need precise multilingual text rendering, posters/signage, manga/anime multi-panel layouts, or strong instruction following for complex multi-object scenes. Also supports denoise-based image-to-image refine (NOT instruction-grounded editing — use Qwen-Image-Edit or Flux Kontext for "change X in this photo" edits). |
| globs | ["**/*.json"] |
ERNIE-Image / ERNIE-Image-Turbo Workflows
What this is (read first)
ERNIE-Image is Baidu's open-weight TEXT-TO-IMAGE model — an ~8B single-stream Diffusion Transformer (DiT), Apache-2.0, released April 2026, repackaged for ComfyUI by Comfy-Org. It is not an instruction-based image editor.
- ERNIE-Image (base): ~50 steps for peak quality.
- ERNIE-Image-Turbo: distilled (Distribution Matching Distillation + RL), high-fidelity in ~8 steps, cfg 1. The downloaded pack uses Turbo (
ernie-image-turbo-*.gguf).
Pick ERNIE when the job is: precise text/typography rendering (multilingual, including Chinese), posters/signage/UI mockups, manga/anime storyboards and multi-panel layouts, or structured multi-object scenes from a complex prompt.
Do NOT pick ERNIE for "edit this photo / change the shirt / swap the background" — that is instruction-grounded editing, which ERNIE does not do. Use qwen-image-edit or Flux Kontext for those. ERNIE's "image-to-image" here is plain denoise-based refinement (style pass / detail pass), not reference-grounded editing.
Niche vs siblings: ERNIE = best open-weight text rendering + layout T2I. Qwen-Image-Edit = instruction editing. Flux Kontext = reference editing. Z-Image Turbo = fast general T2I (and this same pack pairs the two — see Combo pipelines).
Separated packs (render-verified)
The original ernie monolith was a single toggle-template graph (every pipeline shipped bypassed; you activated one via the rgthree group toggles). It's now split into standalone, single-purpose packs — each a clean activated graph that renders headlessly with no group-toggling:
| Pack | Use | Models | VRAM |
|---|
ernie-txt2img | text-to-image (flagship) | ERNIE only (4) | <8GB |
ernie-img2img | denoise refine of a source image | ERNIE only (4) | <8GB |
ernie-combo | ERNIE × Z-Image-Turbo combo pipelines | ERNIE + Z-Image (7, ~32GB) | 12GB+ |
Working details verified live: the prompt-enhancer LLM is OFF by default (the ENHANCE PROMPT boolean is false; leave it off unless you want the 3B enhancer to rewrite the prompt). The grain/sharpen post-proc (FastFilmGrain/FastLaplacianSharpen, comfyui-vrgamedevgirl) needs librosa installed. In ernie-combo the Z-Image half's VAE is saved as z-image-ae.safetensors (its weights differ from Flux/ERNIE's ae.safetensors despite the same size — avoids a filename clash).
Source of truth & a provenance warning
This skill is derived from the actual pack files in C:\Users\Artokun\Downloads\:
ERNIE-IMAGE-ULTRA-WORKFLOW.json (authoritative — the ComfyUI graph)
ERNIE-IMAGE_ULTRA-MODELS-NODES_INSTALL.bat, ...-COMFYUI-MANAGER_AUTO_INSTALL.bat, ...-AUTO_INSTALL-RUNPOD.sh
Installer warning (verified): the three install scripts are copy-pasted from a Z-Image pack. Their headers literally say "Z-IMAGE-BASE"/"Z-IMAGE Base", and they download both ERNIE and Z-Image files. The model URLs/folders below are taken from those scripts but mirror this confusion — they pull z_image_turbo-*.gguf, Qwen3-4B-*.gguf, and ae.safetensors which belong to the Z-Image half of the combo, not ERNIE. The ERNIE-only files are flagged below. All weights come from a third-party mirror huggingface.co/Aitrepreneur/FLX, not the official huggingface.co/Comfy-Org/ERNIE-Image (which hosts the same filenames — see Official sources).
Models
ERNIE-Image (the files ERNIE actually uses)
Confirmed from the workflow's virtual wires (Set_*/GetNode): the nodes tagged "ERNIE" resolve to these exact files.
| Component | Node (type) | File (in workflow) | Folder | Notes |
|---|
| UNet (GGUF) | UnetLoaderGGUF | ernie-image-turbo-Q8_0.gguf | models/unet/ | Turbo DiT. Q5_K_S / Q6_K / Q8_0 quants offered by installer |
| Text encoder | CLIPLoader (type=flux2) | ministral-3-3b.safetensors | models/text_encoders/ | Ministral-3-3B is ERNIE's text encoder. Loaded with CLIP type flux2 |
| VAE | VAELoader | flux2-vae.safetensors | models/vae/ | ERNIE reuses the Flux 2 VAE |
| Prompt enhancer | CLIPLoader (type=flux2) → TextGenerate | ernie-image-prompt-enhancer.safetensors | models/text_encoders/ | 3B LLM that auto-expands a short prompt into a rich description (see Prompt enhancer). Optional, toggled per-pipeline |
Quant guidance from the installer: Q5_K_S GPUs <8 GB · Q6_K 8–12 GB · Q8_0 12–16 GB+.
Z-Image Turbo (bundled in the same pack — the "ZIT" half)
The workflow also wires a parallel Z-Image Turbo pipeline for ERNIE→ZIT / ZIT→ERNIE combos. These files are Z-Image's, not ERNIE's — do not confuse them:
| Component | Node | File | Folder |
|---|
| UNet (GGUF) | UnetLoaderGGUF | z_image_turbo-Q8_0.gguf | models/unet/ |
| Text encoder | CLIPLoaderGGUF (type=lumina2) | Qwen3-4B-UD-Q6_K_XL.gguf | models/text_encoders/ |
| VAE | VAELoader | ae.safetensors | models/vae/ |
LoRAs (referenced in the Power Lora Loader, off by default)
hirohiko-araki-style-ERNIE_000001250.safetensors, ernie-anime-v1.safetensors — community ERNIE style LoRAs, loaded via Power Lora Loader (rgthree) (both toggled off in the shipped graph). Not in the installer; user-supplied.
Upscalers / post (shared)
4x-ClearRealityV1.pth, RealESRGAN_x4plus_anime_6B.pth → models/upscale_models/.
Installation
Custom nodes (git clone into ComfyUI/custom_nodes/)
All three installers clone the same set:
| Node pack | Repo | Why it's needed |
|---|
| ComfyUI-Manager | https://github.com/ltdrdata/ComfyUI-Manager.git | management |
| ComfyUI-GGUF | https://github.com/city96/ComfyUI-GGUF | UnetLoaderGGUF, CLIPLoaderGGUF |
| rgthree-comfy | https://github.com/rgthree/rgthree-comfy | Power Lora Loader, Label, Fast Groups Bypasser, Image Comparer |
| ComfyUI-Easy-Use | https://github.com/yolain/ComfyUI-Easy-Use | easy cleanGpuUsed, easy clearCacheAll |
| ComfyUI-KJNodes | https://github.com/kijai/ComfyUI-KJNodes | utility nodes |
| ComfyUI_essentials | https://github.com/cubiq/ComfyUI_essentials | ImageResize+ |
| wlsh_nodes | https://github.com/wallish77/wlsh_nodes | Upscale by Factor with Model (WLSH) |
| comfyui-vrgamedevgirl | https://github.com/vrgamegirl19/comfyui-vrgamedevgirl | FastFilmGrain, FastLaplacianSharpen |
| RES4LYF | https://github.com/ClownsharkBatwing/RES4LYF | advanced samplers |
The graph also uses TextGenerate, TextBox1, StringReplace, ComfySwitchNode, PreviewAny, SetNode/GetNode, PrimitiveBoolean, ModelSamplingAuraFlow, ConditioningZeroOut, EmptySD3LatentImage, EmptyFlux2LatentImage — most are builtin or come from the packs above. SetNode/GetNode are from KJNodes. TextGenerate (runs the prompt-enhancer LLM) — verify which pack provides it via ComfyUI-Manager if it shows as missing (unverified pack origin).
Model downloads (exact URLs from the installer)
Base URL HF = https://huggingface.co/Aitrepreneur/FLX/resolve/main (third-party mirror). !MODEL_VERSION! ∈ {Q5_K_S, Q6_K, Q8_0}.
# ERNIE (the files ERNIE actually uses)
unet/ernie-image-turbo-<Q>.gguf <HF>/ernie-image-turbo-<Q>.gguf?download=true
text_encoders/ministral-3-3b.safetensors <HF>/ministral-3-3b.safetensors?download=true
text_encoders/ernie-image-prompt-enhancer.safetensors <HF>/ernie-image-prompt-enhancer.safetensors?download=true
vae/flux2-vae.safetensors <HF>/flux2-vae.safetensors?download=true
# Z-Image half (bundled; only needed for the ZIT combo pipelines)
unet/z_image_turbo-<Q>.gguf <HF>/z_image_turbo-<Q>.gguf?download=true
text_encoders/Qwen3-4B-UD-Q6_K_XL.gguf <HF>/Qwen3-4B-UD-Q6_K_XL.gguf?download=true
vae/ae.safetensors <HF>/ae.safetensors?download=true
# Upscalers
upscale_models/4x-ClearRealityV1.pth <HF>/4x-ClearRealityV1.pth?download=true
upscale_models/RealESRGAN_x4plus_anime_6B.pth <HF>/RealESRGAN_x4plus_anime_6B.pth?download=true
Official sources (prefer these over the mirror)
The same filenames are hosted officially at huggingface.co/Comfy-Org/ERNIE-Image (unet|diffusion_models/, text_encoders/, vae/). Apache-2.0. Original model: github.com/baidu/ERNIE-Image. Comfy day-0 docs: docs.comfy.org/tutorials/image/ernie-image/ernie-image. The official repo also ships non-GGUF ernie-image.safetensors / ernie-image-turbo.safetensors (load with UNETLoader instead of UnetLoaderGGUF).
How the pipeline works (at a glance)
The big graph is a menu of group-boxed pipelines built from the same blocks. Core ERNIE-Image text-to-image flow:
UnetLoaderGGUF (ernie-image-turbo) ──► Power Lora Loader (rgthree) ──► ModelSamplingAuraFlow (shift=3.1) ──► MODEL
CLIPLoader (ministral-3-3b, type=flux2) ──► CLIP ──► CLIPTextEncode (positive)
└──► ConditioningZeroOut ──► negative (cfg=1, so negative ≈ unused)
VAELoader (flux2-vae) ──► VAE
EmptySD3LatentImage (1920×1088) ──► LATENT
│
KSampler (steps≈8–9, cfg=1, euler, simple, denoise=1) ──► VAEDecode ──► SaveImage / post
Prompt enhancer path (optional): the short user prompt + {width}/{height} are templated into a Chinese system prompt, fed to TextGenerate (which runs ernie-image-prompt-enhancer), and a ComfySwitchNode chooses raw prompt (switch=false) vs. enhanced prompt (switch=true) before CLIPTextEncode.
Image-to-image (refine) path — NOT editing: the graph's "ERNIE IMAGE TO IMAGE" groups take a LoadImage → ImageResize+ (1024, keep proportion, lanczos) and VAEEncode it, then run KSampler at low denoise (0.35–0.4) to refine/restyle. This is a denoise pass over a single source image; it does not follow edit instructions.
About the ~5 LoadImage + ~5 VAEEncode nodes: they are not multi-reference compositing. Each LoadImage feeds a separate pipeline variant (single-image img2img, or the combo refine stages). One source image per pipeline. The extra VAEEncodes are the encode steps for those independent img2img / two-pass refine chains.
Combo pipelines (ERNIE↔ZIT): group titles ERNIE ---> ZIT COMBO, ZIT ---> ERNIE COMBO, TWO TIMES COMBO ... chain ERNIE and Z-Image Turbo as a two-pass generate→refine, with optional film-grain (FastFilmGrain) or sharpening (FastLaplacianSharpen) finishing and SIMPLE UPSCALE.
Settings (extracted from the shipped KSamplers)
| Pipeline | Steps | CFG | Sampler | Scheduler | Denoise | Shift |
|---|
| ERNIE text-to-image (Turbo) | 8–9 | 1 | euler | simple | 1.0 | 3.1 |
| ERNIE image-to-image refine | 8 | 1 | euler | simple | 0.4 | 3.1 |
| Combo refine pass (2nd stage) | 9 | 1 | euler | simple | 0.25–0.35 | 3.1 |
ModelSamplingAuraFlow shift = 3.1 is applied to the ERNIE model before sampling (flow-matching shift). Keep it.
- CFG = 1 for Turbo → negative conditioning is effectively inert; the graph still wires a
ConditioningZeroOut as the negative.
- Resolution: shipped latent is 1920×1088 (
EmptySD3LatentImage). ERNIE is a high-res-capable DiT; 1024–2048 on the long edge is reasonable. Use EmptySD3LatentImage for ERNIE latents.
- Base (non-Turbo)
ernie-image: bump steps to ~50 and raise cfg (e.g. 3.5–5) since it is not distilled.
Prompt / instruction style
ERNIE rewards descriptive, structured natural-language prompts, and is unusually strong at literal text rendering. Write the exact text you want to appear in quotes.
A vintage travel poster of Kyoto in autumn, bold title text reading "KYOTO" at the top,
maple leaves, Mount fuji silhouette, clean vector layout, muted warm palette
A 3-panel manga page: panel 1 a samurai drawing his sword, panel 2 close-up of his eyes,
panel 3 a wide shot of cherry blossoms falling, black-and-white ink, speech bubble "参る"
- For typography/signage: state the literal string ("a neon sign that says 'OPEN'"), placement, and font feel.
- For layout: name the panel/grid structure and what goes in each region.
- Multilingual prompts (incl. Chinese) work — the built-in enhancer's system prompt is Chinese.
- This is txt2img phrasing, not edit phrasing. Do not write "change the…/remove the…" expecting grounded edits.
Complete API-format workflow (ERNIE-Image-Turbo text-to-image)
Derived from the source graph, flattened to API format (no subgraphs/virtual wires). Enhancer omitted for clarity — CLIPTextEncode takes the prompt directly.
{
"1": { "class_type": "UnetLoaderGGUF", "inputs": { "unet_name": "ernie-image-turbo-Q8_0.gguf" } },
"2": { "class_type": "CLIPLoader", "inputs": { "clip_name": "ministral-3-3b.safetensors", "type": "flux2", "device": "default" } },
"3": { "class_type": "VAELoader", "inputs": { "vae_name": "flux2-vae.safetensors" } },
"4": { "class_type": "ModelSamplingAuraFlow", "inputs": { "model": ["1", 0], "shift": 3.1 } },
"5": { "class_type": "CLIPTextEncode", "inputs": { "clip": ["2", 0], "text": "A vintage travel poster of Kyoto in autumn, bold title text reading \"KYOTO\" at the top, maple leaves, clean vector layout, muted warm palette" } },
"6": { "class_type": "ConditioningZeroOut", "inputs": { "conditioning": ["5", 0] } },
"7": { "class_type": "EmptySD3LatentImage", "inputs": { "width": 1920, "height": 1088, "batch_size": 1 } },
"8": { "class_type": "KSampler", "inputs": {
"model": ["4", 0], "positive": ["5", 0], "negative": ["6", 0], "latent_image": ["7", 0],
"seed": 997032332094579, "steps": 9, "cfg": 1, "sampler_name": "euler", "scheduler": "simple", "denoise": 1
} },
"9": { "class_type": "VAEDecode", "inputs": { "samples": ["8", 0], "vae": ["3", 0] } },
"10": { "class_type": "SaveImage", "inputs": { "images": ["9", 0], "filename_prefix": "ernie_image" } }
}
Image-to-image (refine) variant
Replace the empty latent with an encoded source image and lower denoise. This restyles/refines a single image; it is not instruction editing.
{
"11": { "class_type": "LoadImage", "inputs": { "image": "source.png" } },
"12": { "class_type": "ImageResize+", "inputs": { "image": ["11", 0], "width": 1024, "height": 1024, "interpolation": "lanczos", "method": "keep proportion", "condition": "always", "multiple_of": 0 } },
"13": { "class_type": "VAEEncode", "inputs": { "pixels": ["12", 0], "vae": ["3", 0] } }
}
Then in the KSampler set "latent_image": ["13", 0] and "denoise": 0.4.
Adding LoRAs
Insert a Power Lora Loader (rgthree) between the UNet loader and ModelSamplingAuraFlow (model: ["1",0] → loader → ["4"].model). In API format you can substitute LoraLoaderModelOnly with lora_name: "ernie-anime-v1.safetensors", strength_model: 0.5.
VRAM
- ERNIE-Image-Turbo GGUF: Q5_K_S <8 GB · Q6_K 8–12 GB · Q8_0 12–16 GB+ (installer's own guidance).
- Ministral-3-3B encoder + Flux2 VAE add a few GB. The graph includes
easy cleanGpuUsed / easy clearCacheAll nodes between stages — keep them for the combo/two-pass pipelines so VRAM is freed before swapping models.
- Running the ERNIE↔ZIT combos loads two UNets; budget for both or run the single-model ERNIE group only.
Troubleshooting
UnetLoaderGGUF / CLIPLoaderGGUF missing → install ComfyUI-GGUF (city96).
Power Lora Loader / Image Comparer / Label missing → install rgthree-comfy.
ImageResize+ missing → install ComfyUI_essentials.
TextGenerate missing (prompt enhancer) → install via ComfyUI-Manager search; pack origin unverified. If unavailable, just set the ComfySwitchNode to use the raw prompt (switch=false) and skip enhancement.
- CLIP type error on ministral → ensure
CLIPLoader type is flux2 (not qwen_image/lumina2). The lumina2 type belongs to the Z-Image (Qwen3) encoder, not ERNIE.
- Wrong VAE artifacts → ERNIE must use
flux2-vae.safetensors; ae.safetensors is the Z-Image VAE.
- Blurry / undercooked output → confirm
ModelSamplingAuraFlow shift=3.1 is wired and steps ≥8 for Turbo; for base ernie-image use ~50 steps + higher cfg.
- You wanted to EDIT a photo and it ignored the instruction → expected. ERNIE is txt2img; use the
qwen-image-edit skill or Flux Kontext for grounded edits.
- Installer pulled Z-Image files too → expected (the scripts are Z-Image-derived). Harmless; those files only feed the combo pipelines.
Tips
- Lead with the literal text you want rendered, in quotes — that's ERNIE's headline strength.
- Use the prompt enhancer for short/lazy prompts; turn it off (
ComfySwitchNode false) when you've written a detailed prompt yourself.
- Use
analyze_workflow before executing the shipped graph — it has dozens of group-boxed variants gated by Fast Groups Bypasser (rgthree); the analyzer summary is far easier than reading raw JSON.
- Most groups are bypassed (mode 4) by default in the source file — enable only the pipeline you want via the group bypasser, or build the clean API workflow above.
- To choose a model: ERNIE = text/layout T2I, Z-Image Turbo = fast general T2I, Qwen-Image-Edit / Flux Kontext = actual editing.