AI Storyboard Generator - Story to Scene Images
Pricing
Pay per event
AI Storyboard Generator - Story to Scene Images
Turn a story or script into storyboard images. Paste a story and it splits it into scenes, or pass your own shot list, up to 20 per run. Every image shares one art style and your character notes, so people stay recognisable. Runs on your own OpenAI key. $50.00 per 1,000 scene images ($0.05 each).
Pricing
Pay per event
Rating
5.0
(1)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
18
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Turn a story into a run of AI storyboard images that look like they belong together: paste a story and it breaks it into scenes, then renders one image per scene with the same art style and the same character notes carried through every prompt. Or skip the splitting and hand it your own scene list.
Two things to know first. It runs on your own OpenAI key, so the renders are billed to you by OpenAI on top of the per-image charge here. And the continuity is prompt-based: characters stay recognisable across shots, they are not pixel-identical.
| Input | A story in story, or your own list in scenes |
| Output | One image per scene, and a row with its link, the scene text and the exact prompt sent |
| Ceiling | 20 images per run |
| Account needed | Your own OpenAI API key |
| Price | $50.00 per 1,000 scene images, so $0.05 an image on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 100. OpenAI bills your key separately |
🔍 What AI Storyboard Generator does
Give it story and a chat model reads it and writes short visual descriptions, one per shot. Give
it scenes instead and that step is skipped entirely, which is the cheaper route when you already
know your shot list: no chat call at all.
Either way, every scene description gets the same treatment before it is rendered: your style in
front of it, your characters notes after it, and a rule asking for no lettering. That repetition
is what keeps the run looking like one piece of work rather than nine unrelated pictures.
Scenes render one at a time. A measured two-scene run at 9:16 took roughly 27 seconds per image.
aspectRatio decides the shape: 9:16 gives 1024x1536, 16:9 gives 1536x1024, 1:1 gives
1024x1024.
📋 What data you get from each scene image
| What you get | Field |
|---|---|
| The image, saved in the run's key-value store, and a direct link to it | imageKey, imageUrl |
| The scene description, the model's or yours | scene |
| The full prompt that was sent, style and character notes included | prompt |
| The scene number, counting from 1 | index |
| The shape you asked for and the pixel size that came out | aspectRatio, size |
| The image type as read off the file, and its size in bytes | contentType, bytes |
▶️ How to turn a story into storyboard images
- Open AI Storyboard Generator and click Try for free.
- Paste your key into OpenAI API key (BYO).
- Put your text in Story / script, or your own shots in Scenes (optional).
- Write a line into Art style, and another into Character notes if people recur. These two do most of the work.
- Click Start, then take the pictures from the run's Storage tab.
Start it with no key and the free sample lands in DIAGNOSTICS in the key-value store.
💰 How much does it cost to make storyboard images?
$0.05 per scene image on the Free plan, a little less on paid plans. A six-scene storyboard is $0.30, and on the free plan the $5 Apify gives you each month covers about 100 images.
You pay per picture that was rendered and stored. Scenes that failed are not charged, and a run
stopped by one of the reasons below delivers no images and charges for none. OpenAI bills your own
key separately for the splitting call and the renders, and quality moves that figure, not this
one.
📥 What you give it
{"story": "A lonely lighthouse keeper finds a glowing bottle washed ashore. Inside is a map to an island that should not exist. He sets sail at dawn.","numScenes": 6,"style": "cinematic, highly detailed, dramatic lighting","characters": "an old bearded keeper in a yellow raincoat","aspectRatio": "9:16","quality": "high"}
Nothing in this schema has a default. The form opens with example values filled in, and those are a starting point, not a setting the actor falls back to.
| Field | Prefilled with | What it is |
|---|---|---|
story | a lighthouse example | The text to break into scenes. Long input is cut at 6,000 characters before splitting. |
scenes | nothing | Your own scene descriptions, one image each. Supplying this skips the splitting step. |
numScenes | 6 | How many scenes the split is asked for, between 1 and 20. Read the note below. |
style | a cinematic look | The art direction put in front of every prompt. This is the main lever on how the set looks. |
characters | nothing | Who keeps appearing, in a sentence. Added to every prompt so faces and clothes stay close. |
aspectRatio | 9:16 | 9:16, 16:9 or 1:1. |
quality | high | low, medium or high. This moves your own OpenAI bill, not the charge here. |
openaiApiKey | nothing | Your own OpenAI key, used for both the splitting call and the renders. Marked secret. |
baseUrl | nothing | Advanced. Any OpenAI-compatible host. Empty means https://api.openai.com/v1. |
sceneModel | gpt-4o-mini | The chat model that does the splitting. Ignored when you pass scenes. |
imageModel | gpt-image-2.5-flare | The image model. It has to exist on whatever baseUrl you point at. |
numScenes is a request, not a cap. It is what the splitting model is asked for, and the list
it returns is used as it comes back, so you can end up with a couple more images than you asked for
and pay for those too. The hard ceiling is 20. If you want an exact count, pass scenes yourself.
📤 What you get back
One row per image that was rendered and stored, and the picture itself in the run's key-value store
under a key like scene-01-1786411663909.png. Storyboard images are large: a measured two-scene run
returned PNGs of 2,257,573 and 1,902,976 bytes.
The only delivered rows on record have expired, so this is the real sample a keyless run wrote on
2 October 2026 inside its DIAGNOSTICS record, with the note cut short. A delivered row has the
same scene fields with ok: true, imageKey, imageUrl, contentType and bytes filled in, and
no _sample, charged, reason, note or hint.
{"_sample": true,"charged": false,"reason": "missing_api_key","note": "No API key supplied, so nothing was generated and no rows were charged. ...","hint": "Set \"openaiApiKey\".","index": 1,"scene": "A lighthouse keeper discovers a glowing map at dawn.","prompt": "Cinematic storyboard frame of a lighthouse keeper holding a glowing map at dawn. No text, no words, no captions, no watermark, no logos in the image.","imageKey": null,"imageUrl": null,"aspectRatio": "9:16","size": "1024x1536"}
| Field | How to read it |
|---|---|
prompt | Exactly what the image model was given. When a scene comes out wrong, read this first. |
imageUrl | A direct link to the picture. imageKey is its name in the store. |
size | The pixel size for the shape you picked. |
🧾 Reading the output
The dataset only ever holds finished images. A scene that failed is not in it, and neither is any notice about the run.
Everything else goes to two places: a DIAGNOSTICS record in the run's key-value store, and a
separate dataset named storyboard-diagnostics in your account. Both carry a short reason code:
| Reason | What happened |
|---|---|
missing_api_key | No key was supplied, so nothing was rendered. |
no_story_and_no_scenes | Neither field had anything in it. |
scene_split_failed | The chat model could not produce a usable scene list. |
no_usable_scenes | The split came back, but every scene in it was blank. |
partial_failure | Some images were delivered and some scenes failed. Only the delivered ones are charged. |
all_scenes_failed | No image could be made. The record carries the first error. |
time_limit | The run reached its time limit. Images made before it are delivered and charged, and the record says which scenes were not made. With none made, the run is marked failed. |
unexpected_error | The run stopped early on a bug. Report the run ID. |
The run finishes green unless its time limit came first. That is deliberate, since the dataset is what gets billed,
but it does mean an empty dataset here means read DIAGNOSTICS, not that your story was too
short.
storyboard-diagnostics is a named dataset, so it stays in your account and grows with every run.
Clear it out now and then.
The Overview table shows index, scene, imageUrl and aspectRatio. prompt, bytes and
contentType are in the row but not in that table.
💡 What people use it for
- Shot sequences for faceless video, where a script has to become pictures before anything is cut.
- Comic and webtoon roughs, working from a scene list rather than a story.
- Ad and pitch concepts, where the point is showing a client the run of shots, not a finished frame.
- Laying out a children's book or an explainer, one page at a time, in one style.
From a story to a narrated slideshow, in three runs:
- Run this on your story and copy the
imageUrlvalues inindexorder. - Read the same story out with
AI Text to Speech Voiceover and copy
audioUrl. - Give both to Storyboard Video Generator as Image URLs and Audio URL, and you get the MP4.
🚧 What it does not do
- It does not lock a face. Continuity comes from repeating your
charactersnotes in every prompt, so people stay close but shift a little shot to shot. If you need a locked character, the reference bank below is the better tool. - No video. Still images only, no motion, no assembly.
- No editing or upscaling. It renders once. There is no retouch pass and no second attempt on a picture you dislike.
- 20 images per run, whatever
numScenessays. - No text in the images. Prompts ask for none, because rendered lettering usually comes out wrong.
- It will not work without your key, and the key has to be valid for both the chat model and the image model you name.
- 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 AI image actor do you need?
| If you want | Use |
|---|---|
| A run of scene images from a story | This one |
| One character in many poses, from a fixed reference set | AI Character Reference Bank |
| A finished vertical video, script and voice included | AI Faceless Video Generator |
| Images you already have turned into a video | Storyboard Video Generator |
| A single thumbnail rather than a sequence | AI Thumbnail Generator |
| A story rewritten into a short spoken script first | Story to Script Rewriter |
❓ Questions people ask
Do I need my own OpenAI key for the storyboard?
Yes, for the renders. There is no shared key behind this.
Why did my run finish with nothing in it?
One of the reasons above. Open DIAGNOSTICS in the run's key-value store and it will say which.
Will the same character look the same in every shot?
Close, not identical. Write the characters note like a casting brief, with hair, age and clothing
in it, and it holds up better.
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/ai-storyboard-generator. Either way
the run happens on your Apify account at the same price, and OpenAI bills your key as usual.
🆘 If something breaks
Open the Issues tab on the actor page. Include the run ID and the reason code from
DIAGNOSTICS, since it already carries the exact message and a suggested fix.