Mindket

AI product photo to video generator

Newversion 1 · updated

Overview

An n8n workflow that turns one product photo and a line about the video you want into a short commercial-style clip. Gemini describes the product, an AI creative director plans the shots, and Veo 3.1 Fast on Kie.ai renders them.

AI product photo to video generator is an n8n workflow in the Marketing & SEO category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

At a glance

Runs in
  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file, the same steps
  • Ad and social channels: the clip comes back as a file, ready for an Instagram ad, a Reel or a Short
  • A drive or another app: add a node after Download Video to save the clip or send it on
Start with
POST https://api.kie.ai/api/v1/veo/generate
GET  https://api.kie.ai/api/v1/veo/record-info?taskId=<taskId>

Platform

Connects 4 apps

How it works

Trigger

Photo upload

It starts when someone sends the Upload Product Photo form with:

  • A product photo
  • A sentence about the video, in Description

Actions

  1. Uploads the photo to Cloudinary and gets its public address
  2. Gemini describes the product in YAML, its colors as hex codes
  3. The Creative Director agent plans the shots as JSON, from that and your sentence
  4. Your sub-workflow has Kie.ai’s Veo model render it, and the clip is downloaded

Result

A short commercial-style video of your product, made from one photo

Integrations

What you need before you start.

Cloudinary

Media storage

Takes the photo through Cloudinary’s upload API and returns a public address the AI steps can read.

NeedsCloud name and an unsigned upload preset

Google Gemini

Image analysis

Reads the photo and names the product’s type, brand, shape, materials and colors, as YAML.

NeedsGemini API key

OpenRouter

Language model

Runs Gemini 2.5 Flash for the Creative Director agent and the parser that holds its answer to the shot plan’s JSON shape.

NeedsOpenRouter API key

Kie.ai

Video generation

Makes the video from the shot plan and your photo inside your sub-workflow, then hands back its address.

NeedsKie.ai API key, in your sub-workflow

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
6 steps, starting on a form
AI
2 steps call an AI model: Analyze an image and Creative Director
Sign-ins
Signs in to: Google Gemini and OpenRouter
API keys
No API key is left in the file
Step types
Mindket’s checker reads all 5 of its step types

Read from the workflow’s file, not from a run.

About

What it is

This n8n workflow takes one product photo and a sentence about the video you want, and hands back a short commercial-style clip. Eight nodes run one after another. A form takes the photo, Cloudinary stores it at a public address, and Gemini 2.5 Pro writes a YAML description of the product with its brand and its colors as hex codes. An agent named Creative Director turns that description and your sentence into a JSON shot plan. A sub-workflow you supply sends the plan and the photo to Veo 3.1 Fast on Kie.ai, and the last node downloads the clip.

Who it suits

Shop owners and small brands that want a moving ad for every product without booking a shoot, and the marketers and agencies who make those ads for them.

Who uses it, and how
IndustryWho uses itHow they use itExample
Online retailShop owners and small brandsSend each new studio shot through the form and post the clip as an adA candle shop turns every new product photo into a clip for an Instagram ad.
Food and drinkBrand marketersLeave Description empty and let the agent fall back on its food and drink styleA drinks brand gets a fresh, lively scene built around refreshment without writing a word.
Marketing agenciesAccount managersSend a client the form instead of a briefAn agency hands a client the form, and each photo the client sends comes back as a draft clip.
Performance marketingMarketers who test adsTry several product videos a week, each from one formA marketer tries a few angles on one product and keeps the clip that tests best.
Social videoTeams that make Reels and ShortsSet a vertical frame once, then run the whole catalogA team sets 9:16 in the sub-workflow call and sends its catalog through it.

You need some n8n: importing a file, adding credentials, building one small sub-workflow. If that is new to you and you would rather not learn it, skip this one. Its author puts setup at about 11 minutes, which assumes the four accounts already exist.

Where to use it

Any n8n you run will do, as long as it can reach Cloudinary, Google, OpenRouter and Kie.ai.

  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file, the same steps
  • Ad and social channels: the clip comes back as a file, ready for an Instagram ad, a Reel or a Short
  • A drive or another app: add a node after Download Video to save the clip or send it on

Setup

Get it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Have these ready before you import it.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own
CloudinaryAn account with an upload preset whose signing mode is Unsigned
Google AI StudioA key for the Gemini API
OpenRouterA key for the chat model the agent and the parser share
Kie.aiA key, and a video sub-workflow of your own that calls Veo 3.1 Fast
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Open Upload *Photo1 and put your cloud name in its address where it says <YOUR_CLOUD_NAME>.
  3. In the same node, swap YOUR_PRESET_NAME for your preset and YOUR_FOLDER_NAME for a folder.
  4. Add a Google Gemini (PaLM) API credential and select it in Analyze an image.
  5. Add an OpenRouter credential and select it in OpenRouter Chat Model.
  6. Open the red node after Creative Director, the call to the Kie.ai sub-workflow, and pick your own video sub-workflow.
  7. Save, send a test photo through the form’s test address, then press Publish.

The sub-workflow is not in the file. Its node pointed at a workflow in its author’s own n8n, so it arrives empty and marked red. Yours receives these four fields and returns the clip’s address as resultUrls:

{
  "video_prompt": "<the shot plan, as JSON text>",
  "aspect_ratio": "16:9",
  "imageUrls": ["<the photo’s Cloudinary address>"],
  "generationType": "REFERENCE_2_VIDEO"
}

Kie.ai’s Veo pages, read on 2 November 2026, describe the two calls inside it. Post those fields to the generate endpoint with your key as a Bearer token, then ask record-info for the task until it reports success. The resultUrls field comes back as a JSON string, so parse it before you return it.

POST https://api.kie.ai/api/v1/veo/generate
GET  https://api.kie.ai/api/v1/veo/record-info?taskId=<taskId>

A signed preset works too: add an HTTP Basic Auth credential with your Cloudinary API key and secret, and select it under the upload node’s Authentication.

How to use it

Open the form from On form submission, attach a product photo and write the video you want in Description, in a sentence. The form confirms at once. The run goes on behind it: upload, analysis, shot plan, render, download. The clip lands in the run’s execution data as a file, so open the run under Executions to see it.

What to change for a different result
To changeWhere
Tone and styleThe Creative Director’s system message. Its fallback styles for tech, food and drink, and fashion apply only when your sentence says little
Frameaspect_ratio in the sub-workflow call, such as 9:16 for Reels and Shorts
Lengthtechnical.duration in the shot plan. The prompt’s own examples ask for 8 seconds
Photo folderYOUR_FOLDER_NAME in the upload node, one per brand or campaign

Example

A photo of a bottle of cold brew coffee, with this in Description:

Ice cubes drop into a glass beside the bottle on a sunny cafe counter, slow motion, warm morning light

Gemini’s YAML names the product type, the brand if the label shows one and the bottle’s colors as hex codes. The Creative Director answers in the parser’s shape, trimmed here. It leaves the bottle’s look out of the plan, because its prompt says Veo takes that from the photo.

{
  "scene": "…",
  "style": "…",
  "camera": { "type": "…", "angle": "…", "lens": "…", "movement": "…" },
  "lighting": { "type": "…", "mood": "…", "time": "…" },
  "audio": { "music": "…", "effects": ["…"] },
  "motion": { "pace": "…", "style": "…", "transitions": "…" },
  "technical": { "resolution": "…", "duration": "…", "color_palette": "…", "effects": "…" },
  "narrative": { "beginning": "…", "middle": "…", "end": "…" }
}

Kie.ai renders the clip from the plan and the photo, and Download Video fetches it from resultUrls.

For newcomers and experts

If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. A credential is a key n8n keeps for you and hands to the node you pick it in. Run the form from its test address first. Every node then shows what it received and what it sent, which is where a wrong preset or key turns up.

For experts. Three models share the work, and each step names the one it uses.

The model behind each step
StepModelWhat to know
Analyze an imageGemini 2.5 Pro, through Google’s Gemini API directlySwitch it to a Flash model when cost matters more than detail
Creative Director and its Structured Output ParserGemini 2.5 Flash, one OpenRouter model for bothAuto-fix is on, so JSON that misses the schema goes back for a repair, at the cost of one more call
Your sub-workflowVeo 3.1 Fast on Kie.aiThe call to it retries when it fails

You can point OpenRouter at another model too. The agent carries the YAML’s color_palette_hex into the plan’s color_palette, so a brand’s colors reach the scene.

Good to know

Each run costs money, and the rest of the risks come from the open form and the public photo.

  • Billing: Google, OpenRouter and Kie.ai each bill their own part of a run
  • Open form: once the workflow is published, anyone with the form’s address can start a run on your keys, so turn on the form trigger’s basic authentication or keep the address to yourself
  • The photo: an unsigned upload makes it public on Cloudinary, and it also goes to Google, OpenRouter and Kie.ai
  • File types: the form’s file field takes any file type, so send photos only
  • Credentials: the JSON holds none, and nothing from its author’s account

README and files

README

AI product photo to video generator

An n8n workflow. Send one product photo and a line about the video you want through its form, and it returns a short
commercial-style clip made by Veo 3.1 Fast.

What is inside

  • workflow.json: the workflow as n8n exports it, eight nodes. It holds no credential. The sub-workflow node is left
    empty, so n8n marks it red until you pick your own.
  • README.md: these notes.

Before you start

  • An n8n instance, on n8n Cloud or your own server.
  • A Cloudinary account with an upload preset whose signing mode is Unsigned.
  • A Gemini API key from Google AI Studio.
  • An OpenRouter API key.
  • A Kie.ai account and a sub-workflow of your own that calls its Veo 3.1 Fast model (below).

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Open the node named Upload *Photo1. In its address, put your cloud name where it says <YOUR_CLOUD_NAME>. Then
    swap YOUR_PRESET_NAME for your preset and YOUR_FOLDER_NAME for the folder the photos should land in.
  3. Add a Google Gemini (PaLM) API credential with your key and select it in Analyze an image.
  4. Add an OpenRouter credential and select it in OpenRouter Chat Model.
  5. Open the red node after Creative Director, the call to the Kie.ai sub-workflow, and choose your video sub-workflow.
  6. Save, run it once from the form's test address, then press Publish at the top of the canvas (or Shift+P).

A signed preset works too: add an HTTP Basic Auth credential with your Cloudinary API key and secret, and select it
under the upload node's Authentication.

The sub-workflow it calls

The file does not include it. The node points at a workflow in its author's own n8n, so on import it is empty. Yours
receives four fields and must hand back the clip's address as resultUrls, which the last node downloads:

| Field | What the main workflow sends |
|---|---|
| video_prompt | the Creative Director's JSON shot plan, as text |
| aspect_ratio | 16:9 |
| imageUrls | a list holding the photo's Cloudinary address |
| generationType | REFERENCE_2_VIDEO |

Kie.ai's Veo documentation, read on 2 November 2026, gives the shape: an HTTP Request node posts the four fields to
https://api.kie.ai/api/v1/veo/generate with your API key as a Bearer token and gets a taskId back. A loop of Wait
and HTTP Request nodes then asks record-info for that task until it reports success, and resultUrls comes back as a
JSON string, so parse it before you return it. The same pages say reference-image video runs on the Fast model, in 16:9
or 9:16. Check https://docs.kie.ai/veo3-api for the current model names and prices before you build it.

Change the look

  • Tone and style: edit the system message in Creative Director. It has a fallback style for tech, for food and drink,
    and for fashion, used when the Description field is empty or vague.
  • Frame: change aspect_ratio in the sub-workflow call, for example to 9:16 for Reels and Shorts.
  • Length: the shot plan carries it (technical.duration), and the prompt's examples ask for 8 seconds.
  • Storage: rename the Cloudinary folder per brand or per campaign.

Good to know

  • The form answers as soon as it is sent. The clip arrives in the run's execution data as a file, so add a node after
    Download Video to save it to a drive or send it on.
  • Once the workflow is published, anyone with the form's address can start a run that spends your Gemini, OpenRouter
    and Kie.ai credits. The form trigger can ask for a username and password.
  • An unsigned upload gives the photo a public address. The photo also goes to Google, OpenRouter and Kie.ai.
Files
README.md  4 KB
workflow.json  32 KB

2 files, 35 KB, downloaded as a zip.

What’s new

  • Version 1 · 2026-11-03

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

Bonsai-27B-GGUF

lmstudio-community · Kit

A GGUF conversion of the 27B Bonsai model for LM Studio, with a 3.80 GB Q1_0 language file and a 0.93 GB BF16 vision projector. Tested for text, vision and par…

New

Runs DeepSeek-V4.1-Flash-1017 as a 2.9 bits-per-weight EXL3 quantization, a 196 GiB copy for people serving large models on their own hardware. Perplexity stay…

New

MusicGen Small

facebook · Kit

Generates short music clips from a text description or an audio prompt, in the small checkpoint of facebook's MusicGen. It suits developers and music hobbyists…

New

Similar in Marketing & SEO

See all in Marketing & SEO

Huashu Design

alchaincyf · Skill

Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…

New29.4k

Pixel Art XL

nerijs · Kit

A pixel art style add-on for Stable Diffusion XL that turns text prompts into pixel-style images, with an optional LCM LoRA for faster runs. For game makers, d…

New

Licon MSR for LTX-2.5

LiconStudio · Kit

Keeps characters, clothing, objects and backgrounds consistent in generated video by feeding the model up to five reference images. A LoRA for LTX-2.5 in Comfy…

New