comfyui/Qwen-Image-2.1-viggle-turbo-v0.3-6step-merged-t2i.json
67.6 KB · 2629 lines · json Raw
1 {
2 "id": "efae2610-5aac-4ec2-96cd-94c13a4c8c01",
3 "revision": 0,
4 "last_node_id": 24,
5 "last_link_id": 31,
6 "nodes": [
7 {
8 "id": 1,
9 "type": "MarkdownNote",
10 "pos": [
11 0,
12 0
13 ],
14 "size": [
15 460,
16 760
17 ],
18 "flags": {},
19 "order": 0,
20 "mode": 0,
21 "showAdvanced": null,
22 "inputs": [],
23 "outputs": [],
24 "properties": {},
25 "widgets_values": [
26 "## Qwen-Image-2.1 Viggle Turbo · text to image · single file\n\n6-step distilled Qwen-Image-2.1 (v0.3) with the LoRA already merged into the diffusion model. CFG is off, so each step is one model call.\n\n**Files:**\n- `diffusion_models/Qwen-Image-2.1-viggle-turbo-v0.3-6step-int8_convrot.safetensors` from this repo. Other sizes are in the model card's file table; pick one in the loader.\n- `text_encoders/qwen3vl_8b_int8_convrot.safetensors` (or `qwen3vl_8b_bf16.safetensors`), from Comfy-Org/Qwen-Image-2.1\n- `vae/qwen_image_2.1_vae_bf16.safetensors`, from Comfy-Org/Qwen-Image-2.1\n\n**Custom nodes:** copy `viggle_turbo.py` into `ComfyUI/custom_nodes/` and restart ComfyUI. Its *Viggle Turbo Sigmas* node is the 6-step schedule the model is sampled on, shifted for the output resolution; a stock KSampler scheduler does not match it. Change the step count only at the high-noise end (see the model card).\n\nThe LoRA was merged in fp32 before quantizing, so this file keeps the update that merging into bf16 or int8 weights in ComfyUI would lose. Don't add the LoRA again.\n\n**Keep:** euler, BasicGuider (no CFG, no negative prompt).\n**Prompt enhancer:** the model was distilled on long, descriptive prompts. With *Enhance prompt* on, the Qwen3-VL text encoder rewrites your prompt using the official Qwen-Image-2.1 rewriter system prompt (greedy decoding, a few seconds). *Prompt used* shows the result. If the rewrite doesn't parse, your prompt is used as written. Turn the enhancer off for prompts that are already detailed. `thinking` is on only so that ComfyUI doesn't append an empty think block, which matches the model's own chat template.\n\n**Size:** about 1 MP is the sweet spot, and up to about 4 MP works. Keep width and height at multiples of 16 (the *Output size* node uses 32).\n"
27 ],
28 "widgets_values_named": {
29 "text": "## Qwen-Image-2.1 Viggle Turbo · text to image · single file\n\n6-step distilled Qwen-Image-2.1 (v0.3) with the LoRA already merged into the diffusion model. CFG is off, so each step is one model call.\n\n**Files:**\n- `diffusion_models/Qwen-Image-2.1-viggle-turbo-v0.3-6step-int8_convrot.safetensors` from this repo. Other sizes are in the model card's file table; pick one in the loader.\n- `text_encoders/qwen3vl_8b_int8_convrot.safetensors` (or `qwen3vl_8b_bf16.safetensors`), from Comfy-Org/Qwen-Image-2.1\n- `vae/qwen_image_2.1_vae_bf16.safetensors`, from Comfy-Org/Qwen-Image-2.1\n\n**Custom nodes:** copy `viggle_turbo.py` into `ComfyUI/custom_nodes/` and restart ComfyUI. Its *Viggle Turbo Sigmas* node is the 6-step schedule the model is sampled on, shifted for the output resolution; a stock KSampler scheduler does not match it. Change the step count only at the high-noise end (see the model card).\n\nThe LoRA was merged in fp32 before quantizing, so this file keeps the update that merging into bf16 or int8 weights in ComfyUI would lose. Don't add the LoRA again.\n\n**Keep:** euler, BasicGuider (no CFG, no negative prompt).\n**Prompt enhancer:** the model was distilled on long, descriptive prompts. With *Enhance prompt* on, the Qwen3-VL text encoder rewrites your prompt using the official Qwen-Image-2.1 rewriter system prompt (greedy decoding, a few seconds). *Prompt used* shows the result. If the rewrite doesn't parse, your prompt is used as written. Turn the enhancer off for prompts that are already detailed. `thinking` is on only so that ComfyUI doesn't append an empty think block, which matches the model's own chat template.\n\n**Size:** about 1 MP is the sweet spot, and up to about 4 MP works. Keep width and height at multiples of 16 (the *Output size* node uses 32).\n"
30 },
31 "color": "#432",
32 "bgcolor": "#653"
33 },
34 {
35 "id": 2,
36 "type": "UNETLoader",
37 "pos": [
38 540,
39 0
40 ],
41 "size": [
42 320,
43 82
44 ],
45 "flags": {},
46 "order": 1,
47 "mode": 0,
48 "showAdvanced": null,
49 "inputs": [
50 {
51 "color_off": null,
52 "color_on": null,
53 "dir": null,
54 "label": null,
55 "localized_name": "unet_name",
56 "locked": null,
57 "name": "unet_name",
58 "nameLocked": null,
59 "removable": null,
60 "shape": null,
61 "type": "COMBO",
62 "widget": {
63 "name": "unet_name"
64 },
65 "link": null
66 },
67 {
68 "color_off": null,
69 "color_on": null,
70 "dir": null,
71 "label": null,
72 "localized_name": "weight_dtype",
73 "locked": null,
74 "name": "weight_dtype",
75 "nameLocked": null,
76 "removable": null,
77 "shape": null,
78 "type": "COMBO",
79 "widget": {
80 "name": "weight_dtype"
81 },
82 "link": null
83 }
84 ],
85 "outputs": [
86 {
87 "color_off": null,
88 "color_on": null,
89 "dir": null,
90 "label": null,
91 "localized_name": "MODEL",
92 "locked": null,
93 "name": "MODEL",
94 "nameLocked": null,
95 "removable": null,
96 "shape": null,
97 "type": "MODEL",
98 "pos": null,
99 "slot_index": null,
100 "links": [
101 27
102 ]
103 }
104 ],
105 "properties": {
106 "Node name for S&R": "UNETLoader",
107 "models": [
108 {
109 "name": "Qwen-Image-2.1-viggle-turbo-v0.3-6step-int8_convrot.safetensors",
110 "url": "https://huggingface.co/Viggle/Qwen-Image-2.1-viggle-turbo/resolve/main/Qwen-Image-2.1-viggle-turbo-v0.3-6step-int8_convrot.safetensors",
111 "directory": "diffusion_models"
112 }
113 ]
114 },
115 "widgets_values": [
116 "Qwen-Image-2.1-viggle-turbo-v0.3-6step-int8_convrot.safetensors",
117 "default"
118 ],
119 "widgets_values_named": {
120 "unet_name": "Qwen-Image-2.1-viggle-turbo-v0.3-6step-int8_convrot.safetensors",
121 "weight_dtype": "default"
122 }
123 },
124 {
125 "id": 3,
126 "type": "CLIPLoader",
127 "pos": [
128 540,
129 172
130 ],
131 "size": [
132 320,
133 106
134 ],
135 "flags": {},
136 "order": 2,
137 "mode": 0,
138 "showAdvanced": null,
139 "inputs": [
140 {
141 "color_off": null,
142 "color_on": null,
143 "dir": null,
144 "label": null,
145 "localized_name": "clip_name",
146 "locked": null,
147 "name": "clip_name",
148 "nameLocked": null,
149 "removable": null,
150 "shape": null,
151 "type": "COMBO",
152 "widget": {
153 "name": "clip_name"
154 },
155 "link": null
156 },
157 {
158 "color_off": null,
159 "color_on": null,
160 "dir": null,
161 "label": null,
162 "localized_name": "type",
163 "locked": null,
164 "name": "type",
165 "nameLocked": null,
166 "removable": null,
167 "shape": null,
168 "type": "COMBO",
169 "widget": {
170 "name": "type"
171 },
172 "link": null
173 },
174 {
175 "color_off": null,
176 "color_on": null,
177 "dir": null,
178 "label": null,
179 "localized_name": "device",
180 "locked": null,
181 "name": "device",
182 "nameLocked": null,
183 "removable": null,
184 "shape": 7,
185 "type": "COMBO",
186 "widget": {
187 "name": "device"
188 },
189 "link": null
190 }
191 ],
192 "outputs": [
193 {
194 "color_off": null,
195 "color_on": null,
196 "dir": null,
197 "label": null,
198 "localized_name": "CLIP",
199 "locked": null,
200 "name": "CLIP",
201 "nameLocked": null,
202 "removable": null,
203 "shape": null,
204 "type": "CLIP",
205 "pos": null,
206 "slot_index": null,
207 "links": [
208 1,
209 2
210 ]
211 }
212 ],
213 "properties": {
214 "Node name for S&R": "CLIPLoader",
215 "models": [
216 {
217 "name": "qwen3vl_8b_int8_convrot.safetensors",
218 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors",
219 "directory": "text_encoders"
220 }
221 ]
222 },
223 "widgets_values": [
224 "qwen3vl_8b_int8_convrot.safetensors",
225 "qwen_image",
226 "default"
227 ],
228 "widgets_values_named": {
229 "clip_name": "qwen3vl_8b_int8_convrot.safetensors",
230 "type": "qwen_image",
231 "device": "default"
232 }
233 },
234 {
235 "id": 4,
236 "type": "VAELoader",
237 "pos": [
238 540,
239 368
240 ],
241 "size": [
242 320,
243 58
244 ],
245 "flags": {},
246 "order": 3,
247 "mode": 0,
248 "showAdvanced": null,
249 "inputs": [
250 {
251 "color_off": null,
252 "color_on": null,
253 "dir": null,
254 "label": null,
255 "localized_name": "vae_name",
256 "locked": null,
257 "name": "vae_name",
258 "nameLocked": null,
259 "removable": null,
260 "shape": null,
261 "type": "COMBO",
262 "widget": {
263 "name": "vae_name"
264 },
265 "link": null
266 }
267 ],
268 "outputs": [
269 {
270 "color_off": null,
271 "color_on": null,
272 "dir": null,
273 "label": null,
274 "localized_name": "VAE",
275 "locked": null,
276 "name": "VAE",
277 "nameLocked": null,
278 "removable": null,
279 "shape": null,
280 "type": "VAE",
281 "pos": null,
282 "slot_index": null,
283 "links": [
284 3,
285 4
286 ]
287 }
288 ],
289 "properties": {
290 "Node name for S&R": "VAELoader",
291 "models": [
292 {
293 "name": "qwen_image_2.1_vae_bf16.safetensors",
294 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/vae/qwen_image_2.1_vae_bf16.safetensors",
295 "directory": "vae"
296 }
297 ]
298 },
299 "widgets_values": [
300 "qwen_image_2.1_vae_bf16.safetensors"
301 ],
302 "widgets_values_named": {
303 "vae_name": "qwen_image_2.1_vae_bf16.safetensors"
304 }
305 },
306 {
307 "id": 5,
308 "type": "PrimitiveStringMultiline",
309 "pos": [
310 940,
311 0
312 ],
313 "size": [
314 440,
315 220
316 ],
317 "flags": {},
318 "order": 4,
319 "mode": 0,
320 "showAdvanced": null,
321 "inputs": [
322 {
323 "color_off": null,
324 "color_on": null,
325 "dir": null,
326 "label": null,
327 "localized_name": "value",
328 "locked": null,
329 "name": "value",
330 "nameLocked": null,
331 "removable": null,
332 "shape": null,
333 "type": "STRING",
334 "widget": {
335 "name": "value"
336 },
337 "link": null
338 }
339 ],
340 "outputs": [
341 {
342 "color_off": null,
343 "color_on": null,
344 "dir": null,
345 "label": null,
346 "localized_name": "STRING",
347 "locked": null,
348 "name": "STRING",
349 "nameLocked": null,
350 "removable": null,
351 "shape": null,
352 "type": "STRING",
353 "pos": null,
354 "slot_index": null,
355 "links": [
356 7,
357 13,
358 15
359 ]
360 }
361 ],
362 "title": "Prompt",
363 "properties": {
364 "Node name for S&R": "PrimitiveStringMultiline"
365 },
366 "widgets_values": [
367 "Soaking wet capybara taking shelter under a banana leaf in the rainy jungle, close up photo"
368 ],
369 "widgets_values_named": {
370 "value": "Soaking wet capybara taking shelter under a banana leaf in the rainy jungle, close up photo"
371 }
372 },
373 {
374 "id": 6,
375 "type": "ResolutionSelector",
376 "pos": [
377 940,
378 310
379 ],
380 "size": [
381 320,
382 150
383 ],
384 "flags": {},
385 "order": 5,
386 "mode": 0,
387 "showAdvanced": null,
388 "inputs": [
389 {
390 "color_off": null,
391 "color_on": null,
392 "dir": null,
393 "label": null,
394 "localized_name": "aspect_ratio",
395 "locked": null,
396 "name": "aspect_ratio",
397 "nameLocked": null,
398 "removable": null,
399 "shape": null,
400 "type": "COMBO",
401 "widget": {
402 "name": "aspect_ratio"
403 },
404 "link": null
405 },
406 {
407 "color_off": null,
408 "color_on": null,
409 "dir": null,
410 "label": null,
411 "localized_name": "megapixels",
412 "locked": null,
413 "name": "megapixels",
414 "nameLocked": null,
415 "removable": null,
416 "shape": null,
417 "type": "FLOAT",
418 "widget": {
419 "name": "megapixels"
420 },
421 "link": null
422 },
423 {
424 "color_off": null,
425 "color_on": null,
426 "dir": null,
427 "label": null,
428 "localized_name": "multiple",
429 "locked": null,
430 "name": "multiple",
431 "nameLocked": null,
432 "removable": null,
433 "shape": null,
434 "type": "INT",
435 "widget": {
436 "name": "multiple"
437 },
438 "link": null
439 },
440 {
441 "color_off": null,
442 "color_on": null,
443 "dir": null,
444 "label": null,
445 "localized_name": "preview",
446 "locked": null,
447 "name": "preview",
448 "nameLocked": null,
449 "removable": null,
450 "shape": 7,
451 "type": "RESOLUTION_PREVIEW",
452 "widget": {
453 "name": "preview"
454 },
455 "link": null
456 }
457 ],
458 "outputs": [
459 {
460 "color_off": null,
461 "color_on": null,
462 "dir": null,
463 "label": null,
464 "localized_name": "width",
465 "locked": null,
466 "name": "width",
467 "nameLocked": null,
468 "removable": null,
469 "shape": null,
470 "type": "INT",
471 "pos": null,
472 "slot_index": null,
473 "links": [
474 5,
475 28
476 ]
477 },
478 {
479 "color_off": null,
480 "color_on": null,
481 "dir": null,
482 "label": null,
483 "localized_name": "height",
484 "locked": null,
485 "name": "height",
486 "nameLocked": null,
487 "removable": null,
488 "shape": null,
489 "type": "INT",
490 "pos": null,
491 "slot_index": null,
492 "links": [
493 6,
494 29
495 ]
496 }
497 ],
498 "title": "Output size",
499 "properties": {
500 "Node name for S&R": "ResolutionSelector"
501 },
502 "widgets_values": [
503 "3:2 (Photo)",
504 1,
505 32
506 ],
507 "widgets_values_named": {
508 "aspect_ratio": "3:2 (Photo)",
509 "megapixels": 1,
510 "multiple": 32
511 }
512 },
513 {
514 "id": 7,
515 "type": "EmptyLatentImage",
516 "pos": [
517 940,
518 550
519 ],
520 "size": [
521 320,
522 106
523 ],
524 "flags": {},
525 "order": 6,
526 "mode": 0,
527 "showAdvanced": null,
528 "inputs": [
529 {
530 "color_off": null,
531 "color_on": null,
532 "dir": null,
533 "label": null,
534 "localized_name": "width",
535 "locked": null,
536 "name": "width",
537 "nameLocked": null,
538 "removable": null,
539 "shape": null,
540 "type": "INT",
541 "widget": {
542 "name": "width"
543 },
544 "link": 5
545 },
546 {
547 "color_off": null,
548 "color_on": null,
549 "dir": null,
550 "label": null,
551 "localized_name": "height",
552 "locked": null,
553 "name": "height",
554 "nameLocked": null,
555 "removable": null,
556 "shape": null,
557 "type": "INT",
558 "widget": {
559 "name": "height"
560 },
561 "link": 6
562 },
563 {
564 "color_off": null,
565 "color_on": null,
566 "dir": null,
567 "label": null,
568 "localized_name": "batch_size",
569 "locked": null,
570 "name": "batch_size",
571 "nameLocked": null,
572 "removable": null,
573 "shape": null,
574 "type": "INT",
575 "widget": {
576 "name": "batch_size"
577 },
578 "link": null
579 }
580 ],
581 "outputs": [
582 {
583 "color_off": null,
584 "color_on": null,
585 "dir": null,
586 "label": null,
587 "localized_name": "LATENT",
588 "locked": null,
589 "name": "LATENT",
590 "nameLocked": null,
591 "removable": null,
592 "shape": null,
593 "type": "LATENT",
594 "pos": null,
595 "slot_index": null,
596 "links": [
597 30,
598 31
599 ]
600 }
601 ],
602 "properties": {
603 "Node name for S&R": "EmptyLatentImage"
604 },
605 "widgets_values": [
606 1024,
607 1024,
608 1
609 ],
610 "widgets_values_named": {
611 "width": 1024,
612 "height": 1024,
613 "batch_size": 1
614 }
615 },
616 {
617 "id": 8,
618 "type": "PrimitiveBoolean",
619 "pos": [
620 1460,
621 0
622 ],
623 "size": [
624 320,
625 58
626 ],
627 "flags": {},
628 "order": 7,
629 "mode": 0,
630 "showAdvanced": null,
631 "inputs": [
632 {
633 "color_off": null,
634 "color_on": null,
635 "dir": null,
636 "label": null,
637 "localized_name": "value",
638 "locked": null,
639 "name": "value",
640 "nameLocked": null,
641 "removable": null,
642 "shape": null,
643 "type": "BOOLEAN",
644 "widget": {
645 "name": "value"
646 },
647 "link": null
648 }
649 ],
650 "outputs": [
651 {
652 "color_off": null,
653 "color_on": null,
654 "dir": null,
655 "label": null,
656 "localized_name": "BOOLEAN",
657 "locked": null,
658 "name": "BOOLEAN",
659 "nameLocked": null,
660 "removable": null,
661 "shape": null,
662 "type": "BOOLEAN",
663 "pos": null,
664 "slot_index": null,
665 "links": [
666 17
667 ]
668 }
669 ],
670 "title": "Enhance prompt",
671 "properties": {
672 "Node name for S&R": "PrimitiveBoolean"
673 },
674 "widgets_values": [
675 true
676 ],
677 "widgets_values_named": {
678 "value": true
679 }
680 },
681 {
682 "id": 9,
683 "type": "PrimitiveStringMultiline",
684 "pos": [
685 1460,
686 148
687 ],
688 "size": [
689 440,
690 180
691 ],
692 "flags": {},
693 "order": 8,
694 "mode": 0,
695 "showAdvanced": null,
696 "inputs": [
697 {
698 "color_off": null,
699 "color_on": null,
700 "dir": null,
701 "label": null,
702 "localized_name": "value",
703 "locked": null,
704 "name": "value",
705 "nameLocked": null,
706 "removable": null,
707 "shape": null,
708 "type": "STRING",
709 "widget": {
710 "name": "value"
711 },
712 "link": null
713 }
714 ],
715 "outputs": [
716 {
717 "color_off": null,
718 "color_on": null,
719 "dir": null,
720 "label": null,
721 "localized_name": "STRING",
722 "locked": null,
723 "name": "STRING",
724 "nameLocked": null,
725 "removable": null,
726 "shape": null,
727 "type": "STRING",
728 "pos": null,
729 "slot_index": null,
730 "links": [
731 8
732 ]
733 }
734 ],
735 "title": "PE system prompt (official Qwen-Image-2.1 T2I rewriter)",
736 "properties": {
737 "Node name for S&R": "PrimitiveStringMultiline"
738 },
739 "widgets_values": [
740 "# Image Prompt Rewriting Expert\n\nYou turn a user's image request into one long English paragraph that describes the\nfinished image as if you were looking at it, plus the aspect ratio it should be\nrendered at. You are not talking to the user and not talking to a renderer: you are\nan observer reporting what is in the frame.\n\nWork through the eight steps below in order. Each step commits one decision; later\nsteps never revise an earlier one.\n\n## Step 1 — Read the brief and split it in two\n\nList what the user has fixed and what they have left open.\n\nFixed, and it must survive into your description unchanged: every string of text\nthey want shown, every named object, every count, every stated colour, every stated\nposition, and the aspect ratio if they gave one. Copy their text strings character\nfor character, in their own script, including punctuation and spacing.\n\nA third thing they may give you is an instruction about the job rather than about the\npicture — \"use double quotes\", \"no hard-edged blocks\", \"4K, no noise\", \"make sure the\ntext is sharp\". That is not content. Obey it silently where it applies and never echo\nit: the description states what is in the frame, never what must be done.\n\nOpen, and you must decide it: everything they did not mention. A three-word request\nand a three-hundred-word request both become a description of the same size, so a\nshort brief means you are inventing most of the frame, not writing less.\n\n## Step 2 — Fix the frame\n\nDecide the orientation from the subject, then pick the ratio.\n\nIf the user states a ratio, use it. Otherwise: `3:2` for anything horizontal and\n`2:3` for anything vertical — these are the two defaults and cover most images.\nUse `1:1` for a square badge, icon, album cover or single centred emblem, `16:9`\nfor a wide cinematic or presentation frame, `1:2` or `9:16` for a phone screen or a\ntall standing banner. `3:4`, `2:1`, `21:9`, `4:3`, `9:21`, `4:5`, `3:1`, `5:4`,\n`1:3` exist but only when the subject or the user really calls for them.\n\nThe ratio lives only in the `wh_ratio` field. Never write a ratio, a resolution, or\na pixel count into the description itself.\n\n## Step 3 — Write the opening sentence\n\nOne sentence, around twenty words. Name the medium, the style, the subject, and the\nbackground or palette; usually name the orientation too:\n\n`The image is a ⟨vertical / wide / square / tall⟩ ⟨style⟩ ⟨photograph · poster · illustration · scene · portrait · infographic · close-up · graphic · page · card · sheet · logo⟩ of ⟨subject⟩, ⟨the background and its palette⟩.`\n\n`This is a …` or a bare `A vertical realistic photograph of …` work equally well. The\nmedium noun is the one part that is never omitted.\n\nThe style word goes here — realistic, photorealistic, minimalist, flat-vector,\ncinematic, watercolour, isometric, editorial, hand-drawn, 3D-rendered, retro. Name\nit once here; you may echo it in the closing sentence.\n\n## Step 4 — Inventory before you write\n\nBefore any more prose, settle two lists.\n\nEvery element that will appear, each with a place in the frame: upper-left,\nacross the top, on the far right, in the lower-third, in the centre, in front of,\nbehind, tucked into the corner. You will need eight to fourteen such positional\nphrases, about ten typically, and they must reach the corners, the edges and the\ncentre — not cluster in the middle.\n\nEvery piece of text that will be legible in the image, in reading order.\n\n## Step 5 — Walk the frame\n\nNow describe it in order. Which order depends on how the frame is filled.\n\n**If the frame is divided into regions** — a poster, a page, an interface, a layout, a\nwide scene with several things in it — walk the regions:\n\n1. The background and the surface it sits on — this comes immediately after the\n opening sentence, not at the end.\n2. The top band: headline, header bar, sky, ceiling, whatever occupies the top edge.\n3. Down and across the body of the frame: left side, then centre, then right side.\n Give each region one or two sentences.\n4. The bottom band: footer, foreground, ground plane, base row.\n\n**If one subject fills the frame** — a portrait, a close-up, a single object — walk\nthe subject instead: the background and how far it falls off, then the subject's pose\nand where it is placed in the frame, then head and face, then body and each garment or\nsurface, then what is held or touching it, then whatever little is left at the edges.\nKeep using positional phrases inside the subject — in the upper-left of the frame,\nbehind the left shoulder, along the lower edge — so the frame stays locatable.\n\nRoughly a third of your sentences should open on the positional phrase itself —\n\"On the right side of the frame, …\", \"In the upper-left corner, …\", \"Across the\nlower third, …\" — so the reader always knows where they are looking.\n\nKeep it to one paragraph. Break to a new paragraph only when the image is genuinely\nbuilt from stacked regions — panels, cards, sections, slides — and then one\nparagraph per region, each opening on where that region sits.\n\n## Step 6 — Set every piece of text\n\nSkip this step if nothing in the image is meant to be read — a third of images have\nno legible text at all, and inventing signage for them is a mistake.\n\nOtherwise, for each string from your Step 4 list, in reading order, name where it sits,\nwhat it looks like, and what it says: `a bold black headline across the top reads \"…\"`.\n\nPut the string in straight double quotes, in its own script — Chinese, Russian,\nKorean, Japanese and Arabic text stays in Chinese, Russian, Korean, Japanese and\nArabic. Give its weight, colour, case and relative size. Describe a line break as a\nsecond line rather than putting a real newline inside the string. If a mark is not meant\nto be read — distant signage, a label behind glass, dense body copy — call it\nblurred, indistinct, or too small to read rather than inventing letters. If the image contains a chart\nor a table, its axes, tick labels, legend entries, series and cell values are text\ntoo: write them out.\n\n## Step 7 — Give the lighting its own sentence\n\nEvery image has light in it, and the description always accounts for it: the source,\nits direction, its quality, and the shadows and highlights it leaves. Soft diffused\ndaylight from a window on the left, hard overhead studio light, warm low sun, flat\neven ambient light for a diagram.\n\nOnce the contents are placed, give it a sentence of its own — `The lighting is …` —\nor, if the light is what makes a particular surface look the way it does, fold it into\nthat surface's sentence. Either way it is stated explicitly, not left implied.\n\n## Step 8 — Close with the whole frame\n\nEnd on a single sentence that steps back:\n\n`The overall composition ⟨is / uses / feels⟩ …`\n\n`The composition is …`, `The overall design …`, `The overall mood …`, `The overall\npalette …` and `The image has …` are the same move. Cover balance and symmetry, the\npalette, the style, and the mood in that one sentence. Write exactly one such\nsentence — do not follow it with a second summary.\n\n## Throughout\n\n**Size.** The description runs about twenty sentences and four to five hundred words,\nroughly twenty-five words a sentence. That is the same size whether the brief was three\nwords or three hundred: a dense frame with many regions and a lot of text runs longer, a\nsingle quiet subject runs shorter, but a thin brief never buys a thin description.\n\n**Observe, don't instruct.** Present tense, third person, declarative. No \"you\", no\n\"create\", no \"make sure\", no \"the AI should\". No quality boosters — no \"masterpiece\",\n\"8K\", \"highly detailed\", \"award-winning\".\n\n**Hedge what you cannot be certain of.** An observer describing a picture says\n\"appears to be\", \"likely\", \"suggesting\", and offers a pair — \"a notebook\nor a tablet\", \"wood or dark laminate\" — when the thing is genuinely ambiguous. Do\nthis often; it is the natural register here. Be flatly definite only about what the\nuser fixed.\n\n**Name colours with a modifier, almost never bare.** Deep navy, muted olive, pale\ncream, warm terracotta, soft dusty rose, blue-grey, off-white, charcoal, brownish-\ngreen. Hex codes only if the user gave them.\n\n**Give the material, not just the noun.** Brushed metal, matte plastic, glossy\nceramic, coarse linen, weathered wood, frosted glass, grain, scuffs, condensation,\nvisible brush strokes, paper fibre.\n\n**Enumerate; never summarise.** \"Several items\" and \"various decorations\" are not\ndescriptions. Say what each thing is. Write small counts as words — three, five,\ntwelve — and if something is partly hidden, say so and describe the visible part.\n\n**People get their observable surface.** Build, posture, where they are looking,\nexpression, hair, skin tone, and each garment with its colour and material. Age is a\nlife stage or a decade — a child, a teenager, a young adult, middle-aged, elderly,\nin her thirties — never a number of years. If a face is turned away or cropped, say\nthat instead of describing it.\n\n**Objects by class, not by brand.** A silver laptop, a mirrorless camera, a compact\nhatchback — unless the user named the brand. Photographic and design vocabulary is\nwelcome: shallow depth of field, bokeh, backlit, close-up, negative space,\ngrid, drop shadow.\n\n**Everything holds together physically.** Shadows fall away from the light, reflections\nmatch what is in front of the surface, scale is consistent between neighbouring\nobjects, and a surface reacts to what sits on it. If the user asked for something\nimpossible, describe it as the image shows it and let the rest of the scene stay\ncoherent around it.\n\n## Language\n\nThe description is always in English, whatever language the request arrives in. The\nonly exception is text shown inside the image, which stays in its own script.\n\n## Output format\n\nReturn one strictly valid JSON object on a single line, nothing before or after:\n\n{\"rewritten_prompt\": \"<the description>\", \"wh_ratio\": \"<e.g. 3:2>\"}"
741 ],
742 "widgets_values_named": {
743 "value": "# Image Prompt Rewriting Expert\n\nYou turn a user's image request into one long English paragraph that describes the\nfinished image as if you were looking at it, plus the aspect ratio it should be\nrendered at. You are not talking to the user and not talking to a renderer: you are\nan observer reporting what is in the frame.\n\nWork through the eight steps below in order. Each step commits one decision; later\nsteps never revise an earlier one.\n\n## Step 1 — Read the brief and split it in two\n\nList what the user has fixed and what they have left open.\n\nFixed, and it must survive into your description unchanged: every string of text\nthey want shown, every named object, every count, every stated colour, every stated\nposition, and the aspect ratio if they gave one. Copy their text strings character\nfor character, in their own script, including punctuation and spacing.\n\nA third thing they may give you is an instruction about the job rather than about the\npicture — \"use double quotes\", \"no hard-edged blocks\", \"4K, no noise\", \"make sure the\ntext is sharp\". That is not content. Obey it silently where it applies and never echo\nit: the description states what is in the frame, never what must be done.\n\nOpen, and you must decide it: everything they did not mention. A three-word request\nand a three-hundred-word request both become a description of the same size, so a\nshort brief means you are inventing most of the frame, not writing less.\n\n## Step 2 — Fix the frame\n\nDecide the orientation from the subject, then pick the ratio.\n\nIf the user states a ratio, use it. Otherwise: `3:2` for anything horizontal and\n`2:3` for anything vertical — these are the two defaults and cover most images.\nUse `1:1` for a square badge, icon, album cover or single centred emblem, `16:9`\nfor a wide cinematic or presentation frame, `1:2` or `9:16` for a phone screen or a\ntall standing banner. `3:4`, `2:1`, `21:9`, `4:3`, `9:21`, `4:5`, `3:1`, `5:4`,\n`1:3` exist but only when the subject or the user really calls for them.\n\nThe ratio lives only in the `wh_ratio` field. Never write a ratio, a resolution, or\na pixel count into the description itself.\n\n## Step 3 — Write the opening sentence\n\nOne sentence, around twenty words. Name the medium, the style, the subject, and the\nbackground or palette; usually name the orientation too:\n\n`The image is a ⟨vertical / wide / square / tall⟩ ⟨style⟩ ⟨photograph · poster · illustration · scene · portrait · infographic · close-up · graphic · page · card · sheet · logo⟩ of ⟨subject⟩, ⟨the background and its palette⟩.`\n\n`This is a …` or a bare `A vertical realistic photograph of …` work equally well. The\nmedium noun is the one part that is never omitted.\n\nThe style word goes here — realistic, photorealistic, minimalist, flat-vector,\ncinematic, watercolour, isometric, editorial, hand-drawn, 3D-rendered, retro. Name\nit once here; you may echo it in the closing sentence.\n\n## Step 4 — Inventory before you write\n\nBefore any more prose, settle two lists.\n\nEvery element that will appear, each with a place in the frame: upper-left,\nacross the top, on the far right, in the lower-third, in the centre, in front of,\nbehind, tucked into the corner. You will need eight to fourteen such positional\nphrases, about ten typically, and they must reach the corners, the edges and the\ncentre — not cluster in the middle.\n\nEvery piece of text that will be legible in the image, in reading order.\n\n## Step 5 — Walk the frame\n\nNow describe it in order. Which order depends on how the frame is filled.\n\n**If the frame is divided into regions** — a poster, a page, an interface, a layout, a\nwide scene with several things in it — walk the regions:\n\n1. The background and the surface it sits on — this comes immediately after the\n opening sentence, not at the end.\n2. The top band: headline, header bar, sky, ceiling, whatever occupies the top edge.\n3. Down and across the body of the frame: left side, then centre, then right side.\n Give each region one or two sentences.\n4. The bottom band: footer, foreground, ground plane, base row.\n\n**If one subject fills the frame** — a portrait, a close-up, a single object — walk\nthe subject instead: the background and how far it falls off, then the subject's pose\nand where it is placed in the frame, then head and face, then body and each garment or\nsurface, then what is held or touching it, then whatever little is left at the edges.\nKeep using positional phrases inside the subject — in the upper-left of the frame,\nbehind the left shoulder, along the lower edge — so the frame stays locatable.\n\nRoughly a third of your sentences should open on the positional phrase itself —\n\"On the right side of the frame, …\", \"In the upper-left corner, …\", \"Across the\nlower third, …\" — so the reader always knows where they are looking.\n\nKeep it to one paragraph. Break to a new paragraph only when the image is genuinely\nbuilt from stacked regions — panels, cards, sections, slides — and then one\nparagraph per region, each opening on where that region sits.\n\n## Step 6 — Set every piece of text\n\nSkip this step if nothing in the image is meant to be read — a third of images have\nno legible text at all, and inventing signage for them is a mistake.\n\nOtherwise, for each string from your Step 4 list, in reading order, name where it sits,\nwhat it looks like, and what it says: `a bold black headline across the top reads \"…\"`.\n\nPut the string in straight double quotes, in its own script — Chinese, Russian,\nKorean, Japanese and Arabic text stays in Chinese, Russian, Korean, Japanese and\nArabic. Give its weight, colour, case and relative size. Describe a line break as a\nsecond line rather than putting a real newline inside the string. If a mark is not meant\nto be read — distant signage, a label behind glass, dense body copy — call it\nblurred, indistinct, or too small to read rather than inventing letters. If the image contains a chart\nor a table, its axes, tick labels, legend entries, series and cell values are text\ntoo: write them out.\n\n## Step 7 — Give the lighting its own sentence\n\nEvery image has light in it, and the description always accounts for it: the source,\nits direction, its quality, and the shadows and highlights it leaves. Soft diffused\ndaylight from a window on the left, hard overhead studio light, warm low sun, flat\neven ambient light for a diagram.\n\nOnce the contents are placed, give it a sentence of its own — `The lighting is …` —\nor, if the light is what makes a particular surface look the way it does, fold it into\nthat surface's sentence. Either way it is stated explicitly, not left implied.\n\n## Step 8 — Close with the whole frame\n\nEnd on a single sentence that steps back:\n\n`The overall composition ⟨is / uses / feels⟩ …`\n\n`The composition is …`, `The overall design …`, `The overall mood …`, `The overall\npalette …` and `The image has …` are the same move. Cover balance and symmetry, the\npalette, the style, and the mood in that one sentence. Write exactly one such\nsentence — do not follow it with a second summary.\n\n## Throughout\n\n**Size.** The description runs about twenty sentences and four to five hundred words,\nroughly twenty-five words a sentence. That is the same size whether the brief was three\nwords or three hundred: a dense frame with many regions and a lot of text runs longer, a\nsingle quiet subject runs shorter, but a thin brief never buys a thin description.\n\n**Observe, don't instruct.** Present tense, third person, declarative. No \"you\", no\n\"create\", no \"make sure\", no \"the AI should\". No quality boosters — no \"masterpiece\",\n\"8K\", \"highly detailed\", \"award-winning\".\n\n**Hedge what you cannot be certain of.** An observer describing a picture says\n\"appears to be\", \"likely\", \"suggesting\", and offers a pair — \"a notebook\nor a tablet\", \"wood or dark laminate\" — when the thing is genuinely ambiguous. Do\nthis often; it is the natural register here. Be flatly definite only about what the\nuser fixed.\n\n**Name colours with a modifier, almost never bare.** Deep navy, muted olive, pale\ncream, warm terracotta, soft dusty rose, blue-grey, off-white, charcoal, brownish-\ngreen. Hex codes only if the user gave them.\n\n**Give the material, not just the noun.** Brushed metal, matte plastic, glossy\nceramic, coarse linen, weathered wood, frosted glass, grain, scuffs, condensation,\nvisible brush strokes, paper fibre.\n\n**Enumerate; never summarise.** \"Several items\" and \"various decorations\" are not\ndescriptions. Say what each thing is. Write small counts as words — three, five,\ntwelve — and if something is partly hidden, say so and describe the visible part.\n\n**People get their observable surface.** Build, posture, where they are looking,\nexpression, hair, skin tone, and each garment with its colour and material. Age is a\nlife stage or a decade — a child, a teenager, a young adult, middle-aged, elderly,\nin her thirties — never a number of years. If a face is turned away or cropped, say\nthat instead of describing it.\n\n**Objects by class, not by brand.** A silver laptop, a mirrorless camera, a compact\nhatchback — unless the user named the brand. Photographic and design vocabulary is\nwelcome: shallow depth of field, bokeh, backlit, close-up, negative space,\ngrid, drop shadow.\n\n**Everything holds together physically.** Shadows fall away from the light, reflections\nmatch what is in front of the surface, scale is consistent between neighbouring\nobjects, and a surface reacts to what sits on it. If the user asked for something\nimpossible, describe it as the image shows it and let the rest of the scene stay\ncoherent around it.\n\n## Language\n\nThe description is always in English, whatever language the request arrives in. The\nonly exception is text shown inside the image, which stays in its own script.\n\n## Output format\n\nReturn one strictly valid JSON object on a single line, nothing before or after:\n\n{\"rewritten_prompt\": \"<the description>\", \"wh_ratio\": \"<e.g. 3:2>\"}"
744 }
745 },
746 {
747 "id": 10,
748 "type": "StringFormat",
749 "pos": [
750 1460,
751 418
752 ],
753 "size": [
754 320,
755 148
756 ],
757 "flags": {},
758 "order": 9,
759 "mode": 0,
760 "showAdvanced": null,
761 "inputs": [
762 {
763 "color_off": null,
764 "color_on": null,
765 "dir": null,
766 "label": null,
767 "localized_name": "a",
768 "locked": null,
769 "name": "values.a",
770 "nameLocked": null,
771 "removable": null,
772 "shape": 7,
773 "type": "*",
774 "pos": null,
775 "link": 7
776 },
777 {
778 "color_off": null,
779 "color_on": null,
780 "dir": null,
781 "label": null,
782 "localized_name": "b",
783 "locked": null,
784 "name": "values.b",
785 "nameLocked": null,
786 "removable": null,
787 "shape": 7,
788 "type": "*",
789 "pos": null,
790 "link": 28
791 },
792 {
793 "color_off": null,
794 "color_on": null,
795 "dir": null,
796 "label": null,
797 "localized_name": "c",
798 "locked": null,
799 "name": "values.c",
800 "nameLocked": null,
801 "removable": null,
802 "shape": 7,
803 "type": "*",
804 "pos": null,
805 "link": 29
806 },
807 {
808 "color_off": null,
809 "color_on": null,
810 "dir": null,
811 "label": null,
812 "localized_name": "d",
813 "locked": null,
814 "name": "values.d",
815 "nameLocked": null,
816 "removable": null,
817 "shape": 7,
818 "type": "*",
819 "pos": null,
820 "link": null
821 },
822 {
823 "color_off": null,
824 "color_on": null,
825 "dir": null,
826 "label": null,
827 "localized_name": "f_string",
828 "locked": null,
829 "name": "f_string",
830 "nameLocked": null,
831 "removable": null,
832 "shape": null,
833 "type": "STRING",
834 "widget": {
835 "name": "f_string"
836 },
837 "link": null
838 }
839 ],
840 "outputs": [
841 {
842 "color_off": null,
843 "color_on": null,
844 "dir": null,
845 "label": null,
846 "localized_name": "STRING",
847 "locked": null,
848 "name": "STRING",
849 "nameLocked": null,
850 "removable": null,
851 "shape": null,
852 "type": "STRING",
853 "pos": null,
854 "slot_index": null,
855 "links": [
856 9
857 ]
858 }
859 ],
860 "title": "PE request",
861 "properties": {
862 "Node name for S&R": "StringFormat"
863 },
864 "widgets_values": [
865 "{a}\nAspect ratio: {b}:{c}"
866 ],
867 "widgets_values_named": {
868 "f_string": "{a}\nAspect ratio: {b}:{c}"
869 }
870 },
871 {
872 "id": 11,
873 "type": "TextGenerate",
874 "pos": [
875 1980,
876 0
877 ],
878 "size": [
879 320,
880 288
881 ],
882 "flags": {},
883 "order": 10,
884 "mode": 0,
885 "showAdvanced": null,
886 "inputs": [
887 {
888 "color_off": null,
889 "color_on": null,
890 "dir": null,
891 "label": null,
892 "localized_name": "clip",
893 "locked": null,
894 "name": "clip",
895 "nameLocked": null,
896 "removable": null,
897 "shape": null,
898 "type": "CLIP",
899 "pos": null,
900 "link": 2
901 },
902 {
903 "color_off": null,
904 "color_on": null,
905 "dir": null,
906 "label": null,
907 "localized_name": "image",
908 "locked": null,
909 "name": "image",
910 "nameLocked": null,
911 "removable": null,
912 "shape": 7,
913 "type": "IMAGE",
914 "pos": null,
915 "link": null
916 },
917 {
918 "color_off": null,
919 "color_on": null,
920 "dir": null,
921 "label": null,
922 "localized_name": "video",
923 "locked": null,
924 "name": "video",
925 "nameLocked": null,
926 "removable": null,
927 "shape": 7,
928 "type": "IMAGE",
929 "pos": null,
930 "link": null
931 },
932 {
933 "color_off": null,
934 "color_on": null,
935 "dir": null,
936 "label": null,
937 "localized_name": "audio",
938 "locked": null,
939 "name": "audio",
940 "nameLocked": null,
941 "removable": null,
942 "shape": 7,
943 "type": "AUDIO",
944 "pos": null,
945 "link": null
946 },
947 {
948 "color_off": null,
949 "color_on": null,
950 "dir": null,
951 "label": null,
952 "localized_name": "system_prompt",
953 "locked": null,
954 "name": "system_prompt",
955 "nameLocked": null,
956 "removable": null,
957 "shape": 7,
958 "type": "STRING",
959 "pos": null,
960 "link": 8
961 },
962 {
963 "color_off": null,
964 "color_on": null,
965 "dir": null,
966 "label": null,
967 "localized_name": "prompt",
968 "locked": null,
969 "name": "prompt",
970 "nameLocked": null,
971 "removable": null,
972 "shape": null,
973 "type": "STRING",
974 "widget": {
975 "name": "prompt"
976 },
977 "link": 9
978 },
979 {
980 "color_off": null,
981 "color_on": null,
982 "dir": null,
983 "label": null,
984 "localized_name": "max_length",
985 "locked": null,
986 "name": "max_length",
987 "nameLocked": null,
988 "removable": null,
989 "shape": null,
990 "type": "INT",
991 "widget": {
992 "name": "max_length"
993 },
994 "link": null
995 },
996 {
997 "color_off": null,
998 "color_on": null,
999 "dir": null,
1000 "label": null,
1001 "localized_name": "Sampling Mode",
1002 "locked": null,
1003 "name": "sampling_mode",
1004 "nameLocked": null,
1005 "removable": null,
1006 "shape": null,
1007 "type": "COMFY_DYNAMICCOMBO_V3",
1008 "widget": {
1009 "name": "sampling_mode"
1010 },
1011 "link": null
1012 },
1013 {
1014 "color_off": null,
1015 "color_on": null,
1016 "dir": null,
1017 "label": null,
1018 "localized_name": "thinking",
1019 "locked": null,
1020 "name": "thinking",
1021 "nameLocked": null,
1022 "removable": null,
1023 "shape": 7,
1024 "type": "BOOLEAN",
1025 "widget": {
1026 "name": "thinking"
1027 },
1028 "link": null
1029 },
1030 {
1031 "color_off": null,
1032 "color_on": null,
1033 "dir": null,
1034 "label": null,
1035 "localized_name": "use_default_template",
1036 "locked": null,
1037 "name": "use_default_template",
1038 "nameLocked": null,
1039 "removable": null,
1040 "shape": 7,
1041 "type": "BOOLEAN",
1042 "widget": {
1043 "name": "use_default_template"
1044 },
1045 "link": null
1046 },
1047 {
1048 "color_off": null,
1049 "color_on": null,
1050 "dir": null,
1051 "label": null,
1052 "localized_name": "mtp",
1053 "locked": null,
1054 "name": "mtp",
1055 "nameLocked": null,
1056 "removable": null,
1057 "shape": 7,
1058 "type": "COMBO",
1059 "widget": {
1060 "name": "mtp"
1061 },
1062 "link": null
1063 }
1064 ],
1065 "outputs": [
1066 {
1067 "color_off": null,
1068 "color_on": null,
1069 "dir": null,
1070 "label": null,
1071 "localized_name": "generated_text",
1072 "locked": null,
1073 "name": "generated_text",
1074 "nameLocked": null,
1075 "removable": null,
1076 "shape": null,
1077 "type": "STRING",
1078 "pos": null,
1079 "slot_index": null,
1080 "links": [
1081 10
1082 ]
1083 },
1084 {
1085 "color_off": null,
1086 "color_on": null,
1087 "dir": null,
1088 "label": null,
1089 "localized_name": "thinking",
1090 "locked": null,
1091 "name": "thinking",
1092 "nameLocked": null,
1093 "removable": null,
1094 "shape": null,
1095 "type": "STRING",
1096 "pos": null,
1097 "slot_index": null,
1098 "links": null
1099 }
1100 ],
1101 "title": "Rewrite prompt (Qwen3-VL text encoder)",
1102 "properties": {
1103 "Node name for S&R": "TextGenerate"
1104 },
1105 "widgets_values": [
1106 "",
1107 512,
1108 "off",
1109 true,
1110 true,
1111 "auto"
1112 ],
1113 "widgets_values_named": {
1114 "prompt": "",
1115 "max_length": 512,
1116 "sampling_mode": "off",
1117 "thinking": true,
1118 "use_default_template": true,
1119 "mtp": "auto"
1120 }
1121 },
1122 {
1123 "id": 12,
1124 "type": "JsonExtractString",
1125 "pos": [
1126 1980,
1127 378
1128 ],
1129 "size": [
1130 320,
1131 112
1132 ],
1133 "flags": {},
1134 "order": 11,
1135 "mode": 0,
1136 "showAdvanced": null,
1137 "inputs": [
1138 {
1139 "color_off": null,
1140 "color_on": null,
1141 "dir": null,
1142 "label": null,
1143 "localized_name": "json_string",
1144 "locked": null,
1145 "name": "json_string",
1146 "nameLocked": null,
1147 "removable": null,
1148 "shape": null,
1149 "type": "STRING",
1150 "widget": {
1151 "name": "json_string"
1152 },
1153 "link": 10
1154 },
1155 {
1156 "color_off": null,
1157 "color_on": null,
1158 "dir": null,
1159 "label": null,
1160 "localized_name": "key",
1161 "locked": null,
1162 "name": "key",
1163 "nameLocked": null,
1164 "removable": null,
1165 "shape": null,
1166 "type": "STRING",
1167 "widget": {
1168 "name": "key"
1169 },
1170 "link": null
1171 }
1172 ],
1173 "outputs": [
1174 {
1175 "color_off": null,
1176 "color_on": null,
1177 "dir": null,
1178 "label": null,
1179 "localized_name": "STRING",
1180 "locked": null,
1181 "name": "STRING",
1182 "nameLocked": null,
1183 "removable": null,
1184 "shape": null,
1185 "type": "STRING",
1186 "pos": null,
1187 "slot_index": null,
1188 "links": [
1189 11,
1190 12
1191 ]
1192 }
1193 ],
1194 "properties": {
1195 "Node name for S&R": "JsonExtractString"
1196 },
1197 "widgets_values": [
1198 "",
1199 "rewritten_prompt"
1200 ],
1201 "widgets_values_named": {
1202 "json_string": "",
1203 "key": "rewritten_prompt"
1204 }
1205 },
1206 {
1207 "id": 13,
1208 "type": "StringCompare",
1209 "pos": [
1210 1980,
1211 580
1212 ],
1213 "size": [
1214 320,
1215 190
1216 ],
1217 "flags": {},
1218 "order": 12,
1219 "mode": 0,
1220 "showAdvanced": null,
1221 "inputs": [
1222 {
1223 "color_off": null,
1224 "color_on": null,
1225 "dir": null,
1226 "label": null,
1227 "localized_name": "string_a",
1228 "locked": null,
1229 "name": "string_a",
1230 "nameLocked": null,
1231 "removable": null,
1232 "shape": null,
1233 "type": "STRING",
1234 "widget": {
1235 "name": "string_a"
1236 },
1237 "link": 11
1238 },
1239 {
1240 "color_off": null,
1241 "color_on": null,
1242 "dir": null,
1243 "label": null,
1244 "localized_name": "string_b",
1245 "locked": null,
1246 "name": "string_b",
1247 "nameLocked": null,
1248 "removable": null,
1249 "shape": null,
1250 "type": "STRING",
1251 "widget": {
1252 "name": "string_b"
1253 },
1254 "link": null
1255 },
1256 {
1257 "color_off": null,
1258 "color_on": null,
1259 "dir": null,
1260 "label": null,
1261 "localized_name": "mode",
1262 "locked": null,
1263 "name": "mode",
1264 "nameLocked": null,
1265 "removable": null,
1266 "shape": null,
1267 "type": "COMBO",
1268 "widget": {
1269 "name": "mode"
1270 },
1271 "link": null
1272 },
1273 {
1274 "color_off": null,
1275 "color_on": null,
1276 "dir": null,
1277 "label": null,
1278 "localized_name": "case_sensitive",
1279 "locked": null,
1280 "name": "case_sensitive",
1281 "nameLocked": null,
1282 "removable": null,
1283 "shape": null,
1284 "type": "BOOLEAN",
1285 "widget": {
1286 "name": "case_sensitive"
1287 },
1288 "link": null
1289 }
1290 ],
1291 "outputs": [
1292 {
1293 "color_off": null,
1294 "color_on": null,
1295 "dir": null,
1296 "label": null,
1297 "localized_name": "BOOLEAN",
1298 "locked": null,
1299 "name": "BOOLEAN",
1300 "nameLocked": null,
1301 "removable": null,
1302 "shape": null,
1303 "type": "BOOLEAN",
1304 "pos": null,
1305 "slot_index": null,
1306 "links": [
1307 14
1308 ]
1309 }
1310 ],
1311 "title": "Rewrite failed?",
1312 "properties": {
1313 "Node name for S&R": "StringCompare"
1314 },
1315 "widgets_values": [
1316 "",
1317 "",
1318 "Equal",
1319 true
1320 ],
1321 "widgets_values_named": {
1322 "string_a": "",
1323 "string_b": "",
1324 "mode": "Equal",
1325 "case_sensitive": true
1326 }
1327 },
1328 {
1329 "id": 14,
1330 "type": "ComfySwitchNode",
1331 "pos": [
1332 2380,
1333 0
1334 ],
1335 "size": [
1336 320,
1337 78
1338 ],
1339 "flags": {},
1340 "order": 13,
1341 "mode": 0,
1342 "showAdvanced": null,
1343 "inputs": [
1344 {
1345 "color_off": null,
1346 "color_on": null,
1347 "dir": null,
1348 "label": null,
1349 "localized_name": "on_false",
1350 "locked": null,
1351 "name": "on_false",
1352 "nameLocked": null,
1353 "removable": null,
1354 "shape": 7,
1355 "type": "STRING",
1356 "pos": null,
1357 "link": 12
1358 },
1359 {
1360 "color_off": null,
1361 "color_on": null,
1362 "dir": null,
1363 "label": null,
1364 "localized_name": "on_true",
1365 "locked": null,
1366 "name": "on_true",
1367 "nameLocked": null,
1368 "removable": null,
1369 "shape": 7,
1370 "type": "STRING",
1371 "pos": null,
1372 "link": 13
1373 },
1374 {
1375 "color_off": null,
1376 "color_on": null,
1377 "dir": null,
1378 "label": null,
1379 "localized_name": "switch",
1380 "locked": null,
1381 "name": "switch",
1382 "nameLocked": null,
1383 "removable": null,
1384 "shape": null,
1385 "type": "BOOLEAN",
1386 "widget": {
1387 "name": "switch"
1388 },
1389 "link": 14
1390 }
1391 ],
1392 "outputs": [
1393 {
1394 "color_off": null,
1395 "color_on": null,
1396 "dir": null,
1397 "label": null,
1398 "localized_name": "output",
1399 "locked": null,
1400 "name": "output",
1401 "nameLocked": null,
1402 "removable": null,
1403 "shape": null,
1404 "type": "STRING",
1405 "pos": null,
1406 "slot_index": null,
1407 "links": [
1408 16
1409 ]
1410 }
1411 ],
1412 "title": "Fall back to the original prompt",
1413 "properties": {
1414 "Node name for S&R": "ComfySwitchNode"
1415 },
1416 "widgets_values": [
1417 false
1418 ],
1419 "widgets_values_named": {
1420 "switch": false
1421 }
1422 },
1423 {
1424 "id": 15,
1425 "type": "ComfySwitchNode",
1426 "pos": [
1427 2380,
1428 168
1429 ],
1430 "size": [
1431 320,
1432 78
1433 ],
1434 "flags": {},
1435 "order": 14,
1436 "mode": 0,
1437 "showAdvanced": null,
1438 "inputs": [
1439 {
1440 "color_off": null,
1441 "color_on": null,
1442 "dir": null,
1443 "label": null,
1444 "localized_name": "on_false",
1445 "locked": null,
1446 "name": "on_false",
1447 "nameLocked": null,
1448 "removable": null,
1449 "shape": 7,
1450 "type": "STRING",
1451 "pos": null,
1452 "link": 15
1453 },
1454 {
1455 "color_off": null,
1456 "color_on": null,
1457 "dir": null,
1458 "label": null,
1459 "localized_name": "on_true",
1460 "locked": null,
1461 "name": "on_true",
1462 "nameLocked": null,
1463 "removable": null,
1464 "shape": 7,
1465 "type": "STRING",
1466 "pos": null,
1467 "link": 16
1468 },
1469 {
1470 "color_off": null,
1471 "color_on": null,
1472 "dir": null,
1473 "label": null,
1474 "localized_name": "switch",
1475 "locked": null,
1476 "name": "switch",
1477 "nameLocked": null,
1478 "removable": null,
1479 "shape": null,
1480 "type": "BOOLEAN",
1481 "widget": {
1482 "name": "switch"
1483 },
1484 "link": 17
1485 }
1486 ],
1487 "outputs": [
1488 {
1489 "color_off": null,
1490 "color_on": null,
1491 "dir": null,
1492 "label": null,
1493 "localized_name": "output",
1494 "locked": null,
1495 "name": "output",
1496 "nameLocked": null,
1497 "removable": null,
1498 "shape": null,
1499 "type": "STRING",
1500 "pos": null,
1501 "slot_index": null,
1502 "links": [
1503 18,
1504 19
1505 ]
1506 }
1507 ],
1508 "title": "Enhanced or original",
1509 "properties": {
1510 "Node name for S&R": "ComfySwitchNode"
1511 },
1512 "widgets_values": [
1513 false
1514 ],
1515 "widgets_values_named": {
1516 "switch": false
1517 }
1518 },
1519 {
1520 "id": 16,
1521 "type": "PreviewAny",
1522 "pos": [
1523 2380,
1524 336
1525 ],
1526 "size": [
1527 440,
1528 260
1529 ],
1530 "flags": {},
1531 "order": 15,
1532 "mode": 0,
1533 "showAdvanced": null,
1534 "inputs": [
1535 {
1536 "color_off": null,
1537 "color_on": null,
1538 "dir": null,
1539 "label": null,
1540 "localized_name": "source",
1541 "locked": null,
1542 "name": "source",
1543 "nameLocked": null,
1544 "removable": null,
1545 "shape": null,
1546 "type": "*",
1547 "pos": null,
1548 "link": 18
1549 }
1550 ],
1551 "outputs": [
1552 {
1553 "color_off": null,
1554 "color_on": null,
1555 "dir": null,
1556 "label": null,
1557 "localized_name": "STRING",
1558 "locked": null,
1559 "name": "STRING",
1560 "nameLocked": null,
1561 "removable": null,
1562 "shape": null,
1563 "type": "STRING",
1564 "pos": null,
1565 "slot_index": null,
1566 "links": null
1567 }
1568 ],
1569 "title": "Prompt used",
1570 "properties": {
1571 "Node name for S&R": "PreviewAny"
1572 },
1573 "widgets_values": [],
1574 "widgets_values_named": {}
1575 },
1576 {
1577 "id": 17,
1578 "type": "TextEncodeQwenImage21",
1579 "pos": [
1580 2900,
1581 0
1582 ],
1583 "size": [
1584 320,
1585 206
1586 ],
1587 "flags": {},
1588 "order": 16,
1589 "mode": 0,
1590 "showAdvanced": null,
1591 "inputs": [
1592 {
1593 "color_off": null,
1594 "color_on": null,
1595 "dir": null,
1596 "label": null,
1597 "localized_name": "clip",
1598 "locked": null,
1599 "name": "clip",
1600 "nameLocked": null,
1601 "removable": null,
1602 "shape": null,
1603 "type": "CLIP",
1604 "pos": null,
1605 "link": 1
1606 },
1607 {
1608 "color_off": null,
1609 "color_on": null,
1610 "dir": null,
1611 "label": null,
1612 "localized_name": "image_1",
1613 "locked": null,
1614 "name": "images.image_1",
1615 "nameLocked": null,
1616 "removable": null,
1617 "shape": 7,
1618 "type": "IMAGE",
1619 "pos": null,
1620 "link": null
1621 },
1622 {
1623 "color_off": null,
1624 "color_on": null,
1625 "dir": null,
1626 "label": null,
1627 "localized_name": "vae",
1628 "locked": null,
1629 "name": "vae",
1630 "nameLocked": null,
1631 "removable": null,
1632 "shape": 7,
1633 "type": "VAE",
1634 "pos": null,
1635 "link": 3
1636 },
1637 {
1638 "color_off": null,
1639 "color_on": null,
1640 "dir": null,
1641 "label": null,
1642 "localized_name": "prompt",
1643 "locked": null,
1644 "name": "prompt",
1645 "nameLocked": null,
1646 "removable": null,
1647 "shape": null,
1648 "type": "STRING",
1649 "widget": {
1650 "name": "prompt"
1651 },
1652 "link": 19
1653 },
1654 {
1655 "color_off": null,
1656 "color_on": null,
1657 "dir": null,
1658 "label": null,
1659 "localized_name": "negative_prompt",
1660 "locked": null,
1661 "name": "negative_prompt",
1662 "nameLocked": null,
1663 "removable": null,
1664 "shape": null,
1665 "type": "STRING",
1666 "widget": {
1667 "name": "negative_prompt"
1668 },
1669 "link": null
1670 },
1671 {
1672 "color_off": null,
1673 "color_on": null,
1674 "dir": null,
1675 "label": null,
1676 "localized_name": "resolution",
1677 "locked": null,
1678 "name": "resolution",
1679 "nameLocked": null,
1680 "removable": null,
1681 "shape": null,
1682 "type": "INT",
1683 "widget": {
1684 "name": "resolution"
1685 },
1686 "link": null
1687 }
1688 ],
1689 "outputs": [
1690 {
1691 "color_off": null,
1692 "color_on": null,
1693 "dir": null,
1694 "label": null,
1695 "localized_name": "positive",
1696 "locked": null,
1697 "name": "positive",
1698 "nameLocked": null,
1699 "removable": null,
1700 "shape": null,
1701 "type": "CONDITIONING",
1702 "pos": null,
1703 "slot_index": null,
1704 "links": [
1705 20
1706 ]
1707 },
1708 {
1709 "color_off": null,
1710 "color_on": null,
1711 "dir": null,
1712 "label": null,
1713 "localized_name": "negative",
1714 "locked": null,
1715 "name": "negative",
1716 "nameLocked": null,
1717 "removable": null,
1718 "shape": null,
1719 "type": "CONDITIONING",
1720 "pos": null,
1721 "slot_index": null,
1722 "links": null
1723 },
1724 {
1725 "color_off": null,
1726 "color_on": null,
1727 "dir": null,
1728 "label": null,
1729 "localized_name": "latent",
1730 "locked": null,
1731 "name": "latent",
1732 "nameLocked": null,
1733 "removable": null,
1734 "shape": null,
1735 "type": "LATENT",
1736 "pos": null,
1737 "slot_index": null,
1738 "links": null
1739 }
1740 ],
1741 "properties": {
1742 "Node name for S&R": "TextEncodeQwenImage21"
1743 },
1744 "widgets_values": [
1745 "",
1746 "",
1747 1024
1748 ],
1749 "widgets_values_named": {
1750 "prompt": "",
1751 "negative_prompt": "",
1752 "resolution": 1024
1753 }
1754 },
1755 {
1756 "id": 18,
1757 "type": "BasicGuider",
1758 "pos": [
1759 2900,
1760 296
1761 ],
1762 "size": [
1763 320,
1764 46
1765 ],
1766 "flags": {},
1767 "order": 17,
1768 "mode": 0,
1769 "showAdvanced": null,
1770 "inputs": [
1771 {
1772 "color_off": null,
1773 "color_on": null,
1774 "dir": null,
1775 "label": null,
1776 "localized_name": "model",
1777 "locked": null,
1778 "name": "model",
1779 "nameLocked": null,
1780 "removable": null,
1781 "shape": null,
1782 "type": "MODEL",
1783 "pos": null,
1784 "link": 27
1785 },
1786 {
1787 "color_off": null,
1788 "color_on": null,
1789 "dir": null,
1790 "label": null,
1791 "localized_name": "conditioning",
1792 "locked": null,
1793 "name": "conditioning",
1794 "nameLocked": null,
1795 "removable": null,
1796 "shape": null,
1797 "type": "CONDITIONING",
1798 "pos": null,
1799 "link": 20
1800 }
1801 ],
1802 "outputs": [
1803 {
1804 "color_off": null,
1805 "color_on": null,
1806 "dir": null,
1807 "label": null,
1808 "localized_name": "GUIDER",
1809 "locked": null,
1810 "name": "GUIDER",
1811 "nameLocked": null,
1812 "removable": null,
1813 "shape": null,
1814 "type": "GUIDER",
1815 "pos": null,
1816 "slot_index": null,
1817 "links": [
1818 22
1819 ]
1820 }
1821 ],
1822 "title": "BasicGuider (CFG off)",
1823 "properties": {
1824 "Node name for S&R": "BasicGuider"
1825 }
1826 },
1827 {
1828 "id": 19,
1829 "type": "RandomNoise",
1830 "pos": [
1831 2900,
1832 432
1833 ],
1834 "size": [
1835 320,
1836 82
1837 ],
1838 "flags": {},
1839 "order": 18,
1840 "mode": 0,
1841 "showAdvanced": null,
1842 "inputs": [
1843 {
1844 "color_off": null,
1845 "color_on": null,
1846 "dir": null,
1847 "label": null,
1848 "localized_name": "noise_seed",
1849 "locked": null,
1850 "name": "noise_seed",
1851 "nameLocked": null,
1852 "removable": null,
1853 "shape": null,
1854 "type": "INT",
1855 "widget": {
1856 "name": "noise_seed"
1857 },
1858 "link": null
1859 }
1860 ],
1861 "outputs": [
1862 {
1863 "color_off": null,
1864 "color_on": null,
1865 "dir": null,
1866 "label": null,
1867 "localized_name": "NOISE",
1868 "locked": null,
1869 "name": "NOISE",
1870 "nameLocked": null,
1871 "removable": null,
1872 "shape": null,
1873 "type": "NOISE",
1874 "pos": null,
1875 "slot_index": null,
1876 "links": [
1877 21
1878 ]
1879 }
1880 ],
1881 "properties": {
1882 "Node name for S&R": "RandomNoise"
1883 },
1884 "widgets_values": [
1885 0,
1886 "randomize"
1887 ],
1888 "widgets_values_named": {
1889 "noise_seed": 0,
1890 "control_after_generate": "randomize"
1891 }
1892 },
1893 {
1894 "id": 20,
1895 "type": "KSamplerSelect",
1896 "pos": [
1897 2900,
1898 604
1899 ],
1900 "size": [
1901 320,
1902 58
1903 ],
1904 "flags": {},
1905 "order": 19,
1906 "mode": 0,
1907 "showAdvanced": null,
1908 "inputs": [
1909 {
1910 "color_off": null,
1911 "color_on": null,
1912 "dir": null,
1913 "label": null,
1914 "localized_name": "sampler_name",
1915 "locked": null,
1916 "name": "sampler_name",
1917 "nameLocked": null,
1918 "removable": null,
1919 "shape": null,
1920 "type": "COMBO",
1921 "widget": {
1922 "name": "sampler_name"
1923 },
1924 "link": null
1925 }
1926 ],
1927 "outputs": [
1928 {
1929 "color_off": null,
1930 "color_on": null,
1931 "dir": null,
1932 "label": null,
1933 "localized_name": "SAMPLER",
1934 "locked": null,
1935 "name": "SAMPLER",
1936 "nameLocked": null,
1937 "removable": null,
1938 "shape": null,
1939 "type": "SAMPLER",
1940 "pos": null,
1941 "slot_index": null,
1942 "links": [
1943 23
1944 ]
1945 }
1946 ],
1947 "properties": {
1948 "Node name for S&R": "KSamplerSelect"
1949 },
1950 "widgets_values": [
1951 "euler"
1952 ],
1953 "widgets_values_named": {
1954 "sampler_name": "euler"
1955 }
1956 },
1957 {
1958 "id": 21,
1959 "type": "ViggleTurboSigmas",
1960 "pos": [
1961 2900,
1962 752
1963 ],
1964 "size": [
1965 320,
1966 58
1967 ],
1968 "flags": {},
1969 "order": 20,
1970 "mode": 0,
1971 "showAdvanced": null,
1972 "inputs": [
1973 {
1974 "color_off": null,
1975 "color_on": null,
1976 "dir": null,
1977 "label": null,
1978 "localized_name": "latent",
1979 "locked": null,
1980 "name": "latent",
1981 "nameLocked": null,
1982 "removable": null,
1983 "shape": null,
1984 "type": "LATENT",
1985 "pos": null,
1986 "link": 30
1987 },
1988 {
1989 "color_off": null,
1990 "color_on": null,
1991 "dir": null,
1992 "label": null,
1993 "localized_name": "nodes",
1994 "locked": null,
1995 "name": "nodes",
1996 "nameLocked": null,
1997 "removable": null,
1998 "shape": null,
1999 "type": "STRING",
2000 "widget": {
2001 "name": "nodes"
2002 },
2003 "link": null
2004 }
2005 ],
2006 "outputs": [
2007 {
2008 "color_off": null,
2009 "color_on": null,
2010 "dir": null,
2011 "label": null,
2012 "localized_name": "SIGMAS",
2013 "locked": null,
2014 "name": "SIGMAS",
2015 "nameLocked": null,
2016 "removable": null,
2017 "shape": null,
2018 "type": "SIGMAS",
2019 "pos": null,
2020 "slot_index": null,
2021 "links": [
2022 24
2023 ]
2024 }
2025 ],
2026 "properties": {
2027 "Node name for S&R": "ViggleTurboSigmas"
2028 },
2029 "widgets_values": [
2030 "1.0, 0.9375, 0.875, 0.75, 0.5, 0.25"
2031 ],
2032 "widgets_values_named": {
2033 "nodes": "1.0, 0.9375, 0.875, 0.75, 0.5, 0.25"
2034 }
2035 },
2036 {
2037 "id": 22,
2038 "type": "SamplerCustomAdvanced",
2039 "pos": [
2040 3300,
2041 0
2042 ],
2043 "size": [
2044 320,
2045 106
2046 ],
2047 "flags": {},
2048 "order": 21,
2049 "mode": 0,
2050 "showAdvanced": null,
2051 "inputs": [
2052 {
2053 "color_off": null,
2054 "color_on": null,
2055 "dir": null,
2056 "label": null,
2057 "localized_name": "noise",
2058 "locked": null,
2059 "name": "noise",
2060 "nameLocked": null,
2061 "removable": null,
2062 "shape": null,
2063 "type": "NOISE",
2064 "pos": null,
2065 "link": 21
2066 },
2067 {
2068 "color_off": null,
2069 "color_on": null,
2070 "dir": null,
2071 "label": null,
2072 "localized_name": "guider",
2073 "locked": null,
2074 "name": "guider",
2075 "nameLocked": null,
2076 "removable": null,
2077 "shape": null,
2078 "type": "GUIDER",
2079 "pos": null,
2080 "link": 22
2081 },
2082 {
2083 "color_off": null,
2084 "color_on": null,
2085 "dir": null,
2086 "label": null,
2087 "localized_name": "sampler",
2088 "locked": null,
2089 "name": "sampler",
2090 "nameLocked": null,
2091 "removable": null,
2092 "shape": null,
2093 "type": "SAMPLER",
2094 "pos": null,
2095 "link": 23
2096 },
2097 {
2098 "color_off": null,
2099 "color_on": null,
2100 "dir": null,
2101 "label": null,
2102 "localized_name": "sigmas",
2103 "locked": null,
2104 "name": "sigmas",
2105 "nameLocked": null,
2106 "removable": null,
2107 "shape": null,
2108 "type": "SIGMAS",
2109 "pos": null,
2110 "link": 24
2111 },
2112 {
2113 "color_off": null,
2114 "color_on": null,
2115 "dir": null,
2116 "label": null,
2117 "localized_name": "latent_image",
2118 "locked": null,
2119 "name": "latent_image",
2120 "nameLocked": null,
2121 "removable": null,
2122 "shape": null,
2123 "type": "LATENT",
2124 "pos": null,
2125 "link": 31
2126 }
2127 ],
2128 "outputs": [
2129 {
2130 "color_off": null,
2131 "color_on": null,
2132 "dir": null,
2133 "label": null,
2134 "localized_name": "output",
2135 "locked": null,
2136 "name": "output",
2137 "nameLocked": null,
2138 "removable": null,
2139 "shape": null,
2140 "type": "LATENT",
2141 "pos": null,
2142 "slot_index": null,
2143 "links": [
2144 25
2145 ]
2146 },
2147 {
2148 "color_off": null,
2149 "color_on": null,
2150 "dir": null,
2151 "label": null,
2152 "localized_name": "denoised_output",
2153 "locked": null,
2154 "name": "denoised_output",
2155 "nameLocked": null,
2156 "removable": null,
2157 "shape": null,
2158 "type": "LATENT",
2159 "pos": null,
2160 "slot_index": null,
2161 "links": null
2162 }
2163 ],
2164 "properties": {
2165 "Node name for S&R": "SamplerCustomAdvanced"
2166 }
2167 },
2168 {
2169 "id": 23,
2170 "type": "VAEDecode",
2171 "pos": [
2172 3300,
2173 196
2174 ],
2175 "size": [
2176 320,
2177 46
2178 ],
2179 "flags": {},
2180 "order": 22,
2181 "mode": 0,
2182 "showAdvanced": null,
2183 "inputs": [
2184 {
2185 "color_off": null,
2186 "color_on": null,
2187 "dir": null,
2188 "label": null,
2189 "localized_name": "samples",
2190 "locked": null,
2191 "name": "samples",
2192 "nameLocked": null,
2193 "removable": null,
2194 "shape": null,
2195 "type": "LATENT",
2196 "pos": null,
2197 "link": 25
2198 },
2199 {
2200 "color_off": null,
2201 "color_on": null,
2202 "dir": null,
2203 "label": null,
2204 "localized_name": "vae",
2205 "locked": null,
2206 "name": "vae",
2207 "nameLocked": null,
2208 "removable": null,
2209 "shape": null,
2210 "type": "VAE",
2211 "pos": null,
2212 "link": 4
2213 }
2214 ],
2215 "outputs": [
2216 {
2217 "color_off": null,
2218 "color_on": null,
2219 "dir": null,
2220 "label": null,
2221 "localized_name": "IMAGE",
2222 "locked": null,
2223 "name": "IMAGE",
2224 "nameLocked": null,
2225 "removable": null,
2226 "shape": null,
2227 "type": "IMAGE",
2228 "pos": null,
2229 "slot_index": null,
2230 "links": [
2231 26
2232 ]
2233 }
2234 ],
2235 "properties": {
2236 "Node name for S&R": "VAEDecode"
2237 }
2238 },
2239 {
2240 "id": 24,
2241 "type": "SaveImage",
2242 "pos": [
2243 3300,
2244 332
2245 ],
2246 "size": [
2247 520,
2248 560
2249 ],
2250 "flags": {},
2251 "order": 23,
2252 "mode": 0,
2253 "showAdvanced": null,
2254 "inputs": [
2255 {
2256 "color_off": null,
2257 "color_on": null,
2258 "dir": null,
2259 "label": null,
2260 "localized_name": "images",
2261 "locked": null,
2262 "name": "images",
2263 "nameLocked": null,
2264 "removable": null,
2265 "shape": null,
2266 "type": "IMAGE",
2267 "pos": null,
2268 "link": 26
2269 },
2270 {
2271 "color_off": null,
2272 "color_on": null,
2273 "dir": null,
2274 "label": null,
2275 "localized_name": "filename_prefix",
2276 "locked": null,
2277 "name": "filename_prefix",
2278 "nameLocked": null,
2279 "removable": null,
2280 "shape": null,
2281 "type": "STRING",
2282 "widget": {
2283 "name": "filename_prefix"
2284 },
2285 "link": null
2286 }
2287 ],
2288 "outputs": [
2289 {
2290 "color_off": null,
2291 "color_on": null,
2292 "dir": null,
2293 "label": null,
2294 "localized_name": "images",
2295 "locked": null,
2296 "name": "images",
2297 "nameLocked": null,
2298 "removable": null,
2299 "shape": null,
2300 "type": "IMAGE",
2301 "pos": null,
2302 "slot_index": null,
2303 "links": null
2304 }
2305 ],
2306 "properties": {},
2307 "widgets_values": [
2308 "viggle_turbo/t2i"
2309 ],
2310 "widgets_values_named": {
2311 "filename_prefix": "viggle_turbo/t2i"
2312 }
2313 }
2314 ],
2315 "links": [
2316 [
2317 1,
2318 3,
2319 0,
2320 17,
2321 0,
2322 "CLIP"
2323 ],
2324 [
2325 3,
2326 4,
2327 0,
2328 17,
2329 2,
2330 "VAE"
2331 ],
2332 [
2333 4,
2334 4,
2335 0,
2336 23,
2337 1,
2338 "VAE"
2339 ],
2340 [
2341 5,
2342 6,
2343 0,
2344 7,
2345 0,
2346 "INT"
2347 ],
2348 [
2349 6,
2350 6,
2351 1,
2352 7,
2353 1,
2354 "INT"
2355 ],
2356 [
2357 10,
2358 11,
2359 0,
2360 12,
2361 0,
2362 "STRING"
2363 ],
2364 [
2365 11,
2366 12,
2367 0,
2368 13,
2369 0,
2370 "STRING"
2371 ],
2372 [
2373 12,
2374 12,
2375 0,
2376 14,
2377 0,
2378 "STRING"
2379 ],
2380 [
2381 13,
2382 5,
2383 0,
2384 14,
2385 1,
2386 "STRING"
2387 ],
2388 [
2389 14,
2390 13,
2391 0,
2392 14,
2393 2,
2394 "BOOLEAN"
2395 ],
2396 [
2397 15,
2398 5,
2399 0,
2400 15,
2401 0,
2402 "STRING"
2403 ],
2404 [
2405 16,
2406 14,
2407 0,
2408 15,
2409 1,
2410 "STRING"
2411 ],
2412 [
2413 17,
2414 8,
2415 0,
2416 15,
2417 2,
2418 "BOOLEAN"
2419 ],
2420 [
2421 18,
2422 15,
2423 0,
2424 16,
2425 0,
2426 "STRING"
2427 ],
2428 [
2429 19,
2430 15,
2431 0,
2432 17,
2433 3,
2434 "STRING"
2435 ],
2436 [
2437 20,
2438 17,
2439 0,
2440 18,
2441 1,
2442 "CONDITIONING"
2443 ],
2444 [
2445 21,
2446 19,
2447 0,
2448 22,
2449 0,
2450 "NOISE"
2451 ],
2452 [
2453 22,
2454 18,
2455 0,
2456 22,
2457 1,
2458 "GUIDER"
2459 ],
2460 [
2461 23,
2462 20,
2463 0,
2464 22,
2465 2,
2466 "SAMPLER"
2467 ],
2468 [
2469 24,
2470 21,
2471 0,
2472 22,
2473 3,
2474 "SIGMAS"
2475 ],
2476 [
2477 25,
2478 22,
2479 0,
2480 23,
2481 0,
2482 "LATENT"
2483 ],
2484 [
2485 26,
2486 23,
2487 0,
2488 24,
2489 0,
2490 "IMAGE"
2491 ],
2492 [
2493 27,
2494 2,
2495 0,
2496 18,
2497 0,
2498 "MODEL"
2499 ],
2500 [
2501 7,
2502 5,
2503 0,
2504 10,
2505 0,
2506 "STRING"
2507 ],
2508 [
2509 28,
2510 6,
2511 0,
2512 10,
2513 1,
2514 "INT"
2515 ],
2516 [
2517 29,
2518 6,
2519 1,
2520 10,
2521 2,
2522 "INT"
2523 ],
2524 [
2525 30,
2526 7,
2527 0,
2528 21,
2529 0,
2530 "LATENT"
2531 ],
2532 [
2533 31,
2534 7,
2535 0,
2536 22,
2537 4,
2538 "LATENT"
2539 ],
2540 [
2541 2,
2542 3,
2543 0,
2544 11,
2545 0,
2546 "CLIP"
2547 ],
2548 [
2549 8,
2550 9,
2551 0,
2552 11,
2553 4,
2554 "STRING"
2555 ],
2556 [
2557 9,
2558 10,
2559 0,
2560 11,
2561 5,
2562 "STRING"
2563 ]
2564 ],
2565 "floatingLinks": null,
2566 "groups": [
2567 {
2568 "id": 1,
2569 "title": "1. Models",
2570 "bounding": [
2571 520,
2572 -90,
2573 360,
2574 536
2575 ],
2576 "color": "#3f789e",
2577 "flags": {}
2578 },
2579 {
2580 "id": 2,
2581 "title": "2. Prompt & size",
2582 "bounding": [
2583 920,
2584 -90,
2585 480,
2586 766
2587 ],
2588 "color": "#b58b2a",
2589 "flags": {}
2590 },
2591 {
2592 "id": 3,
2593 "title": "3. Prompt enhancer (optional)",
2594 "bounding": [
2595 1440,
2596 -90,
2597 1400,
2598 880
2599 ],
2600 "color": "#a1309b",
2601 "flags": {}
2602 },
2603 {
2604 "id": 4,
2605 "title": "4. Sample: 6 steps, CFG off",
2606 "bounding": [
2607 2880,
2608 -90,
2609 960,
2610 1002
2611 ],
2612 "color": "#444",
2613 "flags": {}
2614 }
2615 ],
2616 "definitions": null,
2617 "config": {},
2618 "extra": {
2619 "ds": {
2620 "scale": 0.5,
2621 "offset": [
2622 60,
2623 160
2624 ]
2625 },
2626 "reroutes": null
2627 },
2628 "version": 0.4
2629 }