Files
StyleRef-styleref-comfyui/workflows/z-image/02-consistency-grid.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

1623 lines
27 KiB
JSON

{
"last_node_id": 32,
"last_link_id": 39,
"nodes": [
{
"id": 1,
"type": "Note",
"pos": [
40,
60
],
"size": [
320,
504
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {
"Node name for S&R": "Note"
},
"widgets_values": [
"Z-Image consistency grid \u2014 no account needed.\nOne style feeds three Apply nodes with three subjects; each renders through its own Z-Image sampler. Queue once and compare: one style, many subjects, a coherent set within this model.\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 consistency"
},
{
"id": 2,
"type": "StyleRefLoad",
"pos": [
40,
612
],
"size": [
320,
248
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "style",
"type": "STYLEREF_STYLE",
"links": [
1,
14,
27
],
"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
]
},
{
"id": 3,
"type": "UNETLoader",
"pos": [
40,
908
],
"size": [
320,
140
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
6,
19,
32
],
"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,
1096
],
"size": [
320,
168
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
5,
18,
31
],
"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,
1312
],
"size": [
320,
112
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"links": [
12,
25,
38
],
"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
],
"title": "Subject 1"
},
{
"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 1"
},
{
"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 1"
},
{
"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"
]
},
{
"id": 15,
"type": "StyleRefApply",
"pos": [
420,
796
],
"size": [
320,
424
],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "style",
"type": "STYLEREF_STYLE",
"link": 14
}
],
"outputs": [
{
"name": "positive",
"type": "STRING",
"links": [
15,
17
],
"slot_index": 0
},
{
"name": "negative",
"type": "STRING",
"links": [
16
],
"slot_index": 1
},
{
"name": "attribution",
"type": "STRING",
"links": [],
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "StyleRefApply"
},
"widgets_values": [
"A lone surfer strolled back along the beach at dusk, carrying her large surfing board.",
"diffusion",
"",
false,
"",
true
],
"title": "Subject 2"
},
{
"id": 16,
"type": "PreviewAny",
"pos": [
420,
1268
],
"size": [
320,
84
],
"flags": {},
"order": 15,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 15
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Compiled positive 2"
},
{
"id": 17,
"type": "PreviewAny",
"pos": [
420,
1400
],
"size": [
320,
84
],
"flags": {},
"order": 16,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 16
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Compiled negative 2"
},
{
"id": 18,
"type": "CLIPTextEncode",
"pos": [
800,
654
],
"size": [
320,
198
],
"flags": {},
"order": 17,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 18
},
{
"name": "text",
"type": "STRING",
"link": 17
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
20,
21
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
],
"title": "Positive (from StyleRef)"
},
{
"id": 19,
"type": "ConditioningZeroOut",
"pos": [
800,
900
],
"size": [
320,
84
],
"flags": {},
"order": 18,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 21
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
22
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ConditioningZeroOut"
},
"widgets_values": [],
"title": "Z-Image has no negative"
},
{
"id": 20,
"type": "EmptySD3LatentImage",
"pos": [
800,
1032
],
"size": [
320,
168
],
"flags": {},
"order": 19,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
23
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
1024,
1024,
1
]
},
{
"id": 21,
"type": "KSampler",
"pos": [
1180,
460
],
"size": [
320,
352
],
"flags": {},
"order": 20,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 19
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 20
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 22
},
{
"name": "latent_image",
"type": "LATENT",
"link": 23
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
24
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
0,
"randomize",
8,
1.0,
"euler",
"simple",
1.0
]
},
{
"id": 22,
"type": "VAEDecode",
"pos": [
1560,
376
],
"size": [
320,
108
],
"flags": {},
"order": 21,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 24
},
{
"name": "vae",
"type": "VAE",
"link": 25
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
26
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 23,
"type": "SaveImage",
"pos": [
1560,
532
],
"size": [
320,
112
],
"flags": {},
"order": 22,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 26
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"StyleRef"
]
},
{
"id": 24,
"type": "StyleRefApply",
"pos": [
420,
1532
],
"size": [
320,
424
],
"flags": {},
"order": 23,
"mode": 0,
"inputs": [
{
"name": "style",
"type": "STYLEREF_STYLE",
"link": 27
}
],
"outputs": [
{
"name": "positive",
"type": "STRING",
"links": [
28,
30
],
"slot_index": 0
},
{
"name": "negative",
"type": "STRING",
"links": [
29
],
"slot_index": 1
},
{
"name": "attribution",
"type": "STRING",
"links": [],
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "StyleRefApply"
},
"widgets_values": [
"a roadside diner at night seen from the parking lot",
"diffusion",
"",
false,
"",
true
],
"title": "Subject 3"
},
{
"id": 25,
"type": "PreviewAny",
"pos": [
420,
2004
],
"size": [
320,
84
],
"flags": {},
"order": 24,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 28
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Compiled positive 3"
},
{
"id": 26,
"type": "PreviewAny",
"pos": [
420,
2136
],
"size": [
320,
84
],
"flags": {},
"order": 25,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 29
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Compiled negative 3"
},
{
"id": 27,
"type": "CLIPTextEncode",
"pos": [
800,
1248
],
"size": [
320,
198
],
"flags": {},
"order": 26,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 31
},
{
"name": "text",
"type": "STRING",
"link": 30
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
33,
34
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
],
"title": "Positive (from StyleRef)"
},
{
"id": 28,
"type": "ConditioningZeroOut",
"pos": [
800,
1494
],
"size": [
320,
84
],
"flags": {},
"order": 27,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 34
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
35
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ConditioningZeroOut"
},
"widgets_values": [],
"title": "Z-Image has no negative"
},
{
"id": 29,
"type": "EmptySD3LatentImage",
"pos": [
800,
1626
],
"size": [
320,
168
],
"flags": {},
"order": 28,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
36
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
1024,
1024,
1
]
},
{
"id": 30,
"type": "KSampler",
"pos": [
1180,
860
],
"size": [
320,
352
],
"flags": {},
"order": 29,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 32
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 33
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 35
},
{
"name": "latent_image",
"type": "LATENT",
"link": 36
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
37
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
0,
"randomize",
8,
1.0,
"euler",
"simple",
1.0
]
},
{
"id": 31,
"type": "VAEDecode",
"pos": [
1560,
692
],
"size": [
320,
108
],
"flags": {},
"order": 30,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 37
},
{
"name": "vae",
"type": "VAE",
"link": 38
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
39
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 32,
"type": "SaveImage",
"pos": [
1560,
848
],
"size": [
320,
112
],
"flags": {},
"order": 31,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 39
}
],
"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"
],
[
14,
2,
0,
15,
0,
"STYLEREF_STYLE"
],
[
15,
15,
0,
16,
0,
"STRING"
],
[
16,
15,
1,
17,
0,
"STRING"
],
[
17,
15,
0,
18,
1,
"STRING"
],
[
18,
4,
0,
18,
0,
"CLIP"
],
[
19,
3,
0,
21,
0,
"MODEL"
],
[
20,
18,
0,
21,
1,
"CONDITIONING"
],
[
21,
18,
0,
19,
0,
"CONDITIONING"
],
[
22,
19,
0,
21,
2,
"CONDITIONING"
],
[
23,
20,
0,
21,
3,
"LATENT"
],
[
24,
21,
0,
22,
0,
"LATENT"
],
[
25,
5,
0,
22,
1,
"VAE"
],
[
26,
22,
0,
23,
0,
"IMAGE"
],
[
27,
2,
0,
24,
0,
"STYLEREF_STYLE"
],
[
28,
24,
0,
25,
0,
"STRING"
],
[
29,
24,
1,
26,
0,
"STRING"
],
[
30,
24,
0,
27,
1,
"STRING"
],
[
31,
4,
0,
27,
0,
"CLIP"
],
[
32,
3,
0,
30,
0,
"MODEL"
],
[
33,
27,
0,
30,
1,
"CONDITIONING"
],
[
34,
27,
0,
28,
0,
"CONDITIONING"
],
[
35,
28,
0,
30,
2,
"CONDITIONING"
],
[
36,
29,
0,
30,
3,
"LATENT"
],
[
37,
30,
0,
31,
0,
"LATENT"
],
[
38,
5,
0,
31,
1,
"VAE"
],
[
39,
31,
0,
32,
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"
}
]
}