Storyboard Video Generator - Ken Burns Slideshow Maker avatar

Storyboard Video Generator - Ken Burns Slideshow Maker

Pricing

from $14.40 / 1,000 video seconds

Go to Apify Store
Storyboard Video Generator - Ken Burns Slideshow Maker

Storyboard Video Generator - Ken Burns Slideshow Maker

Turn image links, or a story, into a Ken Burns slideshow MP4: a slow zoom and pan on each image, clips joined in your order, your voiceover or music laid over. 9:16, 16:9 or 1:1. $15.00 per 1,000 seconds of video ($0.015 a second).

Pricing

from $14.40 / 1,000 video seconds

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

16

Total users

6

Monthly active users

3 days ago

Last modified

Share

Turn images or a story into a Ken Burns slideshow MP4 with a slow zoom and pan: give it image URLs in the order you want them and you get back a finished video, each image held for a few seconds with motion, the clips joined, and your audio track laid over the top if you have one. Vertical, wide or square. No editor, no timeline, no per-clip work.

If you only have a story, it can write the scenes and generate the images first, on your own OpenAI key. Worth knowing before you plan a long one: motion is rendered frame by frame, so the run's clock runs out well before the 900-second ceiling. Several minutes of video is the realistic figure, and when time runs short you get the clips that finished rather than nothing.

InputImage URLs, or a story plus your own OpenAI key
OutputOne MP4, and a row with its link, real length, clip count and anything skipped
Ceiling60 images and 900 seconds of video per run
Account neededNone, unless you use story mode, which needs your own OpenAI key
Price$15.00 per 1,000 seconds of video, so $0.015 a second on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 333 seconds, roughly five and a half minutes of video

🔍 What Storyboard Video Generator does

In URL mode it downloads each image, checks it really is an image rather than an error page, renders a zoom-and-pan clip from it, joins the clips in your order and lays the audio over them. The zoom direction alternates between clips so a long slideshow does not feel mechanical.

In story mode it splits your text into scenes, generates one image per scene with gpt-image-2.5-flare on your key, then animates them the same way. Your art style and character note go into every prompt, so the scenes look like they belong together.

A dead URL is skipped and listed under skipped, a scene that fails to generate is skipped, and a broken audio track leaves you the silent video rather than nothing.

Output sizes are 1080x1920 for 9:16, 1920x1080 for 16:9 and 1080x1080 for 1:1, H.264 MP4.

📋 What data you get from each video

What you getField
The MP4 in the run's key-value store, and a direct link to itvideoKey, videoUrl
The real length of the finished file, measured from itdurationSeconds
How many clips made it into the videoimages
The settings as used, after any clampingsecondsPerImage, fps, aspectRatio
Whether a soundtrack was laid over it, and why not if you asked for onehasAudio, audioError
Anything left out, each with the reasonskipped
The file size, and when it was madevideoBytes, generatedAt

▶️ How to turn images into a slideshow video

  1. Open Storyboard Video Generator and click Try for free.
  2. Paste your image links into Image URLs, in order. Or write into Story (auto-generate images) and put your OpenAI key in the key field.
  3. Pick an Aspect ratio and set Seconds per image.
  4. Add an Audio URL (optional) if you have a voiceover or a music bed, then click Start.
  5. Open the run's Storage tab and download the MP4, or follow videoUrl from the dataset row.

Start it with nothing filled in and you get one free sample row telling you what to add.

💰 How much does it cost to make a slideshow video?

$0.015 per second of rendered video on the Free plan. Paid plans pay a little less: $0.0148 on Starter, $0.0146 on Scale and $0.0144 on Business. On the free plan, the $5 Apify gives you each month covers about 333 seconds.

You pay for the seconds in the file you actually receive. Five images at four seconds each is twenty seconds of video, so $0.30. A run that produces no file charges no video seconds, and the sample and diagnostic rows are not billed. If the maximum cost you set on the run cannot cover the longest video your input could make, it stops before downloading anything and says so.

Story mode spends on your OpenAI key, separately, one image per scene. Image quality is the lever on that bill: use low for drafts, and check OpenAI's own price list for the current figures.

📥 What you give it

You need either image URLs or a story. Give neither and the run writes one free sample row telling you so.

{
"imageUrls": ["https://example.com/scene1.jpg", "https://example.com/scene2.jpg"],
"secondsPerImage": 4,
"aspectRatio": "9:16",
"fps": 30,
"audioUrl": "https://example.com/ambient.mp3"
}
FieldDefaultWhat it is
imageUrlsnonePublic image URLs, in the order you want them on screen. The first 60 are used and the rest are listed under skipped. No key needed.
storynoneProse to split into scenes and illustrate. Only used when you gave no usable image URLs.
numScenesnone, the form starts at 5How many images to generate in story mode, 1 to 15.
stylenone, the form suggests oneA shared look for the generated images, for example moody watercolor, muted palette.
charactersnoneA description of a recurring character, so they stay recognisable between scenes.
imageQualitynone, the form starts at mediumlow, medium or high for generated images. This is spent on your OpenAI key, not here.
secondsPerImagenone, the form starts at 4How long each image is held, 1 to 15 seconds.
fpsnone, the form starts at 30Frame rate, held between 5 and 60. Render time grows with it.
aspectRationone, the form starts at 9:169:16 vertical, 16:9 wide or 1:1 square.
audioUrlnoneA public link to a voiceover or music track. Read the note below about length.
openaiApiKeynoneYour own OpenAI key, story mode only. Kept as a secret field.
baseUrlnoneAn OpenAI-compatible endpoint, if you use one instead of OpenAI itself.

Audio length changes the video length. The shorter of the two wins. A long track is cut off, but a track shorter than the slideshow trims the video to match, and you are billed for that shorter length.

📤 What you get back

The MP4 goes to the run's key-value store, and one row lands in the dataset describing it. A real row from a run on 17 September 2026, with the signed link trimmed:

{
"ok": true,
"charged": true,
"images": 2,
"aspectRatio": "9:16",
"secondsPerImage": 2,
"fps": 24,
"durationSeconds": 4,
"hasAudio": false,
"videoKey": "storyboard-video-1789627427569.mp4",
"videoUrl": "https://api.apify.com/v2/key-value-stores/Bdta3ZePheGXfWAnY/records/storyboard-video-...",
"videoBytes": 1618276,
"generatedAt": "2026-09-17T06:43:47.775Z"
}
FieldHow to read it
durationSecondsMeasured from the finished file rather than calculated. This is what you are charged for.
imagesClips that made it in. Fewer than you sent means skipped has the reason.
skippedDead URLs, files that were not images, URLs past the sixtieth, scenes that failed.
chargedMarks the real deliverable rather than a sample or a notice. It is written when the row is built, so read it as a label, not as a receipt.

🧾 Reading the output

RowHow to spot itCharged
The delivered videook: true with a videoUrlyes
The sample row_sample: true and charged: falseno
A diagnostic_diagnostic: true with an errorCodeno

The sample row's reason says what was missing: missing_source (no URLs and no story), no_usable_image_urls (every value was rejected before download) or missing_api_key (a story but no key).

CodeWhat it means
NO_USABLE_IMAGESEvery URL was dead, timed out, or returned a web page instead of image bytes.
UPSTREAM_AUTHOpenAI rejected your key.
UPSTREAM_RATE_LIMITEDOpenAI rate limited or quota limited your key.
UPSTREAM_ERRORThe image or scene call failed some other way.
RENDER_FAILEDThe clips could not be turned into a video.
NO_TIME_LEFTThe run reached its time limit. With nothing made, the run is marked failed. With part of the video made, you get that video, charged for its own seconds, and this row after it. Lower the scene count, the seconds per image or the frame rate, or give the run more time.
MAX_COST_TOO_LOWThe maximum cost set on the run does not cover the video your input asks for. secondsNeeded and secondsCovered show the gap.
UNEXPECTEDAnything else. The row carries the detail.

The Console's overview table hides errorCode, note and skipped, so a sample or diagnostic row shows up there as an empty result with no link. Read the JSON to see why.

💡 What people use it for

  • Turning a set of product photos into a vertical clip for Reels, Shorts or TikTok.
  • Animatics: rough motion over storyboard frames before anyone shoots anything.
  • Slideshows from a photo shoot, with the client's music over the top.
  • Faceless channel content built from stock images and a voiceover you already have.

From a script to a captioned slideshow, in three runs:

  1. Voice the script with AI Text to Speech Voiceover and copy audioUrl.
  2. Paste your images into Image URLs here and that link into Audio URL (optional), then copy videoUrl from the row.
  3. Give videoUrl to Auto Caption Burner, which burns the voiceover's words onto the picture.

🚧 What it does not do

  • Hard cuts only. No crossfades, wipes or transitions between clips.
  • No text and no captions are burned in.
  • No voice generation. Bring an audio track as a URL.
  • No per-scene motion control. The zoom direction alternates by itself.
  • 60 images and 900 seconds are the hard caps. Settings that would run longer get the time per image trimmed to fit, and the log says so.
  • The run clock usually binds first, because motion is rendered frame by frame. You then get the clips that finished, with the rest listed in skipped.
  • Images must be publicly reachable. They are downloaded directly, so a link needing a login will not work.
  • Story mode needs your own OpenAI key. None is included here.
  • It is not an official tool of any platform or company named on this page. Dami's Studio is independent and is not affiliated with or endorsed by any of them.

🧭 Which video tool do you need?

If you wantUse
Images or a story turned into a pan-and-zoom slideshowThis one
A full faceless short, script and voiceover includedAI Faceless Video Generator
Up to 20 scene images from a story, to animate hereAI Storyboard Generator
A voiceover track to lay over this videoAI Text to Speech Voiceover
Word by word captions burned into a finished videoAuto Caption Burner
A long video cut into ranked vertical clipsAI Viral Clip Cutter

❓ Questions people ask

Do I need an OpenAI key to make a slideshow?

Only for story mode. Give it image URLs and no key is used and no OpenAI call is made.

What if one of my image URLs is dead?

It is skipped and listed under skipped, and the rest still render. If every URL fails you get a NO_USABLE_IMAGES row and pay no video seconds.

How long can the slideshow video be?

The caps are 60 images and 900 seconds, but the run's clock is what you will hit first. Raise the run timeout if you want to push it.

Can I control the zoom on a particular image?

No. The direction alternates automatically.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/storyboard-video-generator. Either way the run happens on your Apify account at the same price.

🆘 If something breaks

Open the Issues tab on the actor page. Send the run ID and the row's errorCode. If the video came out short, check skipped first: it usually names the images that did not make it.