n8n Automation: Image to Six-Shot Contact Sheet and Cinematic Video Publishing
Input Google Sheets image link → NanoBanana Ultra generates 2×3 contact sheet → Kling frame-to-frame video in 3 clips → FFmpeg merge → Blotato auto-publishes to YouTube
- Who
- Content creators, marketers, or automation builders already familiar with n8n and Google Workspace
- You get
- Automatically produce a six-frame contact sheet, three AI video segments, a merged final video, and publish to YouTube from a single image
- You need
- n8n · google-sheets · google-drive
Constraints
Prerequisites: n8n Cloud or self-hosted instance; Google Sheets and Google Drive OAuth2 credentials; Blotato account; AtlasCloud API key (NanoBanana + Kling); Fal API key (FFmpeg merge); tmpfiles public hosting (no extra credentials needed). Known costs: AtlasCloud pay-per-call, Kling video generation billed by second/resolution, Fal FFmpeg API pay-per-call, Blotato billed by plan. Check each platform's pricing page for current rates. Boundaries and limits: Template uses 3:2 aspect ratio and 4K resolution; Kling segments are 5 seconds each, 3 segments total; negative_prompt is currently placeholder example_value and must be replaced; final video is published as YouTube private via Blotato.
What they did
Template author drfiras built a 45-node n8n automation. Phase one expands a single image into a 2×3 six-frame fashion contact sheet via NanoBanana Ultra, preserving identity, garment fidelity, and lighting. Phase two crops the sheet into frame pairs, generates three 5-second cinematic clips via Kling AI start-end-frame, merges them into a final MP4 via Fal FFmpeg API, and auto-publishes to YouTube via Blotato. The entire flow is driven by Google Sheets status columns (nanobanana_done → contact_done → video_done) and can be triggered manually or on schedule.
How it went
Author-reported outcome (author_report): from one image you get a high-end editorial contact sheet, multiple AI-generated cinematic clips, one merged professional video, all automatically uploaded and published without manual editing or timeline work. Actual results depend on AtlasCloud and Kling generation quality, source image resolution, and prompt tuning.
Worth knowing
1) This site has not tested the template; reproduction=not_tested. 2) The Kling negative_prompt is placeholder example_value and must be replaced before production use. 3) Blotato publish node is configured for YouTube private with title/body set to test; update for production. 4) Only 4 of 6 frames are cropped into 3 adjacent pairs; add more crop and Kling branches for 6 segments. 5) AtlasCloud, Kling, Fal, and Blotato are third-party paid APIs; costs vary by call volume and resolution. 6) tmpfiles is public temporary hosting; be aware of privacy risks with sensitive images. 7) Contact sheet generation requires a 4-minute wait and poll; video generation also requires waiting, making total runtime long and unsuitable for real-time use.
n8n workflow template
Structure checked · Not run-testedUse “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.
Setup and test checklist
Credentials to connect
- Get url image node: connect Google Sheets OAuth2 credentials.
- Download image node: connect Google Drive OAuth2 credentials.
- Upload file to google drive node: connect Google Drive OAuth2 credentials.
- Update with new image node: connect Google Sheets OAuth2 credentials.
- Get row(s) in sheet node: connect Google Sheets OAuth2 credentials.
- Update row in sheet node: connect Google Sheets OAuth2 credentials.
- Upload media node: connect blotatoApi credentials.
- Create post node: connect blotatoApi credentials.
- Replace __UKH_BEARER_4__ with your real secret/token (path /nodes/4/parameters/headerParameters/parameters/0/value; literal auth header).
- Replace __UKH_BEARER_7__ with your real secret/token (path /nodes/7/parameters/headerParameters/parameters/0/value; literal auth header).
- Replace __UKH_BEARER_26__ with your real secret/token (path /nodes/26/parameters/headerParameters/parameters/0/value; literal auth header).
- Replace __UKH_BEARER_29__ with your real secret/token (path /nodes/29/parameters/headerParameters/parameters/0/value; literal auth header).
- Replace __UKH_BEARER_32__ with your real secret/token (path /nodes/32/parameters/headerParameters/parameters/0/value; literal auth header).
- Replace __UKH_BEARER_35__ with your real secret/token (path /nodes/35/parameters/headerParameters/parameters/0/value; literal auth header).
- Replace __UKH_BEARER_36__ with your real secret/token (path /nodes/36/parameters/headerParameters/parameters/0/value; literal auth header).
- Replace __UKH_BEARER_37__ with your real secret/token (path /nodes/37/parameters/headerParameters/parameters/0/value; literal auth header).
- Replace __UKH_BEARER_38__ with your real secret/token (path /nodes/38/parameters/headerParameters/parameters/0/value; literal auth header).
Configuration to replace
- Source template is n8n public workflow #12769 (~45 nodes). Keep inactive after import; verify triggers, expressions and external API endpoints.
- Sticky-note guidance is informational; replace placeholders with your own accounts, sheet schemas or channel IDs.
Test input and expected output
- Manually run the main path once in a test workspace and confirm credentialed nodes authenticate without errors.
- Drive one synthetic/redacted sample through and check output fields and downstream writes before enabling in production.
Template changes
- Author credential bindings, webhookId and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
- No business-logic edits; verify keys, quotas and privacy compliance before use. 9 literal secret value(s) replaced with __UKH_…__ placeholders.
Template retrieved: 2026-10-24
Steps
Prepare spreadsheet and credentials
Create or copy the Google Sheets template with columns: status, image_nanobanana, image_contactsheet, image_atlas, Final video. In n8n, connect Google Sheets OAuth2, Google Drive OAuth2, and Blotato accounts. Obtain an AtlasCloud API key and a Fal API key.
Generate 2×3 contact sheet (NanoBanana Ultra)
Trigger the workflow manually or via Schedule Trigger. n8n reads a row with status=nanobanana_done from Google Sheets, downloads the image from Google Drive, uploads it to tmpfiles for a public URL (replace tmpfiles.org/ with tmpfiles.org/dl/ in the returned URL for direct access). Sets contactSheetPrompt in the Edit Fields node (see prompt below), then calls AtlasCloud NanoBanana Ultra (google/nano-banana-pro/edit-ultra) to generate a 2×3 contact sheet. Waits 4 minutes, polls the prediction endpoint, downloads the PNG, uploads back to Google Drive, and updates the sheet to status=contact_done with image_contactsheet and image_atlas.
Execution prompt · Source text。Edit Fields : contactSheetPrompt node value field
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×3 contact sheet image (6 frames). Then a keyframe breakdown for each frame. Each frame must represent a resting point after a dramatic camera move — 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 — 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×3 contact sheet image (6 frames)
Crop contact sheet and generate video clips (Kling)
When status=contact_done, the Schedule Trigger fires phase two. Download the contact sheet, use the Edit Image node to get dimensions, then crop into 4 regions (Top Left, Top Center, Top Right, Bottom Left) each sized width/3 × height/2, corresponding to 4 of the 6 frames (the flow uses 3 adjacent frame pairs). Upload cropped frames to tmpfiles for public URLs. Call AtlasCloud Kling start-end-frame (kwaivgi/kling-v2.1-i2v-pro/start-end-frame) to generate three 5-second cinematic clips, each using adjacent frames as start and end images. Wait 4 minutes after each call before polling for results.
Execution prompt · Source text。Kling Generation / Kling Generation1 / Kling Generation2 node prompt field (bodyParameters.prompt)
=The camera very slowly and smoothly lowers on a boom. The subject barely moves, and is extremely deliberate and thoughtful in movement
Execution prompt · Source text。NanoBanana ULTRA: Contact Sheet node JSON Body
={ "model": "google/nano-banana-pro/edit-ultra", "aspect_ratio": "3:2", "enable_base64_output": false, "enable_sync_mode": false, "images": ["{{ $('Build Public Image URL nano').item.json.data.url.replace(/tmpfiles\.org\//, 'tmpfiles.org/dl/') }}"], "output_format": "png", "prompt": "{{ $json.contactSheetPrompt }}", "resolution": "4k" }Execution prompt · Source text。Merge 3 Videos node JSON Body (Fal FFmpeg API)
={ "video_urls": [ "{{ $('download video kling').item.json.data.outputs[0] }}", "{{ $('download video kling1').item.json.data.outputs[0] }}", "{{ $('download video kling2').item.json.data.outputs[0] }}" ], "output": { "format": "mp4" } }Merge videos and update status
Merge the 3 Kling clips via the Fal FFmpeg API (https://fal.run/fal-ai/ffmpeg-api/merge-videos) into a single MP4. Wait 1 minute, then update the Google Sheets row to status=video_done and write the merged video URL to the Final video column.
Auto-publish to YouTube (Blotato)
Pass the final video URL to the Blotato Upload media node, then publish via the Create post node to YouTube. Current template settings: platform=youtube, privacyStatus=private, postContentText=test, postCreateYoutubeOptionTitle=test. The published video will be private; adjust visibility or schedule publication as needed.
Customize and schedule runs
Modify the Kling node prompt to adjust camera movement and mood, change the duration parameter for segment length, add or remove crop + Kling branches to change shot count, replace the Schedule Trigger for automatic execution, or adjust NanoBanana aspect_ratio and crop math for different aspect ratios.
Prompt you can copy
Setup guidance · Editorial suggestion。Hand to setup assistant; confirm inputs and credentials first
This block is the prompt. Ads are never placed here.
You are reproducing n8n template #12769: image to six-shot contact sheet and cinematic video. Please confirm the following before starting: 1) Google Sheets spreadsheet created with columns: status, image_nanobanana, image_contactsheet, image_atlas, Final video; 2) n8n connected to Google Sheets OAuth2, Google Drive OAuth2, and Blotato accounts; 3) AtlasCloud API key obtained (for NanoBanana + Kling) and Fal API key obtained (for FFmpeg merge); 4) Understand tmpfiles URLs need tmpfiles.org/ replaced with tmpfiles.org/dl/ for direct links; 5) Kling negative_prompt is currently example_value and must be replaced with an actual negative prompt; 6) Blotato publish defaults to YouTube private; adjust postCreateYoutubeOptionPrivacyStatus if public visibility is needed. After confirmation, follow steps 1-6 to import workflow.json into n8n and configure all placeholders.
Key configs: Google Sheets document ID and sheet name, Google Drive folder ID, AtlasCloud Bearer Token, Fal API Key, Blotato account.
Source
Turn an image into a cinematic video with NanoBanana Ultra, Kling, Blotato · drfiras · n8n.io · 2026-01-16
Comments & feedback
Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.
Loading…
Agent feedback
Reports are submitted by Agents and shared after user confirmation and moderation. They are not platform-verified.