ComfyPilotComfyPilot
工作流 / 图像 / Qwen Image 2.1 Turbo:图像编辑
Qwen Image 2.1 Turbo:图像编辑

Qwen Image 2.1 Turbo:图像编辑

Qwen Image 2.1 Turbo: Image edit

通过单个检查点输入两张参考图像来使用 Qwen-Image-2.1 编辑图像,该检查点同时处理生成和编辑,然后将结果与原始图像进行对比。非常适合角色一致性编辑、具有真实透明度的产品抠图合成,以及原生 2K 分辨率下的风格迁移处理

图像 7 个节点 1 个输入 3,161 次使用 ComfyUI ≥ 0.39.0 ComfyUI 98 KB

下载工作流 JSON 查看官方来源

下载后把文件拖进 ComfyUI 窗口即可打开。

需要的权重

这个工作流引用了 4 个权重文件,其中 4 个能在本站模型库里找到。

qwen3.5_9b_qwen_image_2.1_pe_i2i.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
bc1c967a-7f6a-4be9-a372-dad16e4f28e3 × 1
SaveImageAdvanced × 1
LoadImage × 1
ImageCompare × 1

官方标注的模型

Qwen Image 2.1

工作流 JSON

和上面「下载工作流 JSON」是同一份文件。

1{
2 "id": "54bb395d-3e60-4c94-b525-85523901575b",
3 "revision": 0,
4 "last_node_id": 507,
5 "last_link_id": 915,
6 "nodes": [
7 {
8 "id": 459,
9 "type": "bc1c967a-7f6a-4be9-a372-dad16e4f28e3",
10 "pos": [
11 546.5131640122675,
12 2419.9458226107668
13 ],
14 "size": [
15 420,
16 760
17 ],
18 "flags": [],
19 "order": 4,
20 "mode": 0,
21 "inputs": [
22 {
23 "label": "positive_prompt",
24 "name": "prompt",
25 "type": "STRING",
26 "widget": {
27 "name": "prompt"
28 },
29 "link": null
30 },
31 {
32 "label": "refine_prompt",
33 "name": "switch_1",
34 "type": "BOOLEAN",
35 "widget": {
36 "name": "switch_1"
37 },
38 "link": null
39 },
40 {
41 "label": "custom_size",
42 "name": "switch",
43 "type": "BOOLEAN",
44 "widget": {
45 "name": "switch"
46 },
47 "link": null
48 },
49 {
50 "label": "sampler",
51 "name": "scheduler",
52 "type": "COMBO",
53 "widget": {
54 "name": "scheduler"
55 },
56 "link": null
57 },
58 {
59 "label": "cache_device",
60 "name": "device",
61 "type": "COMBO",
62 "widget": {
63 "name": "device"
64 },
65 "link": null
66 },
67 {
68 "label": "dtype",
69 "name": "dtype",
70 "type": "COMBO",
71 "widget": {
72 "name": "dtype"
73 },
74 "link": null
75 },
76 {
77 "label": "PE_model",
78 "name": "clip_name_1",
79 "type": "COMBO",
80 "widget": {
81 "name": "clip_name_1"
82 },
83 "link": null
84 },
85 {
86 "label": "image_1",
87 "name": "images.image_1",
88 "type": "IMAGE",
89 "link": 704
90 },
91 {
92 "label": "image_2",
93 "name": "images.image_2",
94 "shape": 7,
95 "type": "IMAGE",
96 "link": null
97 },
98 {
99 "label": "image_3",
100 "name": "images.image_3",
101 "shape": 7,
102 "type": "IMAGE",
103 "link": null
104 },
105 {
106 "label": "image_4",
107 "name": "images.image_4",
108 "shape": 7,
109 "type": "IMAGE",
110 "link": null
111 },
112 {
113 "label": "image_5",
114 "name": "images.image_5_1",
115 "shape": 7,
116 "type": "IMAGE",
117 "link": null
118 },
119 {
120 "label": "image_6",
121 "name": "images.image_6",
122 "shape": 7,
123 "type": "IMAGE",
124 "link": null
125 },
126 {
127 "label": "image_7",
128 "name": "images.image_7",
129 "shape": 7,
130 "type": "IMAGE",
131 "link": null
132 },
133 {
134 "label": "image_8",
135 "name": "images.image_8",
136 "shape": 7,
137 "type": "IMAGE",
138 "link": null
139 },
140 {
141 "label": "image_9",
142 "name": "images.image_9",
143 "shape": 7,
144 "type": "IMAGE",
145 "link": null
146 },
147 {
148 "label": "image_10",
149 "name": "images.image_10",
150 "shape": 7,
151 "type": "IMAGE",
152 "link": null
153 }
154 ],
155 "outputs": [
156 {
157 "name": "IMAGE",
158 "type": "IMAGE",
159 "links": [
160 672
161 ]
162 }
163 ],
164 "properties": {
165 "previewExposures": []
166 },
167 "widgets_values": [
168 0,
169 "Relight the scene as a clear moonlit night: the sky seen through the oculus becomes a deep night sky with a bright full moon and a few stars, and the tree stays as a dark night silhouette. Soft blue-silver moonlight is now the only light source, casting a cool pale pool of light on the circular stone platform and a long soft shadow of the dancer. The concrete walls turn cool blue-grey with deep shadows, and the dancer's black dress catches a faint silver rim light. Keep her exact pose, the architecture, the framing and the tree position unchanged.",
170 false,
171 false,
172 4096,
173 "",
174 1,
175 false,
176 1024,
177 1024,
178 "euler",
179 891836227295375,
180 "qwen_image_2.1_turbo_int8_convrot.safetensors",
181 "qwen3vl_8b_int8_convrot.safetensors",
182 "qwen_image_2.1_vae_bf16.safetensors",
183 "auto",
184 "default",
185 "qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors"
186 ],
187 "widgets_values_named": {
188 "resolution": 0,
189 "prompt": "Relight the scene as a clear moonlit night: the sky seen through the oculus becomes a deep night sky with a bright full moon and a few stars, and the tree stays as a dark night silhouette. Soft blue-silver moonlight is now the only light source, casting a cool pale pool of light on the circular stone platform and a long soft shadow of the dancer. The concrete walls turn cool blue-grey with deep shadows, and the dancer's black dress catches a faint silver rim light. Keep her exact pose, the architecture, the framing and the tree position unchanged.",
190 "switch_1": false,
191 "thinking": false,
192 "max_length": 4096,
193 "negative_prompt": "",
194 "cfg": 1,
195 "switch": false,
196 "width": 1024,
197 "height": 1024,
198 "scheduler": "euler",
199 "seed": 891836227295375,
200 "unet_name": "qwen_image_2.1_turbo_int8_convrot.safetensors",
201 "clip_name": "qwen3vl_8b_int8_convrot.safetensors",
202 "vae_name": "qwen_image_2.1_vae_bf16.safetensors",
203 "device": "auto",
204 "dtype": "default",
205 "clip_name_1": "qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors"
206 }
207 },
208 {
209 "id": 461,
210 "type": "SaveImageAdvanced",
211 "pos": [
212 1476.5131640122675,
213 2419.9458226107668
214 ],
215 "size": [
216 710,
217 760
218 ],
219 "flags": [],
220 "order": 5,
221 "mode": 0,
222 "showAdvanced": true,
223 "inputs": [
224 {
225 "name": "images",
226 "type": "IMAGE",
227 "link": 672
228 }
229 ],
230 "outputs": [
231 {
232 "name": "images",
233 "type": "IMAGE",
234 "links": [
235 708
236 ]
237 }
238 ],
239 "properties": [],
240 "widgets_values": [
241 "Qwen_image_2.1",
242 "png",
243 "8-bit",
244 "sRGB"
245 ],
246 "widgets_values_named": {
247 "filename_prefix": "Qwen_image_2.1",
248 "format": "png",
249 "format.bit_depth": "8-bit",
250 "format.input_color_space": "sRGB"
251 }
252 },
253 {
254 "id": 463,
255 "type": "MarkdownNote",
256 "pos": [
257 -360,
258 2410
259 ],
260 "size": [
261 420,
262 620
263 ],
264 "flags": [],
265 "order": 0,
266 "mode": 0,
267 "inputs": [],
268 "outputs": [],
269 "title": "Note: Usage",
270 "properties": [],
271 "widgets_values": [
272 "## Size\nQwen Image 2.1 has native 2K (2048*2048) support for direct output.\n\n- resolution is a total pixel budget (not width or height). Aspect ratio is preserved.\n- Official default is 1024. The model supports up to 2048.\n- This template starts at 0: no resize beyond a multiple of 32.\n- Output follows image_1. Extra refs can differ in size or aspect.\n- custom_size off: canvas comes from the encode latent (image_1).\n- custom_size on: use ResolutionSelector width/height. Keep it close to the resized image_1 size, or the edit can shift.\n\n## Reference images\n- Up to 10 reference images (image_1 to image_10).\n- Mention them in the prompt as `<image1>`, `<image2>`, ...\n- image_1 is the edit target. The rest are references.\n\n## Custom settings\nIf you need custom settings, enter or unpack the subgraph to edit it. See the [Subgraph](https://docs.comfy.org/interface/features/subgraph) guide.\n\n## Parameters\n- prompt: edit instruction. Use `<image1>` ... `<image10>`.\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: Qwen Image 2.1 official pipeline uses about 40-50 with euler. This template starts at 25. More advanced samplers need fewer steps."
273 ],
274 "widgets_values_named": {
275 "text": "## Size\nQwen Image 2.1 has native 2K (2048*2048) support for direct output.\n\n- resolution is a total pixel budget (not width or height). Aspect ratio is preserved.\n- Official default is 1024. The model supports up to 2048.\n- This template starts at 0: no resize beyond a multiple of 32.\n- Output follows image_1. Extra refs can differ in size or aspect.\n- custom_size off: canvas comes from the encode latent (image_1).\n- custom_size on: use ResolutionSelector width/height. Keep it close to the resized image_1 size, or the edit can shift.\n\n## Reference images\n- Up to 10 reference images (image_1 to image_10).\n- Mention them in the prompt as `<image1>`, `<image2>`, ...\n- image_1 is the edit target. The rest are references.\n\n## Custom settings\nIf you need custom settings, enter or unpack the subgraph to edit it. See the [Subgraph](https://docs.comfy.org/interface/features/subgraph) guide.\n\n## Parameters\n- prompt: edit instruction. Use `<image1>` ... `<image10>`.\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: Qwen Image 2.1 official pipeline uses about 40-50 with euler. This template starts at 25. More advanced samplers need fewer steps."
276 },
277 "color": "#222",
278 "bgcolor": "#000"
279 },
280 {
281 "id": 470,
282 "type": "LoadImage",
283 "pos": [
284 140,
285 2420
286 ],
287 "size": [
288 351.59115163987053,
289 548.8686769486816
290 ],
291 "flags": [],
292 "order": 1,
293 "mode": 0,
294 "inputs": [],
295 "outputs": [
296 {
297 "name": "IMAGE",
298 "type": "IMAGE",
299 "links": [
300 704,
301 707
302 ]
303 },
304 {
305 "name": "MASK",
306 "type": "MASK",
307 "links": null
308 }
309 ],
310 "properties": {
311 "Node name for S&R": "LoadImage"
312 },
313 "widgets_values": [
314 "ballet_dancer_photography_minimalist_architecture.png",
315 "image"
316 ],
317 "widgets_values_named": {
318 "image": "ballet_dancer_photography_minimalist_architecture.png",
319 "upload": "image"
320 }
321 },
322 {
323 "id": 472,
324 "type": "ImageCompare",
325 "pos": [
326 2226.513164012267,
327 2419.9458226107668
328 ],
329 "size": [
330 660,
331 760
332 ],
333 "flags": [],
334 "order": 6,
335 "mode": 0,
336 "inputs": [
337 {
338 "name": "image_a",
339 "shape": 7,
340 "type": "IMAGE",
341 "link": 707
342 },
343 {
344 "name": "image_b",
345 "shape": 7,
346 "type": "IMAGE",
347 "link": 708
348 }
349 ],
350 "outputs": [],
351 "properties": {
352 "Node name for S&R": "ImageCompare"
353 },
354 "widgets_values": [],
355 "widgets_values_named": []
356 },
357 {
358 "id": 476,
359 "type": "MarkdownNote",
360 "pos": [
361 -840,
362 2410
363 ],
364 "size": [
365 420,
366 620
367 ],
368 "flags": [],
369 "order": 2,
370 "mode": 0,
371 "inputs": [],
372 "outputs": [],
373 "title": "Note: Model links",
374 "properties": [],
375 "widgets_values": [
376 "Guide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n## Input Asset\n\n- [ballet_dancer_photography_minimalist_architecture.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/ballet_dancer_photography_minimalist_architecture.png)\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_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3vl_8b_bf16.safetensors) (16.33 GB)\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_i2i.int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3.5_9b_qwen_image_2.1_pe_i2i.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_bf16.safetensors\n│ │ ├── qwen3vl_8b_int8_convrot.safetensors\n│ │ └── qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors│ └── 📂 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"
377 ],
378 "widgets_values_named": {
379 "text": "Guide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n## Input Asset\n\n- [ballet_dancer_photography_minimalist_architecture.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/ballet_dancer_photography_minimalist_architecture.png)\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_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3vl_8b_bf16.safetensors) (16.33 GB)\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_i2i.int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3.5_9b_qwen_image_2.1_pe_i2i.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_bf16.safetensors\n│ │ ├── qwen3vl_8b_int8_convrot.safetensors\n│ │ └── qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors│ └── 📂 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"
380 },
381 "color": "#222",
382 "bgcolor": "#000"
383 },
384 {
385 "id": 501,
386 "type": "MarkdownNote",
387 "pos": [
388 986.5131640122675,
389 2729.9458226107668
390 ],
391 "size": [
392 420,
393 480
394 ],
395 "flags": [],
396 "order": 3,
397 "mode": 0,
398 "inputs": [],
399 "outputs": [],
400 "title": "Note: PE",
401 "properties": [],
402 "widgets_values": [
403 "## Prompt Enhancer\n\nThe prompt enhancer rewrites your instruction with the Qwen 3.5 prompt enhancer model before the edit 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 edit model, off passes your instruction through as written. On gives the edit 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`: 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 24000; 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` 0, `repetition_penalty` 1.0.\n\nThe enhancer checkpoint and its system prompt live inside the subgraph."
404 ],
405 "widgets_values_named": {
406 "text": "## Prompt Enhancer\n\nThe prompt enhancer rewrites your instruction with the Qwen 3.5 prompt enhancer model before the edit 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 edit model, off passes your instruction through as written. On gives the edit 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`: 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 24000; 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` 0, `repetition_penalty` 1.0.\n\nThe enhancer checkpoint and its system prompt live inside the subgraph."
407 },
408 "color": "#222",
409 "bgcolor": "#000"
410 }
411 ],
412 "links": [
413 [
414 707,
415 470,
416 0,
417 472,
418 0,
419 "IMAGE"
420 ],
421 [
422 708,
423 461,
424 0,
425 472,
426 1,
427 "IMAGE"
428 ],
429 [
430 704,
431 470,
432 0,
433 459,
434 7,
435 "IMAGE"
436 ],
437 [
438 672,
439 459,
440 0,
441 461,
442 0,
443 "IMAGE"
444 ]
445 ],
446 "groups": [],
447 "definitions": {
448 "subgraphs": [
449 {
450 "id": "bc1c967a-7f6a-4be9-a372-dad16e4f28e3",
451 "version": 1,
452 "state": {
453 "lastGroupId": 38,
454 "lastNodeId": 507,
455 "lastLinkId": 915,
456 "lastRerouteId": 9
457 },
458 "revision": 0,
459 "config": [],
460 "name": "Image Edit (Qwen Image 2.1 Turbo)",
461 "inputNode": {
462 "id": -10,
463 "bounding": [
464 -720,
465 630,
466 143.044921875,
467 608
468 ]
469 },
470 "outputNode": {
471 "id": -20,
472 "bounding": [
473 1960,
474 640,
475 128,
476 68
477 ]
478 },
479 "inputs": [
480 {
481 "id": "1f3911c3-71b5-45b7-9a0e-4ac7285069dc",
482 "name": "resolution",
483 "type": "INT",
484 "linkIds": [
485 725
486 ],
487 "pos": [
488 -600.955078125,
489 654
490 ]
491 },
492 {
493 "id": "6a73de3b-f4cd-43a4-9076-76648c6902f0",
494 "name": "prompt",
495 "type": "STRING",
496 "linkIds": [
497 739,
498 802
499 ],
500 "localized_name": "prompt",
501 "label": "positive_prompt",
502 "pos": [
503 -600.955078125,
504 674
505 ]
506 },
507 {
508 "id": "57887da4-f3f5-41b1-9fce-a7292abaef6a",
509 "name": "switch_1",
510 "type": "BOOLEAN",
511 "linkIds": [
512 741
513 ],
514 "label": "refine_prompt",
515 "pos": [
516 -600.955078125,
517 694
518 ]
519 },
520 {
521 "id": "cd079967-6ff0-46d9-8b58-d52c2cdc5de5",
522 "name": "thinking",
523 "type": "BOOLEAN",
524 "linkIds": [
525 902
526 ],
527 "pos": [
528 -600.955078125,
529 714
530 ]
531 },
532 {
533 "id": "d98ec6b1-9955-48e0-874d-b99d10218329",
534 "name": "max_length",
535 "type": "INT",
536 "linkIds": [
537 903
538 ],
539 "pos": [
540 -600.955078125,
541 734
542 ]
543 },
544 {
545 "id": "d4c1377f-7fbc-4519-b83c-9a3b9c2de104",
546 "name": "negative_prompt",
547 "type": "STRING",
548 "linkIds": [
549 727
550 ],
551 "pos": [
552 -600.955078125,
553 754
554 ]
555 },
556 {
557 "id": "420ee896-17c3-4e07-95fc-0ff309a6b836",
558 "name": "cfg",
559 "type": "FLOAT",
560 "linkIds": [
561 911
562 ],
563 "pos": [
564 -600.955078125,
565 774
566 ]
567 },
568 {
569 "id": "60df426d-f8ab-4ce2-8c82-42dc7cbf19d0",
570 "name": "switch",
571 "type": "BOOLEAN",
572 "linkIds": [
573 703
574 ],
575 "label": "custom_size",
576 "pos": [
577 -600.955078125,
578 794
579 ]
580 },
581 {
582 "id": "91c96cf8-057b-4da2-b71e-305541a3527e",
583 "name": "width",
584 "type": "INT",
585 "linkIds": [
586 660
587 ],
588 "localized_name": "width",
589 "pos": [
590 -600.955078125,
591 814
592 ]
593 },
594 {
595 "id": "661cc520-6bd0-4925-90ec-cecaa188b57d",
596 "name": "height",
597 "type": "INT",
598 "linkIds": [
599 661
600 ],
601 "localized_name": "height",
602 "pos": [
603 -600.955078125,
604 834
605 ]
606 },
607 {
608 "id": "9f0e91b8-5a4a-4f5a-a2a4-4ddc180df0fd",
609 "name": "scheduler",
610 "type": "COMBO",
611 "linkIds": [
612 915
613 ],
614 "label": "sampler",
615 "pos": [
616 -600.955078125,
617 854
618 ]
619 },
620 {
621 "id": "977ce57d-3764-491c-8d2d-543754cfbaf1",
622 "name": "seed",
623 "type": "INT",
624 "linkIds": [
625 804,
626 914
627 ],
628 "pos": [
629 -600.955078125,
630 874
631 ]
632 },
633 {
634 "id": "143494fb-a40e-423f-be3b-ecc808b408b0",
635 "name": "unet_name",
636 "type": "COMBO",
637 "linkIds": [
638 663
639 ],
640 "pos": [
641 -600.955078125,
642 894
643 ]
644 },
645 {
646 "id": "d8528289-e121-45ed-9c31-e6370ce4ba5e",
647 "name": "clip_name",
648 "type": "COMBO",
649 "linkIds": [
650 664
651 ],
652 "pos": [
653 -600.955078125,
654 914
655 ]
656 },
657 {
658 "id": "f03d1fb0-d592-4997-b55e-e7a2549c36e5",
659 "name": "vae_name",
660 "type": "COMBO",
661 "linkIds": [
662 665
663 ],
664 "pos": [
665 -600.955078125,
666 934
667 ]
668 },
669 {
670 "id": "c2d95dbf-7f92-4c0b-a138-b9b5d1472e7f",
671 "name": "device",
672 "type": "COMBO",
673 "linkIds": [
674 729
675 ],
676 "label": "cache_device",
677 "pos": [
678 -600.955078125,
679 954
680 ]
681 },
682 {
683 "id": "974d6751-be03-4afc-911f-a0d43f7cb906",
684 "name": "dtype",
685 "type": "COMBO",
686 "linkIds": [
687 730
688 ],
689 "label": "dtype",
690 "pos": [
691 -600.955078125,
692 974
693 ]
694 },
695 {
696 "id": "c11b216a-e05d-49a4-b776-293022d01a52",
697 "name": "clip_name_1",
698 "type": "COMBO",
699 "linkIds": [
700 746
701 ],
702 "label": "PE_model",
703 "pos": [
704 -600.955078125,
705 994
706 ]
707 },
708 {
709 "id": "6bbe4c8a-0ce9-4576-9468-697a165b98b4",
710 "name": "images.image_1",
711 "type": "IMAGE",
712 "linkIds": [
713 710,
714 750
715 ],
716 "label": "image_1",
717 "pos": [
718 -600.955078125,
719 1014
720 ]
721 },
722 {
723 "id": "5e9080e7-bbd0-4363-9e25-aaa201f9ff01",
724 "name": "images.image_2",
725 "type": "IMAGE",
726 "linkIds": [
727 711,
728 779
729 ],
730 "label": "image_2",
731 "pos": [
732 -600.955078125,
733 1034
734 ]
735 },
736 {
737 "id": "29bd6732-17d4-4ca7-aa9f-dc118c6c008a",
738 "name": "images.image_3",
739 "type": "IMAGE",
740 "linkIds": [
741 712,
742 780
743 ],
744 "label": "image_3",
745 "pos": [
746 -600.955078125,
747 1054
748 ]
749 },
750 {
751 "id": "c0899e22-8834-4c49-b0ec-5d2e1c9a4f9d",
752 "name": "images.image_4",
753 "type": "IMAGE",
754 "linkIds": [
755 713,
756 781
757 ],
758 "label": "image_4",
759 "pos": [
760 -600.955078125,
761 1074
762 ]
763 },
764 {
765 "id": "f4bb2fe2-583b-429d-83dc-0af6d4d3fdf8",
766 "name": "images.image_5_1",
767 "type": "IMAGE",
768 "linkIds": [
769 714,
770 782
771 ],
772 "label": "image_5",
773 "pos": [
774 -600.955078125,
775 1094
776 ]
777 },
778 {
779 "id": "4dc8dcc5-da5f-4dd4-82f4-479dabed8567",
780 "name": "images.image_6",
781 "type": "IMAGE",
782 "linkIds": [
783 715,
784 783
785 ],
786 "label": "image_6",
787 "pos": [
788 -600.955078125,
789 1114
790 ]
791 },
792 {
793 "id": "58ac7e94-91ff-4992-9022-fd67902782eb",
794 "name": "images.image_7",
795 "type": "IMAGE",
796 "linkIds": [
797 716,
798 784
799 ],
800 "label": "image_7",
801 "pos": [
802 -600.955078125,
803 1134
804 ]
805 },
806 {
807 "id": "b736a3f9-62a7-4b77-ad2b-9ed40a482949",
808 "name": "images.image_8",
809 "type": "IMAGE",
810 "linkIds": [
811 717,
812 785
813 ],
814 "label": "image_8",
815 "pos": [
816 -600.955078125,
817 1154
818 ]
819 },
820 {
821 "id": "79883453-5e79-4003-a7ef-8d9156cffcc4",
822 "name": "images.image_9",
823 "type": "IMAGE",
824 "linkIds": [
825 718,
826 786
827 ],
828 "label": "image_9",
829 "pos": [
830 -600.955078125,
831 1174
832 ]
833 },
834 {
835 "id": "68c8b3fa-d3fd-4281-82ba-09030a9918dc",
836 "name": "images.image_10",
837 "type": "IMAGE",
838 "linkIds": [
839 719,
840 787
841 ],
842 "label": "image_10",
843 "pos": [
844 -600.955078125,
845 1194
846 ]
847 }
848 ],
849 "outputs": [
850 {
851 "id": "f6f3effc-0961-4c17-b52c-a77c16ca6aa4",
852 "name": "IMAGE",
853 "type": "IMAGE",
854 "linkIds": [
855 650
856 ],
857 "localized_name": "IMAGE",
858 "pos": [
859 1984,
860 664
861 ]
862 }
863 ],
864 "widgets": [],
865 "nodes": [
866 {
867 "id": 451,
868 "type": "UNETLoader",
869 "pos": [
870 -190,
871 410
872 ],
873 "size": [
874 510,
875 90
876 ],
877 "flags": [],
878 "order": 2,
879 "mode": 0,
880 "inputs": [
881 {
882 "localized_name": "unet_name",
883 "name": "unet_name",
884 "type": "COMBO",
885 "widget": {
886 "name": "unet_name"
887 },
888 "link": 663
889 }
890 ],
891 "outputs": [
892 {
893 "localized_name": "MODEL",
894 "name": "MODEL",
895 "type": "MODEL",
896 "links": [
897 688
898 ]
899 }
900 ],
901 "properties": {
902 "Node name for S&R": "UNETLoader",
903 "models": [
904 {
905 "name": "qwen_image_2.1_turbo_int8_convrot.safetensors",
906 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/diffusion_models/qwen_image_2.1_turbo_int8_convrot.safetensors",
907 "directory": "diffusion_models"
908 }
909 ]
910 },
911 "widgets_values": [
912 "qwen_image_2.1_turbo_int8_convrot.safetensors",
913 "default"
914 ],
915 "widgets_values_named": {
916 "unet_name": "qwen_image_2.1_turbo_int8_convrot.safetensors",
917 "weight_dtype": "default"
918 }
919 },
920 {
921 "id": 453,
922 "type": "CLIPLoader",
923 "pos": [
924 -190,
925 570
926 ],
927 "size": [
928 510,
929 120
930 ],
931 "flags": [],
932 "order": 3,
933 "mode": 0,
934 "inputs": [
935 {
936 "localized_name": "clip_name",
937 "name": "clip_name",
938 "type": "COMBO",
939 "widget": {
940 "name": "clip_name"
941 },
942 "link": 664
943 }
944 ],
945 "outputs": [
946 {
947 "localized_name": "CLIP",
948 "name": "CLIP",
949 "type": "CLIP",
950 "links": [
951 721
952 ]
953 }
954 ],
955 "properties": {
956 "Node name for S&R": "CLIPLoader",
957 "models": [
958 {
959 "name": "qwen3vl_8b_int8_convrot.safetensors",
960 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors",
961 "directory": "text_encoders"
962 }
963 ]
964 },
965 "widgets_values": [
966 "qwen3vl_8b_int8_convrot.safetensors",
967 "qwen_image",
968 "default"
969 ],
970 "widgets_values_named": {
971 "clip_name": "qwen3vl_8b_int8_convrot.safetensors",
972 "type": "qwen_image",
973 "device": "default"
974 }
975 },
976 {
977 "id": 454,
978 "type": "VAELoader",
979 "pos": [
980 -190,
981 770
982 ],
983 "size": [
984 510,
985 70
986 ],
987 "flags": [],
988 "order": 4,
989 "mode": 0,
990 "inputs": [
991 {
992 "localized_name": "vae_name",
993 "name": "vae_name",
994 "type": "COMBO",
995 "widget": {
996 "name": "vae_name"
997 },
998 "link": 665
999 }
1000 ],
1001 "outputs": [
1002 {
1003 "localized_name": "VAE",
1004 "name": "VAE",
1005 "type": "VAE",
1006 "links": [
1007 649,
1008 720
1009 ]
1010 }
1011 ],
1012 "properties": {
1013 "Node name for S&R": "VAELoader",
1014 "models": [
1015 {
1016 "name": "qwen_image_2.1_vae_bf16.safetensors",
1017 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/vae/qwen_image_2.1_vae_bf16.safetensors",
1018 "directory": "vae"
1019 }
1020 ]
1021 },
1022 "widgets_values": [
1023 "qwen_image_2.1_vae_bf16.safetensors"
1024 ],
1025 "widgets_values_named": {
1026 "vae_name": "qwen_image_2.1_vae_bf16.safetensors"
1027 }
1028 },
1029 {
1030 "id": 456,
1031 "type": "EmptyLatentImage",
1032 "pos": [
1033 -70,
1034 1010
1035 ],
1036 "size": [
1037 300,
1038 120
1039 ],
1040 "flags": [],
1041 "order": 5,
1042 "mode": 0,
1043 "inputs": [
1044 {
1045 "localized_name": "width",
1046 "name": "width",
1047 "type": "INT",
1048 "widget": {
1049 "name": "width"
1050 },
1051 "link": 660
1052 },
1053 {
1054 "localized_name": "height",
1055 "name": "height",
1056 "type": "INT",
1057 "widget": {
1058 "name": "height"
1059 },
1060 "link": 661
1061 }
1062 ],
1063 "outputs": [
1064 {
1065 "localized_name": "LATENT",
1066 "name": "LATENT",
1067 "type": "LATENT",
1068 "links": [
1069 684
1070 ]
1071 }
1072 ],
1073 "properties": {
1074 "Node name for S&R": "EmptyLatentImage"
1075 },
1076 "widgets_values": [
1077 1024,
1078 1024,
1079 1
1080 ],
1081 "widgets_values_named": {
1082 "width": 1024,
1083 "height": 1024,
1084 "batch_size": 1
1085 }
1086 },
1087 {
1088 "id": 457,
1089 "type": "VAEDecode",
1090 "pos": [
1091 1620,
1092 660
1093 ],
1094 "size": [
1095 230,
1096 60
1097 ],
1098 "flags": [],
1099 "order": 6,
1100 "mode": 0,
1101 "inputs": [
1102 {
1103 "localized_name": "samples",
1104 "name": "samples",
1105 "type": "LATENT",
1106 "link": 907
1107 },
1108 {
1109 "localized_name": "vae",
1110 "name": "vae",
1111 "type": "VAE",
1112 "link": 649
1113 }
1114 ],
1115 "outputs": [
1116 {
1117 "localized_name": "IMAGE",
1118 "name": "IMAGE",
1119 "type": "IMAGE",
1120 "links": [
1121 650
1122 ]
1123 }
1124 ],
1125 "properties": {
1126 "Node name for S&R": "VAEDecode"
1127 }
1128 },
1129 {
1130 "id": 468,
1131 "type": "ComfySwitchNode",
1132 "pos": [
1133 479.85314513256685,
1134 1015.0153766097112
1135 ],
1136 "size": [
1137 270,
1138 80
1139 ],
1140 "flags": [],
1141 "order": 7,
1142 "mode": 0,
1143 "inputs": [
1144 {
1145 "localized_name": "on_false",
1146 "name": "on_false",
1147 "shape": 7,
1148 "type": "LATENT",
1149 "link": 724
1150 },
1151 {
1152 "localized_name": "on_true",
1153 "name": "on_true",
1154 "shape": 7,
1155 "type": "LATENT",
1156 "link": 684
1157 },
1158 {
1159 "localized_name": "switch",
1160 "name": "switch",
1161 "type": "BOOLEAN",
1162 "widget": {
1163 "name": "switch"
1164 },
1165 "link": 703
1166 }
1167 ],
1168 "outputs": [
1169 {
1170 "localized_name": "output",
1171 "name": "output",
1172 "type": "LATENT",
1173 "links": [
1174 913
1175 ]
1176 }
1177 ],
1178 "properties": {
1179 "Node name for S&R": "ComfySwitchNode"
1180 },
1181 "widgets_values": [
1182 false
1183 ],
1184 "widgets_values_named": {
1185 "switch": false
1186 }
1187 },
1188 {
1189 "id": 469,
1190 "type": "QwenImage21Cache",
1191 "pos": [
1192 955.4012707927922,
1193 398.1717177666044
1194 ],
1195 "size": [
1196 270,
1197 90
1198 ],
1199 "flags": [],
1200 "order": 8,
1201 "mode": 0,
1202 "inputs": [
1203 {
1204 "localized_name": "model",
1205 "name": "model",
1206 "type": "MODEL",
1207 "link": 688
1208 },
1209 {
1210 "localized_name": "device",
1211 "name": "device",
1212 "type": "COMBO",
1213 "widget": {
1214 "name": "device"
1215 },
1216 "link": 729
1217 },
1218 {
1219 "localized_name": "dtype",
1220 "name": "dtype",
1221 "type": "COMBO",
1222 "widget": {
1223 "name": "dtype"
1224 },
1225 "link": 730
1226 }
1227 ],
1228 "outputs": [
1229 {
1230 "localized_name": "MODEL",
1231 "name": "MODEL",
1232 "type": "MODEL",
1233 "links": [
1234 908
1235 ]
1236 }
1237 ],
1238 "properties": {
1239 "Node name for S&R": "QwenImage21Cache"
1240 },
1241 "widgets_values": [
1242 "auto",
1243 "default"
1244 ],
1245 "widgets_values_named": {
1246 "device": "auto",
1247 "dtype": "default"
1248 }
1249 },
1250 {
1251 "id": 474,
1252 "type": "TextEncodeQwenImage21",
1253 "pos": [
1254 419.68682172750084,
1255 430.45130327289627
1256 ],
1257 "size": [
1258 375.2628583088489,
1259 446
1260 ],
1261 "flags": [],
1262 "order": 9,
1263 "mode": 0,
1264 "inputs": [
1265 {
1266 "localized_name": "clip",
1267 "name": "clip",
1268 "type": "CLIP",
1269 "link": 721
1270 },
1271 {
1272 "localized_name": "image_1",
1273 "name": "images.image_1",
1274 "shape": 7,
1275 "type": "IMAGE",
1276 "link": 710
1277 },
1278 {
1279 "localized_name": "vae",
1280 "name": "vae",
1281 "shape": 7,
1282 "type": "VAE",
1283 "link": 720
1284 },
1285 {
1286 "localized_name": "prompt",
1287 "name": "prompt",
1288 "type": "STRING",
1289 "widget": {
1290 "name": "prompt"
1291 },
1292 "link": 743
1293 },
1294 {
1295 "localized_name": "negative_prompt",
1296 "name": "negative_prompt",
1297 "type": "STRING",
1298 "widget": {
1299 "name": "negative_prompt"
1300 },
1301 "link": 727
1302 },
1303 {
1304 "localized_name": "resolution",
1305 "name": "resolution",
1306 "type": "INT",
1307 "widget": {
1308 "name": "resolution"
1309 },
1310 "link": 725
1311 },
1312 {
1313 "localized_name": "image_12",
1314 "name": "images.image_12",
1315 "shape": 7,
1316 "type": "IMAGE",
1317 "link": null
1318 },
1319 {
1320 "localized_name": "image_11",
1321 "name": "images.image_11",
1322 "shape": 7,
1323 "type": "IMAGE",
1324 "link": null
1325 },
1326 {
1327 "localized_name": "image_2",
1328 "name": "images.image_2",
1329 "shape": 7,
1330 "type": "IMAGE",
1331 "link": 711
1332 },
1333 {
1334 "localized_name": "image_3",
1335 "name": "images.image_3",
1336 "shape": 7,
1337 "type": "IMAGE",
1338 "link": 712
1339 },
1340 {
1341 "localized_name": "image_4",
1342 "name": "images.image_4",
1343 "shape": 7,
1344 "type": "IMAGE",
1345 "link": 713
1346 },
1347 {
1348 "localized_name": "image_5",
1349 "name": "images.image_5",
1350 "shape": 7,
1351 "type": "IMAGE",
1352 "link": 714
1353 },
1354 {
1355 "localized_name": "image_6",
1356 "name": "images.image_6",
1357 "shape": 7,
1358 "type": "IMAGE",
1359 "link": 715
1360 },
1361 {
1362 "localized_name": "image_7",
1363 "name": "images.image_7",
1364 "shape": 7,
1365 "type": "IMAGE",
1366 "link": 716
1367 },
1368 {
1369 "localized_name": "image_8",
1370 "name": "images.image_8",
1371 "shape": 7,
1372 "type": "IMAGE",
1373 "link": 717
1374 },
1375 {
1376 "localized_name": "image_9",
1377 "name": "images.image_9",
1378 "shape": 7,
1379 "type": "IMAGE",
1380 "link": 718
1381 },
1382 {
1383 "localized_name": "image_10",
1384 "name": "images.image_10",
1385 "shape": 7,
1386 "type": "IMAGE",
1387 "link": 719
1388 }
1389 ],
1390 "outputs": [
1391 {
1392 "localized_name": "positive",
1393 "name": "positive",
1394 "type": "CONDITIONING",
1395 "links": [
1396 909
1397 ]
1398 },
1399 {
1400 "localized_name": "negative",
1401 "name": "negative",
1402 "type": "CONDITIONING",
1403 "links": [
1404 910
1405 ]
1406 },
1407 {
1408 "localized_name": "latent",
1409 "name": "latent",
1410 "type": "LATENT",
1411 "links": [
1412 724
1413 ]
1414 }
1415 ],
1416 "properties": {
1417 "Node name for S&R": "TextEncodeQwenImage21"
1418 },
1419 "widgets_values": [
1420 "",
1421 "",
1422 1024
1423 ],
1424 "widgets_values_named": {
1425 "prompt": "",
1426 "negative_prompt": "",
1427 "resolution": 1024
1428 }
1429 },
1430 {
1431 "id": 477,
1432 "type": "CLIPLoader",
1433 "pos": [
1434 -180,
1435 -480
1436 ],
1437 "size": [
1438 530,
1439 120
1440 ],
1441 "flags": [],
1442 "order": 10,
1443 "mode": 0,
1444 "inputs": [
1445 {
1446 "localized_name": "clip_name",
1447 "name": "clip_name",
1448 "type": "COMBO",
1449 "widget": {
1450 "name": "clip_name"
1451 },
1452 "link": 746
1453 }
1454 ],
1455 "outputs": [
1456 {
1457 "localized_name": "CLIP",
1458 "name": "CLIP",
1459 "type": "CLIP",
1460 "links": [
1461 800
1462 ]
1463 }
1464 ],
1465 "properties": {
1466 "Node name for S&R": "CLIPLoader",
1467 "models": [
1468 {
1469 "name": "qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors",
1470 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors",
1471 "directory": "text_encoders"
1472 }
1473 ]
1474 },
1475 "widgets_values": [
1476 "qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors",
1477 "qwen_image",
1478 "default"
1479 ],
1480 "widgets_values_named": {
1481 "clip_name": "qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors",
1482 "type": "qwen_image",
1483 "device": "default"
1484 }
1485 },
1486 {
1487 "id": 479,
1488 "type": "PrimitiveStringMultiline",
1489 "pos": [
1490 -180,
1491 10
1492 ],
1493 "size": [
1494 620,
1495 240
1496 ],
1497 "flags": [],
1498 "order": 0,
1499 "mode": 0,
1500 "inputs": [],
1501 "outputs": [
1502 {
1503 "localized_name": "STRING",
1504 "name": "STRING",
1505 "type": "STRING",
1506 "links": [
1507 901
1508 ]
1509 }
1510 ],
1511 "title": "Text (System Prompt)",
1512 "properties": {
1513 "Node name for S&R": "PrimitiveStringMultiline"
1514 },
1515 "widgets_values": [
1516 "# Edit Prompt Enhancer — General (v2, 精简版)\n\n**FIRST — there are TWO separate language decisions. Do NOT conflate them.**\n\n**(A) Language of the rewritten prompt's DESCRIPTIVE prose — every word OUTSIDE double quotes (the description you write for the diffusion model, NOT the text painted into the image). This decision is final and non-negotiable:**\n- User instruction is in Chinese → write the description in Chinese.\n- User instruction is in English → write the description in English.\n- User instruction is in ANY other language (Japanese, Korean, French, Spanish, Thai, etc.) → write the description in English.\n\n**(B) Language of the TEXT THAT WILL BE RENDERED INTO THE OUTPUT IMAGE — the content INSIDE double quotes. Decide it in this strict priority order:**\n1. If the user's instruction gives the exact text to write, OR names a target language for the text (e.g. \"改成'夏日特惠'\", \"把标题写成英文\", \"add a Japanese title\", \"write the caption in Thai\") → render exactly that text / in exactly that specified language.\n2. Otherwise, if the input image already contains text → render in the DOMINANT language of the image's existing text — even when the instruction is written in a different language.\n3. Otherwise (the image contains no text AND the instruction names no target language) → render in the language of the user's instruction itself — including Japanese, Korean, Thai, Arabic, French, etc. Do NOT force it to English.\nWorked example: image is mostly Thai, instruction is in English asking to add/redesign a title without giving the exact words or a language → the rendered (quoted) text must be **Thai** (the image's dominant language), while the surrounding description (A) is still written in English.\n\nTwo reinforcements on decision (B): all rendered (quoted) text must be **monolingual** — do not mix Chinese and English inside the quotes and do not emit a bilingual pair unless the user explicitly asks for one. And **genre never overrides input language**: a \"spec sheet / cinematic data-document / storyboard / technical parameter\" look is achieved through layout and typography, NOT by switching rendered labels to English — every header, label, and caption stays in the decided language (standardized units and user-given proper nouns may remain Latin).\n\nYou are an expert at clarifying image editing instructions. Given a user's vague or ambiguous edit instruction and the input image(s), rewrite it into a precise, unambiguous, actionable editing directive. An input image is ALWAYS present — this is always an image-editing task, never text-to-image from nothing.\n\n## Core Objective\n\nRewrite the instruction so a downstream image-editing model can execute it without guessing — anchored on what the input image(s) actually show, faithful to the user's intent, inventing nothing.\n\n**How much you build is intent-branched.** When the user wants *this picture changed* (a local object/attribute/background edit, a text or UI edit, a quality or style change, a viewpoint/canvas transform), clarify and constrain: say exactly what changes, and let everything else stand. When the user wants *a new picture of this subject* (placing a subject in a new scene, compositing across images, a photo-shoot or poster or infographic built from a reference), construct actively: design the scene, lighting, composition and layout to a professional standard. Scale the elaboration to what was asked — a plain placement stays restrained, a styled shoot or a publication-grade poster is built out fully.\n\n## The Governing Principle — Attribute Disentanglement at Full Strength\n\n**Edit exactly the attribute(s) the user named, push each to a strong and unmistakable degree, and hold everything else at input fidelity.**\n\nBoth halves matter, and the two failure modes are symmetric:\n\n- **Leakage** — touching what the user did not name (a sharpen that re-grades color, an upscale that reframes, a style change that drifts a face, an outfit swap that drops an accessory, a background change that \"helpfully\" cleans up something unmentioned).\n- **Under-editing** — an output a viewer could mistake for the unedited input, because the requested change was applied faintly.\n\nPreservation locks **content, never edit strength**. Recognizability is bought by naming what stays fixed, not by holding the effect back.\n\n## What to Anchor, What to Decide\n\n**Anchor on the image.** Every spatial, tonal and contextual claim comes from what is visibly there. If you are unsure a detail exists, leave it out — a preserved element described at a higher level of abstraction is always safer than an invented specific.\n\n**Say what stays, without repainting it.** Name the untargeted content by type, position and role rather than describing its appearance, and prefer one blanket preservation clause over walking the frame. A preservation description reads to the model as a generation instruction: the more concretely you describe something you meant to keep, the more likely it drifts. Describe appearance concretely only for what you are actually changing, or when it is the only way to disambiguate between similar objects.\n\n**Identity is the hardest invariant.** A person's facial identity and the personal accessories that make them recognizable; a product's exact design, markings and count; and the input's rendering medium (photograph, anime, illustration, sketch, 3D render, painting) all survive every edit unless the user explicitly targets them. When identity comes from a reference image, point at that image rather than describing features in words — verbal descriptions make the model regenerate and degrade the likeness.\n\n**Resolve ambiguity, then commit.** Turn vague intent, imprecise spatial reference and unparameterized style words into something concrete and observable. Translate abstract quality language into the visual properties it implies. Where the instruction offers alternatives or contradicts itself, pick the most reasonable reading and state it as a decision. Keep the user's own action verb, spatial relations and described state intact, and treat anything they asked to preserve as absolute. Preserve creative or physically impossible intent rather than correcting it.\n\n**Only what was asked.** Do not add operations the user did not request, and do not clean up unmentioned defects, overlays or clutter however prominent they look. When an edit removes, moves or reveals something, say enough about the newly exposed region that the result stays physically coherent.\n\n**Text in the image is literal.** Whenever readable text will appear in the output, commit to the exact characters — every element, quoted, nothing summarized or abbreviated away. Text you cannot commit to should not be added at all. Match the typography and language the input establishes unless the user asks otherwise. When the operation extends the canvas outward, name it as outpainting explicitly.\n\n**Write it as an instruction.** Lead with the operation, not a description of the finished picture, and write from the perspective of someone holding only the input image(s).\n\n## Thinking Process\n\nBefore emitting the final prompt, reason through: what the image(s) actually contain (including a complete reading of any text present); what the user is asking for and which attributes that names; what must therefore stay fixed; and finally the composed directive. Close with a check that every visible element is either the target of the edit or covered by what stays fixed, that the requested change is unmistakable, that nothing outside the target was touched, and that every quoted string obeys language decision (B).\n\n## Image Reference Rules\n\nFor Multi-Image Input (N >= 2), the rewritten instruction MUST use `<image1>`, `<image2>`, ... to refer to each input image. Do not use natural language references like \"图1\", \"第一张图\", \"the first image\", or \"image A\". This tagging format is mandatory and non-negotiable. For single-image input (N = 1), do NOT use tags — refer to the image naturally (\"图像\", \"图片中\", \"the image\").\n\nState each image's role explicitly — which one is the canvas whose composition and untargeted content survive, and which supply material to transfer — and say what is taken from each. For scene generation with no canvas (合影/合照 and the like), all images serve as identity sources. Describe every referenced image individually; never compress several into a range or a group to avoid describing them one by one.\n\n## Output Format\nOutput ONLY the rewritten editing instruction itself: one single continuous paragraph of plain text.\n\nFormatting rules:\n- The entire rewritten prompt must be a single continuous paragraph with NO line breaks or newline characters.\n- The response must contain nothing except the instruction itself: no object or array wrapper, no field names or key-value pairs, no headings, labels, or prefaces, no greetings, explanations, or commentary, no markdown, and no code fences. Begin with the first word of the instruction and end with its last word.\n- Do not wrap the whole instruction in quotes: double quotes are reserved for text that will be RENDERED in the image (next rule).\n- All text that should appear as visible, readable content in the output image must be enclosed in double quotes (\"\"). Descriptive or structural language that does not appear as rendered text should NOT be quoted.\n- **Never include any resolution or aspect ratio information** (e.g., \"2:3\", \"16:9\", \"1920x1080\", \"2K\", \"4K\"). Output size is decided downstream, not by you.\n- Write it out in full — no ellipsis, no truncation.\n- State requirements affirmatively (\"保持背景与输入图完全一致\") rather than as prohibitions (\"禁止改变背景\"). Standard preservation phrasing \"保持/保留[X]不变\" is fine.\n- Be precise and decisive: no hedging, no unresolved alternatives, no vague degree words left unresolved.\n- The descriptive prose (outside double quotes) follows language decision (A); the text rendered inside the image (inside double quotes) follows language decision (B). Retain proper nouns and domain-specific terms in their original language, placed in English double quotes.\n- **Language-purge self-check (do this last)**: re-scan every double-quoted string — the text that will be RENDERED in the image — and enforce language decision (B). No quoted string may mix Chinese and English, form a bilingual pair, or carry a parenthetical translation gloss unless the user explicitly asked. Standardized units and user-given proper nouns may remain Latin.\n\nThe user's edit instruction to rewrite is:"
1517 ],
1518 "widgets_values_named": {
1519 "value": "# Edit Prompt Enhancer — General (v2, 精简版)\n\n**FIRST — there are TWO separate language decisions. Do NOT conflate them.**\n\n**(A) Language of the rewritten prompt's DESCRIPTIVE prose — every word OUTSIDE double quotes (the description you write for the diffusion model, NOT the text painted into the image). This decision is final and non-negotiable:**\n- User instruction is in Chinese → write the description in Chinese.\n- User instruction is in English → write the description in English.\n- User instruction is in ANY other language (Japanese, Korean, French, Spanish, Thai, etc.) → write the description in English.\n\n**(B) Language of the TEXT THAT WILL BE RENDERED INTO THE OUTPUT IMAGE — the content INSIDE double quotes. Decide it in this strict priority order:**\n1. If the user's instruction gives the exact text to write, OR names a target language for the text (e.g. \"改成'夏日特惠'\", \"把标题写成英文\", \"add a Japanese title\", \"write the caption in Thai\") → render exactly that text / in exactly that specified language.\n2. Otherwise, if the input image already contains text → render in the DOMINANT language of the image's existing text — even when the instruction is written in a different language.\n3. Otherwise (the image contains no text AND the instruction names no target language) → render in the language of the user's instruction itself — including Japanese, Korean, Thai, Arabic, French, etc. Do NOT force it to English.\nWorked example: image is mostly Thai, instruction is in English asking to add/redesign a title without giving the exact words or a language → the rendered (quoted) text must be **Thai** (the image's dominant language), while the surrounding description (A) is still written in English.\n\nTwo reinforcements on decision (B): all rendered (quoted) text must be **monolingual** — do not mix Chinese and English inside the quotes and do not emit a bilingual pair unless the user explicitly asks for one. And **genre never overrides input language**: a \"spec sheet / cinematic data-document / storyboard / technical parameter\" look is achieved through layout and typography, NOT by switching rendered labels to English — every header, label, and caption stays in the decided language (standardized units and user-given proper nouns may remain Latin).\n\nYou are an expert at clarifying image editing instructions. Given a user's vague or ambiguous edit instruction and the input image(s), rewrite it into a precise, unambiguous, actionable editing directive. An input image is ALWAYS present — this is always an image-editing task, never text-to-image from nothing.\n\n## Core Objective\n\nRewrite the instruction so a downstream image-editing model can execute it without guessing — anchored on what the input image(s) actually show, faithful to the user's intent, inventing nothing.\n\n**How much you build is intent-branched.** When the user wants *this picture changed* (a local object/attribute/background edit, a text or UI edit, a quality or style change, a viewpoint/canvas transform), clarify and constrain: say exactly what changes, and let everything else stand. When the user wants *a new picture of this subject* (placing a subject in a new scene, compositing across images, a photo-shoot or poster or infographic built from a reference), construct actively: design the scene, lighting, composition and layout to a professional standard. Scale the elaboration to what was asked — a plain placement stays restrained, a styled shoot or a publication-grade poster is built out fully.\n\n## The Governing Principle — Attribute Disentanglement at Full Strength\n\n**Edit exactly the attribute(s) the user named, push each to a strong and unmistakable degree, and hold everything else at input fidelity.**\n\nBoth halves matter, and the two failure modes are symmetric:\n\n- **Leakage** — touching what the user did not name (a sharpen that re-grades color, an upscale that reframes, a style change that drifts a face, an outfit swap that drops an accessory, a background change that \"helpfully\" cleans up something unmentioned).\n- **Under-editing** — an output a viewer could mistake for the unedited input, because the requested change was applied faintly.\n\nPreservation locks **content, never edit strength**. Recognizability is bought by naming what stays fixed, not by holding the effect back.\n\n## What to Anchor, What to Decide\n\n**Anchor on the image.** Every spatial, tonal and contextual claim comes from what is visibly there. If you are unsure a detail exists, leave it out — a preserved element described at a higher level of abstraction is always safer than an invented specific.\n\n**Say what stays, without repainting it.** Name the untargeted content by type, position and role rather than describing its appearance, and prefer one blanket preservation clause over walking the frame. A preservation description reads to the model as a generation instruction: the more concretely you describe something you meant to keep, the more likely it drifts. Describe appearance concretely only for what you are actually changing, or when it is the only way to disambiguate between similar objects.\n\n**Identity is the hardest invariant.** A person's facial identity and the personal accessories that make them recognizable; a product's exact design, markings and count; and the input's rendering medium (photograph, anime, illustration, sketch, 3D render, painting) all survive every edit unless the user explicitly targets them. When identity comes from a reference image, point at that image rather than describing features in words — verbal descriptions make the model regenerate and degrade the likeness.\n\n**Resolve ambiguity, then commit.** Turn vague intent, imprecise spatial reference and unparameterized style words into something concrete and observable. Translate abstract quality language into the visual properties it implies. Where the instruction offers alternatives or contradicts itself, pick the most reasonable reading and state it as a decision. Keep the user's own action verb, spatial relations and described state intact, and treat anything they asked to preserve as absolute. Preserve creative or physically impossible intent rather than correcting it.\n\n**Only what was asked.** Do not add operations the user did not request, and do not clean up unmentioned defects, overlays or clutter however prominent they look. When an edit removes, moves or reveals something, say enough about the newly exposed region that the result stays physically coherent.\n\n**Text in the image is literal.** Whenever readable text will appear in the output, commit to the exact characters — every element, quoted, nothing summarized or abbreviated away. Text you cannot commit to should not be added at all. Match the typography and language the input establishes unless the user asks otherwise. When the operation extends the canvas outward, name it as outpainting explicitly.\n\n**Write it as an instruction.** Lead with the operation, not a description of the finished picture, and write from the perspective of someone holding only the input image(s).\n\n## Thinking Process\n\nBefore emitting the final prompt, reason through: what the image(s) actually contain (including a complete reading of any text present); what the user is asking for and which attributes that names; what must therefore stay fixed; and finally the composed directive. Close with a check that every visible element is either the target of the edit or covered by what stays fixed, that the requested change is unmistakable, that nothing outside the target was touched, and that every quoted string obeys language decision (B).\n\n## Image Reference Rules\n\nFor Multi-Image Input (N >= 2), the rewritten instruction MUST use `<image1>`, `<image2>`, ... to refer to each input image. Do not use natural language references like \"图1\", \"第一张图\", \"the first image\", or \"image A\". This tagging format is mandatory and non-negotiable. For single-image input (N = 1), do NOT use tags — refer to the image naturally (\"图像\", \"图片中\", \"the image\").\n\nState each image's role explicitly — which one is the canvas whose composition and untargeted content survive, and which supply material to transfer — and say what is taken from each. For scene generation with no canvas (合影/合照 and the like), all images serve as identity sources. Describe every referenced image individually; never compress several into a range or a group to avoid describing them one by one.\n\n## Output Format\nOutput ONLY the rewritten editing instruction itself: one single continuous paragraph of plain text.\n\nFormatting rules:\n- The entire rewritten prompt must be a single continuous paragraph with NO line breaks or newline characters.\n- The response must contain nothing except the instruction itself: no object or array wrapper, no field names or key-value pairs, no headings, labels, or prefaces, no greetings, explanations, or commentary, no markdown, and no code fences. Begin with the first word of the instruction and end with its last word.\n- Do not wrap the whole instruction in quotes: double quotes are reserved for text that will be RENDERED in the image (next rule).\n- All text that should appear as visible, readable content in the output image must be enclosed in double quotes (\"\"). Descriptive or structural language that does not appear as rendered text should NOT be quoted.\n- **Never include any resolution or aspect ratio information** (e.g., \"2:3\", \"16:9\", \"1920x1080\", \"2K\", \"4K\"). Output size is decided downstream, not by you.\n- Write it out in full — no ellipsis, no truncation.\n- State requirements affirmatively (\"保持背景与输入图完全一致\") rather than as prohibitions (\"禁止改变背景\"). Standard preservation phrasing \"保持/保留[X]不变\" is fine.\n- Be precise and decisive: no hedging, no unresolved alternatives, no vague degree words left unresolved.\n- The descriptive prose (outside double quotes) follows language decision (A); the text rendered inside the image (inside double quotes) follows language decision (B). Retain proper nouns and domain-specific terms in their original language, placed in English double quotes.\n- **Language-purge self-check (do this last)**: re-scan every double-quoted string — the text that will be RENDERED in the image — and enforce language decision (B). No quoted string may mix Chinese and English, form a bilingual pair, or carry a parenthetical translation gloss unless the user explicitly asked. Standardized units and user-given proper nouns may remain Latin.\n\nThe user's edit instruction to rewrite is:"
1520 }
1521 },
1522 {
1523 "id": 480,
1524 "type": "PreviewAny",
1525 "pos": [
1526 1040,
1527 -480
1528 ],
1529 "size": [
1530 470,
1531 680
1532 ],
1533 "flags": [],
1534 "order": 11,
1535 "mode": 0,
1536 "inputs": [
1537 {
1538 "localized_name": "source",
1539 "name": "source",
1540 "type": "*",
1541 "link": 791
1542 }
1543 ],
1544 "outputs": [
1545 {
1546 "localized_name": "STRING",
1547 "name": "STRING",
1548 "type": "STRING",
1549 "links": [
1550 743
1551 ]
1552 }
1553 ],
1554 "properties": {
1555 "Node name for S&R": "PreviewAny"
1556 },
1557 "widgets_values": [],
1558 "widgets_values_named": []
1559 },
1560 {
1561 "id": 484,
1562 "type": "ComfySwitchNode",
1563 "pos": [
1564 620,
1565 120
1566 ],
1567 "size": [
1568 270,
1569 80
1570 ],
1571 "flags": [],
1572 "order": 12,
1573 "mode": 0,
1574 "inputs": [
1575 {
1576 "localized_name": "on_false",
1577 "name": "on_false",
1578 "shape": 7,
1579 "type": "STRING",
1580 "link": 739
1581 },
1582 {
1583 "localized_name": "on_true",
1584 "name": "on_true",
1585 "shape": 7,
1586 "type": "STRING",
1587 "link": 806
1588 },
1589 {
1590 "localized_name": "switch",
1591 "name": "switch",
1592 "type": "BOOLEAN",
1593 "widget": {
1594 "name": "switch"
1595 },
1596 "link": 741
1597 }
1598 ],
1599 "outputs": [
1600 {
1601 "localized_name": "output",
1602 "name": "output",
1603 "type": "STRING",
1604 "links": [
1605 791
1606 ]
1607 }
1608 ],
1609 "properties": {
1610 "Node name for S&R": "ComfySwitchNode"
1611 },
1612 "widgets_values": [
1613 false
1614 ],
1615 "widgets_values_named": {
1616 "switch": false
1617 }
1618 },
1619 {
1620 "id": 485,
1621 "type": "BatchImagesNode",
1622 "pos": [
1623 -180,
1624 -310
1625 ],
1626 "size": [
1627 230,
1628 270
1629 ],
1630 "flags": [],
1631 "order": 13,
1632 "mode": 0,
1633 "inputs": [
1634 {
1635 "localized_name": "image0",
1636 "name": "images.image0",
1637 "type": "IMAGE",
1638 "link": 750
1639 },
1640 {
1641 "localized_name": "image1",
1642 "name": "images.image1",
1643 "shape": 7,
1644 "type": "IMAGE",
1645 "link": 779
1646 },
1647 {
1648 "localized_name": "image5",
1649 "name": "images.image5",
1650 "shape": 7,
1651 "type": "IMAGE",
1652 "link": 780
1653 },
1654 {
1655 "localized_name": "image6",
1656 "name": "images.image6",
1657 "shape": 7,
1658 "type": "IMAGE",
1659 "link": 781
1660 },
1661 {
1662 "localized_name": "image7",
1663 "name": "images.image7",
1664 "shape": 7,
1665 "type": "IMAGE",
1666 "link": 782
1667 },
1668 {
1669 "localized_name": "image8",
1670 "name": "images.image8",
1671 "shape": 7,
1672 "type": "IMAGE",
1673 "link": 783
1674 },
1675 {
1676 "localized_name": "image9",
1677 "name": "images.image9",
1678 "shape": 7,
1679 "type": "IMAGE",
1680 "link": 784
1681 },
1682 {
1683 "localized_name": "image10",
1684 "name": "images.image10",
1685 "shape": 7,
1686 "type": "IMAGE",
1687 "link": 785
1688 },
1689 {
1690 "localized_name": "image11",
1691 "name": "images.image11",
1692 "shape": 7,
1693 "type": "IMAGE",
1694 "link": 786
1695 },
1696 {
1697 "localized_name": "image12",
1698 "name": "images.image12",
1699 "shape": 7,
1700 "type": "IMAGE",
1701 "link": 787
1702 },
1703 {
1704 "localized_name": "image13",
1705 "name": "images.image13",
1706 "shape": 7,
1707 "type": "IMAGE",
1708 "link": null
1709 },
1710 {
1711 "localized_name": "image2",
1712 "name": "images.image2",
1713 "shape": 7,
1714 "type": "IMAGE",
1715 "link": null
1716 }
1717 ],
1718 "outputs": [
1719 {
1720 "localized_name": "IMAGE",
1721 "name": "IMAGE",
1722 "type": "IMAGE",
1723 "links": [
1724 801
1725 ]
1726 }
1727 ],
1728 "properties": {
1729 "Node name for S&R": "BatchImagesNode"
1730 }
1731 },
1732 {
1733 "id": 500,
1734 "type": "TextGenerate",
1735 "pos": [
1736 500,
1737 -480
1738 ],
1739 "size": [
1740 400,
1741 460
1742 ],
1743 "flags": [],
1744 "order": 14,
1745 "mode": 0,
1746 "showAdvanced": true,
1747 "inputs": [
1748 {
1749 "localized_name": "clip",
1750 "name": "clip",
1751 "type": "CLIP",
1752 "link": 800
1753 },
1754 {
1755 "localized_name": "image",
1756 "name": "image",
1757 "shape": 7,
1758 "type": "IMAGE",
1759 "link": 801
1760 },
1761 {
1762 "localized_name": "video",
1763 "name": "video",
1764 "shape": 7,
1765 "type": "IMAGE",
1766 "link": null
1767 },
1768 {
1769 "localized_name": "audio",
1770 "name": "audio",
1771 "shape": 7,
1772 "type": "AUDIO",
1773 "link": null
1774 },
1775 {
1776 "localized_name": "system_prompt",
1777 "name": "system_prompt",
1778 "shape": 7,
1779 "type": "STRING",
1780 "link": 901
1781 },
1782 {
1783 "localized_name": "prompt",
1784 "name": "prompt",
1785 "type": "STRING",
1786 "widget": {
1787 "name": "prompt"
1788 },
1789 "link": 802
1790 },
1791 {
1792 "localized_name": "max_length",
1793 "name": "max_length",
1794 "type": "INT",
1795 "widget": {
1796 "name": "max_length"
1797 },
1798 "link": 903
1799 },
1800 {
1801 "localized_name": "seed",
1802 "name": "sampling_mode.seed",
1803 "type": "INT",
1804 "widget": {
1805 "name": "sampling_mode.seed"
1806 },
1807 "link": 804
1808 },
1809 {
1810 "localized_name": "thinking",
1811 "name": "thinking",
1812 "shape": 7,
1813 "type": "BOOLEAN",
1814 "widget": {
1815 "name": "thinking"
1816 },
1817 "link": 902
1818 }
1819 ],
1820 "outputs": [
1821 {
1822 "localized_name": "generated_text",
1823 "name": "generated_text",
1824 "type": "STRING",
1825 "links": [
1826 806
1827 ]
1828 },
1829 {
1830 "localized_name": "thinking",
1831 "name": "thinking",
1832 "type": "STRING",
1833 "links": null
1834 }
1835 ],
1836 "properties": {
1837 "Node name for S&R": "TextGenerate"
1838 },
1839 "widgets_values": [
1840 "",
1841 4096,
1842 "on",
1843 1,
1844 20,
1845 0.95,
1846 0,
1847 1,
1848 0,
1849 0,
1850 true,
1851 true,
1852 "auto"
1853 ],
1854 "widgets_values_named": {
1855 "prompt": "",
1856 "max_length": 4096,
1857 "sampling_mode": "on",
1858 "sampling_mode.temperature": 1,
1859 "sampling_mode.top_k": 20,
1860 "sampling_mode.top_p": 0.95,
1861 "sampling_mode.min_p": 0,
1862 "sampling_mode.repetition_penalty": 1,
1863 "sampling_mode.seed": 0,
1864 "sampling_mode.presence_penalty": 0,
1865 "thinking": true,
1866 "use_default_template": true,
1867 "mtp": "auto"
1868 }
1869 },
1870 {
1871 "id": 502,
1872 "type": "ManualSigmas",
1873 "pos": [
1874 965.7365870616367,
1875 1053.9252521551643
1876 ],
1877 "size": [
1878 418.9732421875,
1879 58
1880 ],
1881 "flags": [],
1882 "order": 1,
1883 "mode": 0,
1884 "inputs": [],
1885 "outputs": [
1886 {
1887 "localized_name": "SIGMAS",
1888 "name": "SIGMAS",
1889 "type": "SIGMAS",
1890 "links": [
1891 906
1892 ]
1893 }
1894 ],
1895 "title": "Manual Sigmas (Qwen-Image-2.1-Turbo 8-step schedule)",
1896 "properties": {
1897 "Node name for S&R": "ManualSigmas"
1898 },
1899 "widgets_values": [
1900 "1.0, 0.978453, 0.95418, 0.926626, 0.89508, 0.845148, 0.704534, 0.414568, 0"
1901 ],
1902 "widgets_values_named": {
1903 "sigmas": "1.0, 0.978453, 0.95418, 0.926626, 0.89508, 0.845148, 0.704534, 0.414568, 0"
1904 }
1905 },
1906 {
1907 "id": 503,
1908 "type": "KSamplerSelect",
1909 "pos": [
1910 956.9532525294051,
1911 907.865461371432
1912 ],
1913 "size": [
1914 270,
1915 58
1916 ],
1917 "flags": [],
1918 "order": 15,
1919 "mode": 0,
1920 "inputs": [
1921 {
1922 "localized_name": "sampler_name",
1923 "name": "sampler_name",
1924 "type": "COMBO",
1925 "widget": {
1926 "name": "sampler_name"
1927 },
1928 "link": 915
1929 }
1930 ],
1931 "outputs": [
1932 {
1933 "localized_name": "SAMPLER",
1934 "name": "SAMPLER",
1935 "type": "SAMPLER",
1936 "links": [
1937 905
1938 ]
1939 }
1940 ],
1941 "title": "KSampler Select (euler)",
1942 "properties": {
1943 "Node name for S&R": "KSamplerSelect"
1944 },
1945 "widgets_values": [
1946 "euler"
1947 ],
1948 "widgets_values_named": {
1949 "sampler_name": "euler"
1950 }
1951 },
1952 {
1953 "id": 504,
1954 "type": "RandomNoise",
1955 "pos": [
1956 956.9532525294051,
1957 571.865461371432
1958 ],
1959 "size": [
1960 270,
1961 82
1962 ],
1963 "flags": [],
1964 "order": 16,
1965 "mode": 0,
1966 "inputs": [
1967 {
1968 "localized_name": "noise_seed",
1969 "name": "noise_seed",
1970 "type": "INT",
1971 "widget": {
1972 "name": "noise_seed"
1973 },
1974 "link": 914
1975 }
1976 ],
1977 "outputs": [
1978 {
1979 "localized_name": "NOISE",
1980 "name": "NOISE",
1981 "type": "NOISE",
1982 "links": [
1983 904
1984 ]
1985 }
1986 ],
1987 "title": "Random Noise",
1988 "properties": {
1989 "Node name for S&R": "RandomNoise"
1990 },
1991 "widgets_values": [
1992 424242,
1993 "randomize"
1994 ],
1995 "widgets_values_named": {
1996 "noise_seed": 424242,
1997 "control_after_generate": "randomize"
1998 }
1999 },
2000 {
2001 "id": 505,
2002 "type": "SamplerCustomAdvanced",
2003 "pos": [
2004 1284.3410123920985,
2005 595.4249474282406
2006 ],
2007 "size": [
2008 220.2388671875,
2009 106
2010 ],
2011 "flags": [],
2012 "order": 17,
2013 "mode": 0,
2014 "inputs": [
2015 {
2016 "localized_name": "noise",
2017 "name": "noise",
2018 "type": "NOISE",
2019 "link": 904
2020 },
2021 {
2022 "localized_name": "guider",
2023 "name": "guider",
2024 "type": "GUIDER",
2025 "link": 912
2026 },
2027 {
2028 "localized_name": "sampler",
2029 "name": "sampler",
2030 "type": "SAMPLER",
2031 "link": 905
2032 },
2033 {
2034 "localized_name": "sigmas",
2035 "name": "sigmas",
2036 "type": "SIGMAS",
2037 "link": 906
2038 },
2039 {
2040 "localized_name": "latent_image",
2041 "name": "latent_image",
2042 "type": "LATENT",
2043 "link": 913
2044 }
2045 ],
2046 "outputs": [
2047 {
2048 "localized_name": "output",
2049 "name": "output",
2050 "type": "LATENT",
2051 "links": [
2052 907
2053 ]
2054 },
2055 {
2056 "localized_name": "denoised_output",
2057 "name": "denoised_output",
2058 "type": "LATENT",
2059 "links": []
2060 }
2061 ],
2062 "title": "Sampler Custom Advanced",
2063 "properties": {
2064 "Node name for S&R": "SamplerCustomAdvanced"
2065 }
2066 },
2067 {
2068 "id": 507,
2069 "type": "CFGGuider",
2070 "pos": [
2071 956.9532525294051,
2072 731.865461371432
2073 ],
2074 "size": [
2075 270,
2076 98
2077 ],
2078 "flags": [],
2079 "order": 18,
2080 "mode": 0,
2081 "inputs": [
2082 {
2083 "localized_name": "model",
2084 "name": "model",
2085 "type": "MODEL",
2086 "link": 908
2087 },
2088 {
2089 "localized_name": "positive",
2090 "name": "positive",
2091 "type": "CONDITIONING",
2092 "link": 909
2093 },
2094 {
2095 "localized_name": "negative",
2096 "name": "negative",
2097 "type": "CONDITIONING",
2098 "link": 910
2099 },
2100 {
2101 "localized_name": "cfg",
2102 "name": "cfg",
2103 "type": "FLOAT",
2104 "widget": {
2105 "name": "cfg"
2106 },
2107 "link": 911
2108 }
2109 ],
2110 "outputs": [
2111 {
2112 "localized_name": "GUIDER",
2113 "name": "GUIDER",
2114 "type": "GUIDER",
2115 "links": [
2116 912
2117 ]
2118 }
2119 ],
2120 "properties": {
2121 "Node name for S&R": "CFGGuider"
2122 },
2123 "widgets_values": [
2124 8
2125 ],
2126 "widgets_values_named": {
2127 "cfg": 8
2128 }
2129 }
2130 ],
2131 "groups": [
2132 {
2133 "id": 34,
2134 "title": "Models",
2135 "bounding": [
2136 -200,
2137 300,
2138 530,
2139 590
2140 ],
2141 "color": "#3f789e",
2142 "flags": []
2143 },
2144 {
2145 "id": 35,
2146 "title": "Image Size",
2147 "bounding": [
2148 -200,
2149 920,
2150 530,
2151 250
2152 ],
2153 "color": "#3f789e",
2154 "flags": []
2155 },
2156 {
2157 "id": 36,
2158 "title": "Conditioning",
2159 "bounding": [
2160 360,
2161 300,
2162 530.8552941790844,
2163 871.7338850953031
2164 ],
2165 "color": "#3f789e",
2166 "flags": []
2167 },
2168 {
2169 "id": 37,
2170 "title": "Sampling",
2171 "bounding": [
2172 924.1133558908087,
2173 299.72738075964855,
2174 633.5751735791238,
2175 874.5578559968081
2176 ],
2177 "color": "#3f789e",
2178 "flags": []
2179 },
2180 {
2181 "id": 38,
2182 "title": "Prompt Enhancer",
2183 "bounding": [
2184 -200,
2185 -560,
2186 1750,
2187 830
2188 ],
2189 "color": "#3f789e",
2190 "flags": []
2191 }
2192 ],
2193 "links": [
2194 {
2195 "id": 649,
2196 "origin_id": 454,
2197 "origin_slot": 0,
2198 "target_id": 457,
2199 "target_slot": 1,
2200 "type": "VAE"
2201 },
2202 {
2203 "id": 650,
2204 "origin_id": 457,
2205 "origin_slot": 0,
2206 "target_id": -20,
2207 "target_slot": 0,
2208 "type": "IMAGE"
2209 },
2210 {
2211 "id": 684,
2212 "origin_id": 456,
2213 "origin_slot": 0,
2214 "target_id": 468,
2215 "target_slot": 1,
2216 "type": "LATENT"
2217 },
2218 {
2219 "id": 688,
2220 "origin_id": 451,
2221 "origin_slot": 0,
2222 "target_id": 469,
2223 "target_slot": 0,
2224 "type": "MODEL"
2225 },
2226 {
2227 "id": 724,
2228 "origin_id": 474,
2229 "origin_slot": 2,
2230 "target_id": 468,
2231 "target_slot": 0,
2232 "type": "LATENT"
2233 },
2234 {
2235 "id": 791,
2236 "origin_id": 484,
2237 "origin_slot": 0,
2238 "target_id": 480,
2239 "target_slot": 0,
2240 "type": "STRING"
2241 },
2242 {
2243 "id": 806,
2244 "origin_id": 500,
2245 "origin_slot": 0,
2246 "target_id": 484,
2247 "target_slot": 1,
2248 "type": "STRING"
2249 },
2250 {
2251 "id": 739,
2252 "origin_id": -10,
2253 "origin_slot": 1,
2254 "target_id": 484,
2255 "target_slot": 0,
2256 "type": "STRING"
2257 },
2258 {
2259 "id": 741,
2260 "origin_id": -10,
2261 "origin_slot": 2,
2262 "target_id": 484,
2263 "target_slot": 2,
2264 "type": "BOOLEAN"
2265 },
2266 {
2267 "id": 904,
2268 "origin_id": 504,
2269 "origin_slot": 0,
2270 "target_id": 505,
2271 "target_slot": 0,
2272 "type": "NOISE"
2273 },
2274 {
2275 "id": 905,
2276 "origin_id": 503,
2277 "origin_slot": 0,
2278 "target_id": 505,
2279 "target_slot": 2,
2280 "type": "SAMPLER"
2281 },
2282 {
2283 "id": 906,
2284 "origin_id": 502,
2285 "origin_slot": 0,
2286 "target_id": 505,
2287 "target_slot": 3,
2288 "type": "SIGMAS"
2289 },
2290 {
2291 "id": 907,
2292 "origin_id": 505,
2293 "origin_slot": 0,
2294 "target_id": 457,
2295 "target_slot": 0,
2296 "type": "LATENT"
2297 },
2298 {
2299 "id": 908,
2300 "origin_id": 469,
2301 "origin_slot": 0,
2302 "target_id": 507,
2303 "target_slot": 0,
2304 "type": "MODEL"
2305 },
2306 {
2307 "id": 909,
2308 "origin_id": 474,
2309 "origin_slot": 0,
2310 "target_id": 507,
2311 "target_slot": 1,
2312 "type": "CONDITIONING"
2313 },
2314 {
2315 "id": 910,
2316 "origin_id": 474,
2317 "origin_slot": 1,
2318 "target_id": 507,
2319 "target_slot": 2,
2320 "type": "CONDITIONING"
2321 },
2322 {
2323 "id": 911,
2324 "origin_id": -10,
2325 "origin_slot": 6,
2326 "target_id": 507,
2327 "target_slot": 3,
2328 "type": "FLOAT"
2329 },
2330 {
2331 "id": 912,
2332 "origin_id": 507,
2333 "origin_slot": 0,
2334 "target_id": 505,
2335 "target_slot": 1,
2336 "type": "GUIDER"
2337 },
2338 {
2339 "id": 913,
2340 "origin_id": 468,
2341 "origin_slot": 0,
2342 "target_id": 505,
2343 "target_slot": 4,
2344 "type": "LATENT"
2345 },
2346 {
2347 "id": 703,
2348 "origin_id": -10,
2349 "origin_slot": 7,
2350 "target_id": 468,
2351 "target_slot": 2,
2352 "type": "BOOLEAN"
2353 },
2354 {
2355 "id": 660,
2356 "origin_id": -10,
2357 "origin_slot": 8,
2358 "target_id": 456,
2359 "target_slot": 0,
2360 "type": "INT"
2361 },
2362 {
2363 "id": 661,
2364 "origin_id": -10,
2365 "origin_slot": 9,
2366 "target_id": 456,
2367 "target_slot": 1,
2368 "type": "INT"
2369 },
2370 {
2371 "id": 915,
2372 "origin_id": -10,
2373 "origin_slot": 10,
2374 "target_id": 503,
2375 "target_slot": 0,
2376 "type": "COMBO"
2377 },
2378 {
2379 "id": 914,
2380 "origin_id": -10,
2381 "origin_slot": 11,
2382 "target_id": 504,
2383 "target_slot": 0,
2384 "type": "INT"
2385 },
2386 {
2387 "id": 663,
2388 "origin_id": -10,
2389 "origin_slot": 12,
2390 "target_id": 451,
2391 "target_slot": 0,
2392 "type": "COMBO"
2393 },
2394 {
2395 "id": 664,
2396 "origin_id": -10,
2397 "origin_slot": 13,
2398 "target_id": 453,
2399 "target_slot": 0,
2400 "type": "COMBO"
2401 },
2402 {
2403 "id": 665,
2404 "origin_id": -10,
2405 "origin_slot": 14,
2406 "target_id": 454,
2407 "target_slot": 0,
2408 "type": "COMBO"
2409 },
2410 {
2411 "id": 729,
2412 "origin_id": -10,
2413 "origin_slot": 15,
2414 "target_id": 469,
2415 "target_slot": 1,
2416 "type": "COMBO"
2417 },
2418 {
2419 "id": 730,
2420 "origin_id": -10,
2421 "origin_slot": 16,
2422 "target_id": 469,
2423 "target_slot": 2,
2424 "type": "COMBO"
2425 },
2426 {
2427 "id": 746,
2428 "origin_id": -10,
2429 "origin_slot": 17,
2430 "target_id": 477,
2431 "target_slot": 0,
2432 "type": "COMBO"
2433 },
2434 {
2435 "id": 721,
2436 "origin_id": 453,
2437 "origin_slot": 0,
2438 "target_id": 474,
2439 "target_slot": 0,
2440 "type": "CLIP"
2441 },
2442 {
2443 "id": 710,
2444 "origin_id": -10,
2445 "origin_slot": 18,
2446 "target_id": 474,
2447 "target_slot": 1,
2448 "type": "IMAGE"
2449 },
2450 {
2451 "id": 720,
2452 "origin_id": 454,
2453 "origin_slot": 0,
2454 "target_id": 474,
2455 "target_slot": 2,
2456 "type": "VAE"
2457 },
2458 {
2459 "id": 743,
2460 "origin_id": 480,
2461 "origin_slot": 0,
2462 "target_id": 474,
2463 "target_slot": 3,
2464 "type": "STRING"
2465 },
2466 {
2467 "id": 727,
2468 "origin_id": -10,
2469 "origin_slot": 5,
2470 "target_id": 474,
2471 "target_slot": 4,
2472 "type": "STRING"
2473 },
2474 {
2475 "id": 725,
2476 "origin_id": -10,
2477 "origin_slot": 0,
2478 "target_id": 474,
2479 "target_slot": 5,
2480 "type": "INT"
2481 },
2482 {
2483 "id": 711,
2484 "origin_id": -10,
2485 "origin_slot": 19,
2486 "target_id": 474,
2487 "target_slot": 8,
2488 "type": "IMAGE"
2489 },
2490 {
2491 "id": 712,
2492 "origin_id": -10,
2493 "origin_slot": 20,
2494 "target_id": 474,
2495 "target_slot": 9,
2496 "type": "IMAGE"
2497 },
2498 {
2499 "id": 713,
2500 "origin_id": -10,
2501 "origin_slot": 21,
2502 "target_id": 474,
2503 "target_slot": 10,
2504 "type": "IMAGE"
2505 },
2506 {
2507 "id": 714,
2508 "origin_id": -10,
2509 "origin_slot": 22,
2510 "target_id": 474,
2511 "target_slot": 11,
2512 "type": "IMAGE"
2513 },
2514 {
2515 "id": 715,
2516 "origin_id": -10,
2517 "origin_slot": 23,
2518 "target_id": 474,
2519 "target_slot": 12,
2520 "type": "IMAGE"
2521 },
2522 {
2523 "id": 716,
2524 "origin_id": -10,
2525 "origin_slot": 24,
2526 "target_id": 474,
2527 "target_slot": 13,
2528 "type": "IMAGE"
2529 },
2530 {
2531 "id": 717,
2532 "origin_id": -10,
2533 "origin_slot": 25,
2534 "target_id": 474,
2535 "target_slot": 14,
2536 "type": "IMAGE"
2537 },
2538 {
2539 "id": 718,
2540 "origin_id": -10,
2541 "origin_slot": 26,
2542 "target_id": 474,
2543 "target_slot": 15,
2544 "type": "IMAGE"
2545 },
2546 {
2547 "id": 719,
2548 "origin_id": -10,
2549 "origin_slot": 27,
2550 "target_id": 474,
2551 "target_slot": 16,
2552 "type": "IMAGE"
2553 },
2554 {
2555 "id": 750,
2556 "origin_id": -10,
2557 "origin_slot": 18,
2558 "target_id": 485,
2559 "target_slot": 0,
2560 "type": "IMAGE"
2561 },
2562 {
2563 "id": 779,
2564 "origin_id": -10,
2565 "origin_slot": 19,
2566 "target_id": 485,
2567 "target_slot": 1,
2568 "type": "IMAGE"
2569 },
2570 {
2571 "id": 780,
2572 "origin_id": -10,
2573 "origin_slot": 20,
2574 "target_id": 485,
2575 "target_slot": 2,
2576 "type": "IMAGE"
2577 },
2578 {
2579 "id": 781,
2580 "origin_id": -10,
2581 "origin_slot": 21,
2582 "target_id": 485,
2583 "target_slot": 3,
2584 "type": "IMAGE"
2585 },
2586 {
2587 "id": 782,
2588 "origin_id": -10,
2589 "origin_slot": 22,
2590 "target_id": 485,
2591 "target_slot": 4,
2592 "type": "IMAGE"
2593 },
2594 {
2595 "id": 783,
2596 "origin_id": -10,
2597 "origin_slot": 23,
2598 "target_id": 485,
2599 "target_slot": 5,
2600 "type": "IMAGE"
2601 },
2602 {
2603 "id": 784,
2604 "origin_id": -10,
2605 "origin_slot": 24,
2606 "target_id": 485,
2607 "target_slot": 6,
2608 "type": "IMAGE"
2609 },
2610 {
2611 "id": 785,
2612 "origin_id": -10,
2613 "origin_slot": 25,
2614 "target_id": 485,
2615 "target_slot": 7,
2616 "type": "IMAGE"
2617 },
2618 {
2619 "id": 786,
2620 "origin_id": -10,
2621 "origin_slot": 26,
2622 "target_id": 485,
2623 "target_slot": 8,
2624 "type": "IMAGE"
2625 },
2626 {
2627 "id": 787,
2628 "origin_id": -10,
2629 "origin_slot": 27,
2630 "target_id": 485,
2631 "target_slot": 9,
2632 "type": "IMAGE"
2633 },
2634 {
2635 "id": 800,
2636 "origin_id": 477,
2637 "origin_slot": 0,
2638 "target_id": 500,
2639 "target_slot": 0,
2640 "type": "CLIP"
2641 },
2642 {
2643 "id": 801,
2644 "origin_id": 485,
2645 "origin_slot": 0,
2646 "target_id": 500,
2647 "target_slot": 1,
2648 "type": "IMAGE"
2649 },
2650 {
2651 "id": 901,
2652 "origin_id": 479,
2653 "origin_slot": 0,
2654 "target_id": 500,
2655 "target_slot": 4,
2656 "type": "STRING"
2657 },
2658 {
2659 "id": 802,
2660 "origin_id": -10,
2661 "origin_slot": 1,
2662 "target_id": 500,
2663 "target_slot": 5,
2664 "type": "STRING"
2665 },
2666 {
2667 "id": 903,
2668 "origin_id": -10,
2669 "origin_slot": 4,
2670 "target_id": 500,
2671 "target_slot": 6,
2672 "type": "INT"
2673 },
2674 {
2675 "id": 804,
2676 "origin_id": -10,
2677 "origin_slot": 11,
2678 "target_id": 500,
2679 "target_slot": 7,
2680 "type": "INT"
2681 },
2682 {
2683 "id": 902,
2684 "origin_id": -10,
2685 "origin_slot": 3,
2686 "target_id": 500,
2687 "target_slot": 8,
2688 "type": "BOOLEAN"
2689 }
2690 ],
2691 "extra": []
2692 }
2693 ]
2694 },
2695 "config": [],
2696 "extra": {
2697 "ds": {
2698 "scale": 0.4559674823113218,
2699 "offset": [
2700 465.27254975856295,
2701 -1691.3529593002877
2702 ]
2703 },
2704 "frontendVersion": "1.55.14",
2705 "VHS_latentpreview": false,
2706 "VHS_latentpreviewrate": 0,
2707 "VHS_MetadataImage": true,
2708 "VHS_KeepIntermediate": true
2709 },
2710 "version": 0.4
2711}