{
  "config": {},
  "extra": {
    "ds": {
      "offset": [
        2479.225728096125,
        813.3333266470088
      ],
      "scale": 0.264519231352306
    },
    "frontendVersion": "1.43.6",
    "workflowRendererVersion": "LG"
  },
  "groups": [
    {
      "bounding": [
        -160,
        1110,
        840,
        1100
      ],
      "color": "#8A8",
      "flags": {},
      "font_size": 24,
      "id": 1,
      "title": "INPUT SKETCH + MOODBOARD"
    },
    {
      "bounding": [
        730,
        1110,
        1730,
        1100
      ],
      "color": "#3f789e",
      "flags": {},
      "font_size": 24,
      "id": 2,
      "title": "STYLEFRAME GENERATOR"
    },
    {
      "bounding": [
        -160,
        -70,
        840,
        1130
      ],
      "color": "#8A8",
      "flags": {},
      "font_size": 24,
      "id": 3,
      "title": "INPUT SHOT LIST"
    },
    {
      "bounding": [
        730,
        -70,
        1730,
        1130
      ],
      "color": "#3f789e",
      "flags": {},
      "font_size": 24,
      "id": 4,
      "title": "STORYBOARD GENERATOR"
    }
  ],
  "id": "91dff0a2-fa31-4347-996a-f6955b179370",
  "last_link_id": 74,
  "last_node_id": 60,
  "links": [
    [
      25,
      25,
      0,
      29,
      0,
      "STRING"
    ],
    [
      26,
      30,
      0,
      29,
      1,
      "STRING"
    ],
    [
      30,
      32,
      0,
      27,
      0,
      "IMAGE"
    ],
    [
      41,
      29,
      0,
      32,
      2,
      "STRING"
    ],
    [
      42,
      36,
      0,
      38,
      0,
      "IMAGE"
    ],
    [
      43,
      38,
      0,
      32,
      0,
      "IMAGE"
    ],
    [
      53,
      41,
      0,
      38,
      1,
      "IMAGE"
    ],
    [
      63,
      53,
      0,
      51,
      1,
      "IMAGE"
    ],
    [
      69,
      57,
      0,
      51,
      0,
      "IMAGE"
    ],
    [
      71,
      51,
      0,
      60,
      0,
      "IMAGE"
    ],
    [
      74,
      60,
      0,
      46,
      0,
      "IMAGE"
    ]
  ],
  "nodes": [
    {
      "flags": {
        "collapsed": true
      },
      "id": 25,
      "inputs": [],
      "mode": 0,
      "order": 0,
      "outputs": [
        {
          "links": [
            25
          ],
          "name": "STRING",
          "type": "STRING",
          "widget": {
            "name": "string_a"
          }
        }
      ],
      "pos": [
        770,
        130
      ],
      "properties": {
        "Run widget replace on values": false
      },
      "size": [
        620,
        410
      ],
      "title": "STYLE PROMPT",
      "type": "PrimitiveNode",
      "widgets_values": [
        "Use the first input image only as the grid, generate black and white hand-sketched storyboards within each box, with simple lines and no complicated details. Consistent style across all frames, and put the shot description underneath each frame in helvetica font. Leave the box blank if it has less then six shots. Storyboard is as following:"
      ]
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 27,
      "inputs": [
        {
          "link": 30,
          "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": 12,
      "outputs": [],
      "pos": [
        1219.99998555551,
        29.99998054400237
      ],
      "properties": {},
      "size": [
        1200,
        1000
      ],
      "type": "SaveImage",
      "widgets_values": [
        "Storyboard"
      ]
    },
    {
      "flags": {
        "collapsed": true
      },
      "id": 29,
      "inputs": [
        {
          "link": 25,
          "localized_name": "string_a",
          "name": "string_a",
          "type": "STRING",
          "widget": {
            "name": "string_a"
          }
        },
        {
          "link": 26,
          "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": [
            41
          ],
          "localized_name": "STRING",
          "name": "STRING",
          "type": "STRING"
        }
      ],
      "pos": [
        770,
        180
      ],
      "properties": {
        "Node name for S&R": "StringConcatenate"
      },
      "size": [
        380,
        220
      ],
      "type": "StringConcatenate",
      "widgets_values": [
        "Use the first input image only as the grid, generate black and white hand-sketched storyboards within each box, with simple lines and no complicated details. Consistent style across all frames, and put the shot description underneath each frame in helvetica font. Leave the box blank if it has less then six shots. Storyboard is as following:",
        "Shot1 - A spotless retro-futuristic kitchen emerges from a soft fade. Curved cabinetry, chrome appliances with rounded edges, warm cream and sage tones. A bag of Comfy coffee sits on the counter, logo facing camera.\n\nShot2 - A hand scoop whole Arabica beans from the Comfy bag into a sleek retro grinder, in an unhurried motion. The beans are rich and glossy.\n\nShot3 - Dark espresso blooms into a rounded and matte ceramic cup. Steam curls upward against the clean kitchen backdrop.\n\nShot4 - Person holds the cup in both hands, standing at a large curved kitchen window. Soft morning light spills in. Eyes close briefly in comfort.\n\nShot5 - Hard cut to a clean studio card: the Comfy coffee bag centered on a tabletop. Logo fades in last. Hold.",
        ""
      ]
    },
    {
      "bgcolor": "#353",
      "color": "#232",
      "flags": {},
      "id": 30,
      "inputs": [],
      "mode": 0,
      "order": 1,
      "outputs": [
        {
          "links": [
            26
          ],
          "name": "STRING",
          "type": "STRING",
          "widget": {
            "name": "string_b"
          }
        }
      ],
      "pos": [
        -110.00000951135621,
        19.99999482543444
      ],
      "properties": {
        "Run widget replace on values": false
      },
      "size": [
        740,
        400
      ],
      "title": "SHOT LIST",
      "type": "PrimitiveNode",
      "widgets_values": [
        "Shot1 - A spotless retro-futuristic kitchen emerges from a soft fade. Curved cabinetry, chrome appliances with rounded edges, warm cream and sage tones. A bag of Comfy coffee sits on the counter, logo facing camera.\n\nShot2 - A hand scoop whole Arabica beans from the Comfy bag into a sleek retro grinder, in an unhurried motion. The beans are rich and glossy.\n\nShot3 - Dark espresso blooms into a rounded and matte ceramic cup. Steam curls upward against the clean kitchen backdrop.\n\nShot4 - Person holds the cup in both hands, standing at a large curved kitchen window. Soft morning light spills in. Eyes close briefly in comfort.\n\nShot5 - Hard cut to a clean studio card: the Comfy coffee bag centered on a tabletop. Logo fades in last. Hold."
      ]
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 32,
      "inputs": [
        {
          "link": 43,
          "localized_name": "image",
          "name": "image",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "mask",
          "name": "mask",
          "shape": 7,
          "type": "MASK"
        },
        {
          "link": 41,
          "localized_name": "prompt",
          "name": "prompt",
          "type": "STRING",
          "widget": {
            "name": "prompt"
          }
        },
        {
          "link": null,
          "localized_name": "seed",
          "name": "seed",
          "shape": 7,
          "type": "INT",
          "widget": {
            "name": "seed"
          }
        },
        {
          "link": null,
          "localized_name": "quality",
          "name": "quality",
          "shape": 7,
          "type": "COMBO",
          "widget": {
            "name": "quality"
          }
        },
        {
          "link": null,
          "localized_name": "background",
          "name": "background",
          "shape": 7,
          "type": "COMBO",
          "widget": {
            "name": "background"
          }
        },
        {
          "link": null,
          "localized_name": "size",
          "name": "size",
          "shape": 7,
          "type": "COMBO",
          "widget": {
            "name": "size"
          }
        },
        {
          "link": null,
          "localized_name": "n",
          "name": "n",
          "shape": 7,
          "type": "INT",
          "widget": {
            "name": "n"
          }
        },
        {
          "link": null,
          "localized_name": "model",
          "name": "model",
          "shape": 7,
          "type": "COMBO",
          "widget": {
            "name": "model"
          }
        }
      ],
      "mode": 0,
      "order": 10,
      "outputs": [
        {
          "links": [
            30
          ],
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE"
        }
      ],
      "pos": [
        769.9999177834541,
        229.99999093056897
      ],
      "properties": {
        "Node name for S&R": "OpenAIGPTImage1"
      },
      "size": [
        400,
        410
      ],
      "type": "OpenAIGPTImage1",
      "widgets_values": [
        "Hand-sketched image, use input image only as style reference. generate following: Hard cut to a clean studio card: the Comfy bag centered on a cream surface. Below it — \"100% Arabica. Ethically Sourced.\" — in small, confident type. Logo fades in last. Hold.",
        1055583003,
        "randomize",
        "high",
        "auto",
        "1536x1024",
        1,
        "gpt-image-2"
      ]
    },
    {
      "flags": {
        "collapsed": true
      },
      "id": 36,
      "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": 2,
      "outputs": [
        {
          "links": [
            42
          ],
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE"
        },
        {
          "links": null,
          "localized_name": "MASK",
          "name": "MASK",
          "type": "MASK"
        }
      ],
      "pos": [
        770,
        20
      ],
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "size": [
        290,
        340
      ],
      "title": "GRID",
      "type": "LoadImage",
      "widgets_values": [
        "da136cc137510ad008f280ec70c1dde3e791c11e2adca1bda2031c94de3c9a5e.png",
        "image"
      ]
    },
    {
      "flags": {
        "collapsed": true
      },
      "id": 38,
      "inputs": [
        {
          "label": "image0",
          "link": 42,
          "localized_name": "images.image0",
          "name": "images.image0",
          "type": "IMAGE"
        },
        {
          "label": "image1",
          "link": 53,
          "localized_name": "images.image1",
          "name": "images.image1",
          "type": "IMAGE"
        },
        {
          "label": "image2",
          "link": null,
          "localized_name": "images.image2",
          "name": "images.image2",
          "shape": 7,
          "type": "IMAGE"
        }
      ],
      "mode": 0,
      "order": 8,
      "outputs": [
        {
          "links": [
            43
          ],
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE"
        }
      ],
      "pos": [
        770,
        70
      ],
      "properties": {
        "Node name for S&R": "BatchImagesNode"
      },
      "size": [
        230,
        120
      ],
      "type": "BatchImagesNode",
      "widgets_values": []
    },
    {
      "bgcolor": "#353",
      "color": "#232",
      "flags": {},
      "id": 41,
      "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": 3,
      "outputs": [
        {
          "links": [
            53
          ],
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE"
        },
        {
          "links": null,
          "localized_name": "MASK",
          "name": "MASK",
          "type": "MASK"
        }
      ],
      "pos": [
        -110.00000951135621,
        479.99992990997555
      ],
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "size": [
        740,
        550
      ],
      "title": "PRODUCT IMAGE (OPTIONAL)",
      "type": "LoadImage",
      "widgets_values": [
        "e0559b182ad69bc89247f6bd1c0328f981b1c1c61ee6d7e1144ec9447f57d49b.png",
        "image"
      ]
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 46,
      "inputs": [
        {
          "link": 74,
          "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": 13,
      "outputs": [],
      "pos": [
        1219.99998555551,
        1229.9999244573191
      ],
      "properties": {},
      "size": [
        1200,
        940
      ],
      "type": "SaveImage",
      "widgets_values": [
        "Styleframe"
      ]
    },
    {
      "flags": {
        "collapsed": false
      },
      "id": 51,
      "inputs": [
        {
          "label": "image0",
          "link": 69,
          "localized_name": "images.image0",
          "name": "images.image0",
          "type": "IMAGE"
        },
        {
          "label": "image1",
          "link": 63,
          "localized_name": "images.image1",
          "name": "images.image1",
          "type": "IMAGE"
        },
        {
          "label": "image2",
          "link": null,
          "localized_name": "images.image2",
          "name": "images.image2",
          "shape": 7,
          "type": "IMAGE"
        }
      ],
      "mode": 0,
      "order": 9,
      "outputs": [
        {
          "links": [
            71
          ],
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE"
        }
      ],
      "pos": [
        769.9999177834541,
        1229.9999244573191
      ],
      "properties": {
        "Node name for S&R": "BatchImagesNode"
      },
      "size": [
        230,
        120
      ],
      "type": "BatchImagesNode",
      "widgets_values": []
    },
    {
      "bgcolor": "#353",
      "color": "#232",
      "flags": {},
      "id": 53,
      "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": 4,
      "outputs": [
        {
          "links": [
            63
          ],
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE"
        },
        {
          "links": null,
          "localized_name": "MASK",
          "name": "MASK",
          "type": "MASK"
        }
      ],
      "pos": [
        -110.00000951135621,
        1799.999820852191
      ],
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "size": [
        740,
        370
      ],
      "title": "MOODBOARD (OPTIONAL)",
      "type": "LoadImage",
      "widgets_values": [
        "97e6af1310627fb80a1b1cb352ca08b041efaa690bcc735d3701ca3a90b6e434.png",
        "image"
      ]
    },
    {
      "bgcolor": "#353",
      "color": "#232",
      "flags": {},
      "id": 57,
      "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": 5,
      "outputs": [
        {
          "links": [
            69
          ],
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE"
        },
        {
          "links": null,
          "localized_name": "MASK",
          "name": "MASK",
          "type": "MASK"
        }
      ],
      "pos": [
        -110.00000951135621,
        1209.9999530201835
      ],
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "size": [
        740,
        540
      ],
      "title": "STORYBOARD SKETCH",
      "type": "LoadImage",
      "widgets_values": [
        "0081fda096443c316e109f795cc6327cd29437e2156699397601e21aa8673d55.png",
        "image"
      ]
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 58,
      "inputs": [],
      "mode": 0,
      "order": 6,
      "outputs": [],
      "pos": [
        -110.00000951135621,
        -339.99999426886484
      ],
      "properties": {},
      "size": [
        610,
        250
      ],
      "title": "Quick Intro",
      "type": "MarkdownNote",
      "widgets_values": [
        "**STORYBOARD GENERATOR**\n<br> Generate 6-panel storyboard sketch at once from a shot list\n\n**STYLEFRAME GENERATOR** \n<br> Take a storyboard sketch and moodboard images to generate production quality still frames for pre-visualization\n\n**Choose the method to suit your use case, and bypass all nodes in the other method**"
      ]
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 60,
      "inputs": [
        {
          "link": 71,
          "localized_name": "images",
          "name": "images",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "files",
          "name": "files",
          "shape": 7,
          "type": "GEMINI_INPUT_FILES"
        },
        {
          "link": null,
          "localized_name": "prompt",
          "name": "prompt",
          "type": "STRING",
          "widget": {
            "name": "prompt"
          }
        },
        {
          "link": null,
          "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": "aspect_ratio",
          "name": "aspect_ratio",
          "type": "COMBO",
          "widget": {
            "name": "aspect_ratio"
          }
        },
        {
          "link": null,
          "localized_name": "resolution",
          "name": "resolution",
          "type": "COMBO",
          "widget": {
            "name": "resolution"
          }
        },
        {
          "link": null,
          "localized_name": "response_modalities",
          "name": "response_modalities",
          "type": "COMBO",
          "widget": {
            "name": "response_modalities"
          }
        },
        {
          "link": null,
          "localized_name": "system_prompt",
          "name": "system_prompt",
          "shape": 7,
          "type": "STRING",
          "widget": {
            "name": "system_prompt"
          }
        }
      ],
      "mode": 0,
      "order": 11,
      "outputs": [
        {
          "links": [
            74
          ],
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE"
        },
        {
          "links": null,
          "localized_name": "STRING",
          "name": "STRING",
          "type": "STRING"
        }
      ],
      "pos": [
        769.9999177834541,
        1399.9999184851408
      ],
      "properties": {
        "Node name for S&R": "GeminiImage2Node"
      },
      "showAdvanced": false,
      "size": [
        400,
        340
      ],
      "type": "GeminiImage2Node",
      "widgets_values": [
        "Reimagine the storyboard sketch of the first image to high-end commercial production photography. And use any additional images as the aesthetic, lighting, and color grade inspirations.",
        "gemini-3-pro-image-preview",
        367674127099842,
        "randomize",
        "auto",
        "1K",
        "IMAGE+TEXT",
        "You are an expert image-generation engine. You must ALWAYS produce an image.\nInterpret all user input—regardless of format, intent, or abstraction—as literal visual directives for image composition.\nIf a prompt is conversational or lacks specific visual details, you must creatively invent a concrete visual scenario that depicts the concept.\nPrioritize generating the visual representation above any text, formatting, or conversational requests."
      ]
    }
  ],
  "revision": 0,
  "version": 0.4
}