工作流 /
图像 /
Qwen Image 2.1 Turbo:文生图

Qwen Image 2.1 Turbo:文生图
Qwen Image 2.1 Turbo: Text to Image
使用 Qwen 图像 2.1 Turbo(8 步加速检查点)从文本提示词生成图像,仅需 8 个采样步骤即可生成单张 1024×1024 图像。同一模型家族,原生支持 2K 输出、专业排版和透明度通道支持,并可选配 Qwen 3.5 提示词增强器。非常适合海报与版式设计、透明素材创建以及快速概念可视化。
图像
6 个节点 922 次使用 ComfyUI ≥ 0.39.0 ComfyUI 78 KB
需要的权重
这个工作流引用了 4 个权重文件,其中 4 个能在本站模型库里找到。
qwen3.5_9b_qwen_image_2.1_pe_t2i.int8_convrot.safetensors
在模型库查看
qwen3vl_8b_int8_convrot.safetensors
在模型库查看
qwen_image_2.1_turbo_int8_convrot.safetensors
在模型库查看
qwen_image_2.1_vae_bf16.safetensors
在模型库查看
节点构成
MarkdownNote
× 3
ResolutionSelector
× 1
c291ceec-b98f-4751-9d0b-7bc288f27b30
× 1
SaveImageAdvanced
× 1
官方标注的模型
Qwen Image 2.1
工作流 JSON
和上面「下载工作流 JSON」是同一份文件。
1{
2 "id": "54bb395d-3e60-4c94-b525-85523901575b",
3 "revision": 0,
4 "last_node_id": 490,
5 "last_link_id": 728,
6 "nodes": [
7 {
8 "id": 13,
9 "type": "ResolutionSelector",
10 "pos": [
11 584.0491078848647,
12 2771.518116188138
13 ],
14 "size": [
15 300,
16 190
17 ],
18 "flags": [],
19 "order": 0,
20 "mode": 0,
21 "showAdvanced": false,
22 "inputs": [],
23 "outputs": [
24 {
25 "name": "width",
26 "type": "INT",
27 "links": [
28 670
29 ]
30 },
31 {
32 "name": "height",
33 "type": "INT",
34 "links": [
35 671
36 ]
37 }
38 ],
39 "properties": {
40 "Node name for S&R": "ResolutionSelector"
41 },
42 "widgets_values": [
43 "1:1 (Square)",
44 1,
45 8
46 ],
47 "widgets_values_named": {
48 "aspect_ratio": "1:1 (Square)",
49 "megapixels": 1,
50 "multiple": 8
51 }
52 },
53 {
54 "id": 459,
55 "type": "c291ceec-b98f-4751-9d0b-7bc288f27b30",
56 "pos": [
57 920,
58 2470
59 ],
60 "size": [
61 410,
62 610
63 ],
64 "flags": [],
65 "order": 4,
66 "mode": 0,
67 "inputs": [
68 {
69 "label": "positive_prompt",
70 "name": "prompt",
71 "type": "STRING",
72 "widget": {
73 "name": "prompt"
74 },
75 "link": null
76 },
77 {
78 "label": "refine_prompt",
79 "name": "switch",
80 "type": "BOOLEAN",
81 "widget": {
82 "name": "switch"
83 },
84 "link": null
85 },
86 {
87 "label": "thinking_mode",
88 "name": "thinking",
89 "shape": 7,
90 "type": "BOOLEAN",
91 "widget": {
92 "name": "thinking"
93 },
94 "link": null
95 },
96 {
97 "name": "width",
98 "type": "INT",
99 "widget": {
100 "name": "width"
101 },
102 "link": 670
103 },
104 {
105 "name": "height",
106 "type": "INT",
107 "widget": {
108 "name": "height"
109 },
110 "link": 671
111 },
112 {
113 "label": "sampler",
114 "name": "scheduler",
115 "type": "COMBO",
116 "widget": {
117 "name": "scheduler"
118 },
119 "link": null
120 },
121 {
122 "label": "PE_model",
123 "name": "clip_name_1",
124 "type": "COMBO",
125 "widget": {
126 "name": "clip_name_1"
127 },
128 "link": null
129 },
130 {
131 "label": "cache_device",
132 "name": "device",
133 "type": "COMBO",
134 "widget": {
135 "name": "device"
136 },
137 "link": null
138 },
139 {
140 "label": "dtype",
141 "name": "dtype_1",
142 "type": "COMBO",
143 "widget": {
144 "name": "dtype_1"
145 },
146 "link": null
147 }
148 ],
149 "outputs": [
150 {
151 "name": "IMAGE",
152 "type": "IMAGE",
153 "links": [
154 672
155 ]
156 }
157 ],
158 "properties": {
159 "previewExposures": []
160 },
161 "widgets_values": [
162 "Underground techno event poster: black background, a two-line headline in heavy white grotesque capitals where the first line reads \"QWEN IMAGE\" and the second line reads \"2.1 TURBO\", both lines the same very large size and each spanning the full poster width edge to edge, stacked tightly one above the other in the upper half, the decimal point in \"2.1\" rendered as a clearly visible full-size square dot, a scattered pile of overlapping black-and-white halftone portrait photos showing a mixed cast of different people, an elderly man, a young woman, a child and a bearded man among them, arranged in two loose rows across the lower half, every face is razor sharp and crisply in focus with fine detailed halftone dots, high micro-contrast, thin white grid lines, small fluorescent orange accent shapes, two-colour risograph print texture, square 1:1 poster format, both headline lines equally prominent, spelling exactly correct letter by letter, no other readable words, no watermark",
163 false,
164 false,
165 4096,
166 "",
167 1024,
168 1024,
169 "euler",
170 447606998181262,
171 "qwen_image_2.1_turbo_int8_convrot.safetensors",
172 "qwen3vl_8b_int8_convrot.safetensors",
173 "qwen_image_2.1_vae_bf16.safetensors",
174 "qwen3.5_9b_qwen_image_2.1_pe_t2i.int8_convrot.safetensors",
175 "auto",
176 "default"
177 ],
178 "widgets_values_named": {
179 "prompt": "Underground techno event poster: black background, a two-line headline in heavy white grotesque capitals where the first line reads \"QWEN IMAGE\" and the second line reads \"2.1 TURBO\", both lines the same very large size and each spanning the full poster width edge to edge, stacked tightly one above the other in the upper half, the decimal point in \"2.1\" rendered as a clearly visible full-size square dot, a scattered pile of overlapping black-and-white halftone portrait photos showing a mixed cast of different people, an elderly man, a young woman, a child and a bearded man among them, arranged in two loose rows across the lower half, every face is razor sharp and crisply in focus with fine detailed halftone dots, high micro-contrast, thin white grid lines, small fluorescent orange accent shapes, two-colour risograph print texture, square 1:1 poster format, both headline lines equally prominent, spelling exactly correct letter by letter, no other readable words, no watermark",
180 "switch": false,
181 "thinking": false,
182 "max_length": 4096,
183 "negative_prompt": "",
184 "width": 1024,
185 "height": 1024,
186 "scheduler": "euler",
187 "seed": 447606998181262,
188 "unet_name": "qwen_image_2.1_turbo_int8_convrot.safetensors",
189 "clip_name": "qwen3vl_8b_int8_convrot.safetensors",
190 "vae_name": "qwen_image_2.1_vae_bf16.safetensors",
191 "clip_name_1": "qwen3.5_9b_qwen_image_2.1_pe_t2i.int8_convrot.safetensors",
192 "device": "auto",
193 "dtype_1": "default"
194 }
195 },
196 {
197 "id": 461,
198 "type": "SaveImageAdvanced",
199 "pos": [
200 1830,
201 2470
202 ],
203 "size": [
204 850,
205 610
206 ],
207 "flags": [],
208 "order": 5,
209 "mode": 0,
210 "inputs": [
211 {
212 "name": "images",
213 "type": "IMAGE",
214 "link": 672
215 }
216 ],
217 "outputs": [
218 {
219 "name": "images",
220 "type": "IMAGE",
221 "links": []
222 }
223 ],
224 "properties": [],
225 "widgets_values": [
226 "Qwen_image_2.1",
227 "png",
228 "8-bit",
229 "sRGB"
230 ],
231 "widgets_values_named": {
232 "filename_prefix": "Qwen_image_2.1",
233 "format": "png",
234 "format.bit_depth": "8-bit",
235 "format.input_color_space": "sRGB"
236 }
237 },
238 {
239 "id": 463,
240 "type": "MarkdownNote",
241 "pos": [
242 -350,
243 2470
244 ],
245 "size": [
246 420,
247 620
248 ],
249 "flags": [],
250 "order": 1,
251 "mode": 0,
252 "inputs": [],
253 "outputs": [],
254 "title": "Note: Model links",
255 "properties": [],
256 "widgets_values": [
257 "Guide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n## Model Links\n\n- [Hugging Face:Comfy-Org/Qwen-Image-2.1](https://huggingface.co/Comfy-Org/Qwen-Image-2.1)\n- [ModelScope:Comfy-Org/Qwen-Image-2.1](https://modelscope.cn/models/Comfy-Org/Qwen-Image-2.1)\n\n**diffusion_models**\n\n- [qwen_image_2.1_turbo_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/diffusion_models/qwen_image_2.1_turbo_bf16.safetensors) (13.25 GB)\n- [qwen_image_2.1_turbo_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/diffusion_models/qwen_image_2.1_turbo_int8_convrot.safetensors) (6.76 GB)\n\n**text_encoders**\n\n- [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (8.71 GB)\n- [qwen3.5_9b_qwen_image_2.1_pe_t2i.int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3.5_9b_qwen_image_2.1_pe_t2i.int8_convrot.safetensors) (8.82 GB)\n\n**vae**\n\n- [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/vae/qwen_image_2.1_vae_bf16.safetensors) (644.2 MB)\n\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 diffusion_models/\n│ │ ├── qwen_image_2.1_turbo_bf16.safetensors\n│ │ └── qwen_image_2.1_turbo_int8_convrot.safetensors\n│ ├── 📂 text_encoders/\n│ │ ├── qwen3vl_8b_int8_convrot.safetensors\n│ │ └── qwen3.5_9b_qwen_image_2.1_pe_t2i.int8_convrot.safetensors\n│ └── 📂 vae/\n│ └── qwen_image_2.1_vae_bf16.safetensors\n```\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
258 ],
259 "widgets_values_named": {
260 "text": "Guide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n## Model Links\n\n- [Hugging Face:Comfy-Org/Qwen-Image-2.1](https://huggingface.co/Comfy-Org/Qwen-Image-2.1)\n- [ModelScope:Comfy-Org/Qwen-Image-2.1](https://modelscope.cn/models/Comfy-Org/Qwen-Image-2.1)\n\n**diffusion_models**\n\n- [qwen_image_2.1_turbo_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/diffusion_models/qwen_image_2.1_turbo_bf16.safetensors) (13.25 GB)\n- [qwen_image_2.1_turbo_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/diffusion_models/qwen_image_2.1_turbo_int8_convrot.safetensors) (6.76 GB)\n\n**text_encoders**\n\n- [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (8.71 GB)\n- [qwen3.5_9b_qwen_image_2.1_pe_t2i.int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3.5_9b_qwen_image_2.1_pe_t2i.int8_convrot.safetensors) (8.82 GB)\n\n**vae**\n\n- [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/vae/qwen_image_2.1_vae_bf16.safetensors) (644.2 MB)\n\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 diffusion_models/\n│ │ ├── qwen_image_2.1_turbo_bf16.safetensors\n│ │ └── qwen_image_2.1_turbo_int8_convrot.safetensors\n│ ├── 📂 text_encoders/\n│ │ ├── qwen3vl_8b_int8_convrot.safetensors\n│ │ └── qwen3.5_9b_qwen_image_2.1_pe_t2i.int8_convrot.safetensors\n│ └── 📂 vae/\n│ └── qwen_image_2.1_vae_bf16.safetensors\n```\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
261 },
262 "color": "#222",
263 "bgcolor": "#000"
264 },
265 {
266 "id": 468,
267 "type": "MarkdownNote",
268 "pos": [
269 100,
270 2470
271 ],
272 "size": [
273 420,
274 220
275 ],
276 "flags": [],
277 "order": 2,
278 "mode": 0,
279 "inputs": [],
280 "outputs": [],
281 "title": "Note: Usage",
282 "properties": [],
283 "widgets_values": [
284 "## Size\nQwen Image 2.1 has native 2K (2048*2048) support for direct output.\n\nOutput size comes from ResolutionSelector (width/height). Default is 1 megapixel (1024*1024). For native 2K, set 1:1 and 4 megapixels (2048*2048). Prefer multiples of 32.\n\n## Transparent Image\n\nTo generate a transparent image, wrap the prompt like this and replace the middle with the subject:\n\n---\nThis is an RGBA format image with transparency. `[your description]`. The image has an alpha channel and a transparent background.\n\n---\nSave as PNG to keep the alpha channel.\n\n## Parameters\n\n- prompt: what to generate. For RGBA, see Note: transparent.\n- negative_prompt: unused while cfg is 1.\n- cfg: keep 1 for the Qwen Image 2.1 official path. Raise it only if you use a negative prompt.\n- steps: this template runs the Turbo checkpoint, which is distilled for **8 steps**; the schedule is fixed in the ManualSigmas node (`1.0, 0.978453, 0.95418, 0.926626, 0.89508, 0.845148, 0.704534, 0.414568, 0`) and is what makes 8 steps enough. Raise the step count only together with a different schedule. The full Qwen Image 2.1 base model instead needs about 40-50 steps with euler.\n"
285 ],
286 "widgets_values_named": {
287 "text": "## Size\nQwen Image 2.1 has native 2K (2048*2048) support for direct output.\n\nOutput size comes from ResolutionSelector (width/height). Default is 1 megapixel (1024*1024). For native 2K, set 1:1 and 4 megapixels (2048*2048). Prefer multiples of 32.\n\n## Transparent Image\n\nTo generate a transparent image, wrap the prompt like this and replace the middle with the subject:\n\n---\nThis is an RGBA format image with transparency. `[your description]`. The image has an alpha channel and a transparent background.\n\n---\nSave as PNG to keep the alpha channel.\n\n## Parameters\n\n- prompt: what to generate. For RGBA, see Note: transparent.\n- negative_prompt: unused while cfg is 1.\n- cfg: keep 1 for the Qwen Image 2.1 official path. Raise it only if you use a negative prompt.\n- steps: this template runs the Turbo checkpoint, which is distilled for **8 steps**; the schedule is fixed in the ManualSigmas node (`1.0, 0.978453, 0.95418, 0.926626, 0.89508, 0.845148, 0.704534, 0.414568, 0`) and is what makes 8 steps enough. Raise the step count only together with a different schedule. The full Qwen Image 2.1 base model instead needs about 40-50 steps with euler.\n"
288 },
289 "color": "#222",
290 "bgcolor": "#000"
291 },
292 {
293 "id": 483,
294 "type": "MarkdownNote",
295 "pos": [
296 1350,
297 2590
298 ],
299 "size": [
300 420,
301 480
302 ],
303 "flags": [],
304 "order": 3,
305 "mode": 0,
306 "inputs": [],
307 "outputs": [],
308 "title": "Note: PE",
309 "properties": [],
310 "widgets_values": [
311 "## Prompt Enhancer\n\nThe prompt enhancer rewrites your prompt with the Qwen 3.5 prompt enhancer model before the image model sees it. These settings follow the official prompt enhancer release, and the ones you are most likely to change are exposed on the node.\n\n- `refine_prompt`: on runs the rewrite and feeds it to the image model, off passes your prompt through as written. On gives the image model a fuller prompt and usually better results; off skips the rewrite pass and the run finishes faster. This template starts with it off.\n- `thinking_mode`: turn this on together with the enhancer. The checkpoint was trained with a reasoning block and loses quality without it.\n- `max_length`: the token budget for the reasoning block plus the rewritten prompt, 4096 here. The official setting is 16256; this template caps it lower so a single rewrite cannot run for many minutes.\n- `sampling_mode`: the sampling values live inside the subgraph. They follow the official ones: `temperature` 1.0, `top_p` 0.95, `top_k` 20, `min_p` 0, `presence_penalty` 1.5, `repetition_penalty` 1.0.\n\nThe enhancer checkpoint and its system prompt live inside the subgraph."
312 ],
313 "widgets_values_named": {
314 "text": "## Prompt Enhancer\n\nThe prompt enhancer rewrites your prompt with the Qwen 3.5 prompt enhancer model before the image model sees it. These settings follow the official prompt enhancer release, and the ones you are most likely to change are exposed on the node.\n\n- `refine_prompt`: on runs the rewrite and feeds it to the image model, off passes your prompt through as written. On gives the image model a fuller prompt and usually better results; off skips the rewrite pass and the run finishes faster. This template starts with it off.\n- `thinking_mode`: turn this on together with the enhancer. The checkpoint was trained with a reasoning block and loses quality without it.\n- `max_length`: the token budget for the reasoning block plus the rewritten prompt, 4096 here. The official setting is 16256; this template caps it lower so a single rewrite cannot run for many minutes.\n- `sampling_mode`: the sampling values live inside the subgraph. They follow the official ones: `temperature` 1.0, `top_p` 0.95, `top_k` 20, `min_p` 0, `presence_penalty` 1.5, `repetition_penalty` 1.0.\n\nThe enhancer checkpoint and its system prompt live inside the subgraph."
315 },
316 "color": "#222",
317 "bgcolor": "#000"
318 }
319 ],
320 "links": [
321 [
322 672,
323 459,
324 0,
325 461,
326 0,
327 "IMAGE"
328 ],
329 [
330 670,
331 13,
332 0,
333 459,
334 3,
335 "INT"
336 ],
337 [
338 671,
339 13,
340 1,
341 459,
342 4,
343 "INT"
344 ]
345 ],
346 "groups": [],
347 "definitions": {
348 "subgraphs": [
349 {
350 "id": "c291ceec-b98f-4751-9d0b-7bc288f27b30",
351 "version": 1,
352 "state": {
353 "lastGroupId": 38,
354 "lastNodeId": 490,
355 "lastLinkId": 728,
356 "lastRerouteId": 9
357 },
358 "revision": 0,
359 "config": [],
360 "name": "Text to Image (Qwen Image 2.1)",
361 "inputNode": {
362 "id": -10,
363 "bounding": [
364 -660,
365 610,
366 143.044921875,
367 348
368 ]
369 },
370 "outputNode": {
371 "id": -20,
372 "bounding": [
373 1960,
374 640,
375 128,
376 68
377 ]
378 },
379 "inputs": [
380 {
381 "id": "6a73de3b-f4cd-43a4-9076-76648c6902f0",
382 "name": "prompt",
383 "type": "STRING",
384 "linkIds": [
385 684,
386 711
387 ],
388 "localized_name": "prompt",
389 "label": "positive_prompt",
390 "pos": [
391 -540.955078125,
392 634
393 ]
394 },
395 {
396 "id": "140602e4-2e82-49b4-b1d6-afa99d79a475",
397 "name": "switch",
398 "type": "BOOLEAN",
399 "linkIds": [
400 688
401 ],
402 "label": "refine_prompt",
403 "pos": [
404 -540.955078125,
405 654
406 ]
407 },
408 {
409 "id": "e80f9a8b-0a83-40c8-ac0f-cc0bc633ed26",
410 "name": "thinking",
411 "type": "BOOLEAN",
412 "linkIds": [
413 695
414 ],
415 "label": "thinking_mode",
416 "pos": [
417 -540.955078125,
418 674
419 ]
420 },
421 {
422 "id": "728d8016-b3b6-4b71-abe0-3fb23e5e96fa",
423 "name": "max_length",
424 "type": "INT",
425 "linkIds": [
426 713
427 ],
428 "pos": [
429 -540.955078125,
430 694
431 ]
432 },
433 {
434 "id": "d4c1377f-7fbc-4519-b83c-9a3b9c2de104",
435 "name": "negative_prompt",
436 "type": "STRING",
437 "linkIds": [
438 657
439 ],
440 "pos": [
441 -540.955078125,
442 714
443 ]
444 },
445 {
446 "id": "91c96cf8-057b-4da2-b71e-305541a3527e",
447 "name": "width",
448 "type": "INT",
449 "linkIds": [
450 660
451 ],
452 "localized_name": "width",
453 "pos": [
454 -540.955078125,
455 734
456 ]
457 },
458 {
459 "id": "661cc520-6bd0-4925-90ec-cecaa188b57d",
460 "name": "height",
461 "type": "INT",
462 "linkIds": [
463 661
464 ],
465 "localized_name": "height",
466 "pos": [
467 -540.955078125,
468 754
469 ]
470 },
471 {
472 "id": "9f0e91b8-5a4a-4f5a-a2a4-4ddc180df0fd",
473 "name": "scheduler",
474 "type": "COMBO",
475 "linkIds": [
476 728
477 ],
478 "label": "sampler",
479 "pos": [
480 -540.955078125,
481 774
482 ]
483 },
484 {
485 "id": "977ce57d-3764-491c-8d2d-543754cfbaf1",
486 "name": "seed",
487 "type": "INT",
488 "linkIds": [
489 697
490 ],
491 "pos": [
492 -540.955078125,
493 794
494 ]
495 },
496 {
497 "id": "143494fb-a40e-423f-be3b-ecc808b408b0",
498 "name": "unet_name",
499 "type": "COMBO",
500 "linkIds": [
501 663
502 ],
503 "pos": [
504 -540.955078125,
505 814
506 ]
507 },
508 {
509 "id": "d8528289-e121-45ed-9c31-e6370ce4ba5e",
510 "name": "clip_name",
511 "type": "COMBO",
512 "linkIds": [
513 664
514 ],
515 "pos": [
516 -540.955078125,
517 834
518 ]
519 },
520 {
521 "id": "f03d1fb0-d592-4997-b55e-e7a2549c36e5",
522 "name": "vae_name",
523 "type": "COMBO",
524 "linkIds": [
525 665
526 ],
527 "pos": [
528 -540.955078125,
529 854
530 ]
531 },
532 {
533 "id": "e12b2532-5fcd-4f34-9ddd-71df7e5021c5",
534 "name": "clip_name_1",
535 "type": "COMBO",
536 "linkIds": [
537 696
538 ],
539 "label": "PE_model",
540 "pos": [
541 -540.955078125,
542 874
543 ]
544 },
545 {
546 "id": "d2597afa-78fa-49f2-96cb-5fda1a3b9eee",
547 "name": "device",
548 "type": "COMBO",
549 "linkIds": [
550 722
551 ],
552 "label": "cache_device",
553 "pos": [
554 -540.955078125,
555 894
556 ]
557 },
558 {
559 "id": "ef25ddbe-1463-4c53-9065-93aa867e77ab",
560 "name": "dtype_1",
561 "type": "COMBO",
562 "linkIds": [
563 723
564 ],
565 "label": "dtype",
566 "pos": [
567 -540.955078125,
568 914
569 ]
570 }
571 ],
572 "outputs": [
573 {
574 "id": "f6f3effc-0961-4c17-b52c-a77c16ca6aa4",
575 "name": "IMAGE",
576 "type": "IMAGE",
577 "linkIds": [
578 650
579 ],
580 "localized_name": "IMAGE",
581 "pos": [
582 1984,
583 664
584 ]
585 }
586 ],
587 "widgets": [],
588 "nodes": [
589 {
590 "id": 451,
591 "type": "UNETLoader",
592 "pos": [
593 -190,
594 410
595 ],
596 "size": [
597 510,
598 90
599 ],
600 "flags": [],
601 "order": 4,
602 "mode": 0,
603 "inputs": [
604 {
605 "localized_name": "unet_name",
606 "name": "unet_name",
607 "type": "COMBO",
608 "widget": {
609 "name": "unet_name"
610 },
611 "link": 663
612 }
613 ],
614 "outputs": [
615 {
616 "localized_name": "MODEL",
617 "name": "MODEL",
618 "type": "MODEL",
619 "links": [
620 721
621 ]
622 }
623 ],
624 "properties": {
625 "Node name for S&R": "UNETLoader",
626 "models": [
627 {
628 "name": "qwen_image_2.1_turbo_int8_convrot.safetensors",
629 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/diffusion_models/qwen_image_2.1_turbo_int8_convrot.safetensors",
630 "directory": "diffusion_models"
631 }
632 ]
633 },
634 "widgets_values": [
635 "qwen_image_2.1_turbo_int8_convrot.safetensors",
636 "default"
637 ],
638 "widgets_values_named": {
639 "unet_name": "qwen_image_2.1_turbo_int8_convrot.safetensors",
640 "weight_dtype": "default"
641 }
642 },
643 {
644 "id": 452,
645 "type": "TextEncodeQwenImage21",
646 "pos": [
647 401.97702219705513,
648 586.653578265677
649 ],
650 "size": [
651 355.7457007437866,
652 181.4947103430324
653 ],
654 "flags": [],
655 "order": 5,
656 "mode": 0,
657 "inputs": [
658 {
659 "localized_name": "clip",
660 "name": "clip",
661 "type": "CLIP",
662 "link": 647
663 },
664 {
665 "localized_name": "image_1",
666 "name": "images.image_1",
667 "shape": 7,
668 "type": "IMAGE",
669 "link": null
670 },
671 {
672 "localized_name": "vae",
673 "name": "vae",
674 "shape": 7,
675 "type": "VAE",
676 "link": null
677 },
678 {
679 "localized_name": "prompt",
680 "name": "prompt",
681 "type": "STRING",
682 "widget": {
683 "name": "prompt"
684 },
685 "link": 687
686 },
687 {
688 "localized_name": "negative_prompt",
689 "name": "negative_prompt",
690 "type": "STRING",
691 "widget": {
692 "name": "negative_prompt"
693 },
694 "link": 657
695 }
696 ],
697 "outputs": [
698 {
699 "localized_name": "positive",
700 "name": "positive",
701 "type": "CONDITIONING",
702 "links": [
703 724
704 ]
705 },
706 {
707 "localized_name": "negative",
708 "name": "negative",
709 "type": "CONDITIONING",
710 "links": [
711 725
712 ]
713 },
714 {
715 "localized_name": "latent",
716 "name": "latent",
717 "type": "LATENT",
718 "links": null
719 }
720 ],
721 "properties": {
722 "Node name for S&R": "TextEncodeQwenImage21"
723 },
724 "widgets_values": [
725 "",
726 "",
727 1024
728 ],
729 "widgets_values_named": {
730 "prompt": "",
731 "negative_prompt": "",
732 "resolution": 1024
733 }
734 },
735 {
736 "id": 453,
737 "type": "CLIPLoader",
738 "pos": [
739 -190,
740 570
741 ],
742 "size": [
743 510,
744 120
745 ],
746 "flags": [],
747 "order": 6,
748 "mode": 0,
749 "inputs": [
750 {
751 "localized_name": "clip_name",
752 "name": "clip_name",
753 "type": "COMBO",
754 "widget": {
755 "name": "clip_name"
756 },
757 "link": 664
758 }
759 ],
760 "outputs": [
761 {
762 "localized_name": "CLIP",
763 "name": "CLIP",
764 "type": "CLIP",
765 "links": [
766 647
767 ]
768 }
769 ],
770 "properties": {
771 "Node name for S&R": "CLIPLoader",
772 "models": [
773 {
774 "name": "qwen3vl_8b_int8_convrot.safetensors",
775 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors",
776 "directory": "text_encoders"
777 }
778 ]
779 },
780 "widgets_values": [
781 "qwen3vl_8b_int8_convrot.safetensors",
782 "qwen_image",
783 "default"
784 ],
785 "widgets_values_named": {
786 "clip_name": "qwen3vl_8b_int8_convrot.safetensors",
787 "type": "qwen_image",
788 "device": "default"
789 }
790 },
791 {
792 "id": 454,
793 "type": "VAELoader",
794 "pos": [
795 -190,
796 770
797 ],
798 "size": [
799 510,
800 70
801 ],
802 "flags": [],
803 "order": 7,
804 "mode": 0,
805 "inputs": [
806 {
807 "localized_name": "vae_name",
808 "name": "vae_name",
809 "type": "COMBO",
810 "widget": {
811 "name": "vae_name"
812 },
813 "link": 665
814 }
815 ],
816 "outputs": [
817 {
818 "localized_name": "VAE",
819 "name": "VAE",
820 "type": "VAE",
821 "links": [
822 649
823 ]
824 }
825 ],
826 "properties": {
827 "Node name for S&R": "VAELoader",
828 "models": [
829 {
830 "name": "qwen_image_2.1_vae_bf16.safetensors",
831 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/vae/qwen_image_2.1_vae_bf16.safetensors",
832 "directory": "vae"
833 }
834 ]
835 },
836 "widgets_values": [
837 "qwen_image_2.1_vae_bf16.safetensors"
838 ],
839 "widgets_values_named": {
840 "vae_name": "qwen_image_2.1_vae_bf16.safetensors"
841 }
842 },
843 {
844 "id": 456,
845 "type": "EmptyLatentImage",
846 "pos": [
847 -70,
848 1010
849 ],
850 "size": [
851 300,
852 120
853 ],
854 "flags": [],
855 "order": 8,
856 "mode": 0,
857 "inputs": [
858 {
859 "localized_name": "width",
860 "name": "width",
861 "type": "INT",
862 "widget": {
863 "name": "width"
864 },
865 "link": 660
866 },
867 {
868 "localized_name": "height",
869 "name": "height",
870 "type": "INT",
871 "widget": {
872 "name": "height"
873 },
874 "link": 661
875 }
876 ],
877 "outputs": [
878 {
879 "localized_name": "LATENT",
880 "name": "LATENT",
881 "type": "LATENT",
882 "links": [
883 726
884 ]
885 }
886 ],
887 "properties": {
888 "Node name for S&R": "EmptyLatentImage"
889 },
890 "widgets_values": [
891 1024,
892 1024,
893 1
894 ],
895 "widgets_values_named": {
896 "width": 1024,
897 "height": 1024,
898 "batch_size": 1
899 }
900 },
901 {
902 "id": 457,
903 "type": "VAEDecode",
904 "pos": [
905 1620,
906 660
907 ],
908 "size": [
909 230,
910 60
911 ],
912 "flags": [],
913 "order": 9,
914 "mode": 0,
915 "inputs": [
916 {
917 "localized_name": "samples",
918 "name": "samples",
919 "type": "LATENT",
920 "link": 720
921 },
922 {
923 "localized_name": "vae",
924 "name": "vae",
925 "type": "VAE",
926 "link": 649
927 }
928 ],
929 "outputs": [
930 {
931 "localized_name": "IMAGE",
932 "name": "IMAGE",
933 "type": "IMAGE",
934 "links": [
935 650
936 ]
937 }
938 ],
939 "properties": {
940 "Node name for S&R": "VAEDecode"
941 }
942 },
943 {
944 "id": 471,
945 "type": "TextGenerate",
946 "pos": [
947 470,
948 -420
949 ],
950 "size": [
951 400,
952 460
953 ],
954 "flags": [],
955 "order": 10,
956 "mode": 0,
957 "showAdvanced": true,
958 "inputs": [
959 {
960 "localized_name": "clip",
961 "name": "clip",
962 "type": "CLIP",
963 "link": 681
964 },
965 {
966 "localized_name": "image",
967 "name": "image",
968 "shape": 7,
969 "type": "IMAGE",
970 "link": null
971 },
972 {
973 "localized_name": "video",
974 "name": "video",
975 "shape": 7,
976 "type": "IMAGE",
977 "link": null
978 },
979 {
980 "localized_name": "audio",
981 "name": "audio",
982 "shape": 7,
983 "type": "AUDIO",
984 "link": null
985 },
986 {
987 "localized_name": "system_prompt",
988 "name": "system_prompt",
989 "shape": 7,
990 "type": "STRING",
991 "link": 709
992 },
993 {
994 "localized_name": "prompt",
995 "name": "prompt",
996 "type": "STRING",
997 "widget": {
998 "name": "prompt"
999 },
1000 "link": 711
1001 },
1002 {
1003 "localized_name": "max_length",
1004 "name": "max_length",
1005 "type": "INT",
1006 "widget": {
1007 "name": "max_length"
1008 },
1009 "link": 713
1010 },
1011 {
1012 "localized_name": "seed",
1013 "name": "sampling_mode.seed",
1014 "type": "INT",
1015 "widget": {
1016 "name": "sampling_mode.seed"
1017 },
1018 "link": 697
1019 },
1020 {
1021 "localized_name": "thinking",
1022 "name": "thinking",
1023 "shape": 7,
1024 "type": "BOOLEAN",
1025 "widget": {
1026 "name": "thinking"
1027 },
1028 "link": 695
1029 }
1030 ],
1031 "outputs": [
1032 {
1033 "localized_name": "generated_text",
1034 "name": "generated_text",
1035 "type": "STRING",
1036 "links": [
1037 712
1038 ]
1039 },
1040 {
1041 "localized_name": "thinking",
1042 "name": "thinking",
1043 "type": "STRING",
1044 "links": null
1045 }
1046 ],
1047 "properties": {
1048 "Node name for S&R": "TextGenerate"
1049 },
1050 "widgets_values": [
1051 "",
1052 4096,
1053 "on",
1054 1,
1055 20,
1056 0.95,
1057 0,
1058 1,
1059 0,
1060 1.5,
1061 true,
1062 true,
1063 "auto"
1064 ],
1065 "widgets_values_named": {
1066 "prompt": "",
1067 "max_length": 4096,
1068 "sampling_mode": "on",
1069 "sampling_mode.temperature": 1,
1070 "sampling_mode.top_k": 20,
1071 "sampling_mode.top_p": 0.95,
1072 "sampling_mode.min_p": 0,
1073 "sampling_mode.repetition_penalty": 1,
1074 "sampling_mode.seed": 0,
1075 "sampling_mode.presence_penalty": 1.5,
1076 "thinking": true,
1077 "use_default_template": true,
1078 "mtp": "auto"
1079 }
1080 },
1081 {
1082 "id": 472,
1083 "type": "PreviewAny",
1084 "pos": [
1085 990,
1086 -250
1087 ],
1088 "size": [
1089 470,
1090 430
1091 ],
1092 "flags": [],
1093 "order": 11,
1094 "mode": 0,
1095 "inputs": [
1096 {
1097 "localized_name": "source",
1098 "name": "source",
1099 "type": "*",
1100 "link": 686
1101 }
1102 ],
1103 "outputs": [
1104 {
1105 "localized_name": "STRING",
1106 "name": "STRING",
1107 "type": "STRING",
1108 "links": [
1109 687
1110 ]
1111 }
1112 ],
1113 "properties": {
1114 "Node name for S&R": "PreviewAny"
1115 },
1116 "widgets_values": [],
1117 "widgets_values_named": []
1118 },
1119 {
1120 "id": 473,
1121 "type": "CLIPLoader",
1122 "pos": [
1123 -180,
1124 -420
1125 ],
1126 "size": [
1127 530,
1128 120
1129 ],
1130 "flags": [],
1131 "order": 12,
1132 "mode": 0,
1133 "inputs": [
1134 {
1135 "localized_name": "clip_name",
1136 "name": "clip_name",
1137 "type": "COMBO",
1138 "widget": {
1139 "name": "clip_name"
1140 },
1141 "link": 696
1142 }
1143 ],
1144 "outputs": [
1145 {
1146 "localized_name": "CLIP",
1147 "name": "CLIP",
1148 "type": "CLIP",
1149 "links": [
1150 681
1151 ]
1152 }
1153 ],
1154 "properties": {
1155 "Node name for S&R": "CLIPLoader",
1156 "models": [
1157 {
1158 "name": "qwen3.5_9b_qwen_image_2.1_pe_t2i.int8_convrot.safetensors",
1159 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3.5_9b_qwen_image_2.1_pe_t2i.int8_convrot.safetensors",
1160 "directory": "text_encoders"
1161 }
1162 ]
1163 },
1164 "widgets_values": [
1165 "qwen3.5_9b_qwen_image_2.1_pe_t2i.int8_convrot.safetensors",
1166 "stable_diffusion",
1167 "default"
1168 ],
1169 "widgets_values_named": {
1170 "clip_name": "qwen3.5_9b_qwen_image_2.1_pe_t2i.int8_convrot.safetensors",
1171 "type": "stable_diffusion",
1172 "device": "default"
1173 }
1174 },
1175 {
1176 "id": 474,
1177 "type": "ComfySwitchNode",
1178 "pos": [
1179 990,
1180 -420
1181 ],
1182 "size": [
1183 270,
1184 80
1185 ],
1186 "flags": [],
1187 "order": 13,
1188 "mode": 0,
1189 "inputs": [
1190 {
1191 "localized_name": "on_false",
1192 "name": "on_false",
1193 "shape": 7,
1194 "type": "STRING",
1195 "link": 684
1196 },
1197 {
1198 "localized_name": "on_true",
1199 "name": "on_true",
1200 "shape": 7,
1201 "type": "STRING",
1202 "link": 712
1203 },
1204 {
1205 "localized_name": "switch",
1206 "name": "switch",
1207 "type": "BOOLEAN",
1208 "widget": {
1209 "name": "switch"
1210 },
1211 "link": 688
1212 }
1213 ],
1214 "outputs": [
1215 {
1216 "localized_name": "output",
1217 "name": "output",
1218 "type": "STRING",
1219 "links": [
1220 686
1221 ]
1222 }
1223 ],
1224 "properties": {
1225 "Node name for S&R": "ComfySwitchNode"
1226 },
1227 "widgets_values": [
1228 false
1229 ],
1230 "widgets_values_named": {
1231 "switch": false
1232 }
1233 },
1234 {
1235 "id": 475,
1236 "type": "PrimitiveStringMultiline",
1237 "pos": [
1238 -180,
1239 -240
1240 ],
1241 "size": [
1242 530,
1243 270
1244 ],
1245 "flags": [],
1246 "order": 0,
1247 "mode": 0,
1248 "inputs": [],
1249 "outputs": [
1250 {
1251 "localized_name": "STRING",
1252 "name": "STRING",
1253 "type": "STRING",
1254 "links": [
1255 709
1256 ]
1257 }
1258 ],
1259 "title": "Text (System Prompt)",
1260 "properties": {
1261 "Node name for S&R": "PrimitiveStringMultiline"
1262 },
1263 "widgets_values": [
1264 "# 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\n- Return the description and nothing else: one continuous paragraph of English, in a single line\nstarting on the very first character of your reply.\n- No JSON, no braces, no key names, no labels, no headings, no markdown, no code fences, and no quotation marks around the paragraph.\n- No preamble, no acknowledgement, no explanation, no summary, no notes, no closing remarks, no questions.\n- No ratio, no resolution, no pixel count, no timestamps.\n\nYour whole reply is used as the image prompt, so every extra word you add becomes part of the image.\n"
1265 ],
1266 "widgets_values_named": {
1267 "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\n- Return the description and nothing else: one continuous paragraph of English, in a single line\nstarting on the very first character of your reply.\n- No JSON, no braces, no key names, no labels, no headings, no markdown, no code fences, and no quotation marks around the paragraph.\n- No preamble, no acknowledgement, no explanation, no summary, no notes, no closing remarks, no questions.\n- No ratio, no resolution, no pixel count, no timestamps.\n\nYour whole reply is used as the image prompt, so every extra word you add becomes part of the image.\n"
1268 }
1269 },
1270 {
1271 "id": 484,
1272 "type": "ManualSigmas",
1273 "pos": [
1274 921.7446995331134,
1275 1039.5134150377687
1276 ],
1277 "size": [
1278 418.9732421875,
1279 58
1280 ],
1281 "flags": [],
1282 "order": 1,
1283 "mode": 0,
1284 "inputs": [],
1285 "outputs": [
1286 {
1287 "localized_name": "SIGMAS",
1288 "name": "SIGMAS",
1289 "type": "SIGMAS",
1290 "links": [
1291 718
1292 ]
1293 }
1294 ],
1295 "title": "Manual Sigmas (Qwen-Image-2.1-Turbo 8-step schedule)",
1296 "properties": {
1297 "Node name for S&R": "ManualSigmas"
1298 },
1299 "widgets_values": [
1300 "1.0, 0.978453, 0.95418, 0.926626, 0.89508, 0.845148, 0.704534, 0.414568, 0"
1301 ],
1302 "widgets_values_named": {
1303 "sigmas": "1.0, 0.978453, 0.95418, 0.926626, 0.89508, 0.845148, 0.704534, 0.414568, 0"
1304 }
1305 },
1306 {
1307 "id": 486,
1308 "type": "SamplerCustomAdvanced",
1309 "pos": [
1310 1249.1324593958066,
1311 636.0729010945772
1312 ],
1313 "size": [
1314 220.2388671875,
1315 106
1316 ],
1317 "flags": [],
1318 "order": 14,
1319 "mode": 0,
1320 "inputs": [
1321 {
1322 "localized_name": "noise",
1323 "name": "noise",
1324 "type": "NOISE",
1325 "link": 715
1326 },
1327 {
1328 "localized_name": "guider",
1329 "name": "guider",
1330 "type": "GUIDER",
1331 "link": 716
1332 },
1333 {
1334 "localized_name": "sampler",
1335 "name": "sampler",
1336 "type": "SAMPLER",
1337 "link": 717
1338 },
1339 {
1340 "localized_name": "sigmas",
1341 "name": "sigmas",
1342 "type": "SIGMAS",
1343 "link": 718
1344 },
1345 {
1346 "localized_name": "latent_image",
1347 "name": "latent_image",
1348 "type": "LATENT",
1349 "link": 726
1350 }
1351 ],
1352 "outputs": [
1353 {
1354 "localized_name": "output",
1355 "name": "output",
1356 "type": "LATENT",
1357 "links": [
1358 720
1359 ]
1360 },
1361 {
1362 "localized_name": "denoised_output",
1363 "name": "denoised_output",
1364 "type": "LATENT",
1365 "links": []
1366 }
1367 ],
1368 "title": "Sampler Custom Advanced",
1369 "properties": {
1370 "Node name for S&R": "SamplerCustomAdvanced"
1371 }
1372 },
1373 {
1374 "id": 487,
1375 "type": "KSamplerSelect",
1376 "pos": [
1377 921.7446995331134,
1378 918.5134150377687
1379 ],
1380 "size": [
1381 270,
1382 58
1383 ],
1384 "flags": [],
1385 "order": 2,
1386 "mode": 0,
1387 "inputs": [
1388 {
1389 "localized_name": "sampler_name",
1390 "name": "sampler_name",
1391 "type": "COMBO",
1392 "widget": {
1393 "name": "sampler_name"
1394 },
1395 "link": 728
1396 }
1397 ],
1398 "outputs": [
1399 {
1400 "localized_name": "SAMPLER",
1401 "name": "SAMPLER",
1402 "type": "SAMPLER",
1403 "links": [
1404 717
1405 ]
1406 }
1407 ],
1408 "title": "KSampler Select (euler)",
1409 "properties": {
1410 "Node name for S&R": "KSamplerSelect"
1411 },
1412 "widgets_values": [
1413 "euler"
1414 ],
1415 "widgets_values_named": {
1416 "sampler_name": "euler"
1417 }
1418 },
1419 {
1420 "id": 488,
1421 "type": "RandomNoise",
1422 "pos": [
1423 921.7446995331134,
1424 612.5134150377687
1425 ],
1426 "size": [
1427 270,
1428 82
1429 ],
1430 "flags": [],
1431 "order": 3,
1432 "mode": 0,
1433 "inputs": [],
1434 "outputs": [
1435 {
1436 "localized_name": "NOISE",
1437 "name": "NOISE",
1438 "type": "NOISE",
1439 "links": [
1440 715
1441 ]
1442 }
1443 ],
1444 "title": "Random Noise",
1445 "properties": {
1446 "Node name for S&R": "RandomNoise"
1447 },
1448 "widgets_values": [
1449 531123706903762,
1450 "randomize"
1451 ],
1452 "widgets_values_named": {
1453 "noise_seed": 531123706903762,
1454 "control_after_generate": "randomize"
1455 }
1456 },
1457 {
1458 "id": 489,
1459 "type": "CFGGuider",
1460 "pos": [
1461 921.7446995331134,
1462 757.5134150377687
1463 ],
1464 "size": [
1465 270,
1466 98
1467 ],
1468 "flags": [],
1469 "order": 15,
1470 "mode": 0,
1471 "inputs": [
1472 {
1473 "localized_name": "model",
1474 "name": "model",
1475 "type": "MODEL",
1476 "link": 719
1477 },
1478 {
1479 "localized_name": "positive",
1480 "name": "positive",
1481 "type": "CONDITIONING",
1482 "link": 724
1483 },
1484 {
1485 "localized_name": "negative",
1486 "name": "negative",
1487 "type": "CONDITIONING",
1488 "link": 725
1489 }
1490 ],
1491 "outputs": [
1492 {
1493 "localized_name": "GUIDER",
1494 "name": "GUIDER",
1495 "type": "GUIDER",
1496 "links": [
1497 716
1498 ]
1499 }
1500 ],
1501 "properties": {
1502 "Node name for S&R": "CFGGuider"
1503 },
1504 "widgets_values": [
1505 1
1506 ],
1507 "widgets_values_named": {
1508 "cfg": 1
1509 }
1510 },
1511 {
1512 "id": 490,
1513 "type": "QwenImage21Cache",
1514 "pos": [
1515 926.1059484577547,
1516 395.65408740404223
1517 ],
1518 "size": [
1519 270,
1520 90
1521 ],
1522 "flags": [],
1523 "order": 16,
1524 "mode": 0,
1525 "inputs": [
1526 {
1527 "localized_name": "model",
1528 "name": "model",
1529 "type": "MODEL",
1530 "link": 721
1531 },
1532 {
1533 "localized_name": "device",
1534 "name": "device",
1535 "type": "COMBO",
1536 "widget": {
1537 "name": "device"
1538 },
1539 "link": 722
1540 },
1541 {
1542 "localized_name": "dtype",
1543 "name": "dtype",
1544 "type": "COMBO",
1545 "widget": {
1546 "name": "dtype"
1547 },
1548 "link": 723
1549 }
1550 ],
1551 "outputs": [
1552 {
1553 "localized_name": "MODEL",
1554 "name": "MODEL",
1555 "type": "MODEL",
1556 "links": [
1557 719
1558 ]
1559 }
1560 ],
1561 "properties": {
1562 "Node name for S&R": "QwenImage21Cache"
1563 },
1564 "widgets_values": [
1565 "auto",
1566 "default"
1567 ],
1568 "widgets_values_named": {
1569 "device": "auto",
1570 "dtype": "default"
1571 }
1572 }
1573 ],
1574 "groups": [
1575 {
1576 "id": 34,
1577 "title": "Models",
1578 "bounding": [
1579 -200,
1580 300,
1581 530,
1582 590
1583 ],
1584 "color": "#3f789e",
1585 "flags": []
1586 },
1587 {
1588 "id": 35,
1589 "title": "Image Size",
1590 "bounding": [
1591 -200,
1592 920,
1593 530,
1594 250
1595 ],
1596 "color": "#3f789e",
1597 "flags": []
1598 },
1599 {
1600 "id": 36,
1601 "title": "Conditioning",
1602 "bounding": [
1603 360,
1604 300,
1605 471.4209056304643,
1606 870.1714561956576
1607 ],
1608 "color": "#3f789e",
1609 "flags": []
1610 },
1611 {
1612 "id": 37,
1613 "title": "Sampling",
1614 "bounding": [
1615 861.9202661027128,
1616 300.91976326348265,
1617 693.1268974821711,
1618 868.7423168092026
1619 ],
1620 "color": "#3f789e",
1621 "flags": []
1622 },
1623 {
1624 "id": 38,
1625 "title": "Prompt Enhancer",
1626 "bounding": [
1627 -200,
1628 -500,
1629 1760,
1630 770
1631 ],
1632 "color": "#3f789e",
1633 "flags": []
1634 }
1635 ],
1636 "links": [
1637 {
1638 "id": 647,
1639 "origin_id": 453,
1640 "origin_slot": 0,
1641 "target_id": 452,
1642 "target_slot": 0,
1643 "type": "CLIP"
1644 },
1645 {
1646 "id": 649,
1647 "origin_id": 454,
1648 "origin_slot": 0,
1649 "target_id": 457,
1650 "target_slot": 1,
1651 "type": "VAE"
1652 },
1653 {
1654 "id": 650,
1655 "origin_id": 457,
1656 "origin_slot": 0,
1657 "target_id": -20,
1658 "target_slot": 0,
1659 "type": "IMAGE"
1660 },
1661 {
1662 "id": 686,
1663 "origin_id": 474,
1664 "origin_slot": 0,
1665 "target_id": 472,
1666 "target_slot": 0,
1667 "type": "STRING"
1668 },
1669 {
1670 "id": 687,
1671 "origin_id": 472,
1672 "origin_slot": 0,
1673 "target_id": 452,
1674 "target_slot": 3,
1675 "type": "STRING"
1676 },
1677 {
1678 "id": 712,
1679 "origin_id": 471,
1680 "origin_slot": 0,
1681 "target_id": 474,
1682 "target_slot": 1,
1683 "type": "STRING"
1684 },
1685 {
1686 "id": 684,
1687 "origin_id": -10,
1688 "origin_slot": 0,
1689 "target_id": 474,
1690 "target_slot": 0,
1691 "type": "STRING"
1692 },
1693 {
1694 "id": 688,
1695 "origin_id": -10,
1696 "origin_slot": 1,
1697 "target_id": 474,
1698 "target_slot": 2,
1699 "type": "BOOLEAN"
1700 },
1701 {
1702 "id": 657,
1703 "origin_id": -10,
1704 "origin_slot": 4,
1705 "target_id": 452,
1706 "target_slot": 4,
1707 "type": "STRING"
1708 },
1709 {
1710 "id": 681,
1711 "origin_id": 473,
1712 "origin_slot": 0,
1713 "target_id": 471,
1714 "target_slot": 0,
1715 "type": "CLIP"
1716 },
1717 {
1718 "id": 709,
1719 "origin_id": 475,
1720 "origin_slot": 0,
1721 "target_id": 471,
1722 "target_slot": 4,
1723 "type": "STRING"
1724 },
1725 {
1726 "id": 711,
1727 "origin_id": -10,
1728 "origin_slot": 0,
1729 "target_id": 471,
1730 "target_slot": 5,
1731 "type": "STRING"
1732 },
1733 {
1734 "id": 713,
1735 "origin_id": -10,
1736 "origin_slot": 3,
1737 "target_id": 471,
1738 "target_slot": 6,
1739 "type": "INT"
1740 },
1741 {
1742 "id": 695,
1743 "origin_id": -10,
1744 "origin_slot": 2,
1745 "target_id": 471,
1746 "target_slot": 8,
1747 "type": "BOOLEAN"
1748 },
1749 {
1750 "id": 715,
1751 "origin_id": 488,
1752 "origin_slot": 0,
1753 "target_id": 486,
1754 "target_slot": 0,
1755 "type": "NOISE"
1756 },
1757 {
1758 "id": 716,
1759 "origin_id": 489,
1760 "origin_slot": 0,
1761 "target_id": 486,
1762 "target_slot": 1,
1763 "type": "GUIDER"
1764 },
1765 {
1766 "id": 717,
1767 "origin_id": 487,
1768 "origin_slot": 0,
1769 "target_id": 486,
1770 "target_slot": 2,
1771 "type": "SAMPLER"
1772 },
1773 {
1774 "id": 718,
1775 "origin_id": 484,
1776 "origin_slot": 0,
1777 "target_id": 486,
1778 "target_slot": 3,
1779 "type": "SIGMAS"
1780 },
1781 {
1782 "id": 719,
1783 "origin_id": 490,
1784 "origin_slot": 0,
1785 "target_id": 489,
1786 "target_slot": 0,
1787 "type": "MODEL"
1788 },
1789 {
1790 "id": 720,
1791 "origin_id": 486,
1792 "origin_slot": 0,
1793 "target_id": 457,
1794 "target_slot": 0,
1795 "type": "LATENT"
1796 },
1797 {
1798 "id": 721,
1799 "origin_id": 451,
1800 "origin_slot": 0,
1801 "target_id": 490,
1802 "target_slot": 0,
1803 "type": "MODEL"
1804 },
1805 {
1806 "id": 724,
1807 "origin_id": 452,
1808 "origin_slot": 0,
1809 "target_id": 489,
1810 "target_slot": 1,
1811 "type": "CONDITIONING"
1812 },
1813 {
1814 "id": 725,
1815 "origin_id": 452,
1816 "origin_slot": 1,
1817 "target_id": 489,
1818 "target_slot": 2,
1819 "type": "CONDITIONING"
1820 },
1821 {
1822 "id": 726,
1823 "origin_id": 456,
1824 "origin_slot": 0,
1825 "target_id": 486,
1826 "target_slot": 4,
1827 "type": "LATENT"
1828 },
1829 {
1830 "id": 660,
1831 "origin_id": -10,
1832 "origin_slot": 5,
1833 "target_id": 456,
1834 "target_slot": 0,
1835 "type": "INT"
1836 },
1837 {
1838 "id": 661,
1839 "origin_id": -10,
1840 "origin_slot": 6,
1841 "target_id": 456,
1842 "target_slot": 1,
1843 "type": "INT"
1844 },
1845 {
1846 "id": 728,
1847 "origin_id": -10,
1848 "origin_slot": 7,
1849 "target_id": 487,
1850 "target_slot": 0,
1851 "type": "COMBO"
1852 },
1853 {
1854 "id": 697,
1855 "origin_id": -10,
1856 "origin_slot": 8,
1857 "target_id": 471,
1858 "target_slot": 7,
1859 "type": "INT"
1860 },
1861 {
1862 "id": 663,
1863 "origin_id": -10,
1864 "origin_slot": 9,
1865 "target_id": 451,
1866 "target_slot": 0,
1867 "type": "COMBO"
1868 },
1869 {
1870 "id": 664,
1871 "origin_id": -10,
1872 "origin_slot": 10,
1873 "target_id": 453,
1874 "target_slot": 0,
1875 "type": "COMBO"
1876 },
1877 {
1878 "id": 665,
1879 "origin_id": -10,
1880 "origin_slot": 11,
1881 "target_id": 454,
1882 "target_slot": 0,
1883 "type": "COMBO"
1884 },
1885 {
1886 "id": 696,
1887 "origin_id": -10,
1888 "origin_slot": 12,
1889 "target_id": 473,
1890 "target_slot": 0,
1891 "type": "COMBO"
1892 },
1893 {
1894 "id": 722,
1895 "origin_id": -10,
1896 "origin_slot": 13,
1897 "target_id": 490,
1898 "target_slot": 1,
1899 "type": "COMBO"
1900 },
1901 {
1902 "id": 723,
1903 "origin_id": -10,
1904 "origin_slot": 14,
1905 "target_id": 490,
1906 "target_slot": 2,
1907 "type": "COMBO"
1908 }
1909 ],
1910 "extra": []
1911 }
1912 ]
1913 },
1914 "config": [],
1915 "extra": {
1916 "ds": {
1917 "scale": 0.35049705570151957,
1918 "offset": [
1919 146.3792925234834,
1920 -1185.9460614781851
1921 ]
1922 },
1923 "frontendVersion": "1.55.14",
1924 "VHS_latentpreview": false,
1925 "VHS_latentpreviewrate": 0,
1926 "VHS_MetadataImage": true,
1927 "VHS_KeepIntermediate": true
1928 },
1929 "version": 0.4
1930}