{
  "id": "54bb395d-3e60-4c94-b525-85523901575b",
  "revision": 0,
  "last_node_id": 501,
  "last_link_id": 903,
  "nodes": [
    {
      "id": 459,
      "type": "bc1c967a-7f6a-4be9-a372-dad16e4f28e3",
      "pos": [
        480,
        2420
      ],
      "size": [
        420,
        760
      ],
      "flags": {},
      "order": 5,
      "mode": 0,
      "inputs": [
        {
          "label": "positive_prompt",
          "name": "prompt",
          "type": "STRING",
          "widget": {
            "name": "prompt"
          },
          "link": null
        },
        {
          "label": "refine_prompt",
          "name": "switch_1",
          "type": "BOOLEAN",
          "widget": {
            "name": "switch_1"
          },
          "link": null
        },
        {
          "label": "steps",
          "name": "steps",
          "type": "INT",
          "widget": {
            "name": "steps"
          },
          "link": null
        },
        {
          "label": "custom_size",
          "name": "switch",
          "type": "BOOLEAN",
          "widget": {
            "name": "switch"
          },
          "link": null
        },
        {
          "label": "sampler",
          "name": "scheduler",
          "type": "COMBO",
          "widget": {
            "name": "scheduler"
          },
          "link": null
        },
        {
          "label": "scheduler",
          "name": "scheduler_1",
          "type": "COMBO",
          "widget": {
            "name": "scheduler_1"
          },
          "link": null
        },
        {
          "label": "cache_device",
          "name": "device",
          "type": "COMBO",
          "widget": {
            "name": "device"
          },
          "link": null
        },
        {
          "label": "dtype",
          "name": "dtype",
          "type": "COMBO",
          "widget": {
            "name": "dtype"
          },
          "link": null
        },
        {
          "label": "PE_model",
          "name": "clip_name_1",
          "type": "COMBO",
          "widget": {
            "name": "clip_name_1"
          },
          "link": null
        },
        {
          "label": "image_1",
          "name": "images.image_1",
          "type": "IMAGE",
          "link": 704
        },
        {
          "label": "image_2",
          "name": "images.image_2",
          "shape": 7,
          "type": "IMAGE",
          "link": 728
        },
        {
          "label": "image_3",
          "name": "images.image_3",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "label": "image_4",
          "name": "images.image_4",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "label": "image_5",
          "name": "images.image_5_1",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "label": "image_6",
          "name": "images.image_6",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "label": "image_7",
          "name": "images.image_7",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "label": "image_8",
          "name": "images.image_8",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "label": "image_9",
          "name": "images.image_9",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "label": "image_10",
          "name": "images.image_10",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            672
          ]
        }
      ],
      "properties": {
        "previewExposures": []
      },
      "widgets_values": [
        0,
        "Use <image1> as the exact composition, camera, canvas and station layout. Use <image2> as the identity and outfit reference for Amu. Replace only the boy in <image1> with this same Amu: exact face, short chestnut hair, orange raincoat with hood down, navy crossbody satchel and dark boots from <image2>. Keep the parcel with its red ribbon, hand positions, gaze direction, warm light from screen left and the bench on screen right. Match the stylized 3D materials from <image2>. Preserve the width and height of <image1>.",
        false,
        false,
        4096,
        "",
        1,
        40,
        false,
        1024,
        1024,
        "euler",
        "simple",
        42,
        "qwen_image_2.1_int8_convrot.safetensors",
        "qwen3vl_8b_int8_convrot.safetensors",
        "qwen_image_2.1_vae_bf16.safetensors",
        "auto",
        "default",
        "qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors"
      ],
      "widgets_values_named": {
        "resolution": 0,
        "prompt": "Use <image1> as the exact composition, camera, canvas and station layout. Use <image2> as the identity and outfit reference for Amu. Replace only the boy in <image1> with this same Amu: exact face, short chestnut hair, orange raincoat with hood down, navy crossbody satchel and dark boots from <image2>. Keep the parcel with its red ribbon, hand positions, gaze direction, warm light from screen left and the bench on screen right. Match the stylized 3D materials from <image2>. Preserve the width and height of <image1>.",
        "switch_1": false,
        "thinking": false,
        "max_length": 4096,
        "negative_prompt": "",
        "cfg": 1,
        "steps": 40,
        "switch": false,
        "width": 1024,
        "height": 1024,
        "scheduler": "euler",
        "scheduler_1": "simple",
        "seed": 42,
        "unet_name": "qwen_image_2.1_int8_convrot.safetensors",
        "clip_name": "qwen3vl_8b_int8_convrot.safetensors",
        "vae_name": "qwen_image_2.1_vae_bf16.safetensors",
        "device": "auto",
        "dtype": "default",
        "clip_name_1": "qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors"
      }
    },
    {
      "id": 461,
      "type": "SaveImageAdvanced",
      "pos": [
        1410,
        2420
      ],
      "size": [
        710,
        760
      ],
      "flags": {},
      "order": 6,
      "mode": 0,
      "showAdvanced": true,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 672
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": [
            708
          ]
        }
      ],
      "properties": {},
      "widgets_values": [
        "muzhili/amu_edit",
        "png",
        "8-bit",
        "sRGB"
      ],
      "widgets_values_named": {
        "filename_prefix": "muzhili/amu_edit",
        "format": "png",
        "format.bit_depth": "8-bit",
        "format.input_color_space": "sRGB"
      }
    },
    {
      "id": 470,
      "type": "LoadImage",
      "pos": [
        140,
        2420
      ],
      "size": [
        290,
        110
      ],
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            704,
            707
          ]
        },
        {
          "name": "MASK",
          "type": "MASK",
          "links": null
        }
      ],
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "widgets_values": [
        "shot01-layout.png",
        "image"
      ],
      "widgets_values_named": {
        "image": "shot01-layout.png",
        "upload": "image"
      }
    },
    {
      "id": 472,
      "type": "ImageCompare",
      "pos": [
        2160,
        2420
      ],
      "size": [
        660,
        760
      ],
      "flags": {},
      "order": 7,
      "mode": 0,
      "inputs": [
        {
          "name": "image_a",
          "shape": 7,
          "type": "IMAGE",
          "link": 707
        },
        {
          "name": "image_b",
          "shape": 7,
          "type": "IMAGE",
          "link": 708
        }
      ],
      "outputs": [],
      "properties": {
        "Node name for S&R": "ImageCompare"
      },
      "widgets_values": [],
      "widgets_values_named": {}
    },
    {
      "id": 475,
      "type": "LoadImage",
      "pos": [
        140,
        2810
      ],
      "size": [
        290,
        110
      ],
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            728
          ]
        },
        {
          "name": "MASK",
          "type": "MASK",
          "links": []
        }
      ],
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "widgets_values": [
        "amu-character.png",
        "image"
      ],
      "widgets_values_named": {
        "image": "amu-character.png",
        "upload": "image"
      }
    },
    {
      "id": 476,
      "type": "MarkdownNote",
      "pos": [
        140,
        2120
      ],
      "size": [
        850,
        230
      ],
      "flags": {},
      "order": 99,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "properties": {
        "Node name for S&R": "MarkdownNote"
      },
      "widgets_values": [
        "# 全本地 Qwen-Image-2.1 · 逐镜首帧\nComfyUI v0.43.0；先下载生成器、8B编码器与专用VAE，检查下拉文件名。\nrefine_prompt=false；40步；CFG=1；euler/simple；固定seed=42；25步用于预览对照。\n重新上传 image_1=shot01-layout.png（1344×768目标场景构图），image_2=amu-character.png（角色定妆）；resolution=0、custom_size=false，保持image_1画幅。\nWindows INT8；使用默认显存管理。\n运行前停止 Ollama；角色主图与每镜首帧分目录保存，连同提示词和工作流归档。"
      ],
      "title": "木智利 · 导入后先检查",
      "color": "#382517",
      "bgcolor": "#18120f"
    }
  ],
  "links": [
    [
      707,
      470,
      0,
      472,
      0,
      "IMAGE"
    ],
    [
      708,
      461,
      0,
      472,
      1,
      "IMAGE"
    ],
    [
      704,
      470,
      0,
      459,
      9,
      "IMAGE"
    ],
    [
      728,
      475,
      0,
      459,
      10,
      "IMAGE"
    ],
    [
      672,
      459,
      0,
      461,
      0,
      "IMAGE"
    ]
  ],
  "groups": [],
  "definitions": {
    "subgraphs": [
      {
        "id": "bc1c967a-7f6a-4be9-a372-dad16e4f28e3",
        "version": 1,
        "state": {
          "lastGroupId": 38,
          "lastNodeId": 501,
          "lastLinkId": 903,
          "lastRerouteId": 9
        },
        "revision": 0,
        "config": {},
        "name": "Image Edit (Qwen Image 2.1)",
        "inputNode": {
          "id": -10,
          "bounding": [
            -720,
            630,
            143.044921875,
            648
          ]
        },
        "outputNode": {
          "id": -20,
          "bounding": [
            1960,
            640,
            128,
            68
          ]
        },
        "inputs": [
          {
            "id": "1f3911c3-71b5-45b7-9a0e-4ac7285069dc",
            "name": "resolution",
            "type": "INT",
            "linkIds": [
              725
            ],
            "pos": [
              -600.955078125,
              654
            ]
          },
          {
            "id": "6a73de3b-f4cd-43a4-9076-76648c6902f0",
            "name": "prompt",
            "type": "STRING",
            "linkIds": [
              739,
              802
            ],
            "localized_name": "prompt",
            "label": "positive_prompt",
            "pos": [
              -600.955078125,
              674
            ]
          },
          {
            "id": "57887da4-f3f5-41b1-9fce-a7292abaef6a",
            "name": "switch_1",
            "type": "BOOLEAN",
            "linkIds": [
              741
            ],
            "label": "refine_prompt",
            "pos": [
              -600.955078125,
              694
            ]
          },
          {
            "id": "cd079967-6ff0-46d9-8b58-d52c2cdc5de5",
            "name": "thinking",
            "type": "BOOLEAN",
            "linkIds": [
              902
            ],
            "pos": [
              -600.955078125,
              714
            ]
          },
          {
            "id": "d98ec6b1-9955-48e0-874d-b99d10218329",
            "name": "max_length",
            "type": "INT",
            "linkIds": [
              903
            ],
            "pos": [
              -600.955078125,
              734
            ]
          },
          {
            "id": "d4c1377f-7fbc-4519-b83c-9a3b9c2de104",
            "name": "negative_prompt",
            "type": "STRING",
            "linkIds": [
              727
            ],
            "pos": [
              -600.955078125,
              754
            ]
          },
          {
            "id": "420ee896-17c3-4e07-95fc-0ff309a6b836",
            "name": "cfg",
            "type": "FLOAT",
            "linkIds": [
              658
            ],
            "pos": [
              -600.955078125,
              774
            ]
          },
          {
            "id": "349c3f72-ba7a-4277-84ff-8029faa16019",
            "name": "steps",
            "type": "INT",
            "linkIds": [
              659
            ],
            "label": "steps",
            "pos": [
              -600.955078125,
              794
            ]
          },
          {
            "id": "60df426d-f8ab-4ce2-8c82-42dc7cbf19d0",
            "name": "switch",
            "type": "BOOLEAN",
            "linkIds": [
              703
            ],
            "label": "custom_size",
            "pos": [
              -600.955078125,
              814
            ]
          },
          {
            "id": "91c96cf8-057b-4da2-b71e-305541a3527e",
            "name": "width",
            "type": "INT",
            "linkIds": [
              660
            ],
            "localized_name": "width",
            "pos": [
              -600.955078125,
              834
            ]
          },
          {
            "id": "661cc520-6bd0-4925-90ec-cecaa188b57d",
            "name": "height",
            "type": "INT",
            "linkIds": [
              661
            ],
            "localized_name": "height",
            "pos": [
              -600.955078125,
              854
            ]
          },
          {
            "id": "9f0e91b8-5a4a-4f5a-a2a4-4ddc180df0fd",
            "name": "scheduler",
            "type": "COMBO",
            "linkIds": [
              662
            ],
            "label": "sampler",
            "pos": [
              -600.955078125,
              874
            ]
          },
          {
            "id": "4710583f-3cb0-4091-87ab-dadd8a2e657c",
            "name": "scheduler_1",
            "type": "COMBO",
            "linkIds": [
              668
            ],
            "label": "scheduler",
            "pos": [
              -600.955078125,
              894
            ]
          },
          {
            "id": "977ce57d-3764-491c-8d2d-543754cfbaf1",
            "name": "seed",
            "type": "INT",
            "linkIds": [
              667,
              804
            ],
            "pos": [
              -600.955078125,
              914
            ]
          },
          {
            "id": "143494fb-a40e-423f-be3b-ecc808b408b0",
            "name": "unet_name",
            "type": "COMBO",
            "linkIds": [
              663
            ],
            "pos": [
              -600.955078125,
              934
            ]
          },
          {
            "id": "d8528289-e121-45ed-9c31-e6370ce4ba5e",
            "name": "clip_name",
            "type": "COMBO",
            "linkIds": [
              664
            ],
            "pos": [
              -600.955078125,
              954
            ]
          },
          {
            "id": "f03d1fb0-d592-4997-b55e-e7a2549c36e5",
            "name": "vae_name",
            "type": "COMBO",
            "linkIds": [
              665
            ],
            "pos": [
              -600.955078125,
              974
            ]
          },
          {
            "id": "c2d95dbf-7f92-4c0b-a138-b9b5d1472e7f",
            "name": "device",
            "type": "COMBO",
            "linkIds": [
              729
            ],
            "label": "cache_device",
            "pos": [
              -600.955078125,
              994
            ]
          },
          {
            "id": "974d6751-be03-4afc-911f-a0d43f7cb906",
            "name": "dtype",
            "type": "COMBO",
            "linkIds": [
              730
            ],
            "label": "dtype",
            "pos": [
              -600.955078125,
              1014
            ]
          },
          {
            "id": "c11b216a-e05d-49a4-b776-293022d01a52",
            "name": "clip_name_1",
            "type": "COMBO",
            "linkIds": [
              746
            ],
            "label": "PE_model",
            "pos": [
              -600.955078125,
              1034
            ]
          },
          {
            "id": "6bbe4c8a-0ce9-4576-9468-697a165b98b4",
            "name": "images.image_1",
            "type": "IMAGE",
            "linkIds": [
              710,
              750
            ],
            "label": "image_1",
            "pos": [
              -600.955078125,
              1054
            ]
          },
          {
            "id": "5e9080e7-bbd0-4363-9e25-aaa201f9ff01",
            "name": "images.image_2",
            "type": "IMAGE",
            "linkIds": [
              711,
              779
            ],
            "label": "image_2",
            "pos": [
              -600.955078125,
              1074
            ]
          },
          {
            "id": "29bd6732-17d4-4ca7-aa9f-dc118c6c008a",
            "name": "images.image_3",
            "type": "IMAGE",
            "linkIds": [
              712,
              780
            ],
            "label": "image_3",
            "pos": [
              -600.955078125,
              1094
            ]
          },
          {
            "id": "c0899e22-8834-4c49-b0ec-5d2e1c9a4f9d",
            "name": "images.image_4",
            "type": "IMAGE",
            "linkIds": [
              713,
              781
            ],
            "label": "image_4",
            "pos": [
              -600.955078125,
              1114
            ]
          },
          {
            "id": "f4bb2fe2-583b-429d-83dc-0af6d4d3fdf8",
            "name": "images.image_5_1",
            "type": "IMAGE",
            "linkIds": [
              714,
              782
            ],
            "label": "image_5",
            "pos": [
              -600.955078125,
              1134
            ]
          },
          {
            "id": "4dc8dcc5-da5f-4dd4-82f4-479dabed8567",
            "name": "images.image_6",
            "type": "IMAGE",
            "linkIds": [
              715,
              783
            ],
            "label": "image_6",
            "pos": [
              -600.955078125,
              1154
            ]
          },
          {
            "id": "58ac7e94-91ff-4992-9022-fd67902782eb",
            "name": "images.image_7",
            "type": "IMAGE",
            "linkIds": [
              716,
              784
            ],
            "label": "image_7",
            "pos": [
              -600.955078125,
              1174
            ]
          },
          {
            "id": "b736a3f9-62a7-4b77-ad2b-9ed40a482949",
            "name": "images.image_8",
            "type": "IMAGE",
            "linkIds": [
              717,
              785
            ],
            "label": "image_8",
            "pos": [
              -600.955078125,
              1194
            ]
          },
          {
            "id": "79883453-5e79-4003-a7ef-8d9156cffcc4",
            "name": "images.image_9",
            "type": "IMAGE",
            "linkIds": [
              718,
              786
            ],
            "label": "image_9",
            "pos": [
              -600.955078125,
              1214
            ]
          },
          {
            "id": "68c8b3fa-d3fd-4281-82ba-09030a9918dc",
            "name": "images.image_10",
            "type": "IMAGE",
            "linkIds": [
              719,
              787
            ],
            "label": "image_10",
            "pos": [
              -600.955078125,
              1234
            ]
          }
        ],
        "outputs": [
          {
            "id": "f6f3effc-0961-4c17-b52c-a77c16ca6aa4",
            "name": "IMAGE",
            "type": "IMAGE",
            "linkIds": [
              650
            ],
            "localized_name": "IMAGE",
            "pos": [
              1984,
              664
            ]
          }
        ],
        "widgets": [],
        "nodes": [
          {
            "id": 451,
            "type": "UNETLoader",
            "pos": [
              -190,
              410
            ],
            "size": [
              510,
              90
            ],
            "flags": {},
            "order": 1,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "unet_name",
                "name": "unet_name",
                "type": "COMBO",
                "widget": {
                  "name": "unet_name"
                },
                "link": 663
              }
            ],
            "outputs": [
              {
                "localized_name": "MODEL",
                "name": "MODEL",
                "type": "MODEL",
                "links": [
                  688
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "UNETLoader",
              "models": [
                {
                  "name": "qwen_image_2.1_int8_convrot.safetensors",
                  "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors",
                  "directory": "diffusion_models"
                }
              ]
            },
            "widgets_values": [
              "qwen_image_2.1_int8_convrot.safetensors",
              "default"
            ],
            "widgets_values_named": {
              "unet_name": "qwen_image_2.1_int8_convrot.safetensors",
              "weight_dtype": "default"
            }
          },
          {
            "id": 453,
            "type": "CLIPLoader",
            "pos": [
              -190,
              570
            ],
            "size": [
              510,
              120
            ],
            "flags": {},
            "order": 2,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "clip_name",
                "name": "clip_name",
                "type": "COMBO",
                "widget": {
                  "name": "clip_name"
                },
                "link": 664
              }
            ],
            "outputs": [
              {
                "localized_name": "CLIP",
                "name": "CLIP",
                "type": "CLIP",
                "links": [
                  721
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "CLIPLoader",
              "models": [
                {
                  "name": "qwen3vl_8b_int8_convrot.safetensors",
                  "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors",
                  "directory": "text_encoders"
                }
              ]
            },
            "widgets_values": [
              "qwen3vl_8b_int8_convrot.safetensors",
              "qwen_image",
              "default"
            ],
            "widgets_values_named": {
              "clip_name": "qwen3vl_8b_int8_convrot.safetensors",
              "type": "qwen_image",
              "device": "default"
            }
          },
          {
            "id": 454,
            "type": "VAELoader",
            "pos": [
              -190,
              770
            ],
            "size": [
              510,
              70
            ],
            "flags": {},
            "order": 3,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "vae_name",
                "name": "vae_name",
                "type": "COMBO",
                "widget": {
                  "name": "vae_name"
                },
                "link": 665
              }
            ],
            "outputs": [
              {
                "localized_name": "VAE",
                "name": "VAE",
                "type": "VAE",
                "links": [
                  649,
                  720
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "VAELoader",
              "models": [
                {
                  "name": "qwen_image_2.1_vae_bf16.safetensors",
                  "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/vae/qwen_image_2.1_vae_bf16.safetensors",
                  "directory": "vae"
                }
              ]
            },
            "widgets_values": [
              "qwen_image_2.1_vae_bf16.safetensors"
            ],
            "widgets_values_named": {
              "vae_name": "qwen_image_2.1_vae_bf16.safetensors"
            }
          },
          {
            "id": 456,
            "type": "EmptyLatentImage",
            "pos": [
              -70,
              1010
            ],
            "size": [
              300,
              120
            ],
            "flags": {},
            "order": 4,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "width",
                "name": "width",
                "type": "INT",
                "widget": {
                  "name": "width"
                },
                "link": 660
              },
              {
                "localized_name": "height",
                "name": "height",
                "type": "INT",
                "widget": {
                  "name": "height"
                },
                "link": 661
              }
            ],
            "outputs": [
              {
                "localized_name": "LATENT",
                "name": "LATENT",
                "type": "LATENT",
                "links": [
                  684
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "EmptyLatentImage"
            },
            "widgets_values": [
              1024,
              1024,
              1
            ],
            "widgets_values_named": {
              "width": 1024,
              "height": 1024,
              "batch_size": 1
            }
          },
          {
            "id": 457,
            "type": "VAEDecode",
            "pos": [
              1620,
              660
            ],
            "size": [
              230,
              60
            ],
            "flags": {},
            "order": 5,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "samples",
                "name": "samples",
                "type": "LATENT",
                "link": 651
              },
              {
                "localized_name": "vae",
                "name": "vae",
                "type": "VAE",
                "link": 649
              }
            ],
            "outputs": [
              {
                "localized_name": "IMAGE",
                "name": "IMAGE",
                "type": "IMAGE",
                "links": [
                  650
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "VAEDecode"
            }
          },
          {
            "id": 458,
            "type": "KSampler",
            "pos": [
              1180,
              640
            ],
            "size": [
              270,
              270
            ],
            "flags": {},
            "order": 6,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "model",
                "name": "model",
                "type": "MODEL",
                "link": 689
              },
              {
                "localized_name": "positive",
                "name": "positive",
                "type": "CONDITIONING",
                "link": 722
              },
              {
                "localized_name": "negative",
                "name": "negative",
                "type": "CONDITIONING",
                "link": 723
              },
              {
                "localized_name": "latent_image",
                "name": "latent_image",
                "type": "LATENT",
                "link": 682
              },
              {
                "localized_name": "seed",
                "name": "seed",
                "type": "INT",
                "widget": {
                  "name": "seed"
                },
                "link": 667
              },
              {
                "localized_name": "steps",
                "name": "steps",
                "type": "INT",
                "widget": {
                  "name": "steps"
                },
                "link": 659
              },
              {
                "localized_name": "cfg",
                "name": "cfg",
                "type": "FLOAT",
                "widget": {
                  "name": "cfg"
                },
                "link": 658
              },
              {
                "localized_name": "sampler_name",
                "name": "sampler_name",
                "type": "COMBO",
                "widget": {
                  "name": "sampler_name"
                },
                "link": 662
              },
              {
                "localized_name": "scheduler",
                "name": "scheduler",
                "type": "COMBO",
                "widget": {
                  "name": "scheduler"
                },
                "link": 668
              }
            ],
            "outputs": [
              {
                "localized_name": "LATENT",
                "name": "LATENT",
                "type": "LATENT",
                "links": [
                  651
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "KSampler"
            },
            "widgets_values": [
              0,
              "randomize",
              25,
              1,
              "euler",
              "simple",
              1
            ],
            "widgets_values_named": {
              "seed": 0,
              "control_after_generate": "randomize",
              "steps": 25,
              "cfg": 1,
              "sampler_name": "euler",
              "scheduler": "simple",
              "denoise": 1
            }
          },
          {
            "id": 468,
            "type": "ComfySwitchNode",
            "pos": [
              570,
              1040
            ],
            "size": [
              270,
              80
            ],
            "flags": {},
            "order": 7,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "on_false",
                "name": "on_false",
                "shape": 7,
                "type": "LATENT",
                "link": 724
              },
              {
                "localized_name": "on_true",
                "name": "on_true",
                "shape": 7,
                "type": "LATENT",
                "link": 684
              },
              {
                "localized_name": "switch",
                "name": "switch",
                "type": "BOOLEAN",
                "widget": {
                  "name": "switch"
                },
                "link": 703
              }
            ],
            "outputs": [
              {
                "localized_name": "output",
                "name": "output",
                "type": "LATENT",
                "links": [
                  682
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "ComfySwitchNode"
            },
            "widgets_values": [
              false
            ],
            "widgets_values_named": {
              "switch": false
            }
          },
          {
            "id": 469,
            "type": "QwenImage21Cache",
            "pos": [
              1180,
              460
            ],
            "size": [
              270,
              90
            ],
            "flags": {},
            "order": 8,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "model",
                "name": "model",
                "type": "MODEL",
                "link": 688
              },
              {
                "localized_name": "device",
                "name": "device",
                "type": "COMBO",
                "widget": {
                  "name": "device"
                },
                "link": 729
              },
              {
                "localized_name": "dtype",
                "name": "dtype",
                "type": "COMBO",
                "widget": {
                  "name": "dtype"
                },
                "link": 730
              }
            ],
            "outputs": [
              {
                "localized_name": "MODEL",
                "name": "MODEL",
                "type": "MODEL",
                "links": [
                  689
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "QwenImage21Cache"
            },
            "widgets_values": [
              "auto",
              "default"
            ],
            "widgets_values_named": {
              "device": "auto",
              "dtype": "default"
            }
          },
          {
            "id": 474,
            "type": "TextEncodeQwenImage21",
            "pos": [
              500,
              430
            ],
            "size": [
              460,
              520
            ],
            "flags": {},
            "order": 9,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "clip",
                "name": "clip",
                "type": "CLIP",
                "link": 721
              },
              {
                "localized_name": "image_1",
                "name": "images.image_1",
                "shape": 7,
                "type": "IMAGE",
                "link": 710
              },
              {
                "localized_name": "vae",
                "name": "vae",
                "shape": 7,
                "type": "VAE",
                "link": 720
              },
              {
                "localized_name": "prompt",
                "name": "prompt",
                "type": "STRING",
                "widget": {
                  "name": "prompt"
                },
                "link": 743
              },
              {
                "localized_name": "negative_prompt",
                "name": "negative_prompt",
                "type": "STRING",
                "widget": {
                  "name": "negative_prompt"
                },
                "link": 727
              },
              {
                "localized_name": "resolution",
                "name": "resolution",
                "type": "INT",
                "widget": {
                  "name": "resolution"
                },
                "link": 725
              },
              {
                "localized_name": "image_12",
                "name": "images.image_12",
                "shape": 7,
                "type": "IMAGE",
                "link": null
              },
              {
                "localized_name": "image_7",
                "name": "images.image_7",
                "shape": 7,
                "type": "IMAGE",
                "link": 716
              },
              {
                "localized_name": "image_8",
                "name": "images.image_8",
                "shape": 7,
                "type": "IMAGE",
                "link": 717
              },
              {
                "localized_name": "image_9",
                "name": "images.image_9",
                "shape": 7,
                "type": "IMAGE",
                "link": 718
              },
              {
                "localized_name": "image_10",
                "name": "images.image_10",
                "shape": 7,
                "type": "IMAGE",
                "link": 719
              },
              {
                "localized_name": "image_11",
                "name": "images.image_11",
                "shape": 7,
                "type": "IMAGE",
                "link": null
              },
              {
                "localized_name": "image_2",
                "name": "images.image_2",
                "shape": 7,
                "type": "IMAGE",
                "link": 711
              },
              {
                "localized_name": "image_3",
                "name": "images.image_3",
                "shape": 7,
                "type": "IMAGE",
                "link": 712
              },
              {
                "localized_name": "image_4",
                "name": "images.image_4",
                "shape": 7,
                "type": "IMAGE",
                "link": 713
              },
              {
                "localized_name": "image_5",
                "name": "images.image_5",
                "shape": 7,
                "type": "IMAGE",
                "link": 714
              },
              {
                "localized_name": "image_6",
                "name": "images.image_6",
                "shape": 7,
                "type": "IMAGE",
                "link": 715
              }
            ],
            "outputs": [
              {
                "localized_name": "positive",
                "name": "positive",
                "type": "CONDITIONING",
                "links": [
                  722
                ]
              },
              {
                "localized_name": "negative",
                "name": "negative",
                "type": "CONDITIONING",
                "links": [
                  723
                ]
              },
              {
                "localized_name": "latent",
                "name": "latent",
                "type": "LATENT",
                "links": [
                  724
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "TextEncodeQwenImage21"
            },
            "widgets_values": [
              "",
              "",
              1024
            ],
            "widgets_values_named": {
              "prompt": "",
              "negative_prompt": "",
              "resolution": 1024
            }
          },
          {
            "id": 477,
            "type": "CLIPLoader",
            "pos": [
              -180,
              -480
            ],
            "size": [
              530,
              120
            ],
            "flags": {},
            "order": 10,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "clip_name",
                "name": "clip_name",
                "type": "COMBO",
                "widget": {
                  "name": "clip_name"
                },
                "link": 746
              }
            ],
            "outputs": [
              {
                "localized_name": "CLIP",
                "name": "CLIP",
                "type": "CLIP",
                "links": [
                  800
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "CLIPLoader",
              "models": [
                {
                  "name": "qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors",
                  "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",
                  "directory": "text_encoders"
                }
              ]
            },
            "widgets_values": [
              "qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors",
              "qwen_image",
              "default"
            ],
            "widgets_values_named": {
              "clip_name": "qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors",
              "type": "qwen_image",
              "device": "default"
            }
          },
          {
            "id": 479,
            "type": "PrimitiveStringMultiline",
            "pos": [
              -180,
              10
            ],
            "size": [
              620,
              240
            ],
            "flags": {},
            "order": 0,
            "mode": 0,
            "inputs": [],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": [
                  901
                ]
              }
            ],
            "title": "Text (System Prompt)",
            "properties": {
              "Node name for S&R": "PrimitiveStringMultiline"
            },
            "widgets_values": [
              "# 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:"
            ],
            "widgets_values_named": {
              "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:"
            }
          },
          {
            "id": 480,
            "type": "PreviewAny",
            "pos": [
              1040,
              -480
            ],
            "size": [
              470,
              680
            ],
            "flags": {},
            "order": 11,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "source",
                "name": "source",
                "type": "*",
                "link": 791
              }
            ],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": [
                  743
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "PreviewAny"
            },
            "widgets_values": [],
            "widgets_values_named": {}
          },
          {
            "id": 484,
            "type": "ComfySwitchNode",
            "pos": [
              620,
              120
            ],
            "size": [
              270,
              80
            ],
            "flags": {},
            "order": 12,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "on_false",
                "name": "on_false",
                "shape": 7,
                "type": "STRING",
                "link": 739
              },
              {
                "localized_name": "on_true",
                "name": "on_true",
                "shape": 7,
                "type": "STRING",
                "link": 806
              },
              {
                "localized_name": "switch",
                "name": "switch",
                "type": "BOOLEAN",
                "widget": {
                  "name": "switch"
                },
                "link": 741
              }
            ],
            "outputs": [
              {
                "localized_name": "output",
                "name": "output",
                "type": "STRING",
                "links": [
                  791
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "ComfySwitchNode"
            },
            "widgets_values": [
              false
            ],
            "widgets_values_named": {
              "switch": false
            }
          },
          {
            "id": 485,
            "type": "BatchImagesNode",
            "pos": [
              -180,
              -310
            ],
            "size": [
              230,
              270
            ],
            "flags": {},
            "order": 13,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "image0",
                "name": "images.image0",
                "type": "IMAGE",
                "link": 750
              },
              {
                "localized_name": "image1",
                "name": "images.image1",
                "shape": 7,
                "type": "IMAGE",
                "link": 779
              },
              {
                "localized_name": "image5",
                "name": "images.image5",
                "shape": 7,
                "type": "IMAGE",
                "link": 780
              },
              {
                "localized_name": "image6",
                "name": "images.image6",
                "shape": 7,
                "type": "IMAGE",
                "link": 781
              },
              {
                "localized_name": "image7",
                "name": "images.image7",
                "shape": 7,
                "type": "IMAGE",
                "link": 782
              },
              {
                "localized_name": "image8",
                "name": "images.image8",
                "shape": 7,
                "type": "IMAGE",
                "link": 783
              },
              {
                "localized_name": "image9",
                "name": "images.image9",
                "shape": 7,
                "type": "IMAGE",
                "link": 784
              },
              {
                "localized_name": "image10",
                "name": "images.image10",
                "shape": 7,
                "type": "IMAGE",
                "link": 785
              },
              {
                "localized_name": "image11",
                "name": "images.image11",
                "shape": 7,
                "type": "IMAGE",
                "link": 786
              },
              {
                "localized_name": "image12",
                "name": "images.image12",
                "shape": 7,
                "type": "IMAGE",
                "link": 787
              },
              {
                "localized_name": "image13",
                "name": "images.image13",
                "shape": 7,
                "type": "IMAGE",
                "link": null
              },
              {
                "localized_name": "image2",
                "name": "images.image2",
                "shape": 7,
                "type": "IMAGE",
                "link": null
              }
            ],
            "outputs": [
              {
                "localized_name": "IMAGE",
                "name": "IMAGE",
                "type": "IMAGE",
                "links": [
                  801
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "BatchImagesNode"
            }
          },
          {
            "id": 500,
            "type": "TextGenerate",
            "pos": [
              500,
              -480
            ],
            "size": [
              400,
              460
            ],
            "flags": {},
            "order": 14,
            "mode": 0,
            "showAdvanced": true,
            "inputs": [
              {
                "localized_name": "clip",
                "name": "clip",
                "type": "CLIP",
                "link": 800
              },
              {
                "localized_name": "image",
                "name": "image",
                "shape": 7,
                "type": "IMAGE",
                "link": 801
              },
              {
                "localized_name": "video",
                "name": "video",
                "shape": 7,
                "type": "IMAGE",
                "link": null
              },
              {
                "localized_name": "audio",
                "name": "audio",
                "shape": 7,
                "type": "AUDIO",
                "link": null
              },
              {
                "localized_name": "system_prompt",
                "name": "system_prompt",
                "shape": 7,
                "type": "STRING",
                "link": 901
              },
              {
                "localized_name": "prompt",
                "name": "prompt",
                "type": "STRING",
                "widget": {
                  "name": "prompt"
                },
                "link": 802
              },
              {
                "localized_name": "max_length",
                "name": "max_length",
                "type": "INT",
                "widget": {
                  "name": "max_length"
                },
                "link": 903
              },
              {
                "localized_name": "seed",
                "name": "sampling_mode.seed",
                "type": "INT",
                "widget": {
                  "name": "sampling_mode.seed"
                },
                "link": 804
              },
              {
                "localized_name": "thinking",
                "name": "thinking",
                "shape": 7,
                "type": "BOOLEAN",
                "widget": {
                  "name": "thinking"
                },
                "link": 902
              }
            ],
            "outputs": [
              {
                "localized_name": "generated_text",
                "name": "generated_text",
                "type": "STRING",
                "links": [
                  806
                ]
              },
              {
                "localized_name": "thinking",
                "name": "thinking",
                "type": "STRING",
                "links": null
              }
            ],
            "properties": {
              "Node name for S&R": "TextGenerate"
            },
            "widgets_values": [
              "",
              4096,
              "on",
              1,
              20,
              0.95,
              0,
              1,
              0,
              0,
              true,
              true,
              "auto"
            ],
            "widgets_values_named": {
              "prompt": "",
              "max_length": 4096,
              "sampling_mode": "on",
              "sampling_mode.temperature": 1,
              "sampling_mode.top_k": 20,
              "sampling_mode.top_p": 0.95,
              "sampling_mode.min_p": 0,
              "sampling_mode.repetition_penalty": 1,
              "sampling_mode.seed": 0,
              "sampling_mode.presence_penalty": 0,
              "thinking": true,
              "use_default_template": true,
              "mtp": "auto"
            }
          }
        ],
        "groups": [
          {
            "id": 34,
            "title": "Models",
            "bounding": [
              -200,
              300,
              530,
              590
            ],
            "color": "#3f789e",
            "flags": {}
          },
          {
            "id": 35,
            "title": "Image Size",
            "bounding": [
              -200,
              920,
              530,
              250
            ],
            "color": "#3f789e",
            "flags": {}
          },
          {
            "id": 36,
            "title": "Conditioning",
            "bounding": [
              360,
              300,
              700,
              860
            ],
            "color": "#3f789e",
            "flags": {}
          },
          {
            "id": 37,
            "title": "Sampling",
            "bounding": [
              1090,
              300,
              470,
              860
            ],
            "color": "#3f789e",
            "flags": {}
          },
          {
            "id": 38,
            "title": "Prompt Enhancer",
            "bounding": [
              -200,
              -560,
              1750,
              830
            ],
            "color": "#3f789e",
            "flags": {}
          }
        ],
        "links": [
          {
            "id": 649,
            "origin_id": 454,
            "origin_slot": 0,
            "target_id": 457,
            "target_slot": 1,
            "type": "VAE"
          },
          {
            "id": 650,
            "origin_id": 457,
            "origin_slot": 0,
            "target_id": -20,
            "target_slot": 0,
            "type": "IMAGE"
          },
          {
            "id": 651,
            "origin_id": 458,
            "origin_slot": 0,
            "target_id": 457,
            "target_slot": 0,
            "type": "LATENT"
          },
          {
            "id": 682,
            "origin_id": 468,
            "origin_slot": 0,
            "target_id": 458,
            "target_slot": 3,
            "type": "LATENT"
          },
          {
            "id": 684,
            "origin_id": 456,
            "origin_slot": 0,
            "target_id": 468,
            "target_slot": 1,
            "type": "LATENT"
          },
          {
            "id": 688,
            "origin_id": 451,
            "origin_slot": 0,
            "target_id": 469,
            "target_slot": 0,
            "type": "MODEL"
          },
          {
            "id": 689,
            "origin_id": 469,
            "origin_slot": 0,
            "target_id": 458,
            "target_slot": 0,
            "type": "MODEL"
          },
          {
            "id": 722,
            "origin_id": 474,
            "origin_slot": 0,
            "target_id": 458,
            "target_slot": 1,
            "type": "CONDITIONING"
          },
          {
            "id": 723,
            "origin_id": 474,
            "origin_slot": 1,
            "target_id": 458,
            "target_slot": 2,
            "type": "CONDITIONING"
          },
          {
            "id": 724,
            "origin_id": 474,
            "origin_slot": 2,
            "target_id": 468,
            "target_slot": 0,
            "type": "LATENT"
          },
          {
            "id": 791,
            "origin_id": 484,
            "origin_slot": 0,
            "target_id": 480,
            "target_slot": 0,
            "type": "STRING"
          },
          {
            "id": 806,
            "origin_id": 500,
            "origin_slot": 0,
            "target_id": 484,
            "target_slot": 1,
            "type": "STRING"
          },
          {
            "id": 739,
            "origin_id": -10,
            "origin_slot": 1,
            "target_id": 484,
            "target_slot": 0,
            "type": "STRING"
          },
          {
            "id": 741,
            "origin_id": -10,
            "origin_slot": 2,
            "target_id": 484,
            "target_slot": 2,
            "type": "BOOLEAN"
          },
          {
            "id": 658,
            "origin_id": -10,
            "origin_slot": 6,
            "target_id": 458,
            "target_slot": 6,
            "type": "FLOAT"
          },
          {
            "id": 659,
            "origin_id": -10,
            "origin_slot": 7,
            "target_id": 458,
            "target_slot": 5,
            "type": "INT"
          },
          {
            "id": 703,
            "origin_id": -10,
            "origin_slot": 8,
            "target_id": 468,
            "target_slot": 2,
            "type": "BOOLEAN"
          },
          {
            "id": 660,
            "origin_id": -10,
            "origin_slot": 9,
            "target_id": 456,
            "target_slot": 0,
            "type": "INT"
          },
          {
            "id": 661,
            "origin_id": -10,
            "origin_slot": 10,
            "target_id": 456,
            "target_slot": 1,
            "type": "INT"
          },
          {
            "id": 662,
            "origin_id": -10,
            "origin_slot": 11,
            "target_id": 458,
            "target_slot": 7,
            "type": "COMBO"
          },
          {
            "id": 668,
            "origin_id": -10,
            "origin_slot": 12,
            "target_id": 458,
            "target_slot": 8,
            "type": "COMBO"
          },
          {
            "id": 667,
            "origin_id": -10,
            "origin_slot": 13,
            "target_id": 458,
            "target_slot": 4,
            "type": "INT"
          },
          {
            "id": 663,
            "origin_id": -10,
            "origin_slot": 14,
            "target_id": 451,
            "target_slot": 0,
            "type": "COMBO"
          },
          {
            "id": 664,
            "origin_id": -10,
            "origin_slot": 15,
            "target_id": 453,
            "target_slot": 0,
            "type": "COMBO"
          },
          {
            "id": 665,
            "origin_id": -10,
            "origin_slot": 16,
            "target_id": 454,
            "target_slot": 0,
            "type": "COMBO"
          },
          {
            "id": 729,
            "origin_id": -10,
            "origin_slot": 17,
            "target_id": 469,
            "target_slot": 1,
            "type": "COMBO"
          },
          {
            "id": 730,
            "origin_id": -10,
            "origin_slot": 18,
            "target_id": 469,
            "target_slot": 2,
            "type": "COMBO"
          },
          {
            "id": 746,
            "origin_id": -10,
            "origin_slot": 19,
            "target_id": 477,
            "target_slot": 0,
            "type": "COMBO"
          },
          {
            "id": 721,
            "origin_id": 453,
            "origin_slot": 0,
            "target_id": 474,
            "target_slot": 0,
            "type": "CLIP"
          },
          {
            "id": 710,
            "origin_id": -10,
            "origin_slot": 20,
            "target_id": 474,
            "target_slot": 1,
            "type": "IMAGE"
          },
          {
            "id": 720,
            "origin_id": 454,
            "origin_slot": 0,
            "target_id": 474,
            "target_slot": 2,
            "type": "VAE"
          },
          {
            "id": 743,
            "origin_id": 480,
            "origin_slot": 0,
            "target_id": 474,
            "target_slot": 3,
            "type": "STRING"
          },
          {
            "id": 727,
            "origin_id": -10,
            "origin_slot": 5,
            "target_id": 474,
            "target_slot": 4,
            "type": "STRING"
          },
          {
            "id": 725,
            "origin_id": -10,
            "origin_slot": 0,
            "target_id": 474,
            "target_slot": 5,
            "type": "INT"
          },
          {
            "id": 716,
            "origin_id": -10,
            "origin_slot": 26,
            "target_id": 474,
            "target_slot": 7,
            "type": "IMAGE"
          },
          {
            "id": 717,
            "origin_id": -10,
            "origin_slot": 27,
            "target_id": 474,
            "target_slot": 8,
            "type": "IMAGE"
          },
          {
            "id": 718,
            "origin_id": -10,
            "origin_slot": 28,
            "target_id": 474,
            "target_slot": 9,
            "type": "IMAGE"
          },
          {
            "id": 719,
            "origin_id": -10,
            "origin_slot": 29,
            "target_id": 474,
            "target_slot": 10,
            "type": "IMAGE"
          },
          {
            "id": 711,
            "origin_id": -10,
            "origin_slot": 21,
            "target_id": 474,
            "target_slot": 12,
            "type": "IMAGE"
          },
          {
            "id": 712,
            "origin_id": -10,
            "origin_slot": 22,
            "target_id": 474,
            "target_slot": 13,
            "type": "IMAGE"
          },
          {
            "id": 713,
            "origin_id": -10,
            "origin_slot": 23,
            "target_id": 474,
            "target_slot": 14,
            "type": "IMAGE"
          },
          {
            "id": 714,
            "origin_id": -10,
            "origin_slot": 24,
            "target_id": 474,
            "target_slot": 15,
            "type": "IMAGE"
          },
          {
            "id": 715,
            "origin_id": -10,
            "origin_slot": 25,
            "target_id": 474,
            "target_slot": 16,
            "type": "IMAGE"
          },
          {
            "id": 750,
            "origin_id": -10,
            "origin_slot": 20,
            "target_id": 485,
            "target_slot": 0,
            "type": "IMAGE"
          },
          {
            "id": 779,
            "origin_id": -10,
            "origin_slot": 21,
            "target_id": 485,
            "target_slot": 1,
            "type": "IMAGE"
          },
          {
            "id": 780,
            "origin_id": -10,
            "origin_slot": 22,
            "target_id": 485,
            "target_slot": 2,
            "type": "IMAGE"
          },
          {
            "id": 781,
            "origin_id": -10,
            "origin_slot": 23,
            "target_id": 485,
            "target_slot": 3,
            "type": "IMAGE"
          },
          {
            "id": 782,
            "origin_id": -10,
            "origin_slot": 24,
            "target_id": 485,
            "target_slot": 4,
            "type": "IMAGE"
          },
          {
            "id": 783,
            "origin_id": -10,
            "origin_slot": 25,
            "target_id": 485,
            "target_slot": 5,
            "type": "IMAGE"
          },
          {
            "id": 784,
            "origin_id": -10,
            "origin_slot": 26,
            "target_id": 485,
            "target_slot": 6,
            "type": "IMAGE"
          },
          {
            "id": 785,
            "origin_id": -10,
            "origin_slot": 27,
            "target_id": 485,
            "target_slot": 7,
            "type": "IMAGE"
          },
          {
            "id": 786,
            "origin_id": -10,
            "origin_slot": 28,
            "target_id": 485,
            "target_slot": 8,
            "type": "IMAGE"
          },
          {
            "id": 787,
            "origin_id": -10,
            "origin_slot": 29,
            "target_id": 485,
            "target_slot": 9,
            "type": "IMAGE"
          },
          {
            "id": 800,
            "origin_id": 477,
            "origin_slot": 0,
            "target_id": 500,
            "target_slot": 0,
            "type": "CLIP"
          },
          {
            "id": 801,
            "origin_id": 485,
            "origin_slot": 0,
            "target_id": 500,
            "target_slot": 1,
            "type": "IMAGE"
          },
          {
            "id": 901,
            "origin_id": 479,
            "origin_slot": 0,
            "target_id": 500,
            "target_slot": 4,
            "type": "STRING"
          },
          {
            "id": 802,
            "origin_id": -10,
            "origin_slot": 1,
            "target_id": 500,
            "target_slot": 5,
            "type": "STRING"
          },
          {
            "id": 903,
            "origin_id": -10,
            "origin_slot": 4,
            "target_id": 500,
            "target_slot": 6,
            "type": "INT"
          },
          {
            "id": 902,
            "origin_id": -10,
            "origin_slot": 3,
            "target_id": 500,
            "target_slot": 8,
            "type": "BOOLEAN"
          },
          {
            "id": 804,
            "origin_id": -10,
            "origin_slot": 13,
            "target_id": 500,
            "target_slot": 7,
            "type": "INT"
          }
        ],
        "extra": {}
      }
    ]
  },
  "config": {},
  "extra": {
    "frontendVersion": "1.53.6",
    "VHS_latentpreview": false,
    "VHS_latentpreviewrate": 0,
    "VHS_MetadataImage": true,
    "VHS_KeepIntermediate": true,
    "ds": {
      "scale": 0.42,
      "offset": [
        -60,
        -2040
      ]
    },
    "template_license_notice": "MIT License\n\nCopyright (c) 2023-present Comfy Org\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.",
    "license_scope": "Notice applies to Comfy Org template portions. Model weights and third-party runtime code keep their own separate licenses."
  },
  "version": 0.4
}
