{
  "id": "8e4bc5d1-641a-4ccb-ab91-de6d07fd94d9",
  "revision": 0,
  "last_node_id": 14,
  "last_link_id": 22,
  "nodes": [
    {
      "id": 1,
      "type": "PrimitiveStringMultiline",
      "pos": [
        26,
        522
      ],
      "size": [
        340,
        88
      ],
      "flags": {},
      "order": 0,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            12
          ]
        }
      ],
      "title": "Product brief (one line)",
      "properties": {
        "Node name for S&R": "PrimitiveStringMultiline"
      },
      "widgets_values": [
        "A new cold-brew coffee in a sleek matte-black can, made for busy students who need a calm boost"
      ]
    },
    {
      "id": 2,
      "type": "BytePlusSeed",
      "pos": [
        642,
        108
      ],
      "size": [
        340,
        410
      ],
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [
        {
          "name": "prompt",
          "type": "STRING",
          "widget": {
            "name": "prompt"
          },
          "link": 12
        },
        {
          "name": "model.images.image_1",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "name": "model.videos.video_1",
          "shape": 7,
          "type": "VIDEO",
          "link": null
        }
      ],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            13,
            14
          ]
        },
        {
          "name": "raw_json",
          "type": "STRING",
          "links": null
        }
      ],
      "title": "Creative director (BytePlus LLM)",
      "properties": {
        "Node name for S&R": "BytePlusSeed",
        "cnr_id": "ComfyUI-BytePlus-ModelArk",
        "ver": "0.6.1"
      },
      "widgets_values": [
        "",
        "Seed 2.1 Turbo",
        1,
        2,
        "randomize",
        "You are an ad creative director. From the one-line brief reply in exactly this format and nothing else:\nIMAGE: <a detailed text-to-image prompt for a premium 16:9 product hero shot: the product centred, dramatic studio lighting, shallow depth of field, rich colours, no text>\nMOTION: <a short video prompt that animates that exact shot: slow cinematic push-in, subtle particles or condensation, soft light sweep, 40 words max>",
        "high",
        1,
        "disabled",
        "medium",
        1,
        false,
        604800
      ]
    },
    {
      "id": 3,
      "type": "RegexExtract",
      "pos": [
        1008,
        108
      ],
      "size": [
        340,
        262
      ],
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [
        {
          "name": "string",
          "type": "STRING",
          "widget": {
            "name": "string"
          },
          "link": 13
        }
      ],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            15,
            21
          ]
        }
      ],
      "title": "Image prompt",
      "properties": {
        "Node name for S&R": "RegexExtract"
      },
      "widgets_values": [
        "",
        "IMAGE:\\s*(.*?)\\s*MOTION:",
        "First Group",
        true,
        false,
        true,
        1
      ]
    },
    {
      "id": 4,
      "type": "RegexExtract",
      "pos": [
        1008,
        424
      ],
      "size": [
        340,
        262
      ],
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [
        {
          "name": "string",
          "type": "STRING",
          "widget": {
            "name": "string"
          },
          "link": 14
        }
      ],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            16,
            22
          ]
        }
      ],
      "title": "Motion prompt",
      "properties": {
        "Node name for S&R": "RegexExtract"
      },
      "widgets_values": [
        "",
        "MOTION:\\s*(.*)",
        "First Group",
        true,
        false,
        true,
        1
      ]
    },
    {
      "id": 5,
      "type": "BytePlusSeedream",
      "pos": [
        1444,
        108
      ],
      "size": [
        340,
        464
      ],
      "flags": {},
      "order": 5,
      "mode": 0,
      "inputs": [
        {
          "name": "prompt",
          "type": "STRING",
          "widget": {
            "name": "prompt"
          },
          "link": 15
        },
        {
          "name": "model.images.image_1",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "name": "model.reference_mask",
          "shape": 7,
          "type": "MASK",
          "link": null
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            17
          ]
        },
        {
          "name": "response",
          "type": "STRING",
          "links": null
        },
        {
          "name": "mask",
          "type": "MASK",
          "links": null
        }
      ],
      "title": "Hero shot (Seedream 5.0 Pro)",
      "properties": {
        "Node name for S&R": "BytePlusSeedream",
        "cnr_id": "ComfyUI-BytePlus-ModelArk",
        "ver": "0.6.1"
      },
      "widgets_values": [
        "",
        "seedream 5.0 pro",
        "(1.5K) 2048x1152 (16:9)",
        2048,
        2048,
        "standard",
        5,
        "randomize",
        false,
        true,
        1,
        "jpeg",
        "opaque",
        "randomize",
        "randomize"
      ]
    },
    {
      "id": 6,
      "type": "BytePlusSeedance2FirstLastFrame",
      "pos": [
        26,
        1252
      ],
      "size": [
        340,
        436
      ],
      "flags": {},
      "order": 8,
      "mode": 0,
      "inputs": [
        {
          "name": "first_frame",
          "shape": 7,
          "type": "IMAGE",
          "link": 17
        },
        {
          "name": "last_frame",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "name": "model.prompt",
          "type": "STRING",
          "widget": {
            "name": "model.prompt"
          },
          "link": 16
        }
      ],
      "outputs": [
        {
          "name": "VIDEO",
          "shape": 6,
          "type": "VIDEO",
          "links": null
        },
        {
          "name": "draft_task_id",
          "type": "STRING",
          "links": null
        },
        {
          "name": "last_frame",
          "type": "IMAGE",
          "links": null
        },
        {
          "name": "response",
          "type": "STRING",
          "links": [
            18
          ]
        }
      ],
      "title": "Animate the hero shot (Seedance 2.0)",
      "properties": {
        "Node name for S&R": "BytePlusSeedance2FirstLastFrame",
        "cnr_id": "ComfyUI-BytePlus-ModelArk",
        "ver": "0.6.1"
      },
      "widgets_values": [
        "Seedance 2.0",
        "",
        "720p",
        "adaptive",
        5,
        true,
        6,
        "randomize",
        false,
        "",
        "",
        1,
        false
      ]
    },
    {
      "id": 7,
      "type": "RegexExtract",
      "pos": [
        26,
        1742
      ],
      "size": [
        340,
        262
      ],
      "flags": {},
      "order": 9,
      "mode": 0,
      "inputs": [
        {
          "name": "string",
          "type": "STRING",
          "widget": {
            "name": "string"
          },
          "link": 18
        }
      ],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            19
          ]
        }
      ],
      "title": "Link to the video",
      "properties": {
        "Node name for S&R": "RegexExtract"
      },
      "widgets_values": [
        "",
        "https://[^\"\\s]+",
        "First Match",
        true,
        false,
        false,
        1
      ]
    },
    {
      "id": 8,
      "type": "BytePlusVideoEnhance",
      "pos": [
        462,
        1252
      ],
      "size": [
        340,
        354
      ],
      "flags": {},
      "order": 10,
      "mode": 0,
      "inputs": [
        {
          "name": "video",
          "shape": 7,
          "type": "VIDEO",
          "link": null
        },
        {
          "name": "video_url",
          "shape": 7,
          "type": "STRING",
          "widget": {
            "name": "video_url"
          },
          "link": 19
        }
      ],
      "outputs": [
        {
          "name": "VIDEO",
          "type": "VIDEO",
          "links": [
            20
          ]
        },
        {
          "name": "comparison",
          "type": "VIDEO",
          "links": null
        },
        {
          "name": "source_frame",
          "type": "IMAGE",
          "links": null
        },
        {
          "name": "enhanced_frame",
          "type": "IMAGE",
          "links": null
        },
        {
          "name": "response",
          "type": "STRING",
          "links": null
        }
      ],
      "title": "Enhance to 1080p (vCube)",
      "properties": {
        "Node name for S&R": "BytePlusVideoEnhance",
        "cnr_id": "ComfyUI-BytePlus-ModelArk",
        "ver": "0.6.1"
      },
      "widgets_values": [
        "standard",
        "aigc",
        "hd",
        "1080p",
        "source",
        "medium",
        "",
        0,
        false,
        -1
      ]
    },
    {
      "id": 9,
      "type": "SaveVideo",
      "pos": [
        462,
        1660
      ],
      "size": [
        340,
        106
      ],
      "flags": {},
      "order": 11,
      "mode": 0,
      "inputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "link": 20
        }
      ],
      "outputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "links": null
        }
      ],
      "title": "Save the ad",
      "properties": {},
      "widgets_values": [
        "BytePlus/Video/ProductAd",
        "auto",
        "auto",
        "auto"
      ]
    },
    {
      "id": 10,
      "type": "PreviewAny",
      "pos": [
        1008,
        740
      ],
      "size": [
        340,
        122
      ],
      "flags": {},
      "order": 6,
      "mode": 0,
      "inputs": [
        {
          "name": "source",
          "type": "*",
          "link": 21
        }
      ],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": null
        }
      ],
      "title": "Image prompt (written by the LLM)",
      "properties": {
        "Node name for S&R": "PreviewAny"
      },
      "widgets_values": []
    },
    {
      "id": 11,
      "type": "PreviewAny",
      "pos": [
        1008,
        916
      ],
      "size": [
        340,
        122
      ],
      "flags": {},
      "order": 7,
      "mode": 0,
      "inputs": [
        {
          "name": "source",
          "type": "*",
          "link": 22
        }
      ],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": null
        }
      ],
      "title": "Motion prompt (written by the LLM)",
      "properties": {
        "Node name for S&R": "PreviewAny"
      },
      "widgets_values": []
    },
    {
      "id": 14,
      "type": "MarkdownNote",
      "pos": [
        26,
        108
      ],
      "size": [
        520,
        360
      ],
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "How to use",
      "properties": {},
      "widgets_values": [
        "## Product ad in one click\n\nType a **one-line brief**. The LLM writes an image prompt and a motion prompt, **Seedream 5.0 Pro** makes the 16:9 hero shot, **Seedance 2.0** animates it, and **vCube** upscales and cleans the clip to 1080p.\n\nvCube takes the clip as a link (the Seedance response), so no Comfy.org login is needed. Needs a ModelArk key and a MediaKit key in Settings > BytePlus."
      ],
      "color": "#432",
      "bgcolor": "#653"
    }
  ],
  "links": [
    [
      12,
      1,
      0,
      2,
      0,
      "STRING"
    ],
    [
      13,
      2,
      0,
      3,
      0,
      "STRING"
    ],
    [
      14,
      2,
      0,
      4,
      0,
      "STRING"
    ],
    [
      15,
      3,
      0,
      5,
      0,
      "STRING"
    ],
    [
      16,
      4,
      0,
      6,
      2,
      "STRING"
    ],
    [
      17,
      5,
      0,
      6,
      0,
      "IMAGE"
    ],
    [
      18,
      6,
      3,
      7,
      0,
      "STRING"
    ],
    [
      19,
      7,
      0,
      8,
      1,
      "STRING"
    ],
    [
      20,
      8,
      0,
      9,
      0,
      "VIDEO"
    ],
    [
      21,
      3,
      0,
      10,
      0,
      "STRING"
    ],
    [
      22,
      4,
      0,
      11,
      0,
      "STRING"
    ]
  ],
  "groups": [
    {
      "id": 11,
      "title": "1 · Brief",
      "bounding": [
        0,
        0,
        572,
        1074
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 12,
      "title": "2 · Creative director (BytePlus LLM)",
      "bounding": [
        616,
        0,
        758,
        1074
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 13,
      "title": "3 · Hero shot (Seedream 5.0 Pro)",
      "bounding": [
        1418,
        0,
        392,
        1074
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 14,
      "title": "4 · Animate (Seedance 2.0)",
      "bounding": [
        0,
        1144,
        392,
        896
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 15,
      "title": "5 · Enhance and save",
      "bounding": [
        436,
        1144,
        392,
        896
      ],
      "color": "#3f789e",
      "flags": {}
    }
  ],
  "config": {},
  "extra": {
    "ds": {
      "scale": 0.572289156626506,
      "offset": [
        492.8947368421052,
        52.42105263157896
      ]
    },
    "frontendVersion": "1.53.6"
  },
  "version": 0.4
}
