Files
StyleRef-styleref-comfyui/workflows/z-image/01-quickstart.json
T
BehzadandClaude Sonnet 5 cd36fae865 Run the templates on FLUX, and name the loaded style
The root templates ran on SDXL base, where every gallery style washed out. A
full compiled style is ~480 tokens and SDXL's CLIP attends to ~77 per chunk, so
the style was truncated before the sampler saw it. No checkpoint swap fixes
that, Juggernaut included: it is an SDXL finetune with the same encoder.

Root set now runs FLUX.1 dev (Comfy-Org fp8 all-in-one, since BFL's own file is
UNET-only and CheckpointLoaderSimple cannot load it), compiled from the flux
target, whose T5 encoder takes the whole prompt. FluxGuidance 3.5, CFG 1.0, and
ConditioningZeroOut on the negative input: FLUX is guidance distilled and has no
negative channel, exactly like Z-Image. Uses EmptySD3LatentImage because FLUX
works in a 16-channel latent space.

The two sets load different gallery styles on purpose. How well a style demos is
a property of the style and the model together: Z-Image reproduces painterly
technique and keeps the Renaissance style, FLUX is strongest at light and
tonality and takes a noir one.

Also:

- Adds the reference-images template the root set was missing, and renumbers
  Facets to 05, so both sets are 01-05 with matching names. Both sets are now
  pinned by test against a shared story list.
- Model download metadata moves to each node's properties.models, where ComfyUI
  reads it, so a missing checkpoint offers a download instead of being silently
  substituted.
- The Load node names the style its slug resolves to, on a read-only row under
  style_ref, via a new /styleref/resolve route.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 13:20:07 +02:00

687 lines
13 KiB
JSON

{
"last_node_id": 14,
"last_link_id": 13,
"nodes": [
{
"id": 1,
"type": "Note",
"pos": [
40,
60
],
"size": [
320,
540
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {
"Node name for S&R": "Note"
},
"widgets_values": [
"Z-Image quickstart \u2014 no account needed.\n1. Queue \u2014 the three Z-Image files download on first run.\n2. Change `subject` on StyleRef Apply and queue again (seeds randomize).\nSwap `style_ref` on StyleRef Load for any gallery slug.\n\nZ-Image Turbo (S3-DiT). Three model files download on first use: the UNET (diffusion_models/), the Qwen text encoder (text_encoders/), and the VAE (vae/).\nSampler defaults are turbo: 8 steps, CFG 1.0, euler/simple.\nZ-Image takes no negative prompt. The model runs without classifier-free guidance, so there is no negative encoder on this canvas \u2014 the sampler's negative input gets a zeroed conditioning. StyleRef still compiles the negative and previews it; put anything you need from it into `subject` on Apply as a positive phrase (\"fully clothed\", \"no text or watermark\"). Raising CFG does not bring the negative back.\nStyle prompts use the `diffusion` target \u2014 Z-Image reads the same tag-weighted output SDXL/SD1.5 use."
],
"title": "Z-Image quickstart"
},
{
"id": 2,
"type": "StyleRefLoad",
"pos": [
40,
648
],
"size": [
320,
248
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "style",
"type": "STYLEREF_STYLE",
"links": [
1
],
"slot_index": 0
},
{
"name": "search_results",
"type": "STRING",
"links": [],
"slot_index": 1
}
],
"properties": {
"Node name for S&R": "StyleRefLoad"
},
"widgets_values": [
"sbdlwwly-66ae1a89efdc",
"",
"any",
true,
false
],
"title": "Load \u2014 swap this slug"
},
{
"id": 3,
"type": "UNETLoader",
"pos": [
40,
944
],
"size": [
320,
140
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
6
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "UNETLoader",
"models": [
{
"name": "z_image_turbo_bf16.safetensors",
"url": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/diffusion_models/z_image_turbo_bf16.safetensors",
"directory": "diffusion_models"
}
]
},
"widgets_values": [
"z_image_turbo_bf16.safetensors",
"default"
],
"title": "Z-Image UNET"
},
{
"id": 4,
"type": "CLIPLoader",
"pos": [
40,
1132
],
"size": [
320,
168
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
5
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPLoader",
"models": [
{
"name": "qwen_3_4b.safetensors",
"url": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/text_encoders/qwen_3_4b.safetensors",
"directory": "text_encoders"
}
]
},
"widgets_values": [
"qwen_3_4b.safetensors",
"lumina2",
"default"
],
"title": "Qwen text encoder"
},
{
"id": 5,
"type": "VAELoader",
"pos": [
40,
1348
],
"size": [
320,
112
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"links": [
12
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAELoader",
"models": [
{
"name": "ae.safetensors",
"url": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/vae/ae.safetensors",
"directory": "vae"
}
]
},
"widgets_values": [
"ae.safetensors"
],
"title": "Z-Image VAE"
},
{
"id": 6,
"type": "StyleRefApply",
"pos": [
420,
60
],
"size": [
320,
424
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "style",
"type": "STYLEREF_STYLE",
"link": 1
}
],
"outputs": [
{
"name": "positive",
"type": "STRING",
"links": [
2,
4
],
"slot_index": 0
},
{
"name": "negative",
"type": "STRING",
"links": [
3
],
"slot_index": 1
},
{
"name": "attribution",
"type": "STRING",
"links": [],
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "StyleRefApply"
},
"widgets_values": [
"two friends flipping through crates of vinyl in a record shop",
"diffusion",
"",
false,
"",
true
]
},
{
"id": 7,
"type": "PreviewAny",
"pos": [
420,
532
],
"size": [
320,
84
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 2
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Compiled positive"
},
{
"id": 8,
"type": "PreviewAny",
"pos": [
420,
664
],
"size": [
320,
84
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 3
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Compiled negative"
},
{
"id": 9,
"type": "CLIPTextEncode",
"pos": [
800,
60
],
"size": [
320,
198
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 5
},
{
"name": "text",
"type": "STRING",
"link": 4
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
7,
8
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
],
"title": "Positive (from StyleRef)"
},
{
"id": 10,
"type": "ConditioningZeroOut",
"pos": [
800,
306
],
"size": [
320,
84
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 8
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
9
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ConditioningZeroOut"
},
"widgets_values": [],
"title": "Z-Image has no negative"
},
{
"id": 11,
"type": "EmptySD3LatentImage",
"pos": [
800,
438
],
"size": [
320,
168
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
10
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
1024,
1024,
1
]
},
{
"id": 12,
"type": "KSampler",
"pos": [
1180,
60
],
"size": [
320,
352
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 6
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 7
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 9
},
{
"name": "latent_image",
"type": "LATENT",
"link": 10
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
11
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
0,
"randomize",
8,
1.0,
"euler",
"simple",
1.0
]
},
{
"id": 13,
"type": "VAEDecode",
"pos": [
1560,
60
],
"size": [
320,
108
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 11
},
{
"name": "vae",
"type": "VAE",
"link": 12
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
13
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 14,
"type": "SaveImage",
"pos": [
1560,
216
],
"size": [
320,
112
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 13
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"StyleRef"
]
}
],
"links": [
[
1,
2,
0,
6,
0,
"STYLEREF_STYLE"
],
[
2,
6,
0,
7,
0,
"STRING"
],
[
3,
6,
1,
8,
0,
"STRING"
],
[
4,
6,
0,
9,
1,
"STRING"
],
[
5,
4,
0,
9,
0,
"CLIP"
],
[
6,
3,
0,
12,
0,
"MODEL"
],
[
7,
9,
0,
12,
1,
"CONDITIONING"
],
[
8,
9,
0,
10,
0,
"CONDITIONING"
],
[
9,
10,
0,
12,
2,
"CONDITIONING"
],
[
10,
11,
0,
12,
3,
"LATENT"
],
[
11,
12,
0,
13,
0,
"LATENT"
],
[
12,
5,
0,
13,
1,
"VAE"
],
[
13,
13,
0,
14,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"styleref": {
"notes": "Generated by scripts/build_workflows.py \u2014 edit the script, not this file."
}
},
"version": 0.4,
"models": [
{
"name": "z_image_turbo_bf16.safetensors",
"url": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/diffusion_models/z_image_turbo_bf16.safetensors",
"directory": "diffusion_models"
},
{
"name": "qwen_3_4b.safetensors",
"url": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/text_encoders/qwen_3_4b.safetensors",
"directory": "text_encoders"
},
{
"name": "ae.safetensors",
"url": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/vae/ae.safetensors",
"directory": "vae"
}
]
}