{
  "id": "SibbQCK1rEIJg81b",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "\ud83d\udca5 AI Image to Professional Video Workflow using NanoBanana Ultra & Kling AI",
  "tags": [],
  "nodes": [
    {
      "id": "f291c4d2-98cc-407c-a6c9-ccb2850acd2a",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -912,
        -16
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "357a1f37-b787-43d6-9d34-c70178c2f279",
      "name": "Get url image",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -528,
        -16
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "=<__PLACEHOLDER_VALUE__Sheet Tab Name__>"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "=<__PLACEHOLDER_VALUE__Google Sheets Document ID__>"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "d501b6a6-078e-465f-9571-800ee158a5ed",
      "name": "Download image",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -320,
        -16
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.image_nanobanana.match(/[?&]id=([a-zA-Z0-9_-]+)/)[1] }}"
        },
        "options": {
          "fileName": "image.png",
          "binaryPropertyName": "data"
        },
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "71fa89c4-dda9-46c4-a67f-1d433ad8353f",
      "name": "Edit Fields : contactSheetPrompt",
      "type": "n8n-nodes-base.set",
      "position": [
        224,
        -16
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "4482e8fa-9016-40e3-aef7-9da999e85f7d",
              "name": "contactSheetPrompt",
              "type": "string",
              "value": "Analyze the input image and silently inventory all fashion-critical details: the subject(s), exact wardrobe pieces, materials, colors, textures, accessories, hair, makeup, body proportions, environment, set geometry, light direction, and shadow quality. All wardrobe, styling, hair, makeup, lighting, environment, and color grade must remain 100% unchanged across all frames. Do not add or remove anything. Do not reinterpret materials or colors. Do not output any reasoning. Perfectly replicate the exact facial features of the model.  Face & Identity Preservation Rule Do NOT modify the face or head of the person in the original image. The subject must remain the exact same person, with no AI alteration to facial features, identity, proportions, or appearance. No face swap, no enhancement, no identity change.  Your visible output must be: One 2\u00d73 contact sheet image (6 frames). Then a keyframe breakdown for each frame.  Each frame must represent a resting point after a dramatic camera move \u2014 only describe the final camera position and what the subject is doing, never the motion itself. The six frames must be spatially dynamic, non-linear, and visually distinct.  Required 6-Frame Shot List  High-Fashion Beauty Portrait (Close, Editorial, Intimate) Camera positioned very close to the subject's face, slightly above or slightly below eye level, using an elegant offset angle that enhances bone structure and highlights key wardrobe elements near the neckline. Shallow depth of field, flawless texture rendering, and a sculptural fashion-forward composition.  High-Angle Three-Quarter Frame Camera positioned overhead but off-center, capturing the subject from a diagonal downward angle. This frame should create strong shape abstraction and reveal wardrobe details from above.  Low-Angle Oblique Full-Body Frame Camera positioned low to the ground and angled obliquely toward the subject. This elongates the silhouette, emphasizes footwear, and creates a dramatic perspective distinct from Frames 1 and 2.  Side-On Compression Frame (Long Lens) Camera placed far to one side of the subject, using a tighter focal length to compress space. The subject appears in clean profile or near-profile, showcasing garment structure in a flattened, editorial manner.  Intimate Close Portrait From an Unexpected Height Camera positioned very close to the subject's face (or upper torso) but slightly above or below eye level. The angle should feel fashion-editorial, not conventional \u2014 offset, elegant, and expressive.  Extreme Detail Frame From a Non-Intuitive Angle Camera positioned extremely close to a wardrobe detail, accessory, or texture, but from an unusual spatial direction (e.g., from below, from behind, from the side of a neckline). This must be a striking, abstract, editorial detail frame.  Continuity & Technical Requirements  Maintain perfect wardrobe fidelity in every frame: exact garment type, silhouette, material, color, texture, stitching, accessories, closures, jewelry, shoes, hair, and makeup. Environment, textures, and lighting must remain consistent.  Depth of field shifts naturally with focal length (deep for distant shots, shallow for close/detail shots). Photoreal textures and physically plausible light behavior required. Frames must feel like different camera placements within the same scene, not different scenes.  All keyframes must share the exact same dimensions and 3:2 aspect ratio, and exactly 6 keyframes must be produced.  Maintain the exact visual style in all keyframes: shot on Fuji Velvia film with a hard flash, light concentrated on the subject and fading toward the edges. The image is overexposed, shows significant film grain, is oversaturated, with shiny (almost oily) skin and harsh white reflections on glasses frames.  Output Format  A) One mandatory 2\u00d73 contact sheet image (6 frames)"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "b71d20e9-da60-40d8-99af-86ce78834d78",
      "name": "NanoBanana ULTRA: Contact Sheet",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        512,
        -16
      ],
      "parameters": {
        "url": "https://api.atlascloud.ai/api/v1/model/generateImage",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"model\": \"google/nano-banana-pro/edit-ultra\",\n  \"aspect_ratio\": \"3:2\",\n  \"enable_base64_output\": false,\n  \"enable_sync_mode\": false,\n  \"images\": [\"{{ $('Build Public Image URL nano').item.json.data.url.replace(/tmpfiles\\.org\\//, 'tmpfiles.org/dl/') }}\"],\n  \"output_format\": \"png\",\n  \"prompt\": \"{{ $json.contactSheetPrompt }}\",\n  \"resolution\": \"4k\"\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer <__PLACEHOLDER_VALUE__atlascloud Key__>"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "0240067b-501c-48c9-ab7c-c7d1bf5a0382",
      "name": "Build Public Image URL nano",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -112,
        -16
      ],
      "parameters": {
        "url": "https://tmpfiles.org/api/v1/upload",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "6b5cf4a3-8454-4645-a461-36f57257d606",
      "name": "Wait - nanobanana",
      "type": "n8n-nodes-base.wait",
      "position": [
        816,
        -16
      ],
      "parameters": {
        "unit": "minutes",
        "amount": 4
      },
      "typeVersion": 1.1
    },
    {
      "id": "1cc0fb1c-c007-4e2e-9042-4d4cbc1369fb",
      "name": "download image nano",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1024,
        -16
      ],
      "parameters": {
        "url": "=https://api.atlascloud.ai/api/v1/model/prediction/{{ $json.data.id }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer <__PLACEHOLDER_VALUE__atlascloud Key__>"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "77dacabe-acf9-44a9-be1a-6a58c284b232",
      "name": "Download image PNG (binary)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1232,
        -16
      ],
      "parameters": {
        "url": "={{ $json.data.outputs[0] }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "4d115c05-ec4a-4dcc-8915-7de534cb356a",
      "name": "Upload file to google drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1472,
        -16
      ],
      "parameters": {
        "name": "={{ $json.data.id }}",
        "driveId": {
          "__rl": true,
          "mode": "id",
          "value": "=<__PLACEHOLDER_VALUE__Google DRIVE Document ID___>"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "=<__PLACEHOLDER_VALUE__Google DRIVE Document ID___>"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "7c2651a7-8a06-4ffe-b72b-5f54269ec514",
      "name": "Update with new image",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1680,
        -16
      ],
      "parameters": {
        "columns": {
          "value": {
            "status": "contact_done",
            "image_atlas": "={{ $('download image nano').item.json.data.outputs[0] }}",
            "image_nanobanana": "={{ $('Get url image').item.json.image_nanobanana }}",
            "image_contactsheet": "={{ $json.webContentLink }}"
          },
          "schema": [
            {
              "id": "status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "image_1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "image_1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "image_2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "image_2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "image_3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "image_3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description_all",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "description_all",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "image_nanobanana",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "image_nanobanana",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "image_contactsheet",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "image_contactsheet",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "image_atlas",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "image_atlas",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "new_image_1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "new_image_1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "new_image_2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "new_image_2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "new_image_3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "new_image_3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "new_image_4",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "new_image_4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "new_image_5",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "new_image_5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "new_image_6",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "new_image_6",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "video_1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "video_1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "video_2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "video_2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "video_3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "video_3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "video_4",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "video_4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "video_5",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "video_5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "video_6",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "video_6",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Final video",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Final video",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "image_nanobanana"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "=<__PLACEHOLDER_VALUE__Sheet Tab Name__>"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "=<__PLACEHOLDER_VALUE__Google Sheets Document ID__>"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "3e6d7869-ca3d-4b01-97ee-ce3119f52fa3",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1024,
        -176
      ],
      "parameters": {
        "color": 7,
        "width": 2960,
        "height": 416,
        "content": "## Step 1 - Create 2\u00d73 Contact Sheet Image (Mandatory)"
      },
      "typeVersion": 1
    },
    {
      "id": "cbfe09a0-a411-4fdc-94c1-fd31176eaae0",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -928,
        624
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "6b182c33-a945-4f25-a8e4-5ac0f2aae4e0",
      "name": "Get row(s) in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -736,
        624
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "=<__PLACEHOLDER_VALUE__Sheet Tab Name__>"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "=<__PLACEHOLDER_VALUE__Google Sheets Document ID__>"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "81d52e6d-21b2-416f-af21-c3d0b2d6ca6d",
      "name": "Set Image URL",
      "type": "n8n-nodes-base.set",
      "position": [
        -528,
        624
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "83a44e17-b358-49fb-a7a6-2bdd99ebc099",
              "name": "image_url",
              "type": "string",
              "value": "={{ $json.image_contactsheet }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "73b0a879-4c2f-4049-a81e-34add74bc298",
      "name": "Download Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -320,
        624
      ],
      "parameters": {
        "url": "={{ $json.image_url }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "c17c4c4a-f661-495d-a8ed-1138f77600e6",
      "name": "Edit Image",
      "type": "n8n-nodes-base.editImage",
      "position": [
        -112,
        624
      ],
      "parameters": {
        "operation": "information"
      },
      "typeVersion": 1
    },
    {
      "id": "b03d8ca1-46ea-4604-a75f-7518cbc97c8b",
      "name": "Crop Top Left",
      "type": "n8n-nodes-base.editImage",
      "position": [
        224,
        336
      ],
      "parameters": {
        "width": "={{ Math.floor($json.size.width / 3) }}",
        "height": "={{ Math.floor($json.size.height / 2) }}",
        "options": {},
        "operation": "crop"
      },
      "typeVersion": 1
    },
    {
      "id": "9ba35700-3595-4b58-ae7d-808ec3041998",
      "name": "Upload top left",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        512,
        336
      ],
      "parameters": {
        "url": "https://tmpfiles.org/api/v1/upload",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "15b51308-5d00-4d1b-bf0d-6d2d31d76319",
      "name": "Crop Top Center",
      "type": "n8n-nodes-base.editImage",
      "position": [
        224,
        544
      ],
      "parameters": {
        "width": "={{ Math.floor($json.size.width / 3) }}",
        "height": "={{ Math.floor($json.size.height / 2) }}",
        "options": {},
        "operation": "crop",
        "positionX": "={{ Math.floor($json.size.width / 3) }}"
      },
      "typeVersion": 1
    },
    {
      "id": "bced3d3c-a2a3-475d-be49-90fa0f2d43d3",
      "name": "Upload top center",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        512,
        544
      ],
      "parameters": {
        "url": "https://tmpfiles.org/api/v1/upload",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "37cf5273-e900-4840-b0d4-daec57c93a60",
      "name": "Crop Top Right",
      "type": "n8n-nodes-base.editImage",
      "position": [
        224,
        752
      ],
      "parameters": {
        "width": "={{ Math.floor($json.size.width / 3) }}",
        "height": "={{ Math.floor($json.size.height / 2) }}",
        "options": {},
        "operation": "crop",
        "positionX": "={{ Math.floor($json.size.width * 2 / 3) }}"
      },
      "typeVersion": 1
    },
    {
      "id": "ee03cbaa-13d2-4d12-89ca-08fb0357197c",
      "name": "Upload top right",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        512,
        752
      ],
      "parameters": {
        "url": "https://tmpfiles.org/api/v1/upload",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "51542a4d-68b9-4fae-8351-346397e18a55",
      "name": "Crop Bottom Left",
      "type": "n8n-nodes-base.editImage",
      "position": [
        224,
        960
      ],
      "parameters": {
        "width": "={{ Math.floor($json.size.width / 3) }}",
        "height": "={{ Math.floor($json.size.height / 2) }}",
        "options": {},
        "operation": "crop",
        "positionY": "={{ Math.floor($json.size.height / 2) }}"
      },
      "typeVersion": 1
    },
    {
      "id": "5d7b2a6e-5bfb-4ce5-bb67-e3db8b4b86f0",
      "name": "Upload Bottom left",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        512,
        960
      ],
      "parameters": {
        "url": "https://tmpfiles.org/api/v1/upload",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "588b7939-9705-447f-b8c3-56d3513ea14d",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        816,
        416
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3.2
    },
    {
      "id": "883d0d36-6047-4eef-9d6a-caca913c7fc9",
      "name": "Kling Generation",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1024,
        416
      ],
      "parameters": {
        "url": "https://api.atlascloud.ai/api/v1/model/generateVideo",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "model",
              "value": "kwaivgi/kling-v2.1-i2v-pro/start-end-frame"
            },
            {
              "name": "duration",
              "value": "5"
            },
            {
              "name": "end_image",
              "value": "={{ $('Upload top center').item.json.data.url.replace(/tmpfiles\\.org\\//, 'tmpfiles.org/dl/') }}"
            },
            {
              "name": "guidance_scale",
              "value": "0.5"
            },
            {
              "name": "image",
              "value": "={{ $('Upload top left').item.json.data.url.replace(/tmpfiles\\.org\\//, 'tmpfiles.org/dl/') }}"
            },
            {
              "name": "negative_prompt",
              "value": "example_value"
            },
            {
              "name": "prompt",
              "value": "=The camera very slowly and smoothly lowers on a boom. The subject barely moves, and is extremely deliberate and thoughtful in movement"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer <__PLACEHOLDER_VALUE__atlascloud Key__>"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "11b0a005-4a8f-4a3d-ad56-0555d13b6548",
      "name": "Wait video",
      "type": "n8n-nodes-base.wait",
      "position": [
        1232,
        416
      ],
      "parameters": {
        "unit": "minutes",
        "amount": 4
      },
      "typeVersion": 1.1
    },
    {
      "id": "80d8076c-4b5a-4c87-bb5c-9a7239d1eb9f",
      "name": "Merge1",
      "type": "n8n-nodes-base.merge",
      "position": [
        816,
        656
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3.2
    },
    {
      "id": "ebf3a7fc-3769-42ce-ae40-05cf73a5f7e6",
      "name": "Kling Generation1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1024,
        656
      ],
      "parameters": {
        "url": "https://api.atlascloud.ai/api/v1/model/generateVideo",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "model",
              "value": "kwaivgi/kling-v2.1-i2v-pro/start-end-frame"
            },
            {
              "name": "duration",
              "value": "5"
            },
            {
              "name": "end_image",
              "value": "={{ $('Upload top right').item.json.data.url.replace(/tmpfiles\\.org\\//, 'tmpfiles.org/dl/') }}"
            },
            {
              "name": "guidance_scale",
              "value": "0.5"
            },
            {
              "name": "image",
              "value": "={{ $('Upload top center').item.json.data.url.replace(/tmpfiles\\.org\\//, 'tmpfiles.org/dl/') }}"
            },
            {
              "name": "negative_prompt",
              "value": "example_value"
            },
            {
              "name": "prompt",
              "value": "=The camera very slowly and smoothly lowers on a boom. The subject barely moves, and is extremely deliberate and thoughtful in movement"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer <__PLACEHOLDER_VALUE__atlascloud Key__>"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "206008ac-acbf-463f-b671-1864e93d1b2d",
      "name": "Wait video1",
      "type": "n8n-nodes-base.wait",
      "position": [
        1232,
        656
      ],
      "parameters": {
        "unit": "minutes",
        "amount": 4
      },
      "typeVersion": 1.1
    },
    {
      "id": "09e0d7a0-209b-40ed-a25f-ec4fa7852cc2",
      "name": "Merge2",
      "type": "n8n-nodes-base.merge",
      "position": [
        816,
        880
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3.2
    },
    {
      "id": "8f9c52e7-965d-462a-9a2b-48dcbc1b2a39",
      "name": "Kling Generation2",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1024,
        880
      ],
      "parameters": {
        "url": "https://api.atlascloud.ai/api/v1/model/generateVideo",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "model",
              "value": "kwaivgi/kling-v2.1-i2v-pro/start-end-frame"
            },
            {
              "name": "duration",
              "value": "5"
            },
            {
              "name": "end_image",
              "value": "={{ $('Upload Bottom left').item.json.data.url.replace(/tmpfiles\\.org\\//, 'tmpfiles.org/dl/') }}"
            },
            {
              "name": "guidance_scale",
              "value": "0.5"
            },
            {
              "name": "image",
              "value": "={{ $('Upload top right').item.json.data.url.replace(/tmpfiles\\.org\\//, 'tmpfiles.org/dl/') }}"
            },
            {
              "name": "negative_prompt",
              "value": "example_value"
            },
            {
              "name": "prompt",
              "value": "=The camera very slowly and smoothly lowers on a boom. The subject barely moves, and is extremely deliberate and thoughtful in movement"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer <__PLACEHOLDER_VALUE__atlascloud Key__>"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "9c52217f-45b8-4251-8c41-026125f3d01e",
      "name": "Wait video2",
      "type": "n8n-nodes-base.wait",
      "position": [
        1232,
        880
      ],
      "parameters": {
        "unit": "minutes",
        "amount": 4
      },
      "typeVersion": 1.1
    },
    {
      "id": "657f5c0d-6c1c-47a5-8d7e-743beab06050",
      "name": "Merge3",
      "type": "n8n-nodes-base.merge",
      "position": [
        1696,
        640
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition",
        "numberInputs": 3
      },
      "typeVersion": 3.2
    },
    {
      "id": "25913fc6-0257-43c6-9290-c5c194d51a84",
      "name": "Merge 3 Videos",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -928,
        944
      ],
      "parameters": {
        "url": "https://fal.run/fal-ai/ffmpeg-api/merge-videos",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"video_urls\": [\n    \"{{ $('download video kling').item.json.data.outputs[0] }}\",\n    \"{{ $('download video kling1').item.json.data.outputs[0] }}\",\n    \"{{ $('download video kling2').item.json.data.outputs[0] }}\"\n  ],\n  \"output\": {\n    \"format\": \"mp4\"\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "key <__PLACEHOLDER_VALUE__fal Key__>"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "797659c9-4f7c-4d73-ac63-d8e710d007a1",
      "name": "download video kling",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1456,
        416
      ],
      "parameters": {
        "url": "=https://api.atlascloud.ai/api/v1/model/prediction/{{ $json.data.id }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer <__PLACEHOLDER_VALUE__atlascloud Key__>"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "86ab7cae-06c3-4f24-977e-43eab6ce9671",
      "name": "download video kling1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1456,
        656
      ],
      "parameters": {
        "url": "=https://api.atlascloud.ai/api/v1/model/prediction/{{ $json.data.id }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer <__PLACEHOLDER_VALUE__atlascloud Key__>"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "4d69fcfc-2790-4c7a-b658-97548d67ca17",
      "name": "download video kling2",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1456,
        880
      ],
      "parameters": {
        "url": "=https://api.atlascloud.ai/api/v1/model/prediction/{{ $json.data.id }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer <__PLACEHOLDER_VALUE__atlascloud Key__>"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "abd342a3-4f4a-46a3-b520-62359cbca015",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        -720,
        944
      ],
      "parameters": {
        "unit": "minutes",
        "amount": 1
      },
      "typeVersion": 1.1
    },
    {
      "id": "4ffb0300-e607-4a27-a54a-bab5908913dd",
      "name": "Update row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -512,
        944
      ],
      "parameters": {
        "columns": {
          "value": {
            "status": "video_done",
            "Final video": "={{ $('Merge 3 Videos').item.json.video.url }}",
            "image_atlas": "={{ $('Get row(s) in sheet').first().json.image_atlas }}"
          },
          "schema": [
            {
              "id": "status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "image_1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "image_1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "image_2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "image_2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "image_3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "image_3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description_all",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "description_all",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "image_nanobanana",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "image_nanobanana",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "image_contactsheet",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "image_contactsheet",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "image_atlas",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "image_atlas",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "new_image_1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "new_image_1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "new_image_2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "new_image_2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "new_image_3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "new_image_3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "new_image_4",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "new_image_4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "new_image_5",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "new_image_5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "new_image_6",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "new_image_6",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "video_1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "video_1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "video_2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "video_2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "video_3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "video_3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "video_4",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "video_4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "video_5",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "video_5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "video_6",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "video_6",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Final video",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Final video",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "image_atlas"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "=<__PLACEHOLDER_VALUE__Sheet Tab Name__>"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "=<__PLACEHOLDER_VALUE__Google Sheets Document ID__>"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "8dfbdc0c-aca3-4e8b-bbee-0a4ceb7a17e5",
      "name": "Upload media",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -320,
        944
      ],
      "parameters": {
        "mediaUrl": "={{ $json['Final video'] }}",
        "resource": "media"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "5239794e-003a-4e71-a93a-745291a49e64",
      "name": "Create post",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -96,
        944
      ],
      "parameters": {
        "options": {},
        "platform": "youtube",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "8047",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/8047",
          "cachedResultName": "DR FIRASS (Dr. Firas)"
        },
        "postContentText": "test",
        "postContentMediaUrls": "={{ $json.url }}",
        "postCreateYoutubeOptionTitle": "test",
        "postCreateYoutubeOptionPrivacyStatus": "private",
        "postCreateYoutubeOptionShouldNotifySubscribers": false
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "cedc947d-e7dc-46bb-b9e3-6349f0694088",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1024,
        288
      ],
      "parameters": {
        "color": 7,
        "width": 2960,
        "height": 896,
        "content": "## Step 2 \u2013 Video Creation & Publishing (Kling + Blotato)\n\n\n\n#  \ud83d\udcd8 Documentation  \n- Access detailed setup instructions, API config, platform connection guides, and workflow customization tips:\n\ud83d\udcce [Open the full documentation on Notion](https://automatisation.notion.site/Turn-Any-Image-into-a-Cinematic-Video-with-NanoBanana-Ultra-Kling-AI-2ea3d6550fd9809c9321e897b9763a28?pvs=73)\n\n\n-  Credential name: `Google Sheets account` \n\ud83d\udcce **[Copy my Google Sheets ](https://docs.google.com/spreadsheets/d/130hio-ntnPCZbGzmp1R3ROHXSpKQBUC0I_iM0uQPPi4/copy)** "
      },
      "typeVersion": 1
    },
    {
      "id": "eda71246-1bc7-4330-b5b4-d7a0dc36404d",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1792,
        -176
      ],
      "parameters": {
        "width": 720,
        "height": 1360,
        "content": "## \ud83d\ude80 AI Image Generation Workflow\n\n## How it works\n\nThis workflow turns a single Google Drive image into a professional multi-shot video using **NanoBanana Ultra + Kling**, then publishes it via **Blotato**.\n\n**Step 1 \u2014 Contact Sheet (NanoBanana Ultra)**\n1. Reads a row from Google Sheets where `status = nanobanana_done`.\n2. Downloads the source image from Google Drive.\n3. Uploads the image to tmpfiles to get a public URL (then formats it to `/dl/` for direct access).\n4. Calls ****[AtlasCloud](https://www.atlascloud.ai?ref=8QKPJE)** \u2192 NanoBanana Ultra (edit-ultra)** to generate a **2\u00d73 contact sheet (6 frames)**.\n5. Waits, then polls the prediction endpoint to fetch the generated image.\n6. Uploads the contact sheet to Google Drive and updates the sheet (`status = contact_done`, saves `image_contactsheet` + `image_atlas`).\n\n**Step 2 \u2014 Video (Kling) + Merge + Publish (**[Blotato](https://blotato.com/?ref=firas)**)**\n1. Reads a row where `status = contact_done` and downloads the contact sheet image.\n2. Crops the contact sheet into individual frames and uploads the frames to tmpfiles (public URLs).\n3. Generates 3 short cinematic clips with **AtlasCloud \u2192 Kling start/end frame** (frame-to-frame video).\n4. Merges the 3 videos into one final MP4 (FFmpeg merge API).\n5. Updates Google Sheets (`status = video_done`, writes `Final video`).\n6. Uploads the final MP4 to Blotato and creates a YouTube post.\n\n---\n\n## Setup steps\n\n1. **Google Sheets**\n   - Create/copy your sheet and ensure it contains columns like:\n     - `status`, `image_nanobanana`, `image_contactsheet`, `image_atlas`, `Final video`\n   - Workflow uses status transitions:\n     - `nanobanana_done` \u2192 `contact_done` \u2192 `video_done`\n\n2. **Google Drive**\n   - Ensure your source images are accessible via a Drive link like:\n     - `https://drive.google.com/uc?id=FILE_ID&export=download`\n   - Configure the destination folder for uploaded outputs (contact sheet).\n\n3. **Credentials in n8n**\n   - Connect:\n     - **Google Sheets account**\n     - **Google Drive account**\n     - **Blotato account**\n   - Add your **AtlasCloud API key** in the HTTP Request headers:\n     - `Authorization: Bearer <ATLAS_API_KEY>`\n\n4. **Public hosting (tmpfiles)**\n   - Upload binary images to:\n     - `https://tmpfiles.org/api/v1/upload`\n   - Convert returned URLs to direct-download format by inserting `/dl/`:\n     - `http://tmpfiles.org/XXXX/image.png` \u2192 `http://tmpfiles.org/dl/XXXX/image.png`\n\n5. **Run**\n   - Run Step 1 manually (or keep it scheduled) to generate contact sheets.\n   - Step 2 runs on schedule to generate video + publish.\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "cb6d4e3a-fea9-46cd-8265-2efe23af4d22",
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Update row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Kling Generation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge1": {
      "main": [
        [
          {
            "node": "Kling Generation1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge2": {
      "main": [
        [
          {
            "node": "Kling Generation2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge3": {
      "main": [
        [
          {
            "node": "Merge 3 Videos",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Image": {
      "main": [
        [
          {
            "node": "Crop Top Left",
            "type": "main",
            "index": 0
          },
          {
            "node": "Crop Top Center",
            "type": "main",
            "index": 0
          },
          {
            "node": "Crop Top Right",
            "type": "main",
            "index": 0
          },
          {
            "node": "Crop Bottom Left",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait video": {
      "main": [
        [
          {
            "node": "download video kling",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait video1": {
      "main": [
        [
          {
            "node": "download video kling1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait video2": {
      "main": [
        [
          {
            "node": "download video kling2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload media": {
      "main": [
        [
          {
            "node": "Create post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Crop Top Left": {
      "main": [
        [
          {
            "node": "Upload top left",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get url image": {
      "main": [
        [
          {
            "node": "Download image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Image URL": {
      "main": [
        [
          {
            "node": "Download Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Crop Top Right": {
      "main": [
        [
          {
            "node": "Upload top right",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Image": {
      "main": [
        [
          {
            "node": "Edit Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download image": {
      "main": [
        [
          {
            "node": "Build Public Image URL nano",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge 3 Videos": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Crop Top Center": {
      "main": [
        [
          {
            "node": "Upload top center",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload top left": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Crop Bottom Left": {
      "main": [
        [
          {
            "node": "Upload Bottom left",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Kling Generation": {
      "main": [
        [
          {
            "node": "Wait video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload top right": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          },
          {
            "node": "Merge2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Kling Generation1": {
      "main": [
        [
          {
            "node": "Wait video1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Kling Generation2": {
      "main": [
        [
          {
            "node": "Wait video2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload top center": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          },
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait - nanobanana": {
      "main": [
        [
          {
            "node": "download image nano",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload Bottom left": {
      "main": [
        [
          {
            "node": "Merge2",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Get row(s) in sheet": {
      "main": [
        [
          {
            "node": "Set Image URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update row in sheet": {
      "main": [
        [
          {
            "node": "Upload media",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "download image nano": {
      "main": [
        [
          {
            "node": "Download image PNG (binary)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "download video kling": {
      "main": [
        [
          {
            "node": "Merge3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "download video kling1": {
      "main": [
        [
          {
            "node": "Merge3",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "download video kling2": {
      "main": [
        [
          {
            "node": "Merge3",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Build Public Image URL nano": {
      "main": [
        [
          {
            "node": "Edit Fields : contactSheetPrompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download image PNG (binary)": {
      "main": [
        [
          {
            "node": "Upload file to google drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload file to google drive": {
      "main": [
        [
          {
            "node": "Update with new image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "NanoBanana ULTRA: Contact Sheet": {
      "main": [
        [
          {
            "node": "Wait - nanobanana",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields : contactSheetPrompt": {
      "main": [
        [
          {
            "node": "NanoBanana ULTRA: Contact Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Get url image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}