{
  "config": {},
  "definitions": {
    "subgraphs": [
      {
        "config": {},
        "extra": {
          "workflowRendererVersion": "LG"
        },
        "groups": [],
        "id": "d9bde709-ac73-4d4a-a364-9d427a6fdfa1",
        "inputNode": {
          "bounding": [
            -6870,
            2530,
            128,
            128
          ],
          "id": -10
        },
        "inputs": [
          {
            "id": "d8cbd7eb-636a-4d7b-8ff6-b22f1755e26c",
            "linkIds": [
              15
            ],
            "name": "prompt",
            "pos": [
              -6766,
              2554
            ],
            "type": "STRING"
          },
          {
            "id": "b034e26a-d114-4604-aec2-32783e86aa6b",
            "linkIds": [
              16
            ],
            "name": "model",
            "pos": [
              -6766,
              2574
            ],
            "type": "COMBO"
          },
          {
            "id": "f7363f60-a106-4e06-90af-df5f53355b98",
            "linkIds": [
              17
            ],
            "name": "video",
            "pos": [
              -6766,
              2594
            ],
            "type": "VIDEO"
          },
          {
            "id": "1dad87cd-0ba7-4340-8c80-e48398ad4300",
            "linkIds": [
              422
            ],
            "name": "images",
            "pos": [
              -6766,
              2614
            ],
            "type": "IMAGE"
          }
        ],
        "links": [
          {
            "id": 6,
            "origin_id": 20,
            "origin_slot": 0,
            "target_id": -20,
            "target_slot": 0,
            "type": "*"
          },
          {
            "id": 15,
            "origin_id": -10,
            "origin_slot": 0,
            "target_id": 20,
            "target_slot": 4,
            "type": "STRING"
          },
          {
            "id": 16,
            "origin_id": -10,
            "origin_slot": 1,
            "target_id": 20,
            "target_slot": 5,
            "type": "COMBO"
          },
          {
            "id": 17,
            "origin_id": -10,
            "origin_slot": 2,
            "target_id": 20,
            "target_slot": 2,
            "type": "VIDEO"
          },
          {
            "id": 422,
            "origin_id": -10,
            "origin_slot": 3,
            "target_id": 20,
            "target_slot": 0,
            "type": "IMAGE"
          }
        ],
        "name": "Video Captioning (Gemini)",
        "nodes": [
          {
            "bgcolor": "#653",
            "color": "#432",
            "flags": {},
            "id": 20,
            "inputs": [
              {
                "link": 422,
                "localized_name": "images",
                "name": "images",
                "shape": 7,
                "type": "IMAGE"
              },
              {
                "link": null,
                "localized_name": "audio",
                "name": "audio",
                "shape": 7,
                "type": "AUDIO"
              },
              {
                "link": 17,
                "localized_name": "video",
                "name": "video",
                "shape": 7,
                "type": "VIDEO"
              },
              {
                "link": null,
                "localized_name": "files",
                "name": "files",
                "shape": 7,
                "type": "GEMINI_INPUT_FILES"
              },
              {
                "link": 15,
                "localized_name": "prompt",
                "name": "prompt",
                "type": "STRING",
                "widget": {
                  "name": "prompt"
                }
              },
              {
                "link": 16,
                "localized_name": "model",
                "name": "model",
                "type": "COMBO",
                "widget": {
                  "name": "model"
                }
              },
              {
                "link": null,
                "localized_name": "seed",
                "name": "seed",
                "type": "INT",
                "widget": {
                  "name": "seed"
                }
              },
              {
                "link": null,
                "localized_name": "system_prompt",
                "name": "system_prompt",
                "shape": 7,
                "type": "STRING",
                "widget": {
                  "name": "system_prompt"
                }
              }
            ],
            "mode": 0,
            "order": 0,
            "outputs": [
              {
                "links": [
                  6
                ],
                "localized_name": "STRING",
                "name": "STRING",
                "type": "STRING"
              }
            ],
            "pos": [
              -6690,
              2360
            ],
            "properties": {
              "Node name for S&R": "GeminiNode",
              "cnr_id": "comfy-core",
              "ver": "0.5.1"
            },
            "showAdvanced": true,
            "size": [
              390,
              430
            ],
            "type": "GeminiNode",
            "widgets_values": [
              "Follow the system instructions: The main subject is a rubberhose animation character from @image_1. Extra emphasis on the rubberhose animated movement of the character while playing soccer. The rest of the scene is grounded in realism.",
              "gemini-3-1-pro",
              111,
              "randomize",
              "SYSTEM PROMPT: HYPER-GRANULAR VIDEO ANALYSIS\nROLE:\nYou are an expert cinematographer, visual analyst, and motion-mechanics describer. Your job is to break down video clips into insanely detailed, hyper-granular, frame-by-frame text descriptions.\nOBJECTIVE:\nTranslate the provided video/sequence into a vivid, kinetic text breakdown. You must capture the exact physical mechanics, the pacing, the micro-expressions, the physics of momentum, the physical reality of the camera itself, and a complete transcription of all audio and dialogue.\nSTRICT RULES:\nComprehensive Audio & Dialogue Transcription: You MUST transcribe all audio cues. Write out exactly what characters are saying using quotation marks (e.g., \"Watch this!\"). If speech is muffled or overlapping, note that. Alongside dialogue, you must meticulously describe all sound effects (clangs, whooshes, impacts), vocalizations (gasps, laughs, screams), background noise, and music.\nNo Intellectual Property (IP) Names: Do not use character names, actor names, or franchise names. Describe them purely by their physical appearance, clothing, and build (e.g., \"the massively built man,\" \"the woman in the pink kimono\").\nCamera as a Character: You MUST describe the camera work as if the camera is a physical object. Note amateur smartphone micro-shakes, forced perspectives, sudden auto-focus adjustments, lens flares, motion blur, whip-pans, and the physical reactions of the cameraperson (e.g., \"The camera violently jerks downward as the cameraperson flinches\").\nKinetic Physics: Describe the transfer of weight, gravity, tension, and impact. Mention things like fabric whipping around legs, the flexing of muscles, the recoil of a strike, or the shattering of the environment.\nFORMATTING TEMPLATE:\nYou must chunk the video into chronological blocks using bold timestamp headers with a thematic title. Under each header, use bullet points to categorize the elements.\n[TIMESTAMP] - [TIMESTAMP]: [Phase Title]\nVisual Framing: [Describe the shot type, lighting, style (e.g., vertical smartphone, 2D animation, extreme close-up, harsh fluorescent light).]\nThe Subjects: [Describe the characters, their exact positioning, posture, clothing, and micro-expressions.]\nThe Action: [Frame-by-frame breakdown of the physical movements. Micro-movements, momentum, physics.]\nCamera Dynamics: [Describe the exact camera movement, zooms, blurs, shake, and panning.]\nAudio/Pacing: [Transcribe ALL spoken dialogue in quotes. Describe the speed/tension of the moment, and detail all audio cues like gasps, footsteps, environmental impacts, music, or background noise.]\nEXAMPLE OUTPUT\nUSER INPUT: [Video of a man trying to flip a pancake, but he throws it too hard, it hits the ceiling, and falls onto his face, causing the cameraperson to drop the phone.]\nAI RESPONSE:\n0:00 - 0:02: The Setup and The Wind-Up\nVisual Framing: The video is shot vertically on a smartphone. The lighting is a harsh, warm, overhead kitchen light. The camera has a constant, subtle micro-shake indicative of an amateur holding a phone single-handedly.\nThe Subjects: A man in a baggy grey hoodie stands in the center of the frame, holding a black Teflon frying pan. Inside the pan is a perfectly round, golden-brown pancake.\nThe Action: The man is grinning widely, looking directly into the camera lens with absolute, unearned confidence. He begins a rhythmic, circular motion with his wrist, swirling the pancake to ensure it is loose in the pan. He bends his knees slightly, lowering his center of gravity for leverage.\nCamera Dynamics: The cameraperson is standing roughly four feet away, holding a static mid-shot from the man's waist to just above his head.\nAudio/Pacing: The pacing is slow and anticipatory. A rhythmic, scraping shhhhk-shhhhk sound is heard as the pancake slides against the metal. The man speaks clearly and confidently: \"Alright, perfect flip in three... two... one...\"\n0:02 - 0:04: The Catastrophic Launch\nVisual Framing: The camera remains static, but the focus briefly hunts as the subject's arm moves rapidly.\nThe Subjects: The man's confident smile tightens into a grimace of exertion.\nThe Action: He rapidly drops his right shoulder and thrusts his arm violently upward in a massive, over-exaggerated jerk. He applies vastly too much kinetic force. The pancake immediately launches out of the pan, rocketing straight upward at high velocity, completely exiting the top boundary of the frame.\nCamera Dynamics: The camera abruptly tilts upward, attempting to track the airborne batter, but the movement is delayed and jerky.\nAudio/Pacing: The man lets out a short, strained grunt: \"Hup!\" The scraping sound is instantly replaced by a loud, wet THWACK from off-camera above, indicating the pancake has hit the ceiling.\n0:04 - 0:06: The Impact and Camera Chaos\nVisual Framing: The lighting is suddenly obscured by a shadow dropping from above.\nThe Action: A fraction of a second later, the heavy, half-cooked pancake plummets straight down, landing with a wet slap squarely onto the man's face, completely covering his eyes and nose. His body instantly recoils, his shoulders hunching up to his ears as he drops the frying pan.\nCamera Dynamics: The cameraperson's fight-or-flight response kicks in. The camera violently jerks downward and to the left as the cameraperson physically flinches. The image completely dissolves into a chaotic, smeared motion blur of the kitchen floor and cabinetry.\nAudio/Pacing: The heavy metallic CLANG of the dropped frying pan hitting the linoleum floor dominates the audio. The cameraperson gasps loudly and shouts, \"Oh my god, dude!\" followed instantly by the sharp clatter of the phone being dropped. The video ends abruptly on a tilted, blurry frame of the baseboards."
            ]
          }
        ],
        "outputNode": {
          "bounding": [
            -6240,
            2530,
            128,
            68
          ],
          "id": -20
        },
        "outputs": [
          {
            "id": "e12c6e80-5210-4328-a581-bc8924c53070",
            "linkIds": [
              6
            ],
            "localized_name": "STRING",
            "name": "STRING",
            "pos": [
              -6216,
              2554
            ],
            "type": "STRING"
          }
        ],
        "revision": 0,
        "state": {
          "lastGroupId": 25,
          "lastLinkId": 426,
          "lastNodeId": 297,
          "lastRerouteId": 9
        },
        "version": 1,
        "widgets": []
      }
    ]
  },
  "extra": {
    "VHS_KeepIntermediate": true,
    "VHS_MetadataImage": true,
    "VHS_latentpreview": false,
    "VHS_latentpreviewrate": 0,
    "ds": {
      "offset": [
        -679.3853974250203,
        -300.448310423623
      ],
      "scale": 0.5054470284993025
    },
    "frontendVersion": "1.44.12",
    "linearData": {
      "inputs": [
        [
          "29",
          "image"
        ],
        [
          "18",
          "file"
        ],
        [
          "20",
          "prompt"
        ],
        [
          "26",
          "model"
        ],
        [
          "26",
          "seed"
        ],
        [
          "281",
          "model"
        ],
        [
          "281",
          "model.resolution"
        ],
        [
          "281",
          "model.ratio"
        ],
        [
          "281",
          "model.duration"
        ],
        [
          "281",
          "seed"
        ]
      ],
      "outputs": [
        "295",
        "22",
        "282"
      ]
    },
    "linkExtensions": [
      {
        "id": 20,
        "parentId": 6
      },
      {
        "id": 28,
        "parentId": 2
      },
      {
        "id": 409,
        "parentId": 4
      },
      {
        "id": 421,
        "parentId": 8
      },
      {
        "id": 424,
        "parentId": 9
      }
    ],
    "reroutes": [
      {
        "id": 1,
        "linkIds": [
          28
        ],
        "pos": [
          740,
          1384
        ]
      },
      {
        "id": 2,
        "linkIds": [
          28
        ],
        "parentId": 1,
        "pos": [
          1200,
          1384
        ]
      },
      {
        "id": 3,
        "linkIds": [
          409
        ],
        "pos": [
          2000,
          834
        ]
      },
      {
        "id": 4,
        "linkIds": [
          409
        ],
        "parentId": 3,
        "pos": [
          3160,
          844
        ]
      },
      {
        "id": 5,
        "linkIds": [
          20
        ],
        "pos": [
          1220,
          824
        ]
      },
      {
        "id": 6,
        "linkIds": [
          20
        ],
        "parentId": 5,
        "pos": [
          2350,
          814
        ]
      },
      {
        "id": 7,
        "linkIds": [
          421,
          424
        ],
        "pos": [
          40,
          864
        ]
      },
      {
        "id": 8,
        "linkIds": [
          421
        ],
        "parentId": 9,
        "pos": [
          3150,
          874
        ]
      },
      {
        "id": 9,
        "linkIds": [
          421,
          424
        ],
        "parentId": 7,
        "pos": [
          1490,
          864
        ]
      }
    ]
  },
  "groups": [],
  "id": "f002ee1a-4648-4bf4-aaa2-edc8adc2940d",
  "last_link_id": 426,
  "last_node_id": 297,
  "links": [
    [
      20,
      21,
      0,
      22,
      0,
      "STRING"
    ],
    [
      22,
      18,
      0,
      23,
      0,
      "VIDEO"
    ],
    [
      24,
      23,
      0,
      21,
      2,
      "VIDEO"
    ],
    [
      27,
      23,
      0,
      28,
      0,
      "VIDEO"
    ],
    [
      28,
      28,
      0,
      27,
      0,
      "IMAGE"
    ],
    [
      29,
      27,
      0,
      26,
      7,
      "IMAGE"
    ],
    [
      409,
      26,
      0,
      281,
      6,
      "IMAGE"
    ],
    [
      412,
      281,
      0,
      282,
      0,
      "VIDEO"
    ],
    [
      420,
      26,
      0,
      295,
      0,
      "IMAGE"
    ],
    [
      421,
      29,
      0,
      281,
      7,
      "IMAGE"
    ],
    [
      423,
      29,
      0,
      21,
      3,
      "IMAGE"
    ],
    [
      424,
      29,
      0,
      26,
      8,
      "IMAGE"
    ],
    [
      425,
      22,
      0,
      297,
      1,
      "STRING"
    ],
    [
      426,
      297,
      0,
      281,
      1,
      "STRING"
    ]
  ],
  "nodes": [
    {
      "flags": {},
      "id": 18,
      "inputs": [
        {
          "link": null,
          "localized_name": "file",
          "name": "file",
          "type": "COMBO",
          "widget": {
            "name": "file"
          }
        },
        {
          "link": null,
          "localized_name": "choose file to upload",
          "name": "upload",
          "type": "IMAGEUPLOAD",
          "widget": {
            "name": "upload"
          }
        }
      ],
      "mode": 0,
      "order": 0,
      "outputs": [
        {
          "links": [
            22
          ],
          "localized_name": "VIDEO",
          "name": "VIDEO",
          "type": "VIDEO"
        }
      ],
      "pos": [
        30,
        950
      ],
      "properties": {
        "Node name for S&R": "LoadVideo",
        "cnr_id": "comfy-core",
        "ver": "0.21.1"
      },
      "size": [
        360,
        430
      ],
      "type": "LoadVideo",
      "widgets_values": [
        "b887506631eede32ccbf6284c02efad018c25dbce6d59e21240e7dd169d5401a.mp4",
        "image"
      ]
    },
    {
      "flags": {},
      "id": 21,
      "inputs": [
        {
          "link": null,
          "name": "prompt",
          "type": "STRING",
          "widget": {
            "name": "prompt"
          }
        },
        {
          "link": null,
          "name": "model",
          "type": "COMBO",
          "widget": {
            "name": "model"
          }
        },
        {
          "link": 24,
          "name": "video",
          "shape": 7,
          "type": "VIDEO"
        },
        {
          "link": 423,
          "name": "images",
          "shape": 7,
          "type": "IMAGE"
        }
      ],
      "mode": 0,
      "order": 3,
      "outputs": [
        {
          "links": [
            20
          ],
          "localized_name": "STRING",
          "name": "STRING",
          "type": "STRING"
        }
      ],
      "pos": [
        790,
        950
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "proxyWidgets": [
          [
            "20",
            "prompt"
          ],
          [
            "20",
            "model"
          ],
          [
            "20",
            "seed"
          ]
        ],
        "ver": "0.13.0"
      },
      "size": [
        380,
        350
      ],
      "type": "d9bde709-ac73-4d4a-a364-9d427a6fdfa1",
      "widgets_values": []
    },
    {
      "flags": {},
      "id": 22,
      "inputs": [
        {
          "link": 20,
          "localized_name": "source",
          "name": "source",
          "type": "*"
        }
      ],
      "mode": 0,
      "order": 5,
      "outputs": [
        {
          "links": [
            425
          ],
          "localized_name": "STRING",
          "name": "STRING",
          "type": "STRING"
        }
      ],
      "pos": [
        2430,
        950
      ],
      "properties": {
        "Node name for S&R": "PreviewAny",
        "cnr_id": "comfy-core",
        "ver": "0.21.1"
      },
      "size": [
        660,
        940
      ],
      "title": "Preview Prompt",
      "type": "PreviewAny",
      "widgets_values": [
        null,
        null,
        null
      ]
    },
    {
      "flags": {},
      "id": 23,
      "inputs": [
        {
          "link": 22,
          "localized_name": "video",
          "name": "video",
          "type": "VIDEO"
        },
        {
          "link": null,
          "localized_name": "start_time",
          "name": "start_time",
          "type": "FLOAT",
          "widget": {
            "name": "start_time"
          }
        },
        {
          "link": null,
          "localized_name": "duration",
          "name": "duration",
          "type": "FLOAT",
          "widget": {
            "name": "duration"
          }
        },
        {
          "link": null,
          "localized_name": "strict_duration",
          "name": "strict_duration",
          "type": "BOOLEAN",
          "widget": {
            "name": "strict_duration"
          }
        }
      ],
      "mode": 0,
      "order": 2,
      "outputs": [
        {
          "links": [
            24,
            27
          ],
          "localized_name": "VIDEO",
          "name": "VIDEO",
          "type": "VIDEO"
        }
      ],
      "pos": [
        450,
        950
      ],
      "properties": {
        "Node name for S&R": "Video Slice",
        "cnr_id": "comfy-core",
        "ver": "0.21.1"
      },
      "size": [
        270,
        140
      ],
      "type": "Video Slice",
      "widgets_values": [
        0,
        15,
        false
      ]
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 26,
      "inputs": [
        {
          "link": null,
          "localized_name": "prompt",
          "name": "prompt",
          "type": "STRING",
          "widget": {
            "name": "prompt"
          }
        },
        {
          "link": null,
          "localized_name": "model",
          "name": "model",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "model"
          }
        },
        {
          "link": null,
          "localized_name": "model.size",
          "name": "model.size",
          "type": "COMBO",
          "widget": {
            "name": "model.size"
          }
        },
        {
          "link": null,
          "localized_name": "model.custom_width",
          "name": "model.custom_width",
          "type": "INT",
          "widget": {
            "name": "model.custom_width"
          }
        },
        {
          "link": null,
          "localized_name": "model.custom_height",
          "name": "model.custom_height",
          "type": "INT",
          "widget": {
            "name": "model.custom_height"
          }
        },
        {
          "link": null,
          "localized_name": "model.background",
          "name": "model.background",
          "type": "COMBO",
          "widget": {
            "name": "model.background"
          }
        },
        {
          "link": null,
          "localized_name": "model.quality",
          "name": "model.quality",
          "type": "COMBO",
          "widget": {
            "name": "model.quality"
          }
        },
        {
          "label": "image_1",
          "link": 29,
          "localized_name": "model.images.image_1",
          "name": "model.images.image_1",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "label": "image_2",
          "link": 424,
          "localized_name": "model.images.image_2",
          "name": "model.images.image_2",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "label": "image_3",
          "link": null,
          "localized_name": "model.images.image_3",
          "name": "model.images.image_3",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "label": "mask",
          "link": null,
          "localized_name": "model.mask",
          "name": "model.mask",
          "shape": 7,
          "type": "MASK"
        },
        {
          "link": null,
          "localized_name": "n",
          "name": "n",
          "type": "INT",
          "widget": {
            "name": "n"
          }
        },
        {
          "link": null,
          "localized_name": "seed",
          "name": "seed",
          "type": "INT",
          "widget": {
            "name": "seed"
          }
        }
      ],
      "mode": 0,
      "order": 8,
      "outputs": [
        {
          "links": [
            409,
            420
          ],
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE"
        }
      ],
      "pos": [
        1550,
        950
      ],
      "properties": {
        "Node name for S&R": "OpenAIGPTImageNodeV2",
        "cnr_id": "comfy-core",
        "ver": "0.21.1"
      },
      "size": [
        400,
        518.65625
      ],
      "type": "OpenAIGPTImageNodeV2",
      "widgets_values": [
        "Swap the subject from @image_2 into @image_1. Maintain the outfit and pose of the character from @image_2 ",
        "gpt-image-2",
        "auto",
        1024,
        1024,
        "auto",
        "medium",
        1,
        222,
        "randomize"
      ]
    },
    {
      "flags": {},
      "id": 27,
      "inputs": [
        {
          "link": 28,
          "localized_name": "image",
          "name": "image",
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "batch_index",
          "name": "batch_index",
          "type": "INT",
          "widget": {
            "name": "batch_index"
          }
        },
        {
          "link": null,
          "localized_name": "length",
          "name": "length",
          "type": "INT",
          "widget": {
            "name": "length"
          }
        }
      ],
      "mode": 0,
      "order": 6,
      "outputs": [
        {
          "links": [
            29
          ],
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE"
        }
      ],
      "pos": [
        1230,
        950
      ],
      "properties": {
        "Node name for S&R": "ImageFromBatch",
        "cnr_id": "comfy-core",
        "ver": "0.21.1"
      },
      "size": [
        270,
        120
      ],
      "title": "Get Frame from Video",
      "type": "ImageFromBatch",
      "widgets_values": [
        0,
        1
      ]
    },
    {
      "flags": {},
      "id": 28,
      "inputs": [
        {
          "link": 27,
          "localized_name": "video",
          "name": "video",
          "type": "VIDEO"
        }
      ],
      "mode": 0,
      "order": 4,
      "outputs": [
        {
          "links": [
            28
          ],
          "localized_name": "images",
          "name": "images",
          "type": "IMAGE"
        },
        {
          "links": null,
          "localized_name": "audio",
          "name": "audio",
          "type": "AUDIO"
        },
        {
          "links": null,
          "localized_name": "fps",
          "name": "fps",
          "type": "FLOAT"
        }
      ],
      "pos": [
        450,
        1160
      ],
      "properties": {
        "Node name for S&R": "GetVideoComponents",
        "cnr_id": "comfy-core",
        "ver": "0.21.1"
      },
      "size": [
        270,
        100
      ],
      "type": "GetVideoComponents",
      "widgets_values": []
    },
    {
      "flags": {},
      "id": 29,
      "inputs": [
        {
          "link": null,
          "localized_name": "image",
          "name": "image",
          "type": "COMBO",
          "widget": {
            "name": "image"
          }
        },
        {
          "link": null,
          "localized_name": "choose file to upload",
          "name": "upload",
          "type": "IMAGEUPLOAD",
          "widget": {
            "name": "upload"
          }
        }
      ],
      "mode": 0,
      "order": 1,
      "outputs": [
        {
          "links": [
            421,
            423,
            424
          ],
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE"
        },
        {
          "links": null,
          "localized_name": "MASK",
          "name": "MASK",
          "type": "MASK"
        }
      ],
      "pos": [
        -330,
        950
      ],
      "properties": {
        "Node name for S&R": "LoadImage",
        "cnr_id": "comfy-core",
        "ver": "0.21.1"
      },
      "size": [
        320,
        430
      ],
      "title": "Load Character Image",
      "type": "LoadImage",
      "widgets_values": [
        "35a392233a678196ccc08ac991db1788fb985f24e1c86e67db3d5751d3336f30.png",
        "image"
      ]
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 281,
      "inputs": [
        {
          "link": null,
          "localized_name": "model",
          "name": "model",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "model"
          }
        },
        {
          "link": 426,
          "localized_name": "model.prompt",
          "name": "model.prompt",
          "type": "STRING",
          "widget": {
            "name": "model.prompt"
          }
        },
        {
          "link": null,
          "localized_name": "model.resolution",
          "name": "model.resolution",
          "type": "COMBO",
          "widget": {
            "name": "model.resolution"
          }
        },
        {
          "link": null,
          "localized_name": "model.ratio",
          "name": "model.ratio",
          "type": "COMBO",
          "widget": {
            "name": "model.ratio"
          }
        },
        {
          "link": null,
          "localized_name": "model.duration",
          "name": "model.duration",
          "type": "INT",
          "widget": {
            "name": "model.duration"
          }
        },
        {
          "link": null,
          "localized_name": "model.generate_audio",
          "name": "model.generate_audio",
          "type": "BOOLEAN",
          "widget": {
            "name": "model.generate_audio"
          }
        },
        {
          "label": "image_1",
          "link": 409,
          "localized_name": "model.reference_images.image_1",
          "name": "model.reference_images.image_1",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "label": "image_2",
          "link": 421,
          "localized_name": "model.reference_images.image_2",
          "name": "model.reference_images.image_2",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "label": "image_3",
          "link": null,
          "localized_name": "model.reference_images.image_3",
          "name": "model.reference_images.image_3",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "label": "video_1",
          "link": null,
          "localized_name": "model.reference_videos.video_1",
          "name": "model.reference_videos.video_1",
          "shape": 7,
          "type": "VIDEO"
        },
        {
          "label": "audio_1",
          "link": null,
          "localized_name": "model.reference_audios.audio_1",
          "name": "model.reference_audios.audio_1",
          "shape": 7,
          "type": "AUDIO"
        },
        {
          "label": "asset_1",
          "link": null,
          "localized_name": "model.reference_assets.asset_1",
          "name": "model.reference_assets.asset_1",
          "shape": 7,
          "type": "STRING"
        },
        {
          "link": null,
          "localized_name": "model.auto_downscale",
          "name": "model.auto_downscale",
          "shape": 7,
          "type": "BOOLEAN",
          "widget": {
            "name": "model.auto_downscale"
          }
        },
        {
          "link": null,
          "localized_name": "seed",
          "name": "seed",
          "type": "INT",
          "widget": {
            "name": "seed"
          }
        },
        {
          "link": null,
          "localized_name": "watermark",
          "name": "watermark",
          "type": "BOOLEAN",
          "widget": {
            "name": "watermark"
          }
        }
      ],
      "mode": 0,
      "order": 9,
      "outputs": [
        {
          "links": [
            412
          ],
          "localized_name": "VIDEO",
          "name": "VIDEO",
          "type": "VIDEO"
        }
      ],
      "pos": [
        3190,
        950
      ],
      "properties": {
        "Node name for S&R": "ByteDance2ReferenceNode",
        "cnr_id": "comfy-core",
        "ver": "0.21.1"
      },
      "size": [
        400,
        524.984375
      ],
      "type": "ByteDance2ReferenceNode",
      "widgets_values": [
        "Seedance 2.0",
        "",
        "720p",
        "16:9",
        15,
        true,
        false,
        333,
        "randomize",
        false
      ]
    },
    {
      "flags": {},
      "id": 282,
      "inputs": [
        {
          "link": 412,
          "localized_name": "video",
          "name": "video",
          "type": "VIDEO"
        },
        {
          "link": null,
          "localized_name": "filename_prefix",
          "name": "filename_prefix",
          "type": "STRING",
          "widget": {
            "name": "filename_prefix"
          }
        },
        {
          "link": null,
          "localized_name": "format",
          "name": "format",
          "type": "COMBO",
          "widget": {
            "name": "format"
          }
        },
        {
          "link": null,
          "localized_name": "codec",
          "name": "codec",
          "type": "COMBO",
          "widget": {
            "name": "codec"
          }
        }
      ],
      "mode": 0,
      "order": 11,
      "outputs": [],
      "pos": [
        3650,
        950
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.21.1"
      },
      "size": [
        460,
        530
      ],
      "type": "SaveVideo",
      "widgets_values": [
        "video",
        "auto",
        "auto"
      ]
    },
    {
      "flags": {},
      "id": 295,
      "inputs": [
        {
          "link": 420,
          "localized_name": "images",
          "name": "images",
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "filename_prefix",
          "name": "filename_prefix",
          "type": "STRING",
          "widget": {
            "name": "filename_prefix"
          }
        }
      ],
      "mode": 0,
      "order": 10,
      "outputs": [],
      "pos": [
        2000,
        950
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.21.1"
      },
      "size": [
        370,
        450
      ],
      "type": "SaveImage",
      "widgets_values": [
        "gpt-image-2_character_swap"
      ]
    },
    {
      "flags": {
        "collapsed": true
      },
      "id": 297,
      "inputs": [
        {
          "link": null,
          "localized_name": "string_a",
          "name": "string_a",
          "type": "STRING",
          "widget": {
            "name": "string_a"
          }
        },
        {
          "link": 425,
          "localized_name": "string_b",
          "name": "string_b",
          "type": "STRING",
          "widget": {
            "name": "string_b"
          }
        },
        {
          "link": null,
          "localized_name": "delimiter",
          "name": "delimiter",
          "type": "STRING",
          "widget": {
            "name": "delimiter"
          }
        }
      ],
      "mode": 0,
      "order": 7,
      "outputs": [
        {
          "links": [
            426
          ],
          "localized_name": "STRING",
          "name": "STRING",
          "type": "STRING"
        }
      ],
      "pos": [
        2860,
        900
      ],
      "properties": {
        "Node name for S&R": "StringConcatenate",
        "cnr_id": "comfy-core",
        "ver": "0.21.1"
      },
      "size": [
        225,
        8
      ],
      "title": "Create Prompt",
      "type": "StringConcatenate",
      "widgets_values": [
        "Use @image_1 as a start frame. Reference @image_2 for the full body shots of the character.",
        "",
        ". "
      ]
    }
  ],
  "revision": 0,
  "version": 0.4
}