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).
npx skills add https://github.com/artokun/comfyui-mcp --skill ernie-image
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-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).
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).
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).
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+.
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/ |
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.
4x-ClearRealityV1.pth, RealESRGAN_x4plus_anime_6B.pth → models/upscale_models/.
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).
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
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).
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.
| 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.ConditioningZeroOut as the negative.EmptySD3LatentImage). ERNIE is a high-res-capable DiT; 1024–2048 on the long edge is reasonable. Use EmptySD3LatentImage for ERNIE latents.ernie-image: bump steps to ~50 and raise cfg (e.g. 3.5–5) since it is not distilled.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 "参る"
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" } }
}
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.
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.
easy cleanGpuUsed / easy clearCacheAll nodes between stages — keep them for the combo/two-pass pipelines so VRAM is freed before swapping models.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.CLIPLoader type is flux2 (not qwen_image/lumina2). The lumina2 type belongs to the Z-Image (Qwen3) encoder, not ERNIE.flux2-vae.safetensors; ae.safetensors is the Z-Image VAE.ModelSamplingAuraFlow shift=3.1 is wired and steps ≥8 for Turbo; for base ernie-image use ~50 steps + higher cfg.qwen-image-edit skill or Flux Kontext for grounded edits.ComfySwitchNode false) when you've written a detailed prompt yourself.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.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Improves the quality of images, especially screenshots, by enhancing resolution, sharpness, and clarity. Perfect for preparing images for presentations, documentation, or social media posts.
Downloads videos from YouTube and other platforms for offline viewing, editing, or archival. Handles various formats and quality options.
Lightweight WSI tile extraction and preprocessing. Use for basic slide processing tissue detection, tile extraction, stain normalization for H&E images. Best for simple pipelines, dataset preparation, quick tile-based analysis. For advanced spatial proteomics, multiplexed imaging, or deep learning pipelines use pathml.
Microscopy data management platform. Access images via Python, retrieve datasets, analyze pixels, manage ROIs/annotations, batch processing, for high-content screening and microscopy workflows.
Python library for working with DICOM (Digital Imaging and Communications in Medicine) files. Use this skill when reading, writing, or modifying medical imaging data in DICOM format, extracting pixel data from medical images (CT, MRI, X-ray, ultrasound), anonymizing DICOM files, working with DICOM metadata and tags, converting DICOM images to other formats, handling compressed DICOM data, or processing medical imaging datasets. Applies to tasks involving medical image analysis, PACS systems, radiology workflows, and healthcare imaging applications.
This skill should be used when working with pre-trained transformer models for natural language processing, computer vision, audio, or multimodal tasks. Use for text generation, classification, question answering, translation, summarization, image classification, object detection, speech recognition, and fine-tuning models on custom datasets.
Take artokun/ernie-image from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.