{
  "id": "6e9f36f5-f3ec-4ad3-9da1-02fad3ce9cde",
  "revision": 0,
  "last_node_id": 123,
  "last_link_id": 211,
  "nodes": [
    {
      "id": 23,
      "type": "SaveImage",
      "pos": [
        1320,
        -640
      ],
      "size": [
        700,
        610
      ],
      "flags": {
        "collapsed": false
      },
      "order": 5,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 123
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": [
            141
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "SaveImage",
        "cnr_id": "comfy-core",
        "ver": "0.4.0"
      },
      "widgets_values": [
        "ComfyUI-image_1"
      ],
      "widgets_values_named": {
        "filename_prefix": "ComfyUI-image_1"
      }
    },
    {
      "id": 24,
      "type": "SaveImage",
      "pos": [
        1320,
        810
      ],
      "size": [
        700,
        610
      ],
      "flags": {
        "collapsed": false
      },
      "order": 7,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 127
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": [
            196,
            210
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "SaveImage",
        "cnr_id": "comfy-core",
        "ver": "0.4.0"
      },
      "widgets_values": [
        "ComfyUI-image_3"
      ],
      "widgets_values_named": {
        "filename_prefix": "ComfyUI-image_3"
      }
    },
    {
      "id": 13,
      "type": "SaveImage",
      "pos": [
        1320,
        80
      ],
      "size": [
        700,
        610
      ],
      "flags": {
        "collapsed": false
      },
      "order": 6,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 125
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": [
            142,
            195
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "SaveImage",
        "cnr_id": "comfy-core",
        "ver": "0.4.0"
      },
      "widgets_values": [
        "ComfyUI-image_2"
      ],
      "widgets_values_named": {
        "filename_prefix": "ComfyUI-image_2"
      }
    },
    {
      "id": 25,
      "type": "SaveImage",
      "pos": [
        1320,
        1550
      ],
      "size": [
        700,
        610
      ],
      "flags": {
        "collapsed": false
      },
      "order": 9,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 130
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": [
            211
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "SaveImage",
        "cnr_id": "comfy-core",
        "ver": "0.4.0"
      },
      "widgets_values": [
        "ComfyUI-image_4"
      ],
      "widgets_values_named": {
        "filename_prefix": "ComfyUI-image_4"
      }
    },
    {
      "id": 10,
      "type": "LoadImage",
      "pos": [
        -160,
        510
      ],
      "size": [
        770,
        670
      ],
      "flags": {},
      "order": 0,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            120,
            124,
            129,
            132
          ]
        },
        {
          "name": "MASK",
          "type": "MASK",
          "links": null
        }
      ],
      "properties": {
        "Node name for S&R": "LoadImage",
        "cnr_id": "comfy-core",
        "ver": "0.4.0"
      },
      "widgets_values": [
        "product_car.jpg",
        "image"
      ],
      "widgets_values_named": {
        "image": "product_car.jpg",
        "upload": "image"
      },
      "color": "#232",
      "bgcolor": "#353"
    },
    {
      "id": 22,
      "type": "SaveVideo",
      "pos": [
        2600,
        -320
      ],
      "size": [
        700,
        150
      ],
      "flags": {},
      "order": 14,
      "mode": 0,
      "inputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "link": 70
        }
      ],
      "outputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "links": [
            154
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "SaveVideo",
        "cnr_id": "comfy-core",
        "ver": "0.4.0"
      },
      "widgets_values": [
        "video/ComfyUI-video_1",
        "auto",
        "auto",
        "auto"
      ],
      "widgets_values_named": {
        "filename_prefix": "video/ComfyUI-video_1",
        "format": "auto",
        "format.codec": "auto",
        "codec": "auto"
      }
    },
    {
      "id": 26,
      "type": "SaveVideo",
      "pos": [
        2600,
        410
      ],
      "size": [
        700,
        150
      ],
      "flags": {},
      "order": 15,
      "mode": 0,
      "inputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "link": 194
        }
      ],
      "outputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "links": [
            152
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "SaveVideo",
        "cnr_id": "comfy-core",
        "ver": "0.4.0"
      },
      "widgets_values": [
        "video/ComfyUI-video_2",
        "auto",
        "auto",
        "auto"
      ],
      "widgets_values_named": {
        "filename_prefix": "video/ComfyUI-video_2",
        "format": "auto",
        "format.codec": "auto",
        "codec": "auto"
      }
    },
    {
      "id": 27,
      "type": "SaveVideo",
      "pos": [
        2600,
        1170
      ],
      "size": [
        700,
        150
      ],
      "flags": {},
      "order": 16,
      "mode": 0,
      "inputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "link": 209
        }
      ],
      "outputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "links": [
            153
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "SaveVideo",
        "cnr_id": "comfy-core",
        "ver": "0.4.0"
      },
      "widgets_values": [
        "video/ComfyUI-video_3",
        "auto",
        "auto",
        "auto"
      ],
      "widgets_values_named": {
        "filename_prefix": "video/ComfyUI-video_3",
        "format": "auto",
        "format.codec": "auto",
        "codec": "auto"
      }
    },
    {
      "id": 39,
      "type": "Reroute",
      "pos": [
        2050,
        1550
      ],
      "size": [
        75,
        26
      ],
      "flags": {},
      "order": 10,
      "mode": 0,
      "inputs": [
        {
          "name": "",
          "type": "*",
          "link": 131
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "IMAGE",
          "links": []
        }
      ],
      "properties": {
        "showOutputText": false,
        "horizontal": false
      }
    },
    {
      "id": 51,
      "type": "GetVideoComponents",
      "pos": [
        3510,
        190
      ],
      "size": [
        230,
        140
      ],
      "flags": {},
      "order": 17,
      "mode": 0,
      "inputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "link": 154
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": [
            100
          ]
        },
        {
          "name": "audio",
          "type": "AUDIO",
          "links": []
        },
        {
          "name": "fps",
          "type": "FLOAT",
          "links": [
            98
          ]
        },
        {
          "name": "bit_depth",
          "type": "COMBO",
          "links": null
        },
        {
          "name": "color_space",
          "type": "COMBO",
          "links": null
        }
      ],
      "properties": {
        "Node name for S&R": "GetVideoComponents",
        "cnr_id": "comfy-core",
        "ver": "0.4.0"
      }
    },
    {
      "id": 50,
      "type": "GetVideoComponents",
      "pos": [
        3510,
        630
      ],
      "size": [
        230,
        140
      ],
      "flags": {},
      "order": 19,
      "mode": 0,
      "inputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "link": 153
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": [
            102
          ]
        },
        {
          "name": "audio",
          "type": "AUDIO",
          "links": []
        },
        {
          "name": "fps",
          "type": "FLOAT",
          "links": []
        },
        {
          "name": "bit_depth",
          "type": "COMBO",
          "links": null
        },
        {
          "name": "color_space",
          "type": "COMBO",
          "links": null
        }
      ],
      "properties": {
        "Node name for S&R": "GetVideoComponents",
        "cnr_id": "comfy-core",
        "ver": "0.4.0"
      }
    },
    {
      "id": 54,
      "type": "BatchImagesNode",
      "pos": [
        3860,
        420
      ],
      "size": [
        230,
        120
      ],
      "flags": {},
      "order": 20,
      "mode": 0,
      "inputs": [
        {
          "label": "image0",
          "name": "images.image0",
          "type": "IMAGE",
          "link": 100
        },
        {
          "name": "images.image1",
          "shape": 7,
          "type": "IMAGE",
          "link": 101
        },
        {
          "name": "images.image2",
          "shape": 7,
          "type": "IMAGE",
          "link": 102
        },
        {
          "name": "images.image3",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            103
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "BatchImagesNode"
      }
    },
    {
      "id": 47,
      "type": "CreateVideo",
      "pos": [
        4170,
        420
      ],
      "size": [
        270,
        170
      ],
      "flags": {},
      "order": 21,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 103
        },
        {
          "name": "audio",
          "shape": 7,
          "type": "AUDIO",
          "link": null
        },
        {
          "name": "fps",
          "type": "FLOAT",
          "widget": {
            "name": "fps"
          },
          "link": 98
        }
      ],
      "outputs": [
        {
          "name": "VIDEO",
          "type": "VIDEO",
          "links": [
            90
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "CreateVideo"
      },
      "widgets_values": [
        30,
        "auto",
        "sRGB",
        "none"
      ],
      "widgets_values_named": {
        "fps": 30,
        "bit_depth": "auto",
        "color_space": "sRGB",
        "codec": "none"
      }
    },
    {
      "id": 49,
      "type": "GetVideoComponents",
      "pos": [
        3510,
        410
      ],
      "size": [
        230,
        140
      ],
      "flags": {},
      "order": 18,
      "mode": 0,
      "inputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "link": 152
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": [
            101
          ]
        },
        {
          "name": "audio",
          "type": "AUDIO",
          "links": []
        },
        {
          "name": "fps",
          "type": "FLOAT",
          "links": []
        },
        {
          "name": "bit_depth",
          "type": "COMBO",
          "links": null
        },
        {
          "name": "color_space",
          "type": "COMBO",
          "links": null
        }
      ],
      "properties": {
        "Node name for S&R": "GetVideoComponents",
        "cnr_id": "comfy-core",
        "ver": "0.4.0"
      }
    },
    {
      "id": 38,
      "type": "Reroute",
      "pos": [
        2050,
        810
      ],
      "size": [
        75,
        26
      ],
      "flags": {},
      "order": 8,
      "mode": 0,
      "inputs": [
        {
          "name": "",
          "type": "*",
          "link": 128
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "IMAGE",
          "links": []
        }
      ],
      "properties": {
        "showOutputText": false,
        "horizontal": false
      }
    },
    {
      "id": 48,
      "type": "SaveVideo",
      "pos": [
        4500,
        420
      ],
      "size": [
        780,
        150
      ],
      "flags": {},
      "order": 22,
      "mode": 0,
      "inputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "link": 90
        }
      ],
      "outputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "links": null
        }
      ],
      "properties": {},
      "widgets_values": [
        "video/ComfyUI",
        "auto",
        "auto",
        "auto"
      ],
      "widgets_values_named": {
        "filename_prefix": "video/ComfyUI",
        "format": "auto",
        "format.codec": "auto",
        "codec": "auto"
      }
    },
    {
      "id": 42,
      "type": "ba9a7b30-cca0-4afc-9b44-ebfdc6121d4a",
      "pos": [
        2320,
        -320
      ],
      "size": [
        230,
        110
      ],
      "flags": {},
      "order": 11,
      "mode": 0,
      "inputs": [
        {
          "name": "image1",
          "type": "IMAGE",
          "link": 141
        },
        {
          "name": "image2",
          "type": "IMAGE",
          "link": 142
        }
      ],
      "outputs": [
        {
          "name": "VIDEO",
          "type": "VIDEO",
          "links": [
            70
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.4.0",
        "proxyWidgets": [],
        "previewExposures": []
      }
    },
    {
      "id": 79,
      "type": "ByteDanceSeedreamNodeV3",
      "pos": [
        870,
        -640
      ],
      "size": [
        400,
        440
      ],
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [
        {
          "name": "model.images.image_1",
          "shape": 7,
          "type": "IMAGE",
          "link": 120
        },
        {
          "name": "model.images.image_2",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            123
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "ByteDanceSeedreamNodeV3"
      },
      "widgets_values": [
        "Create an extreme close up view of the main element in the scene. Studio scene with a white background.",
        "seedream-4-5-251128",
        "(2K) 2848x1600 (16:9)",
        2048,
        2048,
        1,
        false,
        1,
        "fixed",
        false,
        true,
        "fixed"
      ],
      "widgets_values_named": {
        "prompt": "Create an extreme close up view of the main element in the scene. Studio scene with a white background.",
        "model": "seedream-4-5-251128",
        "model.size_preset": "(2K) 2848x1600 (16:9)",
        "model.width": 2048,
        "model.height": 2048,
        "model.max_images": 1,
        "model.fail_on_partial": false,
        "model.seed": 1,
        "control_after_generate#1": "fixed",
        "model.watermark": false,
        "model.thinking": true,
        "control_after_generate": "fixed"
      },
      "color": "#432",
      "bgcolor": "#653"
    },
    {
      "id": 80,
      "type": "ByteDanceSeedreamNodeV3",
      "pos": [
        880,
        80
      ],
      "size": [
        400,
        380
      ],
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [
        {
          "name": "model.images.image_1",
          "shape": 7,
          "type": "IMAGE",
          "link": 124
        },
        {
          "name": "model.images.image_2",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            125
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "ByteDanceSeedreamNodeV3"
      },
      "widgets_values": [
        "Create a low view, super-wide shot of the main subject in this scene. Studio scene with a white background.",
        "seedream-4-5-251128",
        "(2K) 2848x1600 (16:9)",
        2048,
        2048,
        1,
        false,
        2,
        "fixed",
        false,
        true,
        "fixed"
      ],
      "widgets_values_named": {
        "prompt": "Create a low view, super-wide shot of the main subject in this scene. Studio scene with a white background.",
        "model": "seedream-4-5-251128",
        "model.size_preset": "(2K) 2848x1600 (16:9)",
        "model.width": 2048,
        "model.height": 2048,
        "model.max_images": 1,
        "model.fail_on_partial": false,
        "model.seed": 2,
        "control_after_generate#1": "fixed",
        "model.watermark": false,
        "model.thinking": true,
        "control_after_generate": "fixed"
      },
      "color": "#432",
      "bgcolor": "#653"
    },
    {
      "id": 81,
      "type": "ByteDanceSeedreamNodeV3",
      "pos": [
        890,
        810
      ],
      "size": [
        400,
        380
      ],
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [
        {
          "name": "model.images.image_1",
          "shape": 7,
          "type": "IMAGE",
          "link": 129
        },
        {
          "name": "model.images.image_2",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            127,
            128
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "ByteDanceSeedreamNodeV3"
      },
      "widgets_values": [
        "Side view of the main subject in the scene. Studio scene with a white background.",
        "seedream-4-5-251128",
        "(2K) 2848x1600 (16:9)",
        2048,
        2048,
        1,
        false,
        2,
        "fixed",
        false,
        true,
        "fixed"
      ],
      "widgets_values_named": {
        "prompt": "Side view of the main subject in the scene. Studio scene with a white background.",
        "model": "seedream-4-5-251128",
        "model.size_preset": "(2K) 2848x1600 (16:9)",
        "model.width": 2048,
        "model.height": 2048,
        "model.max_images": 1,
        "model.fail_on_partial": false,
        "model.seed": 2,
        "control_after_generate#1": "fixed",
        "model.watermark": false,
        "model.thinking": true,
        "control_after_generate": "fixed"
      },
      "color": "#432",
      "bgcolor": "#653"
    },
    {
      "id": 82,
      "type": "ByteDanceSeedreamNodeV3",
      "pos": [
        870,
        1550
      ],
      "size": [
        400,
        380
      ],
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [
        {
          "name": "model.images.image_1",
          "shape": 7,
          "type": "IMAGE",
          "link": 132
        },
        {
          "name": "model.images.image_2",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            130,
            131
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "ByteDanceSeedreamNodeV3"
      },
      "widgets_values": [
        "Create an extreme wide shot from behind the subject near the passenger side of the back rims. Studio scene with a white background.",
        "seedream-4-5-251128",
        "(2K) 2848x1600 (16:9)",
        2048,
        2048,
        1,
        false,
        2,
        "fixed",
        false,
        true,
        "fixed"
      ],
      "widgets_values_named": {
        "prompt": "Create an extreme wide shot from behind the subject near the passenger side of the back rims. Studio scene with a white background.",
        "model": "seedream-4-5-251128",
        "model.size_preset": "(2K) 2848x1600 (16:9)",
        "model.width": 2048,
        "model.height": 2048,
        "model.max_images": 1,
        "model.fail_on_partial": false,
        "model.seed": 2,
        "control_after_generate#1": "fixed",
        "model.watermark": false,
        "model.thinking": true,
        "control_after_generate": "fixed"
      },
      "color": "#432",
      "bgcolor": "#653"
    },
    {
      "id": 116,
      "type": "f0fb6ee5-af18-4ce2-b2e5-3c41c2b18aec",
      "pos": [
        2310,
        410
      ],
      "size": [
        230,
        110
      ],
      "flags": {},
      "order": 12,
      "mode": 0,
      "inputs": [
        {
          "name": "image1",
          "type": "IMAGE",
          "link": 195
        },
        {
          "name": "image2",
          "type": "IMAGE",
          "link": 196
        }
      ],
      "outputs": [
        {
          "name": "VIDEO",
          "type": "VIDEO",
          "links": [
            194
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.4.0",
        "proxyWidgets": [],
        "previewExposures": []
      }
    },
    {
      "id": 123,
      "type": "8644d200-d58d-4311-bebe-a9f397568743",
      "pos": [
        2300,
        1170
      ],
      "size": [
        230,
        110
      ],
      "flags": {},
      "order": 13,
      "mode": 0,
      "inputs": [
        {
          "name": "image1",
          "type": "IMAGE",
          "link": 210
        },
        {
          "name": "image2",
          "type": "IMAGE",
          "link": 211
        }
      ],
      "outputs": [
        {
          "name": "VIDEO",
          "type": "VIDEO",
          "links": [
            209
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.4.0",
        "proxyWidgets": [],
        "previewExposures": []
      }
    }
  ],
  "links": [
    [
      98,
      51,
      2,
      47,
      2,
      "FLOAT"
    ],
    [
      103,
      54,
      0,
      47,
      0,
      "IMAGE"
    ],
    [
      123,
      79,
      0,
      23,
      0,
      "IMAGE"
    ],
    [
      125,
      80,
      0,
      13,
      0,
      "IMAGE"
    ],
    [
      127,
      81,
      0,
      24,
      0,
      "IMAGE"
    ],
    [
      128,
      81,
      0,
      38,
      0,
      "IMAGE"
    ],
    [
      130,
      82,
      0,
      25,
      0,
      "IMAGE"
    ],
    [
      131,
      82,
      0,
      39,
      0,
      "IMAGE"
    ],
    [
      141,
      23,
      0,
      42,
      0,
      "IMAGE"
    ],
    [
      142,
      13,
      0,
      42,
      1,
      "IMAGE"
    ],
    [
      152,
      26,
      0,
      49,
      0,
      "VIDEO"
    ],
    [
      153,
      27,
      0,
      50,
      0,
      "VIDEO"
    ],
    [
      154,
      22,
      0,
      51,
      0,
      "VIDEO"
    ],
    [
      70,
      42,
      0,
      22,
      0,
      "VIDEO"
    ],
    [
      100,
      51,
      0,
      54,
      0,
      "IMAGE"
    ],
    [
      101,
      49,
      0,
      54,
      1,
      "IMAGE"
    ],
    [
      102,
      50,
      0,
      54,
      2,
      "IMAGE"
    ],
    [
      90,
      47,
      0,
      48,
      0,
      "VIDEO"
    ],
    [
      120,
      10,
      0,
      79,
      0,
      "IMAGE"
    ],
    [
      124,
      10,
      0,
      80,
      0,
      "IMAGE"
    ],
    [
      129,
      10,
      0,
      81,
      0,
      "IMAGE"
    ],
    [
      132,
      10,
      0,
      82,
      0,
      "IMAGE"
    ],
    [
      194,
      116,
      0,
      26,
      0,
      "VIDEO"
    ],
    [
      195,
      13,
      0,
      116,
      0,
      "IMAGE"
    ],
    [
      196,
      24,
      0,
      116,
      1,
      "IMAGE"
    ],
    [
      209,
      123,
      0,
      27,
      0,
      "VIDEO"
    ],
    [
      210,
      24,
      0,
      123,
      0,
      "IMAGE"
    ],
    [
      211,
      25,
      0,
      123,
      1,
      "IMAGE"
    ]
  ],
  "groups": [],
  "definitions": {
    "subgraphs": [
      {
        "id": "ba9a7b30-cca0-4afc-9b44-ebfdc6121d4a",
        "version": 1,
        "state": {
          "lastGroupId": 0,
          "lastNodeId": 123,
          "lastLinkId": 211,
          "lastRerouteId": 0
        },
        "revision": 0,
        "config": {},
        "name": "Generate Video",
        "inputNode": {
          "id": -10,
          "bounding": [
            1530,
            -330,
            128,
            88
          ]
        },
        "outputNode": {
          "id": -20,
          "bounding": [
            3820,
            -320,
            128,
            68
          ]
        },
        "inputs": [
          {
            "id": "b623a375-a6dc-4f9c-8e82-e71b94507a75",
            "name": "image1",
            "type": "IMAGE",
            "linkIds": [
              136,
              180
            ],
            "localized_name": "image1",
            "pos": [
              1634,
              -306
            ]
          },
          {
            "id": "7a04f7ae-97c2-4afe-9acf-9f990c80524c",
            "name": "image2",
            "type": "IMAGE",
            "linkIds": [
              137,
              181
            ],
            "localized_name": "image2",
            "pos": [
              1634,
              -286
            ]
          }
        ],
        "outputs": [
          {
            "id": "dbfad197-36c3-4cc9-aa60-d01c9477d144",
            "name": "VIDEO",
            "type": "VIDEO",
            "linkIds": [
              139
            ],
            "localized_name": "VIDEO",
            "pos": [
              3844,
              -296
            ]
          }
        ],
        "widgets": [],
        "nodes": [
          {
            "id": 62,
            "type": "RegexExtract",
            "pos": [
              2500,
              -120
            ],
            "size": [
              230,
              270
            ],
            "flags": {},
            "order": 1,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "string",
                "name": "string",
                "type": "STRING",
                "widget": {
                  "name": "string"
                },
                "link": 178
              }
            ],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": [
                  81
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "RegexExtract",
              "cnr_id": "comfy-core",
              "ver": "0.4.0"
            },
            "widgets_values": [
              "",
              "^(.+?)(?=\\s+--no)",
              "First Match",
              true,
              false,
              false,
              1
            ],
            "widgets_values_named": {
              "string": "",
              "regex_pattern": "^(.+?)(?=\\s+--no)",
              "mode": "First Match",
              "case_insensitive": true,
              "multiline": false,
              "dotall": false,
              "group_index": 1
            }
          },
          {
            "id": 46,
            "type": "PreviewAny",
            "pos": [
              2840,
              -120
            ],
            "size": [
              230,
              280
            ],
            "flags": {},
            "order": 0,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "source",
                "name": "source",
                "type": "*",
                "link": 81
              }
            ],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": [
                  140
                ]
              }
            ],
            "title": "Preview Positive Prompt",
            "properties": {
              "Node name for S&R": "PreviewAny",
              "cnr_id": "comfy-core",
              "ver": "0.3.76"
            },
            "widgets_values": [],
            "widgets_values_named": {}
          },
          {
            "id": 63,
            "type": "RegexExtract",
            "pos": [
              2500,
              200
            ],
            "size": [
              230,
              280
            ],
            "flags": {},
            "order": 2,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "string",
                "name": "string",
                "type": "STRING",
                "widget": {
                  "name": "string"
                },
                "link": 177
              }
            ],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": [
                  78
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "RegexExtract",
              "cnr_id": "comfy-core",
              "ver": "0.4.0"
            },
            "widgets_values": [
              "",
              "(?<=--no\\s)(.+)$",
              "First Match",
              true,
              false,
              false,
              1
            ],
            "widgets_values_named": {
              "string": "",
              "regex_pattern": "(?<=--no\\s)(.+)$",
              "mode": "First Match",
              "case_insensitive": true,
              "multiline": false,
              "dotall": false,
              "group_index": 1
            }
          },
          {
            "id": 64,
            "type": "PreviewAny",
            "pos": [
              2840,
              210
            ],
            "size": [
              230,
              280
            ],
            "flags": {},
            "order": 3,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "source",
                "name": "source",
                "type": "*",
                "link": 78
              }
            ],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": null
              }
            ],
            "title": "Preview Negative Prompt",
            "properties": {
              "Node name for S&R": "PreviewAny",
              "cnr_id": "comfy-core",
              "ver": "0.3.76"
            },
            "widgets_values": [],
            "widgets_values_named": {}
          },
          {
            "id": 84,
            "type": "KlingFirstLastFrameNode",
            "pos": [
              3150,
              -330
            ],
            "size": [
              400,
              300
            ],
            "flags": {},
            "order": 4,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "first_frame",
                "name": "first_frame",
                "type": "IMAGE",
                "link": 136
              },
              {
                "localized_name": "end_frame",
                "name": "end_frame",
                "type": "IMAGE",
                "link": 137
              },
              {
                "localized_name": "prompt",
                "name": "prompt",
                "type": "STRING",
                "widget": {
                  "name": "prompt"
                },
                "link": 140
              }
            ],
            "outputs": [
              {
                "localized_name": "VIDEO",
                "name": "VIDEO",
                "type": "VIDEO",
                "links": [
                  139
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "KlingFirstLastFrameNode"
            },
            "widgets_values": [
              "",
              5,
              true,
              "kling-v3",
              "1080p",
              0,
              "randomize"
            ],
            "widgets_values_named": {
              "prompt": "",
              "duration": 5,
              "generate_audio": true,
              "model": "kling-v3",
              "model.resolution": "1080p",
              "seed": 0,
              "control_after_generate": "randomize"
            },
            "color": "#432",
            "bgcolor": "#653"
          },
          {
            "id": 109,
            "type": "GeminiNodeV3",
            "pos": [
              2040,
              -120
            ],
            "size": [
              400,
              386
            ],
            "flags": {},
            "order": 5,
            "mode": 0,
            "showAdvanced": false,
            "inputs": [
              {
                "localized_name": "image_1",
                "name": "model.images.image_1",
                "shape": 7,
                "type": "IMAGE",
                "link": 180
              },
              {
                "localized_name": "image_2",
                "name": "model.images.image_2",
                "shape": 7,
                "type": "IMAGE",
                "link": 181
              },
              {
                "localized_name": "image_3",
                "name": "model.images.image_3",
                "shape": 7,
                "type": "IMAGE",
                "link": null
              },
              {
                "localized_name": "audio_1",
                "name": "model.audio.audio_1",
                "shape": 7,
                "type": "AUDIO",
                "link": null
              },
              {
                "localized_name": "video_1",
                "name": "model.video.video_1",
                "shape": 7,
                "type": "VIDEO",
                "link": null
              },
              {
                "localized_name": "files",
                "name": "model.files",
                "shape": 7,
                "type": "GEMINI_INPUT_FILES",
                "link": null
              }
            ],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": [
                  177,
                  178
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "GeminiNodeV3"
            },
            "widgets_values": [
              "Gemini 3.8 Flash",
              "STEP 1: ANALYZE BOTH IMAGES\nBefore crafting the prompt, analyze both images to understand:\n\n\nCamera distance (wide shot, medium, close-up, extreme close-up, macro)\nCamera angle (low-angle, high-angle, eye-level, overhead, Dutch, worm's eye, bird's eye)\nCamera position relative to subject (front, side profile, 3/4 view, back, overhead)\nFraming (full body, torso, chest-up, face only, detail/macro)\nSubject position and pose\nLighting setup and direction\nBackground elements and depth\nFocal length characteristics (wide-angle distortion vs telephoto compression)\n\nSTEP 2: DETERMINE CAMERA MOVEMENT\nBased on the differences between images, identify the primary camera movement:\n\n\nDistance change: Dolly-in (closer) or Dolly-out (farther)\nVertical angle change: Tilt up/down or Crane up/down\nHorizontal angle change: Pan left/right or Orbit/Arc around subject\nHeight change: Crane/Pedestal up or down\nLateral movement: Truck/Track left or right\n\nSTEP 3: OUTPUT ONLY THE PROMPT\nDo not include explanations, commentary, or additional text.\nOutput ONLY the transition prompt in this format:\n\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nCore Principle\n\nFor transitions where the subject/scene remains consistent and only the camera position changes, use this structured approach to ensure smooth, cinematic results.\n\n\nPrompt Structure Template\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nComponent Breakdown\n\n1. CAMERA MOVEMENT TYPES\n\n\nDolly-in/Push-in: Camera moves forward toward subject\nDolly-out/Pull-back: Camera moves backward away from subject\nOrbit/Arc: Camera circles around subject (specify left/right)\nTilt: Camera angles up or down on fixed position\nPan: Camera swivels left or right horizontally\nCrane/Pedestal: Camera moves vertically up or down\nTracking/Trucking: Camera moves parallel to subject\n\n2. POSITION DESCRIPTORS\n\n\nDistance: wide shot, medium shot, close-up, extreme close-up, macro\nAngle: low-angle, high-angle, eye-level, overhead, Dutch angle, worm's eye view, bird's eye view\nFraming: full body, three-quarter, torso, chest-up, face, detail\n\n3. MOVEMENT VERBS (choose intensity)\n\n\nSlowly, steadily, smoothly, gradually, fluidly\nRapidly, dynamically, swiftly\nElegantly, dramatically, confidently\n\n4. FOCUS BEHAVIOR\n\n\nSharp focus throughout\nRack focus from [A] to [B]\nMaintains focus on [element]\nShallow depth of field\nDeep focus\nProgressive focus shift\n\n5. BACKGROUND BEHAVIOR\n\n\nStays consistent\nBlurs to bokeh\nSharpens into view\nFades to [color]\nRemains sharp throughout\n\n6. TECHNICAL SPECS (standard cinematic quality)\n\n\nCinematic depth of field\nStable gimbal/dolly movement\nProfessional commercial grade\n24fps (or 30fps, 60fps for slow-motion feel)\nClean sensor, no grain (or \"film grain\" if desired)\n\n\nExample Prompts by Movement Type\n\nDOLLY-IN (Wide → Close-up)\n\n\nSmooth camera dolly-in from wide establishing shot to extreme close-up. Subject remains stationary. Camera pushes forward steadily, transitioning focus from [background element] to [detail]. Lighting stays constant, background softly blurs to bokeh. Cinematic depth of field, stable gimbal movement, 24fps. --no shake, cuts, warping, distortion\n\nDOLLY-OUT (Close-up → Wide)\n\n\nSmooth camera pull-back from extreme close-up to wide establishing shot. Subject remains centered and stationary. Camera retreats steadily, revealing environment progressively. Focus maintains on subject while background sharpens into view. Even lighting, cinematic depth of field, 24fps. --no shake, cuts, jump, warping\n\nORBIT (Circular movement)\n\n\nSmooth camera orbit from front view to side profile. Subject remains stationary at center. Camera arcs left fluidly in 90-degree rotation, maintaining constant distance and eye-level angle. Lighting stays consistent, sharp focus throughout. Gimbal stabilized circular tracking, 24fps. --no shake, warping, speed changes, distortion\n\nTILT (Vertical angle change)\n\n\nSmooth camera tilt from low-angle to high-angle. Subject remains stationary. Camera tilts upward gradually, shifting perspective from worm's eye view to bird's eye view. Distance stays constant, lighting consistent. Stable tripod tilt, cinematic framing, 24fps. --no shake, panning, horizontal movement, warping\n\nPAN (Horizontal swivel)\n\n\nSmooth camera pan from left profile to right profile. Subject remains stationary. Camera swivels horizontally across 180 degrees, maintaining constant distance and eye-level. Sharp focus throughout, even lighting. Fluid tripod pan, 24fps. --no shake, tilting, vertical movement, cuts\n\nCRANE UP/DOWN\n\n\nSmooth camera crane from ground-level to overhead view. Subject remains stationary at center. Camera elevates vertically, angle shifting from eye-level to bird's eye view. Distance adjusts proportionally, lighting consistent. Stabilized crane movement, 24fps. --no shake, lateral movement, warping, distortion\n\nKey Rules for Camera-Only Transitions\n\nAlways specify subject remains stationary - This prevents unwanted morphing\nDescribe start AND end positions clearly - Gives model clear targets\nUse specific movement verbs - \"Dolly-in\" is clearer than \"moves closer\"\nLock down what DOESN'T change - Lighting, subject, clothing, expression\nInclude technical quality markers - Gimbal, 24fps, cinematic, stable\nNegative prompts are critical - Prevents warping/morphing/distortion\nKeep prompts under 75 words - Model weights early words heavier\nOne primary movement per transition - Don't combine dolly + pan + tilt\n\nAdvanced Techniques\n\nSpeed Ramping:\n\"Camera begins slow dolly-in, accelerates midway, then decelerates smoothly into final close-up\"\n\n\nCombined Movements (use sparingly):\n\"Camera dollies in while simultaneously tilting down, maintaining subject center-frame\"\n\n\nFocus Pulls:\n\"Rack focus from foreground [element] to background [element] as camera remains locked\"\n\n\nLens Simulation:\n\"Wide-angle 24mm distortion gradually compresses to telephoto 85mm compression\"\n\n\n\nCritical Output Rule\n\nOUTPUT ONLY THE PROMPT. NO EXPLANATIONS. NO COMMENTARY. NO ADDITIONAL TEXT.",
              "static",
              "MEDIUM",
              32768,
              42,
              "randomize",
              ""
            ],
            "widgets_values_named": {
              "model": "Gemini 3.8 Flash",
              "model.prompt": "STEP 1: ANALYZE BOTH IMAGES\nBefore crafting the prompt, analyze both images to understand:\n\n\nCamera distance (wide shot, medium, close-up, extreme close-up, macro)\nCamera angle (low-angle, high-angle, eye-level, overhead, Dutch, worm's eye, bird's eye)\nCamera position relative to subject (front, side profile, 3/4 view, back, overhead)\nFraming (full body, torso, chest-up, face only, detail/macro)\nSubject position and pose\nLighting setup and direction\nBackground elements and depth\nFocal length characteristics (wide-angle distortion vs telephoto compression)\n\nSTEP 2: DETERMINE CAMERA MOVEMENT\nBased on the differences between images, identify the primary camera movement:\n\n\nDistance change: Dolly-in (closer) or Dolly-out (farther)\nVertical angle change: Tilt up/down or Crane up/down\nHorizontal angle change: Pan left/right or Orbit/Arc around subject\nHeight change: Crane/Pedestal up or down\nLateral movement: Truck/Track left or right\n\nSTEP 3: OUTPUT ONLY THE PROMPT\nDo not include explanations, commentary, or additional text.\nOutput ONLY the transition prompt in this format:\n\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nCore Principle\n\nFor transitions where the subject/scene remains consistent and only the camera position changes, use this structured approach to ensure smooth, cinematic results.\n\n\nPrompt Structure Template\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nComponent Breakdown\n\n1. CAMERA MOVEMENT TYPES\n\n\nDolly-in/Push-in: Camera moves forward toward subject\nDolly-out/Pull-back: Camera moves backward away from subject\nOrbit/Arc: Camera circles around subject (specify left/right)\nTilt: Camera angles up or down on fixed position\nPan: Camera swivels left or right horizontally\nCrane/Pedestal: Camera moves vertically up or down\nTracking/Trucking: Camera moves parallel to subject\n\n2. POSITION DESCRIPTORS\n\n\nDistance: wide shot, medium shot, close-up, extreme close-up, macro\nAngle: low-angle, high-angle, eye-level, overhead, Dutch angle, worm's eye view, bird's eye view\nFraming: full body, three-quarter, torso, chest-up, face, detail\n\n3. MOVEMENT VERBS (choose intensity)\n\n\nSlowly, steadily, smoothly, gradually, fluidly\nRapidly, dynamically, swiftly\nElegantly, dramatically, confidently\n\n4. FOCUS BEHAVIOR\n\n\nSharp focus throughout\nRack focus from [A] to [B]\nMaintains focus on [element]\nShallow depth of field\nDeep focus\nProgressive focus shift\n\n5. BACKGROUND BEHAVIOR\n\n\nStays consistent\nBlurs to bokeh\nSharpens into view\nFades to [color]\nRemains sharp throughout\n\n6. TECHNICAL SPECS (standard cinematic quality)\n\n\nCinematic depth of field\nStable gimbal/dolly movement\nProfessional commercial grade\n24fps (or 30fps, 60fps for slow-motion feel)\nClean sensor, no grain (or \"film grain\" if desired)\n\n\nExample Prompts by Movement Type\n\nDOLLY-IN (Wide → Close-up)\n\n\nSmooth camera dolly-in from wide establishing shot to extreme close-up. Subject remains stationary. Camera pushes forward steadily, transitioning focus from [background element] to [detail]. Lighting stays constant, background softly blurs to bokeh. Cinematic depth of field, stable gimbal movement, 24fps. --no shake, cuts, warping, distortion\n\nDOLLY-OUT (Close-up → Wide)\n\n\nSmooth camera pull-back from extreme close-up to wide establishing shot. Subject remains centered and stationary. Camera retreats steadily, revealing environment progressively. Focus maintains on subject while background sharpens into view. Even lighting, cinematic depth of field, 24fps. --no shake, cuts, jump, warping\n\nORBIT (Circular movement)\n\n\nSmooth camera orbit from front view to side profile. Subject remains stationary at center. Camera arcs left fluidly in 90-degree rotation, maintaining constant distance and eye-level angle. Lighting stays consistent, sharp focus throughout. Gimbal stabilized circular tracking, 24fps. --no shake, warping, speed changes, distortion\n\nTILT (Vertical angle change)\n\n\nSmooth camera tilt from low-angle to high-angle. Subject remains stationary. Camera tilts upward gradually, shifting perspective from worm's eye view to bird's eye view. Distance stays constant, lighting consistent. Stable tripod tilt, cinematic framing, 24fps. --no shake, panning, horizontal movement, warping\n\nPAN (Horizontal swivel)\n\n\nSmooth camera pan from left profile to right profile. Subject remains stationary. Camera swivels horizontally across 180 degrees, maintaining constant distance and eye-level. Sharp focus throughout, even lighting. Fluid tripod pan, 24fps. --no shake, tilting, vertical movement, cuts\n\nCRANE UP/DOWN\n\n\nSmooth camera crane from ground-level to overhead view. Subject remains stationary at center. Camera elevates vertically, angle shifting from eye-level to bird's eye view. Distance adjusts proportionally, lighting consistent. Stabilized crane movement, 24fps. --no shake, lateral movement, warping, distortion\n\nKey Rules for Camera-Only Transitions\n\nAlways specify subject remains stationary - This prevents unwanted morphing\nDescribe start AND end positions clearly - Gives model clear targets\nUse specific movement verbs - \"Dolly-in\" is clearer than \"moves closer\"\nLock down what DOESN'T change - Lighting, subject, clothing, expression\nInclude technical quality markers - Gimbal, 24fps, cinematic, stable\nNegative prompts are critical - Prevents warping/morphing/distortion\nKeep prompts under 75 words - Model weights early words heavier\nOne primary movement per transition - Don't combine dolly + pan + tilt\n\nAdvanced Techniques\n\nSpeed Ramping:\n\"Camera begins slow dolly-in, accelerates midway, then decelerates smoothly into final close-up\"\n\n\nCombined Movements (use sparingly):\n\"Camera dollies in while simultaneously tilting down, maintaining subject center-frame\"\n\n\nFocus Pulls:\n\"Rack focus from foreground [element] to background [element] as camera remains locked\"\n\n\nLens Simulation:\n\"Wide-angle 24mm distortion gradually compresses to telephoto 85mm compression\"\n\n\n\nCritical Output Rule\n\nOUTPUT ONLY THE PROMPT. NO EXPLANATIONS. NO COMMENTARY. NO ADDITIONAL TEXT.",
              "model.video_processing": "static",
              "model.thinking_level": "MEDIUM",
              "model.max_output_tokens": 32768,
              "model.seed": 42,
              "control_after_generate": "randomize",
              "model.system_prompt": ""
            },
            "color": "#432",
            "bgcolor": "#653"
          }
        ],
        "groups": [],
        "links": [
          {
            "id": 78,
            "origin_id": 63,
            "origin_slot": 0,
            "target_id": 64,
            "target_slot": 0,
            "type": "STRING"
          },
          {
            "id": 81,
            "origin_id": 62,
            "origin_slot": 0,
            "target_id": 46,
            "target_slot": 0,
            "type": "STRING"
          },
          {
            "id": 139,
            "origin_id": 84,
            "origin_slot": 0,
            "target_id": -20,
            "target_slot": 0,
            "type": "VIDEO"
          },
          {
            "id": 136,
            "origin_id": -10,
            "origin_slot": 0,
            "target_id": 84,
            "target_slot": 0,
            "type": "IMAGE"
          },
          {
            "id": 137,
            "origin_id": -10,
            "origin_slot": 1,
            "target_id": 84,
            "target_slot": 1,
            "type": "IMAGE"
          },
          {
            "id": 140,
            "origin_id": 46,
            "origin_slot": 0,
            "target_id": 84,
            "target_slot": 2,
            "type": "STRING"
          },
          {
            "id": 177,
            "origin_id": 109,
            "origin_slot": 0,
            "target_id": 63,
            "target_slot": 0,
            "type": "STRING"
          },
          {
            "id": 178,
            "origin_id": 109,
            "origin_slot": 0,
            "target_id": 62,
            "target_slot": 0,
            "type": "STRING"
          },
          {
            "id": 180,
            "origin_id": -10,
            "origin_slot": 0,
            "target_id": 109,
            "target_slot": 0,
            "type": "IMAGE"
          },
          {
            "id": 181,
            "origin_id": -10,
            "origin_slot": 1,
            "target_id": 109,
            "target_slot": 1,
            "type": "IMAGE"
          }
        ],
        "extra": {
          "workflowRendererVersion": "LG"
        }
      },
      {
        "id": "f0fb6ee5-af18-4ce2-b2e5-3c41c2b18aec",
        "version": 1,
        "state": {
          "lastGroupId": 0,
          "lastNodeId": 123,
          "lastLinkId": 211,
          "lastRerouteId": 0
        },
        "revision": 0,
        "config": {},
        "name": "Generate Video",
        "inputNode": {
          "id": -10,
          "bounding": [
            1530,
            -330,
            128,
            88
          ]
        },
        "outputNode": {
          "id": -20,
          "bounding": [
            3820,
            -320,
            128,
            68
          ]
        },
        "inputs": [
          {
            "id": "b623a375-a6dc-4f9c-8e82-e71b94507a75",
            "name": "image1",
            "type": "IMAGE",
            "linkIds": [
              185,
              190
            ],
            "localized_name": "image1",
            "pos": [
              1634,
              -306
            ]
          },
          {
            "id": "7a04f7ae-97c2-4afe-9acf-9f990c80524c",
            "name": "image2",
            "type": "IMAGE",
            "linkIds": [
              186,
              191
            ],
            "localized_name": "image2",
            "pos": [
              1634,
              -286
            ]
          }
        ],
        "outputs": [
          {
            "id": "dbfad197-36c3-4cc9-aa60-d01c9477d144",
            "name": "VIDEO",
            "type": "VIDEO",
            "linkIds": [
              184
            ],
            "localized_name": "VIDEO",
            "pos": [
              3844,
              -296
            ]
          }
        ],
        "widgets": [],
        "nodes": [
          {
            "id": 110,
            "type": "RegexExtract",
            "pos": [
              2500,
              -120
            ],
            "size": [
              230,
              270
            ],
            "flags": {},
            "order": 0,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "string",
                "name": "string",
                "type": "STRING",
                "widget": {
                  "name": "string"
                },
                "link": 189
              }
            ],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": [
                  183
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "RegexExtract",
              "cnr_id": "comfy-core",
              "ver": "0.4.0"
            },
            "widgets_values": [
              "",
              "^(.+?)(?=\\s+--no)",
              "First Match",
              true,
              false,
              false,
              1
            ],
            "widgets_values_named": {
              "string": "",
              "regex_pattern": "^(.+?)(?=\\s+--no)",
              "mode": "First Match",
              "case_insensitive": true,
              "multiline": false,
              "dotall": false,
              "group_index": 1
            }
          },
          {
            "id": 111,
            "type": "PreviewAny",
            "pos": [
              2840,
              -120
            ],
            "size": [
              230,
              280
            ],
            "flags": {},
            "order": 1,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "source",
                "name": "source",
                "type": "*",
                "link": 183
              }
            ],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": [
                  187
                ]
              }
            ],
            "title": "Preview Positive Prompt",
            "properties": {
              "Node name for S&R": "PreviewAny",
              "cnr_id": "comfy-core",
              "ver": "0.3.76"
            },
            "widgets_values": [],
            "widgets_values_named": {}
          },
          {
            "id": 112,
            "type": "RegexExtract",
            "pos": [
              2500,
              200
            ],
            "size": [
              230,
              280
            ],
            "flags": {},
            "order": 2,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "string",
                "name": "string",
                "type": "STRING",
                "widget": {
                  "name": "string"
                },
                "link": 188
              }
            ],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": [
                  182
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "RegexExtract",
              "cnr_id": "comfy-core",
              "ver": "0.4.0"
            },
            "widgets_values": [
              "",
              "(?<=--no\\s)(.+)$",
              "First Match",
              true,
              false,
              false,
              1
            ],
            "widgets_values_named": {
              "string": "",
              "regex_pattern": "(?<=--no\\s)(.+)$",
              "mode": "First Match",
              "case_insensitive": true,
              "multiline": false,
              "dotall": false,
              "group_index": 1
            }
          },
          {
            "id": 113,
            "type": "PreviewAny",
            "pos": [
              2840,
              210
            ],
            "size": [
              230,
              280
            ],
            "flags": {},
            "order": 3,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "source",
                "name": "source",
                "type": "*",
                "link": 182
              }
            ],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": null
              }
            ],
            "title": "Preview Negative Prompt",
            "properties": {
              "Node name for S&R": "PreviewAny",
              "cnr_id": "comfy-core",
              "ver": "0.3.76"
            },
            "widgets_values": [],
            "widgets_values_named": {}
          },
          {
            "id": 114,
            "type": "KlingFirstLastFrameNode",
            "pos": [
              3150,
              -330
            ],
            "size": [
              400,
              300
            ],
            "flags": {},
            "order": 4,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "first_frame",
                "name": "first_frame",
                "type": "IMAGE",
                "link": 185
              },
              {
                "localized_name": "end_frame",
                "name": "end_frame",
                "type": "IMAGE",
                "link": 186
              },
              {
                "localized_name": "prompt",
                "name": "prompt",
                "type": "STRING",
                "widget": {
                  "name": "prompt"
                },
                "link": 187
              }
            ],
            "outputs": [
              {
                "localized_name": "VIDEO",
                "name": "VIDEO",
                "type": "VIDEO",
                "links": [
                  184
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "KlingFirstLastFrameNode"
            },
            "widgets_values": [
              "",
              5,
              true,
              "kling-v3",
              "1080p",
              0,
              "randomize"
            ],
            "widgets_values_named": {
              "prompt": "",
              "duration": 5,
              "generate_audio": true,
              "model": "kling-v3",
              "model.resolution": "1080p",
              "seed": 0,
              "control_after_generate": "randomize"
            },
            "color": "#432",
            "bgcolor": "#653"
          },
          {
            "id": 115,
            "type": "GeminiNodeV3",
            "pos": [
              2040,
              -120
            ],
            "size": [
              400,
              410
            ],
            "flags": {},
            "order": 5,
            "mode": 0,
            "showAdvanced": false,
            "inputs": [
              {
                "localized_name": "image_1",
                "name": "model.images.image_1",
                "shape": 7,
                "type": "IMAGE",
                "link": 190
              },
              {
                "localized_name": "image_2",
                "name": "model.images.image_2",
                "shape": 7,
                "type": "IMAGE",
                "link": 191
              },
              {
                "localized_name": "image_3",
                "name": "model.images.image_3",
                "shape": 7,
                "type": "IMAGE",
                "link": null
              },
              {
                "localized_name": "audio_1",
                "name": "model.audio.audio_1",
                "shape": 7,
                "type": "AUDIO",
                "link": null
              },
              {
                "localized_name": "video_1",
                "name": "model.video.video_1",
                "shape": 7,
                "type": "VIDEO",
                "link": null
              },
              {
                "localized_name": "files",
                "name": "model.files",
                "shape": 7,
                "type": "GEMINI_INPUT_FILES",
                "link": null
              }
            ],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": [
                  188,
                  189
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "GeminiNodeV3"
            },
            "widgets_values": [
              "Gemini 3.8 Flash",
              "STEP 1: ANALYZE BOTH IMAGES\nBefore crafting the prompt, analyze both images to understand:\n\n\nCamera distance (wide shot, medium, close-up, extreme close-up, macro)\nCamera angle (low-angle, high-angle, eye-level, overhead, Dutch, worm's eye, bird's eye)\nCamera position relative to subject (front, side profile, 3/4 view, back, overhead)\nFraming (full body, torso, chest-up, face only, detail/macro)\nSubject position and pose\nLighting setup and direction\nBackground elements and depth\nFocal length characteristics (wide-angle distortion vs telephoto compression)\n\nSTEP 2: DETERMINE CAMERA MOVEMENT\nBased on the differences between images, identify the primary camera movement:\n\n\nDistance change: Dolly-in (closer) or Dolly-out (farther)\nVertical angle change: Tilt up/down or Crane up/down\nHorizontal angle change: Pan left/right or Orbit/Arc around subject\nHeight change: Crane/Pedestal up or down\nLateral movement: Truck/Track left or right\n\nSTEP 3: OUTPUT ONLY THE PROMPT\nDo not include explanations, commentary, or additional text.\nOutput ONLY the transition prompt in this format:\n\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nCore Principle\n\nFor transitions where the subject/scene remains consistent and only the camera position changes, use this structured approach to ensure smooth, cinematic results.\n\n\nPrompt Structure Template\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nComponent Breakdown\n\n1. CAMERA MOVEMENT TYPES\n\n\nDolly-in/Push-in: Camera moves forward toward subject\nDolly-out/Pull-back: Camera moves backward away from subject\nOrbit/Arc: Camera circles around subject (specify left/right)\nTilt: Camera angles up or down on fixed position\nPan: Camera swivels left or right horizontally\nCrane/Pedestal: Camera moves vertically up or down\nTracking/Trucking: Camera moves parallel to subject\n\n2. POSITION DESCRIPTORS\n\n\nDistance: wide shot, medium shot, close-up, extreme close-up, macro\nAngle: low-angle, high-angle, eye-level, overhead, Dutch angle, worm's eye view, bird's eye view\nFraming: full body, three-quarter, torso, chest-up, face, detail\n\n3. MOVEMENT VERBS (choose intensity)\n\n\nSlowly, steadily, smoothly, gradually, fluidly\nRapidly, dynamically, swiftly\nElegantly, dramatically, confidently\n\n4. FOCUS BEHAVIOR\n\n\nSharp focus throughout\nRack focus from [A] to [B]\nMaintains focus on [element]\nShallow depth of field\nDeep focus\nProgressive focus shift\n\n5. BACKGROUND BEHAVIOR\n\n\nStays consistent\nBlurs to bokeh\nSharpens into view\nFades to [color]\nRemains sharp throughout\n\n6. TECHNICAL SPECS (standard cinematic quality)\n\n\nCinematic depth of field\nStable gimbal/dolly movement\nProfessional commercial grade\n24fps (or 30fps, 60fps for slow-motion feel)\nClean sensor, no grain (or \"film grain\" if desired)\n\n\nExample Prompts by Movement Type\n\nDOLLY-IN (Wide → Close-up)\n\n\nSmooth camera dolly-in from wide establishing shot to extreme close-up. Subject remains stationary. Camera pushes forward steadily, transitioning focus from [background element] to [detail]. Lighting stays constant, background softly blurs to bokeh. Cinematic depth of field, stable gimbal movement, 24fps. --no shake, cuts, warping, distortion\n\nDOLLY-OUT (Close-up → Wide)\n\n\nSmooth camera pull-back from extreme close-up to wide establishing shot. Subject remains centered and stationary. Camera retreats steadily, revealing environment progressively. Focus maintains on subject while background sharpens into view. Even lighting, cinematic depth of field, 24fps. --no shake, cuts, jump, warping\n\nORBIT (Circular movement)\n\n\nSmooth camera orbit from front view to side profile. Subject remains stationary at center. Camera arcs left fluidly in 90-degree rotation, maintaining constant distance and eye-level angle. Lighting stays consistent, sharp focus throughout. Gimbal stabilized circular tracking, 24fps. --no shake, warping, speed changes, distortion\n\nTILT (Vertical angle change)\n\n\nSmooth camera tilt from low-angle to high-angle. Subject remains stationary. Camera tilts upward gradually, shifting perspective from worm's eye view to bird's eye view. Distance stays constant, lighting consistent. Stable tripod tilt, cinematic framing, 24fps. --no shake, panning, horizontal movement, warping\n\nPAN (Horizontal swivel)\n\n\nSmooth camera pan from left profile to right profile. Subject remains stationary. Camera swivels horizontally across 180 degrees, maintaining constant distance and eye-level. Sharp focus throughout, even lighting. Fluid tripod pan, 24fps. --no shake, tilting, vertical movement, cuts\n\nCRANE UP/DOWN\n\n\nSmooth camera crane from ground-level to overhead view. Subject remains stationary at center. Camera elevates vertically, angle shifting from eye-level to bird's eye view. Distance adjusts proportionally, lighting consistent. Stabilized crane movement, 24fps. --no shake, lateral movement, warping, distortion\n\nKey Rules for Camera-Only Transitions\n\nAlways specify subject remains stationary - This prevents unwanted morphing\nDescribe start AND end positions clearly - Gives model clear targets\nUse specific movement verbs - \"Dolly-in\" is clearer than \"moves closer\"\nLock down what DOESN'T change - Lighting, subject, clothing, expression\nInclude technical quality markers - Gimbal, 24fps, cinematic, stable\nNegative prompts are critical - Prevents warping/morphing/distortion\nKeep prompts under 75 words - Model weights early words heavier\nOne primary movement per transition - Don't combine dolly + pan + tilt\n\nAdvanced Techniques\n\nSpeed Ramping:\n\"Camera begins slow dolly-in, accelerates midway, then decelerates smoothly into final close-up\"\n\n\nCombined Movements (use sparingly):\n\"Camera dollies in while simultaneously tilting down, maintaining subject center-frame\"\n\n\nFocus Pulls:\n\"Rack focus from foreground [element] to background [element] as camera remains locked\"\n\n\nLens Simulation:\n\"Wide-angle 24mm distortion gradually compresses to telephoto 85mm compression\"\n\n\n\nCritical Output Rule\n\nOUTPUT ONLY THE PROMPT. NO EXPLANATIONS. NO COMMENTARY. NO ADDITIONAL TEXT.",
              "static",
              "MEDIUM",
              32768,
              42,
              "randomize",
              "",
              "randomize"
            ],
            "widgets_values_named": {
              "model": "Gemini 3.8 Flash",
              "model.prompt": "STEP 1: ANALYZE BOTH IMAGES\nBefore crafting the prompt, analyze both images to understand:\n\n\nCamera distance (wide shot, medium, close-up, extreme close-up, macro)\nCamera angle (low-angle, high-angle, eye-level, overhead, Dutch, worm's eye, bird's eye)\nCamera position relative to subject (front, side profile, 3/4 view, back, overhead)\nFraming (full body, torso, chest-up, face only, detail/macro)\nSubject position and pose\nLighting setup and direction\nBackground elements and depth\nFocal length characteristics (wide-angle distortion vs telephoto compression)\n\nSTEP 2: DETERMINE CAMERA MOVEMENT\nBased on the differences between images, identify the primary camera movement:\n\n\nDistance change: Dolly-in (closer) or Dolly-out (farther)\nVertical angle change: Tilt up/down or Crane up/down\nHorizontal angle change: Pan left/right or Orbit/Arc around subject\nHeight change: Crane/Pedestal up or down\nLateral movement: Truck/Track left or right\n\nSTEP 3: OUTPUT ONLY THE PROMPT\nDo not include explanations, commentary, or additional text.\nOutput ONLY the transition prompt in this format:\n\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nCore Principle\n\nFor transitions where the subject/scene remains consistent and only the camera position changes, use this structured approach to ensure smooth, cinematic results.\n\n\nPrompt Structure Template\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nComponent Breakdown\n\n1. CAMERA MOVEMENT TYPES\n\n\nDolly-in/Push-in: Camera moves forward toward subject\nDolly-out/Pull-back: Camera moves backward away from subject\nOrbit/Arc: Camera circles around subject (specify left/right)\nTilt: Camera angles up or down on fixed position\nPan: Camera swivels left or right horizontally\nCrane/Pedestal: Camera moves vertically up or down\nTracking/Trucking: Camera moves parallel to subject\n\n2. POSITION DESCRIPTORS\n\n\nDistance: wide shot, medium shot, close-up, extreme close-up, macro\nAngle: low-angle, high-angle, eye-level, overhead, Dutch angle, worm's eye view, bird's eye view\nFraming: full body, three-quarter, torso, chest-up, face, detail\n\n3. MOVEMENT VERBS (choose intensity)\n\n\nSlowly, steadily, smoothly, gradually, fluidly\nRapidly, dynamically, swiftly\nElegantly, dramatically, confidently\n\n4. FOCUS BEHAVIOR\n\n\nSharp focus throughout\nRack focus from [A] to [B]\nMaintains focus on [element]\nShallow depth of field\nDeep focus\nProgressive focus shift\n\n5. BACKGROUND BEHAVIOR\n\n\nStays consistent\nBlurs to bokeh\nSharpens into view\nFades to [color]\nRemains sharp throughout\n\n6. TECHNICAL SPECS (standard cinematic quality)\n\n\nCinematic depth of field\nStable gimbal/dolly movement\nProfessional commercial grade\n24fps (or 30fps, 60fps for slow-motion feel)\nClean sensor, no grain (or \"film grain\" if desired)\n\n\nExample Prompts by Movement Type\n\nDOLLY-IN (Wide → Close-up)\n\n\nSmooth camera dolly-in from wide establishing shot to extreme close-up. Subject remains stationary. Camera pushes forward steadily, transitioning focus from [background element] to [detail]. Lighting stays constant, background softly blurs to bokeh. Cinematic depth of field, stable gimbal movement, 24fps. --no shake, cuts, warping, distortion\n\nDOLLY-OUT (Close-up → Wide)\n\n\nSmooth camera pull-back from extreme close-up to wide establishing shot. Subject remains centered and stationary. Camera retreats steadily, revealing environment progressively. Focus maintains on subject while background sharpens into view. Even lighting, cinematic depth of field, 24fps. --no shake, cuts, jump, warping\n\nORBIT (Circular movement)\n\n\nSmooth camera orbit from front view to side profile. Subject remains stationary at center. Camera arcs left fluidly in 90-degree rotation, maintaining constant distance and eye-level angle. Lighting stays consistent, sharp focus throughout. Gimbal stabilized circular tracking, 24fps. --no shake, warping, speed changes, distortion\n\nTILT (Vertical angle change)\n\n\nSmooth camera tilt from low-angle to high-angle. Subject remains stationary. Camera tilts upward gradually, shifting perspective from worm's eye view to bird's eye view. Distance stays constant, lighting consistent. Stable tripod tilt, cinematic framing, 24fps. --no shake, panning, horizontal movement, warping\n\nPAN (Horizontal swivel)\n\n\nSmooth camera pan from left profile to right profile. Subject remains stationary. Camera swivels horizontally across 180 degrees, maintaining constant distance and eye-level. Sharp focus throughout, even lighting. Fluid tripod pan, 24fps. --no shake, tilting, vertical movement, cuts\n\nCRANE UP/DOWN\n\n\nSmooth camera crane from ground-level to overhead view. Subject remains stationary at center. Camera elevates vertically, angle shifting from eye-level to bird's eye view. Distance adjusts proportionally, lighting consistent. Stabilized crane movement, 24fps. --no shake, lateral movement, warping, distortion\n\nKey Rules for Camera-Only Transitions\n\nAlways specify subject remains stationary - This prevents unwanted morphing\nDescribe start AND end positions clearly - Gives model clear targets\nUse specific movement verbs - \"Dolly-in\" is clearer than \"moves closer\"\nLock down what DOESN'T change - Lighting, subject, clothing, expression\nInclude technical quality markers - Gimbal, 24fps, cinematic, stable\nNegative prompts are critical - Prevents warping/morphing/distortion\nKeep prompts under 75 words - Model weights early words heavier\nOne primary movement per transition - Don't combine dolly + pan + tilt\n\nAdvanced Techniques\n\nSpeed Ramping:\n\"Camera begins slow dolly-in, accelerates midway, then decelerates smoothly into final close-up\"\n\n\nCombined Movements (use sparingly):\n\"Camera dollies in while simultaneously tilting down, maintaining subject center-frame\"\n\n\nFocus Pulls:\n\"Rack focus from foreground [element] to background [element] as camera remains locked\"\n\n\nLens Simulation:\n\"Wide-angle 24mm distortion gradually compresses to telephoto 85mm compression\"\n\n\n\nCritical Output Rule\n\nOUTPUT ONLY THE PROMPT. NO EXPLANATIONS. NO COMMENTARY. NO ADDITIONAL TEXT.",
              "model.video_processing": "static",
              "model.thinking_level": "MEDIUM",
              "model.max_output_tokens": 32768,
              "model.seed": 42,
              "control_after_generate#1": "randomize",
              "model.system_prompt": "",
              "control_after_generate": "randomize"
            },
            "color": "#432",
            "bgcolor": "#653"
          }
        ],
        "groups": [],
        "links": [
          {
            "id": 182,
            "origin_id": 112,
            "origin_slot": 0,
            "target_id": 113,
            "target_slot": 0,
            "type": "STRING"
          },
          {
            "id": 183,
            "origin_id": 110,
            "origin_slot": 0,
            "target_id": 111,
            "target_slot": 0,
            "type": "STRING"
          },
          {
            "id": 184,
            "origin_id": 114,
            "origin_slot": 0,
            "target_id": -20,
            "target_slot": 0,
            "type": "VIDEO"
          },
          {
            "id": 188,
            "origin_id": 115,
            "origin_slot": 0,
            "target_id": 112,
            "target_slot": 0,
            "type": "STRING"
          },
          {
            "id": 189,
            "origin_id": 115,
            "origin_slot": 0,
            "target_id": 110,
            "target_slot": 0,
            "type": "STRING"
          },
          {
            "id": 185,
            "origin_id": -10,
            "origin_slot": 0,
            "target_id": 114,
            "target_slot": 0,
            "type": "IMAGE"
          },
          {
            "id": 186,
            "origin_id": -10,
            "origin_slot": 1,
            "target_id": 114,
            "target_slot": 1,
            "type": "IMAGE"
          },
          {
            "id": 187,
            "origin_id": 111,
            "origin_slot": 0,
            "target_id": 114,
            "target_slot": 2,
            "type": "STRING"
          },
          {
            "id": 190,
            "origin_id": -10,
            "origin_slot": 0,
            "target_id": 115,
            "target_slot": 0,
            "type": "IMAGE"
          },
          {
            "id": 191,
            "origin_id": -10,
            "origin_slot": 1,
            "target_id": 115,
            "target_slot": 1,
            "type": "IMAGE"
          }
        ],
        "extra": {
          "workflowRendererVersion": "LG"
        }
      },
      {
        "id": "8644d200-d58d-4311-bebe-a9f397568743",
        "version": 1,
        "state": {
          "lastGroupId": 0,
          "lastNodeId": 123,
          "lastLinkId": 211,
          "lastRerouteId": 0
        },
        "revision": 0,
        "config": {},
        "name": "Generate Video",
        "inputNode": {
          "id": -10,
          "bounding": [
            1530,
            -330,
            128,
            88
          ]
        },
        "outputNode": {
          "id": -20,
          "bounding": [
            3820,
            -320,
            128,
            68
          ]
        },
        "inputs": [
          {
            "id": "b623a375-a6dc-4f9c-8e82-e71b94507a75",
            "name": "image1",
            "type": "IMAGE",
            "linkIds": [
              202,
              205
            ],
            "localized_name": "image1",
            "pos": [
              1634,
              -306
            ]
          },
          {
            "id": "7a04f7ae-97c2-4afe-9acf-9f990c80524c",
            "name": "image2",
            "type": "IMAGE",
            "linkIds": [
              203,
              206
            ],
            "localized_name": "image2",
            "pos": [
              1634,
              -286
            ]
          }
        ],
        "outputs": [
          {
            "id": "dbfad197-36c3-4cc9-aa60-d01c9477d144",
            "name": "VIDEO",
            "type": "VIDEO",
            "linkIds": [
              199
            ],
            "localized_name": "VIDEO",
            "pos": [
              3844,
              -296
            ]
          }
        ],
        "widgets": [],
        "nodes": [
          {
            "id": 117,
            "type": "RegexExtract",
            "pos": [
              2500,
              -120
            ],
            "size": [
              230,
              270
            ],
            "flags": {},
            "order": 0,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "string",
                "name": "string",
                "type": "STRING",
                "widget": {
                  "name": "string"
                },
                "link": 201
              }
            ],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": [
                  198
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "RegexExtract",
              "cnr_id": "comfy-core",
              "ver": "0.4.0"
            },
            "widgets_values": [
              "",
              "^(.+?)(?=\\s+--no)",
              "First Match",
              true,
              false,
              false,
              1
            ],
            "widgets_values_named": {
              "string": "",
              "regex_pattern": "^(.+?)(?=\\s+--no)",
              "mode": "First Match",
              "case_insensitive": true,
              "multiline": false,
              "dotall": false,
              "group_index": 1
            }
          },
          {
            "id": 118,
            "type": "PreviewAny",
            "pos": [
              2840,
              -120
            ],
            "size": [
              230,
              280
            ],
            "flags": {},
            "order": 1,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "source",
                "name": "source",
                "type": "*",
                "link": 198
              }
            ],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": [
                  204
                ]
              }
            ],
            "title": "Preview Positive Prompt",
            "properties": {
              "Node name for S&R": "PreviewAny",
              "cnr_id": "comfy-core",
              "ver": "0.3.76"
            },
            "widgets_values": [],
            "widgets_values_named": {}
          },
          {
            "id": 119,
            "type": "RegexExtract",
            "pos": [
              2500,
              200
            ],
            "size": [
              230,
              280
            ],
            "flags": {},
            "order": 2,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "string",
                "name": "string",
                "type": "STRING",
                "widget": {
                  "name": "string"
                },
                "link": 200
              }
            ],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": [
                  197
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "RegexExtract",
              "cnr_id": "comfy-core",
              "ver": "0.4.0"
            },
            "widgets_values": [
              "",
              "(?<=--no\\s)(.+)$",
              "First Match",
              true,
              false,
              false,
              1
            ],
            "widgets_values_named": {
              "string": "",
              "regex_pattern": "(?<=--no\\s)(.+)$",
              "mode": "First Match",
              "case_insensitive": true,
              "multiline": false,
              "dotall": false,
              "group_index": 1
            }
          },
          {
            "id": 120,
            "type": "PreviewAny",
            "pos": [
              2840,
              210
            ],
            "size": [
              230,
              280
            ],
            "flags": {},
            "order": 3,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "source",
                "name": "source",
                "type": "*",
                "link": 197
              }
            ],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": null
              }
            ],
            "title": "Preview Negative Prompt",
            "properties": {
              "Node name for S&R": "PreviewAny",
              "cnr_id": "comfy-core",
              "ver": "0.3.76"
            },
            "widgets_values": [],
            "widgets_values_named": {}
          },
          {
            "id": 121,
            "type": "KlingFirstLastFrameNode",
            "pos": [
              3150,
              -330
            ],
            "size": [
              400,
              300
            ],
            "flags": {},
            "order": 4,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "first_frame",
                "name": "first_frame",
                "type": "IMAGE",
                "link": 202
              },
              {
                "localized_name": "end_frame",
                "name": "end_frame",
                "type": "IMAGE",
                "link": 203
              },
              {
                "localized_name": "prompt",
                "name": "prompt",
                "type": "STRING",
                "widget": {
                  "name": "prompt"
                },
                "link": 204
              }
            ],
            "outputs": [
              {
                "localized_name": "VIDEO",
                "name": "VIDEO",
                "type": "VIDEO",
                "links": [
                  199
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "KlingFirstLastFrameNode"
            },
            "widgets_values": [
              "",
              5,
              true,
              "kling-v3",
              "1080p",
              0,
              "randomize"
            ],
            "widgets_values_named": {
              "prompt": "",
              "duration": 5,
              "generate_audio": true,
              "model": "kling-v3",
              "model.resolution": "1080p",
              "seed": 0,
              "control_after_generate": "randomize"
            },
            "color": "#432",
            "bgcolor": "#653"
          },
          {
            "id": 122,
            "type": "GeminiNodeV3",
            "pos": [
              2040,
              -120
            ],
            "size": [
              400,
              410
            ],
            "flags": {},
            "order": 5,
            "mode": 0,
            "showAdvanced": false,
            "inputs": [
              {
                "localized_name": "image_1",
                "name": "model.images.image_1",
                "shape": 7,
                "type": "IMAGE",
                "link": 205
              },
              {
                "localized_name": "image_2",
                "name": "model.images.image_2",
                "shape": 7,
                "type": "IMAGE",
                "link": 206
              },
              {
                "localized_name": "image_3",
                "name": "model.images.image_3",
                "shape": 7,
                "type": "IMAGE",
                "link": null
              },
              {
                "localized_name": "audio_1",
                "name": "model.audio.audio_1",
                "shape": 7,
                "type": "AUDIO",
                "link": null
              },
              {
                "localized_name": "video_1",
                "name": "model.video.video_1",
                "shape": 7,
                "type": "VIDEO",
                "link": null
              },
              {
                "localized_name": "files",
                "name": "model.files",
                "shape": 7,
                "type": "GEMINI_INPUT_FILES",
                "link": null
              }
            ],
            "outputs": [
              {
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING",
                "links": [
                  200,
                  201
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "GeminiNodeV3"
            },
            "widgets_values": [
              "Gemini 3.8 Flash",
              "STEP 1: ANALYZE BOTH IMAGES\nBefore crafting the prompt, analyze both images to understand:\n\n\nCamera distance (wide shot, medium, close-up, extreme close-up, macro)\nCamera angle (low-angle, high-angle, eye-level, overhead, Dutch, worm's eye, bird's eye)\nCamera position relative to subject (front, side profile, 3/4 view, back, overhead)\nFraming (full body, torso, chest-up, face only, detail/macro)\nSubject position and pose\nLighting setup and direction\nBackground elements and depth\nFocal length characteristics (wide-angle distortion vs telephoto compression)\n\nSTEP 2: DETERMINE CAMERA MOVEMENT\nBased on the differences between images, identify the primary camera movement:\n\n\nDistance change: Dolly-in (closer) or Dolly-out (farther)\nVertical angle change: Tilt up/down or Crane up/down\nHorizontal angle change: Pan left/right or Orbit/Arc around subject\nHeight change: Crane/Pedestal up or down\nLateral movement: Truck/Track left or right\n\nSTEP 3: OUTPUT ONLY THE PROMPT\nDo not include explanations, commentary, or additional text.\nOutput ONLY the transition prompt in this format:\n\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nCore Principle\n\nFor transitions where the subject/scene remains consistent and only the camera position changes, use this structured approach to ensure smooth, cinematic results.\n\n\nPrompt Structure Template\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nComponent Breakdown\n\n1. CAMERA MOVEMENT TYPES\n\n\nDolly-in/Push-in: Camera moves forward toward subject\nDolly-out/Pull-back: Camera moves backward away from subject\nOrbit/Arc: Camera circles around subject (specify left/right)\nTilt: Camera angles up or down on fixed position\nPan: Camera swivels left or right horizontally\nCrane/Pedestal: Camera moves vertically up or down\nTracking/Trucking: Camera moves parallel to subject\n\n2. POSITION DESCRIPTORS\n\n\nDistance: wide shot, medium shot, close-up, extreme close-up, macro\nAngle: low-angle, high-angle, eye-level, overhead, Dutch angle, worm's eye view, bird's eye view\nFraming: full body, three-quarter, torso, chest-up, face, detail\n\n3. MOVEMENT VERBS (choose intensity)\n\n\nSlowly, steadily, smoothly, gradually, fluidly\nRapidly, dynamically, swiftly\nElegantly, dramatically, confidently\n\n4. FOCUS BEHAVIOR\n\n\nSharp focus throughout\nRack focus from [A] to [B]\nMaintains focus on [element]\nShallow depth of field\nDeep focus\nProgressive focus shift\n\n5. BACKGROUND BEHAVIOR\n\n\nStays consistent\nBlurs to bokeh\nSharpens into view\nFades to [color]\nRemains sharp throughout\n\n6. TECHNICAL SPECS (standard cinematic quality)\n\n\nCinematic depth of field\nStable gimbal/dolly movement\nProfessional commercial grade\n24fps (or 30fps, 60fps for slow-motion feel)\nClean sensor, no grain (or \"film grain\" if desired)\n\n\nExample Prompts by Movement Type\n\nDOLLY-IN (Wide → Close-up)\n\n\nSmooth camera dolly-in from wide establishing shot to extreme close-up. Subject remains stationary. Camera pushes forward steadily, transitioning focus from [background element] to [detail]. Lighting stays constant, background softly blurs to bokeh. Cinematic depth of field, stable gimbal movement, 24fps. --no shake, cuts, warping, distortion\n\nDOLLY-OUT (Close-up → Wide)\n\n\nSmooth camera pull-back from extreme close-up to wide establishing shot. Subject remains centered and stationary. Camera retreats steadily, revealing environment progressively. Focus maintains on subject while background sharpens into view. Even lighting, cinematic depth of field, 24fps. --no shake, cuts, jump, warping\n\nORBIT (Circular movement)\n\n\nSmooth camera orbit from front view to side profile. Subject remains stationary at center. Camera arcs left fluidly in 90-degree rotation, maintaining constant distance and eye-level angle. Lighting stays consistent, sharp focus throughout. Gimbal stabilized circular tracking, 24fps. --no shake, warping, speed changes, distortion\n\nTILT (Vertical angle change)\n\n\nSmooth camera tilt from low-angle to high-angle. Subject remains stationary. Camera tilts upward gradually, shifting perspective from worm's eye view to bird's eye view. Distance stays constant, lighting consistent. Stable tripod tilt, cinematic framing, 24fps. --no shake, panning, horizontal movement, warping\n\nPAN (Horizontal swivel)\n\n\nSmooth camera pan from left profile to right profile. Subject remains stationary. Camera swivels horizontally across 180 degrees, maintaining constant distance and eye-level. Sharp focus throughout, even lighting. Fluid tripod pan, 24fps. --no shake, tilting, vertical movement, cuts\n\nCRANE UP/DOWN\n\n\nSmooth camera crane from ground-level to overhead view. Subject remains stationary at center. Camera elevates vertically, angle shifting from eye-level to bird's eye view. Distance adjusts proportionally, lighting consistent. Stabilized crane movement, 24fps. --no shake, lateral movement, warping, distortion\n\nKey Rules for Camera-Only Transitions\n\nAlways specify subject remains stationary - This prevents unwanted morphing\nDescribe start AND end positions clearly - Gives model clear targets\nUse specific movement verbs - \"Dolly-in\" is clearer than \"moves closer\"\nLock down what DOESN'T change - Lighting, subject, clothing, expression\nInclude technical quality markers - Gimbal, 24fps, cinematic, stable\nNegative prompts are critical - Prevents warping/morphing/distortion\nKeep prompts under 75 words - Model weights early words heavier\nOne primary movement per transition - Don't combine dolly + pan + tilt\n\nAdvanced Techniques\n\nSpeed Ramping:\n\"Camera begins slow dolly-in, accelerates midway, then decelerates smoothly into final close-up\"\n\n\nCombined Movements (use sparingly):\n\"Camera dollies in while simultaneously tilting down, maintaining subject center-frame\"\n\n\nFocus Pulls:\n\"Rack focus from foreground [element] to background [element] as camera remains locked\"\n\n\nLens Simulation:\n\"Wide-angle 24mm distortion gradually compresses to telephoto 85mm compression\"\n\n\n\nCritical Output Rule\n\nOUTPUT ONLY THE PROMPT. NO EXPLANATIONS. NO COMMENTARY. NO ADDITIONAL TEXT.",
              "static",
              "MEDIUM",
              32768,
              42,
              "randomize",
              "",
              "randomize"
            ],
            "widgets_values_named": {
              "model": "Gemini 3.8 Flash",
              "model.prompt": "STEP 1: ANALYZE BOTH IMAGES\nBefore crafting the prompt, analyze both images to understand:\n\n\nCamera distance (wide shot, medium, close-up, extreme close-up, macro)\nCamera angle (low-angle, high-angle, eye-level, overhead, Dutch, worm's eye, bird's eye)\nCamera position relative to subject (front, side profile, 3/4 view, back, overhead)\nFraming (full body, torso, chest-up, face only, detail/macro)\nSubject position and pose\nLighting setup and direction\nBackground elements and depth\nFocal length characteristics (wide-angle distortion vs telephoto compression)\n\nSTEP 2: DETERMINE CAMERA MOVEMENT\nBased on the differences between images, identify the primary camera movement:\n\n\nDistance change: Dolly-in (closer) or Dolly-out (farther)\nVertical angle change: Tilt up/down or Crane up/down\nHorizontal angle change: Pan left/right or Orbit/Arc around subject\nHeight change: Crane/Pedestal up or down\nLateral movement: Truck/Track left or right\n\nSTEP 3: OUTPUT ONLY THE PROMPT\nDo not include explanations, commentary, or additional text.\nOutput ONLY the transition prompt in this format:\n\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nCore Principle\n\nFor transitions where the subject/scene remains consistent and only the camera position changes, use this structured approach to ensure smooth, cinematic results.\n\n\nPrompt Structure Template\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nComponent Breakdown\n\n1. CAMERA MOVEMENT TYPES\n\n\nDolly-in/Push-in: Camera moves forward toward subject\nDolly-out/Pull-back: Camera moves backward away from subject\nOrbit/Arc: Camera circles around subject (specify left/right)\nTilt: Camera angles up or down on fixed position\nPan: Camera swivels left or right horizontally\nCrane/Pedestal: Camera moves vertically up or down\nTracking/Trucking: Camera moves parallel to subject\n\n2. POSITION DESCRIPTORS\n\n\nDistance: wide shot, medium shot, close-up, extreme close-up, macro\nAngle: low-angle, high-angle, eye-level, overhead, Dutch angle, worm's eye view, bird's eye view\nFraming: full body, three-quarter, torso, chest-up, face, detail\n\n3. MOVEMENT VERBS (choose intensity)\n\n\nSlowly, steadily, smoothly, gradually, fluidly\nRapidly, dynamically, swiftly\nElegantly, dramatically, confidently\n\n4. FOCUS BEHAVIOR\n\n\nSharp focus throughout\nRack focus from [A] to [B]\nMaintains focus on [element]\nShallow depth of field\nDeep focus\nProgressive focus shift\n\n5. BACKGROUND BEHAVIOR\n\n\nStays consistent\nBlurs to bokeh\nSharpens into view\nFades to [color]\nRemains sharp throughout\n\n6. TECHNICAL SPECS (standard cinematic quality)\n\n\nCinematic depth of field\nStable gimbal/dolly movement\nProfessional commercial grade\n24fps (or 30fps, 60fps for slow-motion feel)\nClean sensor, no grain (or \"film grain\" if desired)\n\n\nExample Prompts by Movement Type\n\nDOLLY-IN (Wide → Close-up)\n\n\nSmooth camera dolly-in from wide establishing shot to extreme close-up. Subject remains stationary. Camera pushes forward steadily, transitioning focus from [background element] to [detail]. Lighting stays constant, background softly blurs to bokeh. Cinematic depth of field, stable gimbal movement, 24fps. --no shake, cuts, warping, distortion\n\nDOLLY-OUT (Close-up → Wide)\n\n\nSmooth camera pull-back from extreme close-up to wide establishing shot. Subject remains centered and stationary. Camera retreats steadily, revealing environment progressively. Focus maintains on subject while background sharpens into view. Even lighting, cinematic depth of field, 24fps. --no shake, cuts, jump, warping\n\nORBIT (Circular movement)\n\n\nSmooth camera orbit from front view to side profile. Subject remains stationary at center. Camera arcs left fluidly in 90-degree rotation, maintaining constant distance and eye-level angle. Lighting stays consistent, sharp focus throughout. Gimbal stabilized circular tracking, 24fps. --no shake, warping, speed changes, distortion\n\nTILT (Vertical angle change)\n\n\nSmooth camera tilt from low-angle to high-angle. Subject remains stationary. Camera tilts upward gradually, shifting perspective from worm's eye view to bird's eye view. Distance stays constant, lighting consistent. Stable tripod tilt, cinematic framing, 24fps. --no shake, panning, horizontal movement, warping\n\nPAN (Horizontal swivel)\n\n\nSmooth camera pan from left profile to right profile. Subject remains stationary. Camera swivels horizontally across 180 degrees, maintaining constant distance and eye-level. Sharp focus throughout, even lighting. Fluid tripod pan, 24fps. --no shake, tilting, vertical movement, cuts\n\nCRANE UP/DOWN\n\n\nSmooth camera crane from ground-level to overhead view. Subject remains stationary at center. Camera elevates vertically, angle shifting from eye-level to bird's eye view. Distance adjusts proportionally, lighting consistent. Stabilized crane movement, 24fps. --no shake, lateral movement, warping, distortion\n\nKey Rules for Camera-Only Transitions\n\nAlways specify subject remains stationary - This prevents unwanted morphing\nDescribe start AND end positions clearly - Gives model clear targets\nUse specific movement verbs - \"Dolly-in\" is clearer than \"moves closer\"\nLock down what DOESN'T change - Lighting, subject, clothing, expression\nInclude technical quality markers - Gimbal, 24fps, cinematic, stable\nNegative prompts are critical - Prevents warping/morphing/distortion\nKeep prompts under 75 words - Model weights early words heavier\nOne primary movement per transition - Don't combine dolly + pan + tilt\n\nAdvanced Techniques\n\nSpeed Ramping:\n\"Camera begins slow dolly-in, accelerates midway, then decelerates smoothly into final close-up\"\n\n\nCombined Movements (use sparingly):\n\"Camera dollies in while simultaneously tilting down, maintaining subject center-frame\"\n\n\nFocus Pulls:\n\"Rack focus from foreground [element] to background [element] as camera remains locked\"\n\n\nLens Simulation:\n\"Wide-angle 24mm distortion gradually compresses to telephoto 85mm compression\"\n\n\n\nCritical Output Rule\n\nOUTPUT ONLY THE PROMPT. NO EXPLANATIONS. NO COMMENTARY. NO ADDITIONAL TEXT.",
              "model.video_processing": "static",
              "model.thinking_level": "MEDIUM",
              "model.max_output_tokens": 32768,
              "model.seed": 42,
              "control_after_generate#1": "randomize",
              "model.system_prompt": "",
              "control_after_generate": "randomize"
            },
            "color": "#432",
            "bgcolor": "#653"
          }
        ],
        "groups": [],
        "links": [
          {
            "id": 197,
            "origin_id": 119,
            "origin_slot": 0,
            "target_id": 120,
            "target_slot": 0,
            "type": "STRING"
          },
          {
            "id": 198,
            "origin_id": 117,
            "origin_slot": 0,
            "target_id": 118,
            "target_slot": 0,
            "type": "STRING"
          },
          {
            "id": 199,
            "origin_id": 121,
            "origin_slot": 0,
            "target_id": -20,
            "target_slot": 0,
            "type": "VIDEO"
          },
          {
            "id": 200,
            "origin_id": 122,
            "origin_slot": 0,
            "target_id": 119,
            "target_slot": 0,
            "type": "STRING"
          },
          {
            "id": 201,
            "origin_id": 122,
            "origin_slot": 0,
            "target_id": 117,
            "target_slot": 0,
            "type": "STRING"
          },
          {
            "id": 202,
            "origin_id": -10,
            "origin_slot": 0,
            "target_id": 121,
            "target_slot": 0,
            "type": "IMAGE"
          },
          {
            "id": 203,
            "origin_id": -10,
            "origin_slot": 1,
            "target_id": 121,
            "target_slot": 1,
            "type": "IMAGE"
          },
          {
            "id": 204,
            "origin_id": 118,
            "origin_slot": 0,
            "target_id": 121,
            "target_slot": 2,
            "type": "STRING"
          },
          {
            "id": 205,
            "origin_id": -10,
            "origin_slot": 0,
            "target_id": 122,
            "target_slot": 0,
            "type": "IMAGE"
          },
          {
            "id": 206,
            "origin_id": -10,
            "origin_slot": 1,
            "target_id": 122,
            "target_slot": 1,
            "type": "IMAGE"
          }
        ],
        "extra": {
          "workflowRendererVersion": "LG"
        }
      }
    ]
  },
  "config": {},
  "extra": {
    "ds": {
      "scale": 0.46033397046586283,
      "offset": [
        -1928.0286377840162,
        676.358347014057
      ]
    },
    "frontendVersion": "1.54.15",
    "workflowRendererVersion": "LG",
    "VHS_latentpreview": false,
    "VHS_latentpreviewrate": 0,
    "VHS_MetadataImage": true,
    "VHS_KeepIntermediate": true
  },
  "version": 0.4
}