Mindket

Product photo to 360-degree turntable video

Newversion 1 · updated

Overview

An n8n workflow with a one-field upload form. Send a product photo, and OpenAI writes the prompts, Runware draws a square hero frame and Kling turns it into a 10-second 360-degree turntable video. Three model names need checking.

Product photo to 360-degree turntable video 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, add the credentials and publish
  • Your own n8n server: the same file, at an address the people who upload can open
  • Dropbox: holds each photo, with a public link to it
  • Runware: renders the frame and the video on its own servers

Platform

Connects 3 apps

How it works

Trigger

Upload form

It starts when someone sends the Image trigger form with:

  • A product photo, in its one file field

Actions

  1. The photo is saved to Dropbox, and a public link to it is found or made
  2. OpenAI describes the product in the photo, its label, material, logo, colors and shape
  3. OpenAI writes an exact studio render prompt, then a one-sentence prompt for a 360-degree turn
  4. Runware draws a square hero frame with FLUX.1 Kontext [pro], using the photo as its reference
  5. Runware animates the frame with Kling, and the workflow fetches the video after three and a half minutes

Result

A 10-second video of the product turning on a white studio turntable, as an address in the run’s last node

Integrations

What you need before you start.

Dropbox

File storage

Holds each uploaded photo and gives it a public link that the workflow and Runware read from.

NeedsA Dropbox app with sharing scopes, and its access token

OpenAI

Language and vision model

Describes the photo and writes the render prompt and the video prompt. Two of its three steps name a retired model.

NeedsOpenAI API key

Runware

Image and video generation

Draws the hero frame with FLUX.1 Kontext [pro], then the video with a Kling model whose ID needs checking.

NeedsRunware API key, typed into three nodes’ headers

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
25 steps, starting on a form
AI
3 steps call an AI model: Analyze image, Basic LLM Chain and AI Agent1
Sign-ins
Signs in to: Dropbox, OpenAI and Runware
API keys
No API key is left in the file; 2 blanks in it for your own key
Step types
Mindket’s checker reads all 11 of its step types

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

About

What it is

This n8n workflow turns one product photo into a 10-second video of that product turning a full circle on a white studio turntable. OpenAI studies the photo and writes two prompts. Runware draws a square hero frame from the first, then animates it with a Kling model from the second. It adds no scene, story or presenter. The product should look as it does in the photo, only turning.

Who it suits

Online shops and product marketers who want a turning view of each item for a product page, without a photo studio or a 3D model. It suits boxed and bottled goods better than clothes, which look best on a person. Three model names need checking first. Pick it if you can edit a JSON body in n8n.

Who uses it, and how
IndustryWho uses itHow they use itExample
Online retailShop ownersUpload each product’s photo once and add the clip to its pageA tea shop uploads a photo of a tin and puts the turning clip beside the product.
CosmeticsBrand marketersMake a turning view of a new product before the studio shootA skincare brand gets a spin of a new serum bottle for its launch email.
AgenciesContent producersSend a client’s catalog through the form, one photo at a timeAn agency turns a client’s six sauce bottles into six short clips for social posts.

You need some n8n and three accounts: Dropbox, OpenAI and Runware. Its author puts setup at about 13 minutes. Allow longer, because the Dropbox app and the model checks come first.

Where to use it

Any n8n, on n8n Cloud or a server of your own. The form runs inside n8n, so nothing else needs hosting.

  • n8n Cloud: import the file, add the credentials and publish
  • Your own n8n server: the same file, at an address the people who upload can open
  • Dropbox: holds each photo, with a public link to it
  • Runware: renders the frame and the video on its own servers

Setup

Get it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Make the Dropbox app first, since three nodes need its token.

What you need first
NeedDetail
n8nOn n8n Cloud or a server of your own
DropboxAn app from Dropbox’s App Console with files.content.write, sharing.read and sharing.write, and an access token
OpenAIAn API key for a model that reads images
RunwareAn account with credit, and its API key
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Add a Dropbox credential with the app’s token and select it in Upload a file. Put the same token in place of <YOUR_DROPBOX_TOKEN> in HTTP Request and HTTP Request6.
  3. Add an OpenAI credential and select it in Analyze image, OpenAI Chat Model1 and OpenAI Chat Model2.
  4. In Analyze image and OpenAI Chat Model1, swap chatgpt-4o-latest for a current model such as gpt-4.1-mini.
  5. Replace <YOUR_RUNWARE_KEY> in Flux Image , kling image to video post1 and kling imag to video get status1. The brackets go too, so each header reads Bearer, a space and the key.
  6. In kling image to video post1, check klingai:5@1 against Runware’s model list.
  7. Save, open the form’s test address and upload a photo.
  8. Read finalVideoURL in Edit Fields3 about four minutes later, then press Publish.

OpenAI’s deprecations page, read on 2 November 2026, lists chatgpt-4o-latest as shut down on 17 February 2026. That is why step 4 is there. The same day, klingai:5@1 was missing from Runware’s model list, which offered klingai:6@0, KlingAI 2.5 Turbo Standard, for clips of 5 or 10 seconds.

How to use it

Open the form, choose one clear photo of the product on a plain background and send it. The form says thanks at once. The video takes about four minutes. Then open the run under Executions and copy the address from Edit Fields3.

What to change for a different result
To changeWhere
The turntable, backdrop and lightThe rotation context at the end of the system message in Basic LLM Chain
The camera moveThe prompt in AI Agent1
The video’s length and sizeduration, width and height in kling image to video post1, 10 seconds and 1280 by 720 in the file
The framemodel, width and height in Flux Image , FLUX.1 Kontext [pro] at 1024 by 1024 in the file
How long it waitsWait1, three and a half minutes before the one check on the video

Example

A candle maker uploads a photo of an amber glass jar candle with a black lid and a paper label. Analyze image might note the glass, the lid and the label’s words. The render prompt could then read:

Ultra-realistic 8K CGI render of an amber glass jar candle with a matte black metal lid and a cream paper label, centered on a glossy white turntable, soft studio light, --ar 1:1

Runware draws that frame. About four minutes after the upload, Edit Fields3 holds the address of a 10-second clip of the jar turning on its base.

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. This one reads in four rows, each labelled by a sticky note: the upload, the prompt, the frame and the video. Run it once from the test address. Then open each node and see what it received.

For experts. The photo makes a round trip. It goes up to Dropbox and comes back down through the public link for OpenAI to read, and the same link is the reference image Runware reads. The render prompt ends in --ar 1:1, which is Midjourney syntax that FLUX reads as plain text, so the size fields are what make the frame square.

The calls to Runware
NodeTaskWhat to know
Flux Image imageInference with bfl:3@1Waits for the PNG and returns its address. The prompt goes in unescaped, so a quote mark breaks the JSON
kling image to video post1videoInference, delivered laterSends the frame as the first frame. Runware’s guide now puts it under inputs
kling imag to video get status1getResponseRuns once. A video still rendering leaves finalVideoURL empty

Good to know

Three things catch people out: a single status check, an open form and a public link.

  • One check: if Runware is still rendering after three and a half minutes, finalVideoURL comes out empty. Add an If that loops back to Wait1
  • Where the video goes: only into the run. Add a node that emails or saves the address
  • Quotes: a quote mark or a line break in a prompt breaks the request. Wrap each prompt in JSON.stringify in place of its quotes
  • Shape: the frame is square and the video 16:9, so the model may crop the frame or add space around it
  • Open form: anyone with the production address spends your OpenAI and Runware credit. The form trigger can ask for a password with Basic Auth
  • Public link: anyone who has the Dropbox link can open the photo. Remove it once the video is made
  • Dropbox token: one made in the App Console is short lived. The setup notes show a credential that lasts
  • Billing: three OpenAI calls, one Runware image and one Runware video for each photo
  • Your keys: the Dropbox token and the Runware key sit in headers, so take them out before you share the workflow
  • Credentials: the JSON holds none, and nothing from its author’s accounts

README and files

README

Product photo to 360-degree turntable video

An n8n workflow behind a one-field upload form. Send it a photo of a product, and it makes a 10-second video of that
same product turning a full circle on a white studio turntable. OpenAI describes the product and writes the prompts.
Runware renders a square hero frame with FLUX.1 Kontext [pro], then animates it with a Kling model. Dropbox holds the
photo and gives Runware a link to it.

It adds no scene, story or presenter. The product should look as it does in the photo, only turning.

Read "Models to check first" below before the first run: three model names in the file need a look.

What is inside

  • workflow.json: the workflow as n8n exports it, 32 nodes, four of them sticky notes that label its four rows. It
    holds no credential.
  • README.md: these notes.

What we changed from the original copy

  • Its five Authorization headers held Bearer <API>. The two that call Dropbox, in HTTP Request and HTTP Request6,
    now say Bearer <YOUR_DROPBOX_TOKEN>. The three that call Runware, in Flux Image , kling image to video post1 and
    kling imag to video get status1, say Bearer <YOUR_RUNWARE_KEY>.
  • The original copy's Upload a file path had lost a backslash. Its /s+/g turned every letter s in the file name into
    an underscore. It reads /\s+/g again, which turns spaces into underscores.

Before you start

  • An n8n instance, on n8n Cloud or your own server.
  • A Dropbox account, and an app made in Dropbox's App Console (below).
  • An OpenAI API key for a model that reads images.
  • A Runware account with credit, and its API key.

Models to check first

Analyze image and OpenAI Chat Model1 name chatgpt-4o-latest. OpenAI's deprecations page, read on 2 November 2026,
lists it as shut down on 17 February 2026. Pick a current model in both, such as gpt-4.1-mini, which reads images too.

kling image to video post1 asks Runware for klingai:5@1. That ID was not in Runware's model list when we checked the
same day. Its Kling models then included klingai:6@0, KlingAI 2.5 Turbo Standard, which makes clips of 5 or 10
seconds at up to 720p. Runware's image-to-video guide also puts the start frame under inputs.frameImages now. It says
many models refuse width and height when a frame is given. If the call fails, move frameImages under inputs as
the guide shows, and take the two sizes out.

A Dropbox token

Upload a file is n8n's Dropbox node, set to take an access token. HTTP Request and HTTP Request6 call Dropbox's API
with a token in their headers. The quickest setup uses one token in all three:

  1. In Dropbox's App Console, create an app with scoped access. App folder access is enough, and the photos then land in
    the app's own folder.
  2. On its Permissions tab, tick files.content.write, sharing.read and sharing.write, and submit.
  3. On its Settings tab, generate an access token.

Dropbox's OAuth guide says its access tokens are short lived, and that a token made in the App Console is for testing
with your own account. Expect to paste in a new one after a few hours.

For a setup that lasts, switch Upload a file to OAuth2 and give it n8n's Dropbox OAuth2 credential. That credential
asks Dropbox for files.content.write, files.content.read, sharing.read and account_info.read, which cannot make
the link in HTTP Request6. So give the two HTTP Request nodes a generic OAuth2 API credential for your app instead:

  • Authorization URL https://www.dropbox.com/oauth2/authorize and Access Token URL
    https://api.dropboxapi.com/oauth2/token, with your app's key and secret
  • Scope sharing.read sharing.write, and token_access_type=offline in the auth URI query parameters
  • n8n's OAuth redirect URL added to the app's Redirect URIs in the App Console

Then delete their Authorization headers.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Make the Dropbox app and its token (above). Add a Dropbox credential with the token and select it in Upload a file.
  3. In HTTP Request and HTTP Request6, replace <YOUR_DROPBOX_TOKEN> with the same token. The brackets go too, so the
    header reads Bearer, a space and the token.
  4. Add an OpenAI credential and select it in Analyze image, OpenAI Chat Model1 and OpenAI Chat Model2. Change the
    model in the first two (above).
  5. In Flux Image , kling image to video post1 and kling imag to video get status1, replace <YOUR_RUNWARE_KEY>
    with your Runware key, brackets included. The first of those names ends in a space.
  6. Check the model in kling image to video post1 against Runware's list (above).
  7. Save. Open On form submission, use its test address and upload a product photo. Wait about four minutes, then open
    the run and read finalVideoURL in Edit Fields3.
  8. Press Publish when the video looks right. The form then has a production address you can share.

How a run goes

  1. On form submission serves the Image trigger form, which has one file field. Code2 names each file it receives
    product_image, one item for each.
  2. Upload a file saves the photo at the top of your Dropbox, or of the app's folder, with spaces in its name turned
    into underscores.
  3. HTTP Request asks Dropbox for a link to that file. When If finds one, Code7 takes it. Otherwise
    HTTP Request6 makes a public link first. Code7 swaps dl=0 for raw=1, so the address serves the file itself.
  4. HTTP Request3 downloads the photo from that link, and Code6 labels it a PNG named product.png.
  5. Analyze image has OpenAI describe the product in detail: its label, material, logo, colors, shape and size.
  6. Basic LLM Chain turns that description into one render prompt. Its rules ask for an exact copy of the product,
    centered on a glossy white turntable in a studio light box, with no stylizing. The prompt has to open with
    "Ultra-realistic 8K CGI render of", and its last words are --ar 1:1. Structured Output Parser1 holds the answer to one
    field, Ad Concept 1, and Edit Fields and Code pass it on as prompt.
  7. AI Agent1, on gpt-4o-mini, writes the video prompt: one sentence of up to 40 words about a smooth 360-degree turn.
  8. Code3 makes a task ID. Flux Image asks Runware for one 1024 by 1024 PNG from bfl:3@1, FLUX.1 Kontext [pro],
    with the Dropbox link as its reference image. Split Out1 takes the result, and Wait6 pauses 10 seconds.
  9. Edit Fields2 keeps the frame's address under the name finalVideoURL, though it is still the picture. Code5
    makes a second task ID, and kling image to video post1 asks Runware for a 10-second, 1280 by 720 video with that
    frame first. Runware answers at once and renders in the background.
  10. Wait1 pauses three and a half minutes. Then kling imag to video get status1 asks once for the result, and
    Edit Fields3 sets finalVideoURL to the video's address.

Change the look

  • The turntable, backdrop and light: the rotation context at the end of the system message in Basic LLM Chain.
  • The camera move: the prompt in AI Agent1.
  • The video's length and size: duration, width and height in the body of kling image to video post1.
  • The frame's size: width and height in Flux Image .
  • The waits: Wait6 after the frame, and Wait1 before the one check on the video.

Good to know

  • The workflow checks on the video once. If Runware has not finished after three and a half minutes, finalVideoURL
    comes out empty. Run kling imag to video get status1 again, or add an If that loops back to Wait1 until a
    videoURL appears.
  • The video's address stays in the run. The person who sends the form sees only n8n's confirmation. Add a node that
    emails it, saves it or posts it if anyone else needs the video.
  • Both prompts go into the JSON bodies as they are. A quote mark or a line break in a model's answer breaks the request.
    Writing {{ JSON.stringify($('Basic LLM Chain').item.json.output['Ad Concept 1']) }} in place of the quoted text in
    Flux Image fixes that, and the same works for the video prompt.
  • The frame is square and the video request is 16:9, so the model may crop the frame or add space around it.
  • --ar 1:1 comes from Midjourney's prompt syntax. FLUX reads it as plain text. The frame is square because of the
    width and height in Flux Image .
  • Code6 labels the photo a PNG whatever it is. Upload a PNG or a JPEG.
  • The Dropbox link is public, so anyone who has it can open the photo. Remove the link in Dropbox once the video is made.
  • Anyone with the form's production address can start a run on your OpenAI and Runware credit. The form trigger can ask
    for a password with Basic Auth.
  • Each photo costs three OpenAI calls, one Runware image and one Runware video. Runware prices each model on its own, so
    check before you choose one.
  • The Dropbox token and the Runware key sit in headers, so take them out before you share the workflow.
Files
README.md  9 KB
workflow.json  25 KB

2 files, 34 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

anaksor-ocr

Sokheng · Kit

Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…

New

Qwen2.5-7B-Instruct as GGUF files in eight quantization sizes, to chat with locally through llama.cpp. For people who want a capable 7.6B model on their own co…

New

ACE-Step 1.5 XL SFT

ACE-Step · Kit

Generates music from text with a 4B diffusion decoder, 50 steps and guidance control, aiming for higher audio quality than the base. For creators with a GPU of…

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