Want to turn a finished script into shoot-ready storyboard frames, fast? Paste your script, pick the number of shots, and AI automatically breaks it into per-shot specs to generate storyboard sheets — up to 12 shots per sheet, with longer sequences automatically split across multiple sheets. Specify shot size, camera angle, camera moves, and mood right in the script ("shot 3 close-up", "high angle", "cold and oppressive") so every frame follows your directorial intent. Supports 16:9, 2.35:1, 4:3, and 9:16 aspect ratios, plus character design and style reference images — everything in one run, ready for film crews, short-video creators, and animation storyboard artists.
npx skills add https://github.com/surgepix/agent-skills --skill surgepix-generate-storyboardGenerate film storyboard images (landscape, 16:9 by default) from a script / storyboard description via the platform API, and return a download link.
| Action | Description |
|---|---|
| Generate film storyboards | Create a continuous sequence of storyboard images from a script |
| Auto storyboarding | The LLM parses the script / story outline and automatically breaks it into shot specs, then generates multiple storyboard images |
| Storyboard sheet output | One storyboard sheet holds up to 12 shots; more than 12 shots are automatically split into multiple sheets |
| Parse director requirements | The user writes shot size, camera angle, camera move, mood, etc. into the script; the Agent parses and folds them into the shot specs |
| Upload reference images | Upload character/ style reference images to apply to the storyboard |
| Set aspect ratio | Specify the frame ratio via --aspect-ratio (16:9 / 2.35:1 / 4:3 / 9:16) |
| Check task status | Poll a generation task by taskId to check progress |
| Download result | Retrieve the download URL |
By default ( --nowait false) the API waits for completion and returns the final download link directly.Pass --nowait true to get a taskId immediately; then check progress via the surgepix-query-task skill. | |
Step 0: Check environment (required)
Before running, verify config:
node "<skills-dir>/surgepix-setup/scripts/check_env.mjs"
.env following the surgepix-setup skill, then retryStep 1: Gather inputs
The core input comes from the user: the script / outline text (--script). The shot specs (--shots) are automatically generated by the Agent before the call and are not required from the user.
4, range 1-30): the number of shots. The Agent splits the script into that many shots; one storyboard sheet holds at most 12 shots — more than 12 are automatically split into multiple sheets (e.g. 20 shots → sheet 1 with 12 + sheet 2 with 8).16:9): frame ratio. Options: 16:9 (TV/film), 2.35:1 (widescreen), 4:3 (classic film / animation), 9:16 (vertical).JPEG / JPG / PNG / WEBP — max 20MB each.sessionId (number type) printed by the previous run; omit for a fresh request — the platform auto-creates a new session.Step 2: Run generate-storyboard
node "<skills-dir>/surgepix-generate-storyboard/scripts/generate_storyboard.mjs" \ [--script "<script>"] [--shots '<json>'] [--shots-file "<path>"] \ [--count <1-30>] [--aspect-ratio <16:9>] [--reference "<path-or-url>" ...] \ [--session-id <id>] [--nowait <true|false>]
| Parameter | Description |
|---|---|
--script <text> | Script / story outline (provided by the user; recommended mode) |
--shots <json> | Shot spec JSON array (an Agent-generated internal artifact, not filled in by the user) |
--shots-file <path> | Script / story outline (provided by the user; recommended mode) |
--count <1-30> | Number of shots, default 4; one sheet holds at most 12 shots — more auto-split into multiple sheets |
--aspect-ratio <16:9> | Frame ratio: 16:9 / 2.35:1 / 4:3 / 9:16 |
--reference <path-or-url> | Reference image (local path auto-uploaded; repeatable for multiple images) |
--session-id <id> | Session ID; pass the sessionId (number type) from a previous run to iterate |
--nowait <true|false> | Wait mode, default false (see below) |
The request is always submitted asynchronously. --nowait false (default) makes the script poll internally until the task completes and returns the final download--nowait true makes the script return the taskId immediately, to be resolved later via the surgepix-query-task skill.
Step 3: Parse output
Single storyboard (--count 1 or --shots with only 1 entry, stdout):
{"ok":true,"taskId":"task_xxx","sessionId":123,"progress":"succeeded","download":"https://...images.zip","imageCount":4,"resultType":"zip","note":"API 仅返回 ZIP 下载地址,不含单张图片 URL;禁止编造单张链接"}
Async submitted (--nowait true, stdout) — resolve later with the surgepix-query-task skill:
{"ok":true,"async":true,"taskId":"task_xxx","sessionId":123,"progress":"processing","download":null,"hint":"..."}
Failure (stderr):
{"ok":false,"error":"..."}
Step 4: Present result
download URL from script output. Always show sessionId (note: it is a number type, e.g. 123 ) so the user can pass it in a retry if needed.resultType: "image" (imageCount === 1): single storyboard image URLresultType: "zip" (imageCount > 1): ZIP archive — do not list per-image URLserror field. Common causes:missing_required_param — --script (script / outline) not providedinvalid_param_value — --count out of range or invalid --aspect-ratiounsupported_image_format — reference image format not supportedimage_too_large — reference image exceeds 20MBgeneration_failed — internal error; retry or simplify the descriptionCreate & Edit Visuals with AI
© 2026 SurgePix. All rights reserved. Made with ❤️ for productivity.