Build a Product Video Storyboard and ASS Captions from Five Frames
Run SCTCamp’s local demo to turn five placeholder frames into six storyboard segments and a 21.40-second ASS subtitle track.
SCTCamp’s Week 6 editing demo turns five placeholder frames into six storyboard segments and a 21.40-second ASS subtitle track. Open the storyboard and subtitle files to verify the source shot, clip duration, and caption timing for every segment. The demo uses local mock labels and a script template. It runs without an API key, a voice service, or FFmpeg. Pinned demo source · Public sample report, in Chinese
How do you reproduce the same storyboard?
Run these commands in a terminal with Git and uv. The pinned commit and its lockfile reproduce the example below. The first setup may need internet access to prepare Python and install dependencies.
git clone https://github.com/scotti1i/sct-camp.git
cd sct-camp
git switch --detach 065c875be1d32b040704a7a872e6d6fc62affcab
uv run --locked --package week06-auto-edit week06 demo
Open weeks/week06-auto-edit/output/ when the command finishes. View demo-report.html in a browser. The JSON and ASS files under demo/ open in a text editor. Open-source setup instructions
You can also inspect the files from this run directly. The captions use the demo’s fictional Chinese script. Storyboard JSON · ASS caption track
How do the output files relate to each other?
| File | Fields to check |
|---|---|
demo/assets/*.png and demo/assets.json | Five 540 × 960 placeholder frames. In assets, file names the frame, duration is its fictional clip duration, and note and roles hold the mock labels. |
demo/script.json | The script array has six lines. Each carries a role, spoken text in voiceover, and on-screen text in caption. |
demo/storyboard.json | Each entry in segments maps a line to an asset. Its in and out values are offsets inside that source asset. The entry also carries role, voiceover, and caption. |
demo/subs.ass | Each caption becomes a Dialogue entry on the assembled timeline. Words marked with asterisks get yellow styling. The ASS canvas is 1080 × 1920. |
The first segment takes seconds 0.00 through 3.50 from demo-01.png. The next segment starts at 0.00 within a different asset. Its caption starts at 3.50 on the assembled timeline because the first segment is 3.50 seconds long. Add out − in for the preceding segments to get each caption’s start time. Placeholder inputs and subtitle implementation
What timings should you get?
| Script role | Asset | Source range (seconds) | ASS caption timeline (seconds) |
|---|---|---|---|
| hook | demo-01.png | 0.00–3.50 | 0.00–3.50 |
| pain | demo-03.png | 0.00–3.75 | 3.50–7.25 |
| feature | demo-02.png | 0.00–3.50 | 7.25–10.75 |
| feature | demo-04.png | 0.00–3.25 | 10.75–14.00 |
| proof | demo-05.png | 0.00–3.40 | 14.00–17.40 |
| cta | demo-01.png | 0.00–4.00 | 17.40–21.40 |
The storyboard validator drops references to missing assets. It clamps starts to at least zero and ends to the asset’s duration. It discards segments shorter than 0.8 seconds after those checks and stops the pipeline if fewer than three valid segments remain. The last caption runs from 0:00:17.40 through 0:00:21.40. Storyboard validation code
What changes when you use your own product?
Work from copies of assets you have permission to use. Check that the shots and script match the actual product, and keep files with customer details, orders, or unreleased product information in your internal workspace. The demo produces a storyboard, captions, and an HTML report. Voice synthesis and MP4 rendering have their own steps and environment requirements. Week 6 editing demo · Product video shot list · Workflow for your own footage
To check frame size, frame rate, and caption boundaries on a rendered vertical video, run Scott’s Day 4 project. Vertical video render and quality checks