Files
StyleRef-styleref-comfyui/workflows/z-image/04-reference-images.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

777 lines
14 KiB
JSON

{
"last_node_id": 16,
"last_link_id": 15,
"nodes": [
{
"id": 1,
"type": "Note",
"pos": [
40,
60
],
"size": [
320,
576
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {
"Node name for S&R": "Note"
},
"widgets_values": [
"Z-Image \u2014 style prompt and reference images together.\nStyleRef Apply drives the Z-Image sampler with the style's prompt; StyleRef Reference Images pulls the style's inspiration images out as a batch, previewed alongside. The prompt says how the style reads; the images show how it looks \u2014 wire the images into IPAdapter or a reference-only ControlNet to combine both.\nUse a gallery style that has inspiration images.\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 + references"
},
{
"id": 2,
"type": "StyleRefLoad",
"pos": [
40,
684
],
"size": [
320,
248
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "style",
"type": "STYLEREF_STYLE",
"links": [
1,
3
],
"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 a gallery slug"
},
{
"id": 3,
"type": "UNETLoader",
"pos": [
40,
980
],
"size": [
320,
140
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
8
],
"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,
1168
],
"size": [
320,
168
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
7
],
"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,
1384
],
"size": [
320,
112
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"links": [
14
],
"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": "StyleRefReferenceImages",
"pos": [
420,
60
],
"size": [
320,
136
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "style",
"type": "STYLEREF_STYLE",
"link": 1
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"links": [
2
],
"slot_index": 0
},
{
"name": "count",
"type": "INT",
"links": [],
"slot_index": 1
}
],
"properties": {
"Node name for S&R": "StyleRefReferenceImages"
},
"widgets_values": [
12
],
"title": "Reference images"
},
{
"id": 7,
"type": "PreviewImage",
"pos": [
420,
244
],
"size": [
320,
84
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 2
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewImage"
},
"widgets_values": [],
"title": "Inspiration images"
},
{
"id": 8,
"type": "StyleRefApply",
"pos": [
420,
376
],
"size": [
320,
424
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "style",
"type": "STYLEREF_STYLE",
"link": 3
}
],
"outputs": [
{
"name": "positive",
"type": "STRING",
"links": [
4,
6
],
"slot_index": 0
},
{
"name": "negative",
"type": "STRING",
"links": [
5
],
"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": 9,
"type": "PreviewAny",
"pos": [
420,
848
],
"size": [
320,
84
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 4
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Compiled positive"
},
{
"id": 10,
"type": "PreviewAny",
"pos": [
420,
980
],
"size": [
320,
84
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 5
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Compiled negative"
},
{
"id": 11,
"type": "CLIPTextEncode",
"pos": [
800,
60
],
"size": [
320,
198
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 7
},
{
"name": "text",
"type": "STRING",
"link": 6
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
9,
10
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
],
"title": "Positive (from StyleRef)"
},
{
"id": 12,
"type": "ConditioningZeroOut",
"pos": [
800,
306
],
"size": [
320,
84
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 10
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
11
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ConditioningZeroOut"
},
"widgets_values": [],
"title": "Z-Image has no negative"
},
{
"id": 13,
"type": "EmptySD3LatentImage",
"pos": [
800,
438
],
"size": [
320,
168
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
12
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
1024,
1024,
1
]
},
{
"id": 14,
"type": "KSampler",
"pos": [
1180,
60
],
"size": [
320,
352
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 8
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 9
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 11
},
{
"name": "latent_image",
"type": "LATENT",
"link": 12
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
13
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
0,
"randomize",
8,
1.0,
"euler",
"simple",
1.0
]
},
{
"id": 15,
"type": "VAEDecode",
"pos": [
1560,
60
],
"size": [
320,
108
],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 13
},
{
"name": "vae",
"type": "VAE",
"link": 14
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
15
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 16,
"type": "SaveImage",
"pos": [
1560,
216
],
"size": [
320,
112
],
"flags": {},
"order": 15,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 15
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"StyleRef"
]
}
],
"links": [
[
1,
2,
0,
6,
0,
"STYLEREF_STYLE"
],
[
2,
6,
0,
7,
0,
"IMAGE"
],
[
3,
2,
0,
8,
0,
"STYLEREF_STYLE"
],
[
4,
8,
0,
9,
0,
"STRING"
],
[
5,
8,
1,
10,
0,
"STRING"
],
[
6,
8,
0,
11,
1,
"STRING"
],
[
7,
4,
0,
11,
0,
"CLIP"
],
[
8,
3,
0,
14,
0,
"MODEL"
],
[
9,
11,
0,
14,
1,
"CONDITIONING"
],
[
10,
11,
0,
12,
0,
"CONDITIONING"
],
[
11,
12,
0,
14,
2,
"CONDITIONING"
],
[
12,
13,
0,
14,
3,
"LATENT"
],
[
13,
14,
0,
15,
0,
"LATENT"
],
[
14,
5,
0,
15,
1,
"VAE"
],
[
15,
15,
0,
16,
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"
}
]
}