| name | narrated-multi-scene |
| description | Use when someone wants a multi-part story with voiceover โ episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. |
| license | MIT |
| metadata | {"version":"1.0.8","package":"pruna-skills"} |
Prerequisites
Install and load these skills before generating (skip if already in context via @pruna):
| Skill | Description | Install |
|---|
p-image | Use when someone wants a fast AI image โ product shots, hero visuals, mood boards, or draft photos from a text prompt. | npx skills add PrunaAI/pruna-skills@p-image -y |
p-image-edit | Use when someone wants to edit an existing photo โ change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | npx skills add PrunaAI/pruna-skills@p-image-edit -y |
p-video | Use when someone wants one short video clip from text or images โ B-roll, start/end frame animation, or a quick motion shot. Not for full multi-scene films or lip-synced hosts. | npx skills add PrunaAI/pruna-skills@p-video -y |
gemini-3.1-flash-tts | Use when someone needs spoken narration or voiceover โ explainer tracks, documentary lines, or voice to pair with generated video. | npx skills add PrunaAI/pruna-skills@gemini-3.1-flash-tts -y |
stable-audio-2.5 | Use when someone wants light instrumental background music โ an ambient bed under dialogue or underscore for reels and explainers. | npx skills add PrunaAI/pruna-skills@stable-audio-2.5 -y |
Or install the full suite once: npx skills add PrunaAI/pruna-skills@pruna -y
Follow each skill's Before generating / craft sections โ do not restate guide content here.
Workflow habit
In every reply, name `narrated-multi-scene` in backticks. State phase gates using exact phrases approve plan, approve stills, approve clips (user types these to proceed). Do not same-turn plan + paid video. Skip-review / burn-credits โ follow generation-diversity Red flags.
Feedback gates (required)
| Phase | What to show | Proceed when |
|---|
| 0 โ Plan | Scene table, narration lines, style_bible | approve plan |
| A โ Stills | Hero + start/end stills per scene | approve stills |
| A2 โ TTS | audio/narration_*.mp3 per scene โ listen | Lines OK (ffprobe โค ~19s) |
| B โ Video | p-video clips with embedded VO | approve clips |
| D โ Bed | Optional Stable Audio under concat | User accepts |
Execute phases with parallel curl batches โ never batch p-video before still and TTS review.
Intake: ask before generating
Open intake โ generation-diversity clarification intake.
Do not start scene 1 until the whole scene plan exists in writing (manifest or table):
| Topic | Questions |
|---|
| Story | Order of scenes (1โฆN)? What changes between scenes (location, time, emotion)? |
| Media source | Per scene: generate stills/TTS with Pruna tools vs upload user frames or VO? |
| Format | Global aspect_ratio; default video 720p / 1080p and fps for triple scenes? |
| Per scene i | Primary prompt? First frame (image), last frame (last_frame_image), narration (audio URL)? Scene-level resolution / fps / draft overrides? |
| Continuity | Per scene: chain_from_previous only when motion continues (same moment/location). Otherwise composed OPENING still + hard cut. End stills via p-image-edit; extract last frame when chaining. |
| Audio | Scene anchor triple (preferred): TTS โ upload โ p-video with image + last_frame_image + audio (omit duration; save_audio: true). Each scene line โค ~19s โ P-API caps audio-led clips at 20s. Optional Stable Audio bed in post only. |
| Visual style | Locked style_bible? One specific subject/location per still? Avoid unrelated branding unless the brief asks for it |
| Global | Default aspect_ratio for text-only scenes? Global seed policy? |
| Runtime | Target total duration after assembly? |
| Assembly | Concat order; narration mux; bed mix volume (~0.08โ0.15 under VO)? |
Ask follow-ups until every scene row has enough to build input without guessing.
Scene table (template โ fill during intake)
# | Prompt | First frame (image) | Last frame (last_frame_image) | Narration (audio) | Mode |
|---|
| 1 | motion prompt | start still | end still โ scene 2 | TTS line โ upload | triple |
| 2 | | = scene 1 end | end still โ scene 3 | TTS line โ upload | triple |
Mode: T2V ยท I2V ยท I2V+last ยท triple (image + last_frame_image + audio โ omit duration)
How the agent runs this
- Write the scene table (or plan JSON) โ approve plan.
- Hero โ parallel
p-image-edit start/end stills (pruna-api parallel batches) โ approve stills.
- Parallel Gemini TTS โ duration gate on every MP3 โ upload โ listen โ proceed.
- Parallel
p-video triples once all anchors ready โ approve clips.
- ffmpeg concat (ยฑ crossfade) โ optional bed.
Workflow (after intake)
Phase 0 โ Stills (parallel when independent)
- Hero anchor โ one approved
p-image or upload.
p-image-edit per scene โ start still (edit_prompt) from hero; end still (last_frame_edit_prompt) from start still. Parallel after hero exists.
- Frame chain (selective): set
chain_from_previous: true only when scene i continues directly from iโ1. Use composed start still + hard cut for new beats.
Phase 1 โ Audio (parallel)
gemini-3.1-flash-tts per scene โ upload each to /v1/files.
Duration gate (required):
ffprobe -v error -show_entries format=duration -of csv=p=0 audio/narration_01.mp3
If any scene exceeds ~19s, fix before p-video โ output truncates at the 20s API max even when input.audio is set.
If a line is too long (pick one or combine):
| Remedy | When | Action |
|---|
| Shorten copy | One beat has too many facts | Cut clauses; keep dates/names; target โค ~45 words (~17โ18s) per scene |
| Faster pace | Line is right length but slow delivery | Tighten Gemini style_prompt (e.g. ~2.3 words/sec, brisk, no filler); regenerate TTS only |
| Split scene | Two story beats in one row | Add scene row + edit_prompt / last_frame_edit_prompt / narration; one MP3 per row |
Phase 2 โ Video (parallel when all anchors ready)
Scene anchor triple โ one p-video job per row:
{
"prompt": "...",
"image": "START_URL",
"last_frame_image": "END_URL",
"audio": "NARRATION_URL",
"resolution": "720p",
"fps": 24,
"save_audio": true
}
Omit duration. Always include uploaded audio in input. Poll all get_url until done; retry failed scenes only. Parallel pattern: pruna-api.
Phase 3 โ Review
Adjust prompt, stills, or narration; re-run that scene only.
Phase 4 โ Assembly
Hard-cut concat (narration already embedded):
ffmpeg -y -f concat -safe 0 -i clips.txt -c copy film.mp4
Optional short crossfade between chained scenes (~0.15s) โ use xfade / acrossfade when joins need softness; hard-cut elsewhere.
Optional bed โ stable-audio-2.5 under VO:
ffmpeg -y -i film.mp4 -i bed.mp3 \
-filter_complex "[1:a]volume=0.12[bed];[0:a][bed]amix=inputs=2:duration=first[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac film_with_bed.mp4
Phase 5 โ Manifest
Scene table + all six URLs per scene (start, end, audio in/out) + prediction ids.
Frame-chain + narration example (dog story)
Scene 1: composed start, last=play_end, audio=vo_1 chainโ2
Scene 2: extract(clip_1), last=loss_end, audio=vo_2 hard cutโ3
Scene 3: composed start, last=search_end, audio=vo_3 chainโ4
Scene 4: extract(clip_3), last=tree_end, audio=vo_4 chainโ5
Scene 5: extract(clip_4), last=reunion, audio=vo_5
See video-prompting for when to chain vs hard cut, and OPEN/MID/CLOSE prompt structure.
Related
Related skills:
| Skill | Description | Install |
|---|
image-to-video | Use when someone wants one short film beat from images โ a narrated scene, story moment, or cinematic B-roll with optional voiceover. | npx skills add PrunaAI/pruna-skills@image-to-video -y |
avatar-multi-scene | Use when someone wants the same person hosting several clips โ multi-segment UGC, comparison reels, or mixed speaking and animated scenes with continuity. | npx skills add PrunaAI/pruna-skills@avatar-multi-scene -y |
audio-prompting | Use when crafting TTS, music, or bed prompts for any generative audio model โ director style, song structure, and post-production layering. | npx skills add PrunaAI/pruna-skills@audio-prompting -y |
pruna-api | Use before any Pruna or Replicate HTTP call โ credentials, upload/poll/download, parallel batches, and agent safety. | npx skills add PrunaAI/pruna-skills@pruna-api -y |
video-editing | Use when assembling or polishing already-rendered clips with ffmpeg โ concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export โ or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | npx skills add PrunaAI/pruna-skills@video-editing -y |