{"id":"dafe0a8e-e5e1-46d2-906d-e5a479d65f6c","entityType":"agent","slug":"clawhub-pruna-ai-narrated-multi-scene","name":"narrated-multi-scene","canonicalUrl":"https://www.xpersona.co/agent/clawhub-pruna-ai-narrated-multi-scene","canonicalPath":"/agent/clawhub-pruna-ai-narrated-multi-scene","generatedAt":"2026-10-10T13:40:58.552Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T11:10:56.971Z","emptyReason":null},"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. Skill: narrated-multi-scene Owner: pruna-ai Summary: Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. Tags: ai:1.0.14, generative:1.0.14, latest:1.0.14, pruna:1.0.14 Version history: v1.0.14 | 2026-09-29T15:36:50.636Z | auto - Version bump to 1.0.14. - Documentation update: SKILL.md revised; minor adjustments, no wo","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.5K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s173djpkkm1x4yfzg522h5vfp989mrn5:narrated-multi-scene","sourceUrl":"https://clawhub.ai/pruna-ai/narrated-multi-scene","homepage":"https://clawhub.ai/pruna-ai/skills/narrated-multi-scene","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/pruna-ai/narrated-multi-scene","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/pruna-ai/skills/narrated-multi-scene","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. Skill: n"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T11:10:56.971Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T11:10:56.971Z","emptyReason":null},"stars":null,"forks":null,"downloads":1473,"packageName":null,"latestVersion":"1.0.14","tractionLabel":"1.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T11:10:56.971Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T11:10:56.971Z","lastCrawledAt":"2026-10-10T11:10:56.971Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T11:10:56.971Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.14","createdAt":"2026-09-29T15:36:50.636Z","changelog":"- Version bump to 1.0.14. - Documentation update: SKILL.md revised; minor adjustments, no workflow or logic changes. - Removed skill-card.md file.","fileCount":4,"zipByteSize":6035},{"version":"1.0.13","createdAt":"2026-09-17T13:59:58.011Z","changelog":"- Updated to version 1.0.13. - Refined video skill descriptions for `p-video-2` and `p-video` in the prerequisites table, clarifying quality and audio support. - Removed the `skill-card.md` file.","fileCount":4,"zipByteSize":6191},{"version":"1.0.12","createdAt":"2026-09-10T13:58:34.317Z","changelog":"**Enhanced video and image quality options for multi-scene narration.** - Added `p-image-ideogram` and `p-video-2` to supported tools for higher control and video quality. - Updated integration guidance to prefer `p-video-2` for the main workflow, with fallback to `p-video` for simple/draft clips. - Clarified roles of each image and video generation skill in both prerequisites and workflow steps. - Removed outdated `skill-card.md`. - Refined intake and workflow instructions to leverage new skills and improve user guidance.","fileCount":4,"zipByteSize":6188},{"version":"1.0.11","createdAt":"2026-09-03T14:12:42.415Z","changelog":"- Bumped version to 1.0.11 in metadata. - Removed redundant file: skill-card.md. - No functional or documentation changes to SKILL.md content.","fileCount":4,"zipByteSize":5927},{"version":"1.0.10","createdAt":"2026-08-28T07:58:31.399Z","changelog":"narrated-multi-scene v1.0.10 - Bumped version to 1.0.10 in SKILL.md. - Removed redundant skill-card.md file.","fileCount":4,"zipByteSize":5822},{"version":"1.0.9","createdAt":"2026-08-04T06:18:55.705Z","changelog":"- Updated to version 1.0.9. - Clarified that `p-image` is for fastest/cheapest photos and not for controlled photoreal or in-image text. - Removed the file `skill-card.md`. - Minor refinements and clarifications in skill prerequisites and usage descriptions.","fileCount":4,"zipByteSize":5865},{"version":"1.0.8","createdAt":"2026-07-28T17:20:58.366Z","changelog":"Version 1.0.8 - Clarified intake workflow, specifying a new \"generation-diversity\" clarification step. - Expanded intake table to distinguish generating vs uploading per-scene media (frames and voiceover). - Added explicit questions about global video format (aspect ratio, resolution, fps) and format per scene. - No longer includes the file skill-card.md. - Minor edits for clarity and precision in workflow instructions.","fileCount":4,"zipByteSize":5796},{"version":"1.0.7","createdAt":"2026-07-23T12:36:03.704Z","changelog":"Version 1.0.7 of narrated-multi-scene: Major cleanup and simplification. - Consolidated guide: Rewrote SKILL.md for clarity, direct workflow, and shorter onboarding. - Removed 14 internal policy/reference files; now encourages direct skill usage and parallel execution via shell or API. - Strengthened phase gate instructions using exact response phrases (**approve plan**, **approve stills**, etc.). - Updated prerequisites table with install commands; removed redundant policy restatements. - Examples and shell snippets now highlight how to batch, chain, and assemble multi-scene projects. - skill.manifest.json updated for new version and package metadata.","fileCount":4,"zipByteSize":5897}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s173djpkkm1x4yfzg522h5vfp989mrn5:narrated-multi-scene","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-narrated-multi-scene/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-narrated-multi-scene/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-narrated-multi-scene/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-narrated-multi-scene/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-narrated-multi-scene/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-narrated-multi-scene/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T13:40:58.548Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-narrated-multi-scene/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-narrated-multi-scene/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-narrated-multi-scene/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-narrated-multi-scene/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T11:10:56.971Z","emptyReason":null},"readme":"Skill: narrated-multi-scene\n\nOwner: pruna-ai\n\nSummary: Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue.\n\nTags: ai:1.0.14, generative:1.0.14, latest:1.0.14, pruna:1.0.14\n\nVersion history:\n\nv1.0.14 | 2026-09-29T15:36:50.636Z | auto\n\n- Version bump to 1.0.14.\n- Documentation update: SKILL.md revised; minor adjustments, no workflow or logic changes.\n- Removed skill-card.md file.\n\nv1.0.13 | 2026-09-17T13:59:58.011Z | auto\n\n- Updated to version 1.0.13.\n- Refined video skill descriptions for `p-video-2` and `p-video` in the prerequisites table, clarifying quality and audio support.\n- Removed the `skill-card.md` file.\n\nv1.0.12 | 2026-09-10T13:58:34.317Z | auto\n\n**Enhanced video and image quality options for multi-scene narration.**\n\n- Added `p-image-ideogram` and `p-video-2` to supported tools for higher control and video quality.\n- Updated integration guidance to prefer `p-video-2` for the main workflow, with fallback to `p-video` for simple/draft clips.\n- Clarified roles of each image and video generation skill in both prerequisites and workflow steps.\n- Removed outdated `skill-card.md`.\n- Refined intake and workflow instructions to leverage new skills and improve user guidance.\n\nv1.0.11 | 2026-09-03T14:12:42.415Z | auto\n\n- Bumped version to 1.0.11 in metadata.\n- Removed redundant file: skill-card.md.\n- No functional or documentation changes to SKILL.md content.\n\nv1.0.10 | 2026-08-28T07:58:31.399Z | auto\n\nnarrated-multi-scene v1.0.10\n\n- Bumped version to 1.0.10 in SKILL.md.\n- Removed redundant skill-card.md file.\n\nv1.0.9 | 2026-08-04T06:18:55.705Z | auto\n\n- Updated to version 1.0.9.\n- Clarified that `p-image` is for fastest/cheapest photos and not for controlled photoreal or in-image text.\n- Removed the file `skill-card.md`.\n- Minor refinements and clarifications in skill prerequisites and usage descriptions.\n\nv1.0.8 | 2026-07-28T17:20:58.366Z | auto\n\nVersion 1.0.8\n\n- Clarified intake workflow, specifying a new \"generation-diversity\" clarification step.\n- Expanded intake table to distinguish generating vs uploading per-scene media (frames and voiceover).\n- Added explicit questions about global video format (aspect ratio, resolution, fps) and format per scene.\n- No longer includes the file skill-card.md.\n- Minor edits for clarity and precision in workflow instructions.\n\nv1.0.7 | 2026-07-23T12:36:03.704Z | auto\n\nVersion 1.0.7 of narrated-multi-scene: Major cleanup and simplification.\n\n- Consolidated guide: Rewrote SKILL.md for clarity, direct workflow, and shorter onboarding.\n- Removed 14 internal policy/reference files; now encourages direct skill usage and parallel execution via shell or API.\n- Strengthened phase gate instructions using exact response phrases (**approve plan**, **approve stills**, etc.).\n- Updated prerequisites table with install commands; removed redundant policy restatements.\n- Examples and shell snippets now highlight how to batch, chain, and assemble multi-scene projects.\n- skill.manifest.json updated for new version and package metadata.\n\nv1.0.6 | 2026-07-16T20:58:28.548Z | auto\n\nVersion 1.0.6\n\n- Added a new section formalizing shared generation policies: seed rituals, diversity, quality checklists, staged gates, approval requirements, and parallel execution.\n- Added `references/approval-red-flags.md` and `references/generation-quality-checklists.md` for new guidance on approval and quality.\n- Updated references to use new or relocated policy documents.\n- Clarified generation workflow to emphasize explicit gated approval and never skipping phases.\n- Improved intake and review instructions for scene planning and quality assurance.\n- Removed obsolete or redundant files (e.g., skill-card.md).\n\nv1.0.2 | 2026-07-16T13:26:08.664Z | auto\n\n- Version bump to 1.0.2.\n- Documentation updates and clarifications in SKILL.md and reference docs.\n- No functional or workflow changes; process and requirements remain unchanged.\n- Removed skill-card.md file.\n\nv1.0.1 | 2026-07-14T15:46:40.142Z | auto\n\n- Added explicit MIT license information.\n- Updated and standardized all cross-reference links to use either relative paths or canonical GitHub URLs for clarity and portability.\n- Added new reference: random-seed-ritual.md.\n- Removed legacy files: pspm.json and skill-card.md.\n- Updated skill version to 1.0.1 and metadata.\n- Improved and clarified documentation details and link structure throughout.\n\nv0.0.1 | 2026-07-14T15:03:01.405Z | auto\n\nInitial release — provides a full workflow for creating AI-generated, multi-scene narrated videos without in-scene character dialogue.\n\n- Defines intake questions and a detailed scene table structure for planning.\n- Guides phased creation: still image anchors, per-scene TTS narration, and scene-based video generation.\n- Introduces feedback gates for plan, visuals, narration, and clip review before advancing phases.\n- Details assembly steps for concatenating scene clips and optional background music bed.\n- Includes sample frame-chaining/narration logic, troubleshooting, and comparison to related skills.\n\nv1.0.0 | 2026-06-30T14:47:32.884Z | auto\n\nInitial release of narrated-multi-scene skill for creating multi-scene, narrated video sequences without in-scene character dialogue.\n\n- Introduces a detailed workflow for planning, generating, and assembling episodic video with narration.\n- Implements feedback gates: plan approval, still and TTS preview, clip review, and optional music bed.\n- Supports multiple scenes with a structured scene table and emphasizes per-scene intake questions.\n- Requires “scene anchor triple” for each video segment—a start image, end image, and TTS audio.\n- Includes guidance for narration duration limits, scene chaining for visual continuity, and post-assembly options.\n- Provides references for related workflows, best practices, and integrations.\n\nArchive index:\n\nArchive v1.0.14: 4 files, 6035 bytes\n\nFiles: skill-card.md (1838b), skill.manifest.json (23b), SKILL.md (10595b), _meta.json (140b)\n\nFile v1.0.14:SKILL.md\n\n---\nname: narrated-multi-scene\ndescription: Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue.\nlicense: MIT\nmetadata:\n  version: \"1.0.14\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image-ideogram` | Use when photo generation needs more control — photoreal results, text in the image, or structured JSON with hex colors and bounding boxes. Simpler photo generation, edits, and video use other skills in the suite. | `npx skills add PrunaAI/pruna-skills@p-image-ideogram -y` |\n| `p-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `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` |\n| `p-video-2` | Use when someone wants a polished short clip from text, images, or imported audio — 1080p B-roll, start/end frame animation, or a motion shot with a mixed track. Not for cinematic generated-audio clips or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2 -y` |\n| `p-video` | Use when someone wants a simple short clip from text or images — quick B-roll, drafts, or start/end frame animation. Not when the brief needs cinematic generation, highest quality, tight lip-sync, or imported audio at 1080p. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `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` |\n| `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` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **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**.\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, narration lines, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end stills per scene | **approve stills** |\n| **A2 — TTS** | `audio/narration_*.mp3` per scene — listen | Lines OK (`ffprobe` ≤ ~19s) |\n| **B — Video** | `p-video-2` clips with embedded VO | **approve clips** |\n| **D — Bed** | Optional Stable Audio under concat | User accepts |\n\nExecute phases with parallel curl batches — **never** batch `p-video-2` before still and TTS review. Quality path: `p-video-2`. Simpler clips: `p-video`.\n\n## Intake: ask before generating\n\nOpen intake → **`generation-diversity`** clarification intake.\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Order of scenes (1…N)? What changes between scenes (location, time, emotion)? |\n| **Media source** | Per scene: **generate** stills/TTS with Pruna tools vs **upload** user frames or VO? |\n| **Format** | Global `aspect_ratio`; default video **`720p` / `1080p`** and `fps` for triple scenes? |\n| **Per scene *i*** | Primary `prompt`? **First frame** (`image`), **last frame** (`last_frame_image`), **narration** (`audio` URL)? Scene-level `resolution` / `fps` / `draft` overrides? |\n| **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. |\n| **Audio** | **Scene anchor triple (preferred):** TTS → upload → **`p-video-2`** 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. |\n| **Visual style** | Locked `style_bible`? **One specific subject/location per still**? Avoid unrelated branding unless the brief asks for it |\n| **Global** | Default `aspect_ratio` for text-only scenes? Global `seed` policy? |\n| **Runtime** | Target total duration after assembly? |\n| **Assembly** | Concat order; narration mux; bed mix volume (~0.08–0.15 under VO)? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Scene table (template — fill during intake)\n\n| `#` | Prompt | First frame (`image`) | Last frame (`last_frame_image`) | Narration (`audio`) | Mode |\n|-----|--------|----------------------|----------------------------------|---------------------|------|\n| 1 | motion prompt | start still | end still → scene 2 | TTS line → upload | triple |\n| 2 | | = scene 1 end | end still → scene 3 | TTS line → upload | triple |\n\n**Mode:** `T2V` · `I2V` · `I2V+last` · **`triple`** (`image` + `last_frame_image` + `audio` — omit `duration`)\n\n## How the agent runs this\n\n1. Write the scene table (or plan JSON) → **approve plan**.\n2. Hero → parallel `p-image-edit` start/end stills (`pruna-api` parallel batches) → **approve stills**.\n3. Parallel Gemini TTS → **duration gate** on every MP3 → upload → listen → proceed.\n4. Parallel `p-video-2` triples once all anchors ready → **approve clips**.\n5. ffmpeg concat (± crossfade) → optional bed.\n\n## Workflow (after intake)\n\n### Phase 0 — Stills (parallel when independent)\n\n1. **Hero anchor** — one approved `p-image-ideogram` or upload (`p-image` for a cheap draft).\n2. **`p-image-edit`** per scene — **start still** (`edit_prompt`) from hero; **end still** (`last_frame_edit_prompt`) from start still. Parallel after hero exists.\n3. **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.\n\n### Phase 1 — Audio (parallel)\n\n`gemini-3.1-flash-tts` per scene → upload each to `/v1/files`.\n\n**Duration gate (required):**\n\n```bash\nffprobe -v error -show_entries format=duration -of csv=p=0 audio/narration_01.mp3\n```\n\nIf any scene exceeds **~19s**, fix before `p-video-2` — output truncates at the **20s** API max even when `input.audio` is set.\n\n**If a line is too long (pick one or combine):**\n\n| Remedy | When | Action |\n|--------|------|--------|\n| **Shorten copy** | One beat has too many facts | Cut clauses; keep dates/names; target **≤ ~45 words** (~17–18s) per scene |\n| **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 |\n| **Split scene** | Two story beats in one row | Add scene row + `edit_prompt` / `last_frame_edit_prompt` / narration; one MP3 per row |\n\n### Phase 2 — Video (parallel when all anchors ready)\n\n**Scene anchor triple** — one `p-video-2` job per row:\n\n```json\n{\n  \"prompt\": \"...\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"audio\": \"NARRATION_URL\",\n  \"resolution\": \"720p\",\n  \"fps\": 24,\n  \"save_audio\": true\n}\n```\n\nOmit `duration`. **Always** include uploaded `audio` in `input`. Poll all `get_url` until done; retry failed scenes only. Parallel pattern: `pruna-api`.\n\n### Phase 3 — Review\n\nAdjust prompt, stills, or narration; re-run **that scene only**.\n\n### Phase 4 — Assembly\n\nHard-cut concat (narration already embedded):\n\n```bash\n# clips.txt: file 'clips/01.mp4'\\nfile 'clips/02.mp4' …\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy film.mp4\n```\n\nOptional short crossfade between chained scenes (~0.15s) — use `xfade` / `acrossfade` when joins need softness; hard-cut elsewhere.\n\n**Optional bed** — `stable-audio-2.5` under VO:\n\n```bash\nffmpeg -y -i film.mp4 -i bed.mp3 \\\n  -filter_complex \"[1:a]volume=0.12[bed];[0:a][bed]amix=inputs=2:duration=first[a]\" \\\n  -map 0:v -map \"[a]\" -c:v copy -c:a aac film_with_bed.mp4\n```\n\n### Phase 5 — Manifest\n\nScene table + all six URLs per scene (start, end, audio in/out) + prediction ids.\n\n## Frame-chain + narration example (dog story)\n\n```text\nScene 1: composed start,  last=play_end,   audio=vo_1   chain→2\nScene 2: extract(clip_1), last=loss_end,   audio=vo_2   hard cut→3\nScene 3: composed start,  last=search_end, audio=vo_3   chain→4\nScene 4: extract(clip_3), last=tree_end,   audio=vo_4   chain→5\nScene 5: extract(clip_4), last=reunion,   audio=vo_5\n```\n\nSee `video-prompting` for when to chain vs hard cut, and OPEN/MID/CLOSE prompt structure.\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n\nFile v1.0.14:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"narrated-multi-scene\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790696210636\n}\n\nFile v1.0.14:skill-card.md\n\n## Description:\n\nHelps create linked video scenes with voiceover, from scene planning and stills through narration, clip review, and assembly.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[pruna-ai](https://clawhub.ai/user/pruna-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCreators and production teams use this skill to plan, generate, review, and assemble multi-scene narrated videos without on-camera dialogue.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Installing related skills from an untrusted or changing source could introduce unexpected behavior.\n\nMitigation: Use a trusted, version-pinned installation path for referenced Pruna skills.\n\nRisk: Generated or uploaded media may be sent to a configured provider, and paid video generation may incur costs.\n\nMitigation: Review media-sharing requirements and retain the plan, stills, narration, and clip approval gates before paid jobs.\n\n## Reference(s):\n\n- [Narrated Multi Scene on ClawHub](https://clawhub.ai/pruna-ai/skills/narrated-multi-scene)\n\n## Skill Output:\n\n**Output Type(s):** [Markdown, Guidance, Shell commands, Configuration]\n\n**Output Format:** [Markdown scene plans and review prompts, with media-generation and assembly instructions]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Plans include per-scene prompts, stills, narration, and approval gates; completed workflows may produce media files and a scene manifest.]\n\n## Skill Version(s):\n\n1.0.14 (source: release evidence and skill frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.14:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.13: 4 files, 6191 bytes\n\nFiles: skill-card.md (2113b), skill.manifest.json (23b), SKILL.md (10595b), _meta.json (140b)\n\nFile v1.0.13:SKILL.md\n\n---\nname: narrated-multi-scene\ndescription: Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue.\nlicense: MIT\nmetadata:\n  version: \"1.0.13\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image-ideogram` | Use when photo generation needs more control — photoreal results, text in the image, or structured JSON with hex colors and bounding boxes. Simpler photo generation, edits, and video use other skills in the suite. | `npx skills add PrunaAI/pruna-skills@p-image-ideogram -y` |\n| `p-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `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` |\n| `p-video-2` | Use when someone wants a polished short clip from text, images, or imported audio — 1080p B-roll, start/end frame animation, or a motion shot with a mixed track. Not for cinematic generated-audio clips or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2 -y` |\n| `p-video` | Use when someone wants a simple short clip from text or images — quick B-roll, drafts, or start/end frame animation. Not when the brief needs cinematic generation, highest quality, tight lip-sync, or imported audio at 1080p. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `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` |\n| `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` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **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**.\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, narration lines, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end stills per scene | **approve stills** |\n| **A2 — TTS** | `audio/narration_*.mp3` per scene — listen | Lines OK (`ffprobe` ≤ ~19s) |\n| **B — Video** | `p-video-2` clips with embedded VO | **approve clips** |\n| **D — Bed** | Optional Stable Audio under concat | User accepts |\n\nExecute phases with parallel curl batches — **never** batch `p-video-2` before still and TTS review. Quality path: `p-video-2`. Simpler clips: `p-video`.\n\n## Intake: ask before generating\n\nOpen intake → **`generation-diversity`** clarification intake.\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Order of scenes (1…N)? What changes between scenes (location, time, emotion)? |\n| **Media source** | Per scene: **generate** stills/TTS with Pruna tools vs **upload** user frames or VO? |\n| **Format** | Global `aspect_ratio`; default video **`720p` / `1080p`** and `fps` for triple scenes? |\n| **Per scene *i*** | Primary `prompt`? **First frame** (`image`), **last frame** (`last_frame_image`), **narration** (`audio` URL)? Scene-level `resolution` / `fps` / `draft` overrides? |\n| **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. |\n| **Audio** | **Scene anchor triple (preferred):** TTS → upload → **`p-video-2`** 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. |\n| **Visual style** | Locked `style_bible`? **One specific subject/location per still**? Avoid unrelated branding unless the brief asks for it |\n| **Global** | Default `aspect_ratio` for text-only scenes? Global `seed` policy? |\n| **Runtime** | Target total duration after assembly? |\n| **Assembly** | Concat order; narration mux; bed mix volume (~0.08–0.15 under VO)? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Scene table (template — fill during intake)\n\n| `#` | Prompt | First frame (`image`) | Last frame (`last_frame_image`) | Narration (`audio`) | Mode |\n|-----|--------|----------------------|----------------------------------|---------------------|------|\n| 1 | motion prompt | start still | end still → scene 2 | TTS line → upload | triple |\n| 2 | | = scene 1 end | end still → scene 3 | TTS line → upload | triple |\n\n**Mode:** `T2V` · `I2V` · `I2V+last` · **`triple`** (`image` + `last_frame_image` + `audio` — omit `duration`)\n\n## How the agent runs this\n\n1. Write the scene table (or plan JSON) → **approve plan**.\n2. Hero → parallel `p-image-edit` start/end stills (`pruna-api` parallel batches) → **approve stills**.\n3. Parallel Gemini TTS → **duration gate** on every MP3 → upload → listen → proceed.\n4. Parallel `p-video-2` triples once all anchors ready → **approve clips**.\n5. ffmpeg concat (± crossfade) → optional bed.\n\n## Workflow (after intake)\n\n### Phase 0 — Stills (parallel when independent)\n\n1. **Hero anchor** — one approved `p-image-ideogram` or upload (`p-image` for a cheap draft).\n2. **`p-image-edit`** per scene — **start still** (`edit_prompt`) from hero; **end still** (`last_frame_edit_prompt`) from start still. Parallel after hero exists.\n3. **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.\n\n### Phase 1 — Audio (parallel)\n\n`gemini-3.1-flash-tts` per scene → upload each to `/v1/files`.\n\n**Duration gate (required):**\n\n```bash\nffprobe -v error -show_entries format=duration -of csv=p=0 audio/narration_01.mp3\n```\n\nIf any scene exceeds **~19s**, fix before `p-video-2` — output truncates at the **20s** API max even when `input.audio` is set.\n\n**If a line is too long (pick one or combine):**\n\n| Remedy | When | Action |\n|--------|------|--------|\n| **Shorten copy** | One beat has too many facts | Cut clauses; keep dates/names; target **≤ ~45 words** (~17–18s) per scene |\n| **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 |\n| **Split scene** | Two story beats in one row | Add scene row + `edit_prompt` / `last_frame_edit_prompt` / narration; one MP3 per row |\n\n### Phase 2 — Video (parallel when all anchors ready)\n\n**Scene anchor triple** — one `p-video-2` job per row:\n\n```json\n{\n  \"prompt\": \"...\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"audio\": \"NARRATION_URL\",\n  \"resolution\": \"720p\",\n  \"fps\": 24,\n  \"save_audio\": true\n}\n```\n\nOmit `duration`. **Always** include uploaded `audio` in `input`. Poll all `get_url` until done; retry failed scenes only. Parallel pattern: `pruna-api`.\n\n### Phase 3 — Review\n\nAdjust prompt, stills, or narration; re-run **that scene only**.\n\n### Phase 4 — Assembly\n\nHard-cut concat (narration already embedded):\n\n```bash\n# clips.txt: file 'clips/01.mp4'\\nfile 'clips/02.mp4' …\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy film.mp4\n```\n\nOptional short crossfade between chained scenes (~0.15s) — use `xfade` / `acrossfade` when joins need softness; hard-cut elsewhere.\n\n**Optional bed** — `stable-audio-2.5` under VO:\n\n```bash\nffmpeg -y -i film.mp4 -i bed.mp3 \\\n  -filter_complex \"[1:a]volume=0.12[bed];[0:a][bed]amix=inputs=2:duration=first[a]\" \\\n  -map 0:v -map \"[a]\" -c:v copy -c:a aac film_with_bed.mp4\n```\n\n### Phase 5 — Manifest\n\nScene table + all six URLs per scene (start, end, audio in/out) + prediction ids.\n\n## Frame-chain + narration example (dog story)\n\n```text\nScene 1: composed start,  last=play_end,   audio=vo_1   chain→2\nScene 2: extract(clip_1), last=loss_end,   audio=vo_2   hard cut→3\nScene 3: composed start,  last=search_end, audio=vo_3   chain→4\nScene 4: extract(clip_3), last=tree_end,   audio=vo_4   chain→5\nScene 5: extract(clip_4), last=reunion,   audio=vo_5\n```\n\nSee `video-prompting` for when to chain vs hard cut, and OPEN/MID/CLOSE prompt structure.\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n\nFile v1.0.13:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"narrated-multi-scene\",\n  \"version\": \"1.0.13\",\n  \"publishedAt\": 1789653598011\n}\n\nFile v1.0.13:skill-card.md\n\n## Description:\n\nUse when someone wants a multi-part story with voiceover - episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[pruna-ai](https://clawhub.ai/user/pruna-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal creators and developers use this skill to coordinate a gated workflow for multi-scene narrated videos: plan scenes, generate and review stills and voiceover, create clips, and assemble the final film with ffmpeg.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Unpinned npx install examples can introduce supply-chain drift.\n\nMitigation: Install only from a trusted PrunaAI source and prefer pinned or reviewed installers when available.\n\nRisk: The workflow may upload media, voiceover, and generated assets to external media-generation services.\n\nMitigation: Confirm rights, privacy expectations, and suitability of inputs before upload.\n\nRisk: Narration-led video clips can truncate if an audio line exceeds the stated service limit.\n\nMitigation: Run the documented ffprobe duration gate and shorten, split, or regenerate narration before video generation.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/narrated-multi-scene)\n- [Pruna AI publisher profile](https://clawhub.ai/user/pruna-ai)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Markdown, Shell commands, Configuration]\n\n**Output Format:** [Markdown with tables, JSON request examples, and inline bash commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Includes gated review checkpoints for plan, stills, clips, and audio duration checks before video generation.]\n\n## Skill Version(s):\n\n1.0.13 (source: release evidence and artifact metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.13:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.12: 4 files, 6188 bytes\n\nFiles: skill-card.md (2159b), skill.manifest.json (23b), SKILL.md (10546b), _meta.json (140b)\n\nFile v1.0.12:SKILL.md\n\n---\nname: narrated-multi-scene\ndescription: Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue.\nlicense: MIT\nmetadata:\n  version: \"1.0.12\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image-ideogram` | Use when photo generation needs more control — photoreal results, text in the image, or structured JSON with hex colors and bounding boxes. Simpler photo generation, edits, and video use other skills in the suite. | `npx skills add PrunaAI/pruna-skills@p-image-ideogram -y` |\n| `p-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `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` |\n| `p-video-2` | Use when someone wants the best-quality short clip from text, images, or audio — polished B-roll, start/end frame animation, or a motion shot with stronger lip-sync. Not for full multi-scene films or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2 -y` |\n| `p-video` | Use when someone wants a simple short clip from text or images — quick B-roll, drafts, or start/end frame animation. Not when the brief needs the highest quality or tight lip-sync. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `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` |\n| `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` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **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**.\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, narration lines, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end stills per scene | **approve stills** |\n| **A2 — TTS** | `audio/narration_*.mp3` per scene — listen | Lines OK (`ffprobe` ≤ ~19s) |\n| **B — Video** | `p-video-2` clips with embedded VO | **approve clips** |\n| **D — Bed** | Optional Stable Audio under concat | User accepts |\n\nExecute phases with parallel curl batches — **never** batch `p-video-2` before still and TTS review. Quality path: `p-video-2`. Simpler clips: `p-video`.\n\n## Intake: ask before generating\n\nOpen intake → **`generation-diversity`** clarification intake.\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Order of scenes (1…N)? What changes between scenes (location, time, emotion)? |\n| **Media source** | Per scene: **generate** stills/TTS with Pruna tools vs **upload** user frames or VO? |\n| **Format** | Global `aspect_ratio`; default video **`720p` / `1080p`** and `fps` for triple scenes? |\n| **Per scene *i*** | Primary `prompt`? **First frame** (`image`), **last frame** (`last_frame_image`), **narration** (`audio` URL)? Scene-level `resolution` / `fps` / `draft` overrides? |\n| **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. |\n| **Audio** | **Scene anchor triple (preferred):** TTS → upload → **`p-video-2`** 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. |\n| **Visual style** | Locked `style_bible`? **One specific subject/location per still**? Avoid unrelated branding unless the brief asks for it |\n| **Global** | Default `aspect_ratio` for text-only scenes? Global `seed` policy? |\n| **Runtime** | Target total duration after assembly? |\n| **Assembly** | Concat order; narration mux; bed mix volume (~0.08–0.15 under VO)? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Scene table (template — fill during intake)\n\n| `#` | Prompt | First frame (`image`) | Last frame (`last_frame_image`) | Narration (`audio`) | Mode |\n|-----|--------|----------------------|----------------------------------|---------------------|------|\n| 1 | motion prompt | start still | end still → scene 2 | TTS line → upload | triple |\n| 2 | | = scene 1 end | end still → scene 3 | TTS line → upload | triple |\n\n**Mode:** `T2V` · `I2V` · `I2V+last` · **`triple`** (`image` + `last_frame_image` + `audio` — omit `duration`)\n\n## How the agent runs this\n\n1. Write the scene table (or plan JSON) → **approve plan**.\n2. Hero → parallel `p-image-edit` start/end stills (`pruna-api` parallel batches) → **approve stills**.\n3. Parallel Gemini TTS → **duration gate** on every MP3 → upload → listen → proceed.\n4. Parallel `p-video-2` triples once all anchors ready → **approve clips**.\n5. ffmpeg concat (± crossfade) → optional bed.\n\n## Workflow (after intake)\n\n### Phase 0 — Stills (parallel when independent)\n\n1. **Hero anchor** — one approved `p-image-ideogram` or upload (`p-image` for a cheap draft).\n2. **`p-image-edit`** per scene — **start still** (`edit_prompt`) from hero; **end still** (`last_frame_edit_prompt`) from start still. Parallel after hero exists.\n3. **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.\n\n### Phase 1 — Audio (parallel)\n\n`gemini-3.1-flash-tts` per scene → upload each to `/v1/files`.\n\n**Duration gate (required):**\n\n```bash\nffprobe -v error -show_entries format=duration -of csv=p=0 audio/narration_01.mp3\n```\n\nIf any scene exceeds **~19s**, fix before `p-video-2` — output truncates at the **20s** API max even when `input.audio` is set.\n\n**If a line is too long (pick one or combine):**\n\n| Remedy | When | Action |\n|--------|------|--------|\n| **Shorten copy** | One beat has too many facts | Cut clauses; keep dates/names; target **≤ ~45 words** (~17–18s) per scene |\n| **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 |\n| **Split scene** | Two story beats in one row | Add scene row + `edit_prompt` / `last_frame_edit_prompt` / narration; one MP3 per row |\n\n### Phase 2 — Video (parallel when all anchors ready)\n\n**Scene anchor triple** — one `p-video-2` job per row:\n\n```json\n{\n  \"prompt\": \"...\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"audio\": \"NARRATION_URL\",\n  \"resolution\": \"720p\",\n  \"fps\": 24,\n  \"save_audio\": true\n}\n```\n\nOmit `duration`. **Always** include uploaded `audio` in `input`. Poll all `get_url` until done; retry failed scenes only. Parallel pattern: `pruna-api`.\n\n### Phase 3 — Review\n\nAdjust prompt, stills, or narration; re-run **that scene only**.\n\n### Phase 4 — Assembly\n\nHard-cut concat (narration already embedded):\n\n```bash\n# clips.txt: file 'clips/01.mp4'\\nfile 'clips/02.mp4' …\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy film.mp4\n```\n\nOptional short crossfade between chained scenes (~0.15s) — use `xfade` / `acrossfade` when joins need softness; hard-cut elsewhere.\n\n**Optional bed** — `stable-audio-2.5` under VO:\n\n```bash\nffmpeg -y -i film.mp4 -i bed.mp3 \\\n  -filter_complex \"[1:a]volume=0.12[bed];[0:a][bed]amix=inputs=2:duration=first[a]\" \\\n  -map 0:v -map \"[a]\" -c:v copy -c:a aac film_with_bed.mp4\n```\n\n### Phase 5 — Manifest\n\nScene table + all six URLs per scene (start, end, audio in/out) + prediction ids.\n\n## Frame-chain + narration example (dog story)\n\n```text\nScene 1: composed start,  last=play_end,   audio=vo_1   chain→2\nScene 2: extract(clip_1), last=loss_end,   audio=vo_2   hard cut→3\nScene 3: composed start,  last=search_end, audio=vo_3   chain→4\nScene 4: extract(clip_3), last=tree_end,   audio=vo_4   chain→5\nScene 5: extract(clip_4), last=reunion,   audio=vo_5\n```\n\nSee `video-prompting` for when to chain vs hard cut, and OPEN/MID/CLOSE prompt structure.\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n\nFile v1.0.12:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"narrated-multi-scene\",\n  \"version\": \"1.0.12\",\n  \"publishedAt\": 1789048714317\n}\n\nFile v1.0.12:skill-card.md\n\n## Description:\n\nUse when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[pruna-ai](https://clawhub.ai/user/pruna-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to plan and generate multi-scene narrated videos with coordinated still images, voiceover, video clips, and optional background music.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Unpinned unattended installation commands for external skills may install unexpected code.\n\nMitigation: Review the external skills before installing, avoid running npx ... -y commands as-is, and prefer pinned or verified versions.\n\nRisk: The workflow expects media-generation API calls, uploads, local ffmpeg processing, and paid generation approvals.\n\nMitigation: Use the skill only in workspaces where those operations are approved, and preserve the approve plan, approve stills, and approve clips gates before paid video generation.\n\nRisk: An overbroad response directive may affect normal agent replies outside the media workflow.\n\nMitigation: Review the instruction scope before deployment and keep response conventions limited to the narrated multi-scene workflow.\n\n## Reference(s):\n\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with JSON examples and shell command snippets]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces staged scene plans, approval gates, media-generation prompts, upload and polling commands, ffmpeg assembly commands, and final manifest guidance.]\n\n## Skill Version(s):\n\n1.0.12 (source: server release metadata and skill frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.12:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.11: 4 files, 5927 bytes\n\nFiles: skill-card.md (2042b), skill.manifest.json (23b), SKILL.md (9839b), _meta.json (140b)\n\nFile v1.0.11:SKILL.md\n\n---\nname: narrated-multi-scene\ndescription: Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue.\nlicense: MIT\nmetadata:\n  version: \"1.0.11\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **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**.\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, narration lines, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end stills per scene | **approve stills** |\n| **A2 — TTS** | `audio/narration_*.mp3` per scene — listen | Lines OK (`ffprobe` ≤ ~19s) |\n| **B — Video** | `p-video` clips with embedded VO | **approve clips** |\n| **D — Bed** | Optional Stable Audio under concat | User accepts |\n\nExecute phases with parallel curl batches — **never** batch `p-video` before still and TTS review.\n\n## Intake: ask before generating\n\nOpen intake → **`generation-diversity`** clarification intake.\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Order of scenes (1…N)? What changes between scenes (location, time, emotion)? |\n| **Media source** | Per scene: **generate** stills/TTS with Pruna tools vs **upload** user frames or VO? |\n| **Format** | Global `aspect_ratio`; default video **`720p` / `1080p`** and `fps` for triple scenes? |\n| **Per scene *i*** | Primary `prompt`? **First frame** (`image`), **last frame** (`last_frame_image`), **narration** (`audio` URL)? Scene-level `resolution` / `fps` / `draft` overrides? |\n| **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. |\n| **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. |\n| **Visual style** | Locked `style_bible`? **One specific subject/location per still**? Avoid unrelated branding unless the brief asks for it |\n| **Global** | Default `aspect_ratio` for text-only scenes? Global `seed` policy? |\n| **Runtime** | Target total duration after assembly? |\n| **Assembly** | Concat order; narration mux; bed mix volume (~0.08–0.15 under VO)? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Scene table (template — fill during intake)\n\n| `#` | Prompt | First frame (`image`) | Last frame (`last_frame_image`) | Narration (`audio`) | Mode |\n|-----|--------|----------------------|----------------------------------|---------------------|------|\n| 1 | motion prompt | start still | end still → scene 2 | TTS line → upload | triple |\n| 2 | | = scene 1 end | end still → scene 3 | TTS line → upload | triple |\n\n**Mode:** `T2V` · `I2V` · `I2V+last` · **`triple`** (`image` + `last_frame_image` + `audio` — omit `duration`)\n\n## How the agent runs this\n\n1. Write the scene table (or plan JSON) → **approve plan**.\n2. Hero → parallel `p-image-edit` start/end stills (`pruna-api` parallel batches) → **approve stills**.\n3. Parallel Gemini TTS → **duration gate** on every MP3 → upload → listen → proceed.\n4. Parallel `p-video` triples once all anchors ready → **approve clips**.\n5. ffmpeg concat (± crossfade) → optional bed.\n\n## Workflow (after intake)\n\n### Phase 0 — Stills (parallel when independent)\n\n1. **Hero anchor** — one approved `p-image` or upload.\n2. **`p-image-edit`** per scene — **start still** (`edit_prompt`) from hero; **end still** (`last_frame_edit_prompt`) from start still. Parallel after hero exists.\n3. **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.\n\n### Phase 1 — Audio (parallel)\n\n`gemini-3.1-flash-tts` per scene → upload each to `/v1/files`.\n\n**Duration gate (required):**\n\n```bash\nffprobe -v error -show_entries format=duration -of csv=p=0 audio/narration_01.mp3\n```\n\nIf any scene exceeds **~19s**, fix before `p-video` — output truncates at the **20s** API max even when `input.audio` is set.\n\n**If a line is too long (pick one or combine):**\n\n| Remedy | When | Action |\n|--------|------|--------|\n| **Shorten copy** | One beat has too many facts | Cut clauses; keep dates/names; target **≤ ~45 words** (~17–18s) per scene |\n| **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 |\n| **Split scene** | Two story beats in one row | Add scene row + `edit_prompt` / `last_frame_edit_prompt` / narration; one MP3 per row |\n\n### Phase 2 — Video (parallel when all anchors ready)\n\n**Scene anchor triple** — one `p-video` job per row:\n\n```json\n{\n  \"prompt\": \"...\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"audio\": \"NARRATION_URL\",\n  \"resolution\": \"720p\",\n  \"fps\": 24,\n  \"save_audio\": true\n}\n```\n\nOmit `duration`. **Always** include uploaded `audio` in `input`. Poll all `get_url` until done; retry failed scenes only. Parallel pattern: `pruna-api`.\n\n### Phase 3 — Review\n\nAdjust prompt, stills, or narration; re-run **that scene only**.\n\n### Phase 4 — Assembly\n\nHard-cut concat (narration already embedded):\n\n```bash\n# clips.txt: file 'clips/01.mp4'\\nfile 'clips/02.mp4' …\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy film.mp4\n```\n\nOptional short crossfade between chained scenes (~0.15s) — use `xfade` / `acrossfade` when joins need softness; hard-cut elsewhere.\n\n**Optional bed** — `stable-audio-2.5` under VO:\n\n```bash\nffmpeg -y -i film.mp4 -i bed.mp3 \\\n  -filter_complex \"[1:a]volume=0.12[bed];[0:a][bed]amix=inputs=2:duration=first[a]\" \\\n  -map 0:v -map \"[a]\" -c:v copy -c:a aac film_with_bed.mp4\n```\n\n### Phase 5 — Manifest\n\nScene table + all six URLs per scene (start, end, audio in/out) + prediction ids.\n\n## Frame-chain + narration example (dog story)\n\n```text\nScene 1: composed start,  last=play_end,   audio=vo_1   chain→2\nScene 2: extract(clip_1), last=loss_end,   audio=vo_2   hard cut→3\nScene 3: composed start,  last=search_end, audio=vo_3   chain→4\nScene 4: extract(clip_3), last=tree_end,   audio=vo_4   chain→5\nScene 5: extract(clip_4), last=reunion,   audio=vo_5\n```\n\nSee `video-prompting` for when to chain vs hard cut, and OPEN/MID/CLOSE prompt structure.\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n\nFile v1.0.11:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"narrated-multi-scene\",\n  \"version\": \"1.0.11\",\n  \"publishedAt\": 1788444762415\n}\n\nFile v1.0.11:skill-card.md\n\n## Description:\n\nUse when someone wants a multi-part story with voiceover - episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[pruna-ai](https://clawhub.ai/user/pruna-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to plan and generate narrated multi-scene video stories, including scene tables, still-image anchors, narration audio, video clips, and final assembly guidance.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Prerequisite generation skills may change behavior or terms after installation.\n\nMitigation: Review prerequisite Pruna skills before installing and prefer pinned or known-good versions.\n\nRisk: API-backed image, audio, or video generation can consume paid credits before the user has confirmed the intended scene plan.\n\nMitigation: Use the documented approval gates and proceed with cost-bearing generation only after the plan and required review steps are confirmed.\n\nRisk: Narration-led video clips can truncate when scene audio exceeds the API duration cap.\n\nMitigation: Check each narration file duration and shorten, speed up, or split lines before sending clips to video generation.\n\n## Reference(s):\n\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown with tables, JSON snippets, and inline bash code blocks]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May include scene manifests, media URLs, generated file paths, and ffmpeg command proposals.]\n\n## Skill Version(s):\n\n1.0.11 (source: server release evidence and skill frontmatter metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.11:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.10: 4 files, 5822 bytes\n\nFiles: skill-card.md (1805b), skill.manifest.json (23b), SKILL.md (9839b), _meta.json (140b)\n\nFile v1.0.10:SKILL.md\n\n---\nname: narrated-multi-scene\ndescription: Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue.\nlicense: MIT\nmetadata:\n  version: \"1.0.10\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **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**.\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, narration lines, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end stills per scene | **approve stills** |\n| **A2 — TTS** | `audio/narration_*.mp3` per scene — listen | Lines OK (`ffprobe` ≤ ~19s) |\n| **B — Video** | `p-video` clips with embedded VO | **approve clips** |\n| **D — Bed** | Optional Stable Audio under concat | User accepts |\n\nExecute phases with parallel curl batches — **never** batch `p-video` before still and TTS review.\n\n## Intake: ask before generating\n\nOpen intake → **`generation-diversity`** clarification intake.\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Order of scenes (1…N)? What changes between scenes (location, time, emotion)? |\n| **Media source** | Per scene: **generate** stills/TTS with Pruna tools vs **upload** user frames or VO? |\n| **Format** | Global `aspect_ratio`; default video **`720p` / `1080p`** and `fps` for triple scenes? |\n| **Per scene *i*** | Primary `prompt`? **First frame** (`image`), **last frame** (`last_frame_image`), **narration** (`audio` URL)? Scene-level `resolution` / `fps` / `draft` overrides? |\n| **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. |\n| **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. |\n| **Visual style** | Locked `style_bible`? **One specific subject/location per still**? Avoid unrelated branding unless the brief asks for it |\n| **Global** | Default `aspect_ratio` for text-only scenes? Global `seed` policy? |\n| **Runtime** | Target total duration after assembly? |\n| **Assembly** | Concat order; narration mux; bed mix volume (~0.08–0.15 under VO)? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Scene table (template — fill during intake)\n\n| `#` | Prompt | First frame (`image`) | Last frame (`last_frame_image`) | Narration (`audio`) | Mode |\n|-----|--------|----------------------|----------------------------------|---------------------|------|\n| 1 | motion prompt | start still | end still → scene 2 | TTS line → upload | triple |\n| 2 | | = scene 1 end | end still → scene 3 | TTS line → upload | triple |\n\n**Mode:** `T2V` · `I2V` · `I2V+last` · **`triple`** (`image` + `last_frame_image` + `audio` — omit `duration`)\n\n## How the agent runs this\n\n1. Write the scene table (or plan JSON) → **approve plan**.\n2. Hero → parallel `p-image-edit` start/end stills (`pruna-api` parallel batches) → **approve stills**.\n3. Parallel Gemini TTS → **duration gate** on every MP3 → upload → listen → proceed.\n4. Parallel `p-video` triples once all anchors ready → **approve clips**.\n5. ffmpeg concat (± crossfade) → optional bed.\n\n## Workflow (after intake)\n\n### Phase 0 — Stills (parallel when independent)\n\n1. **Hero anchor** — one approved `p-image` or upload.\n2. **`p-image-edit`** per scene — **start still** (`edit_prompt`) from hero; **end still** (`last_frame_edit_prompt`) from start still. Parallel after hero exists.\n3. **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.\n\n### Phase 1 — Audio (parallel)\n\n`gemini-3.1-flash-tts` per scene → upload each to `/v1/files`.\n\n**Duration gate (required):**\n\n```bash\nffprobe -v error -show_entries format=duration -of csv=p=0 audio/narration_01.mp3\n```\n\nIf any scene exceeds **~19s**, fix before `p-video` — output truncates at the **20s** API max even when `input.audio` is set.\n\n**If a line is too long (pick one or combine):**\n\n| Remedy | When | Action |\n|--------|------|--------|\n| **Shorten copy** | One beat has too many facts | Cut clauses; keep dates/names; target **≤ ~45 words** (~17–18s) per scene |\n| **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 |\n| **Split scene** | Two story beats in one row | Add scene row + `edit_prompt` / `last_frame_edit_prompt` / narration; one MP3 per row |\n\n### Phase 2 — Video (parallel when all anchors ready)\n\n**Scene anchor triple** — one `p-video` job per row:\n\n```json\n{\n  \"prompt\": \"...\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"audio\": \"NARRATION_URL\",\n  \"resolution\": \"720p\",\n  \"fps\": 24,\n  \"save_audio\": true\n}\n```\n\nOmit `duration`. **Always** include uploaded `audio` in `input`. Poll all `get_url` until done; retry failed scenes only. Parallel pattern: `pruna-api`.\n\n### Phase 3 — Review\n\nAdjust prompt, stills, or narration; re-run **that scene only**.\n\n### Phase 4 — Assembly\n\nHard-cut concat (narration already embedded):\n\n```bash\n# clips.txt: file 'clips/01.mp4'\\nfile 'clips/02.mp4' …\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy film.mp4\n```\n\nOptional short crossfade between chained scenes (~0.15s) — use `xfade` / `acrossfade` when joins need softness; hard-cut elsewhere.\n\n**Optional bed** — `stable-audio-2.5` under VO:\n\n```bash\nffmpeg -y -i film.mp4 -i bed.mp3 \\\n  -filter_complex \"[1:a]volume=0.12[bed];[0:a][bed]amix=inputs=2:duration=first[a]\" \\\n  -map 0:v -map \"[a]\" -c:v copy -c:a aac film_with_bed.mp4\n```\n\n### Phase 5 — Manifest\n\nScene table + all six URLs per scene (start, end, audio in/out) + prediction ids.\n\n## Frame-chain + narration example (dog story)\n\n```text\nScene 1: composed start,  last=play_end,   audio=vo_1   chain→2\nScene 2: extract(clip_1), last=loss_end,   audio=vo_2   hard cut→3\nScene 3: composed start,  last=search_end, audio=vo_3   chain→4\nScene 4: extract(clip_3), last=tree_end,   audio=vo_4   chain→5\nScene 5: extract(clip_4), last=reunion,   audio=vo_5\n```\n\nSee `video-prompting` for when to chain vs hard cut, and OPEN/MID/CLOSE prompt structure.\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n\nFile v1.0.10:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"narrated-multi-scene\",\n  \"version\": \"1.0.10\",\n  \"publishedAt\": 1787903911399\n}\n\nFile v1.0.10:skill-card.md\n\n## Description:\n\nUse when someone wants a multi-part story with voiceover: episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[pruna-ai](https://clawhub.ai/user/pruna-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCreative operators and developers use this skill to plan and generate multi-scene narrated videos, coordinating story structure, still images, narration, video clips, review gates, and final assembly.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The workflow can upload user-provided frames or narration and may consume paid generation credits.\n\nMitigation: Use the required approval gates before still, audio, and video generation, and confirm inputs before starting paid jobs.\n\nRisk: Audio-led clips may truncate narration if a scene line exceeds the video API duration cap.\n\nMitigation: Run the documented ffprobe duration check and keep each scene narration around 19 seconds or less before video generation.\n\n## Reference(s):\n\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Markdown, Shell commands, Configuration]\n\n**Output Format:** [Markdown with inline JSON and bash code blocks]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces scene plans, approval checkpoints, media-generation inputs, duration checks, and ffmpeg assembly commands.]\n\n## Skill Version(s):\n\n1.0.10 (source: server release metadata and skill frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.10:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.9: 4 files, 5865 bytes\n\nFiles: skill-card.md (2015b), skill.manifest.json (23b), SKILL.md (9838b), _meta.json (139b)\n\nFile v1.0.9:SKILL.md\n\n---\nname: narrated-multi-scene\ndescription: Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue.\nlicense: MIT\nmetadata:\n  version: \"1.0.9\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **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**.\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, narration lines, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end stills per scene | **approve stills** |\n| **A2 — TTS** | `audio/narration_*.mp3` per scene — listen | Lines OK (`ffprobe` ≤ ~19s) |\n| **B — Video** | `p-video` clips with embedded VO | **approve clips** |\n| **D — Bed** | Optional Stable Audio under concat | User accepts |\n\nExecute phases with parallel curl batches — **never** batch `p-video` before still and TTS review.\n\n## Intake: ask before generating\n\nOpen intake → **`generation-diversity`** clarification intake.\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Order of scenes (1…N)? What changes between scenes (location, time, emotion)? |\n| **Media source** | Per scene: **generate** stills/TTS with Pruna tools vs **upload** user frames or VO? |\n| **Format** | Global `aspect_ratio`; default video **`720p` / `1080p`** and `fps` for triple scenes? |\n| **Per scene *i*** | Primary `prompt`? **First frame** (`image`), **last frame** (`last_frame_image`), **narration** (`audio` URL)? Scene-level `resolution` / `fps` / `draft` overrides? |\n| **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. |\n| **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. |\n| **Visual style** | Locked `style_bible`? **One specific subject/location per still**? Avoid unrelated branding unless the brief asks for it |\n| **Global** | Default `aspect_ratio` for text-only scenes? Global `seed` policy? |\n| **Runtime** | Target total duration after assembly? |\n| **Assembly** | Concat order; narration mux; bed mix volume (~0.08–0.15 under VO)? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Scene table (template — fill during intake)\n\n| `#` | Prompt | First frame (`image`) | Last frame (`last_frame_image`) | Narration (`audio`) | Mode |\n|-----|--------|----------------------|----------------------------------|---------------------|------|\n| 1 | motion prompt | start still | end still → scene 2 | TTS line → upload | triple |\n| 2 | | = scene 1 end | end still → scene 3 | TTS line → upload | triple |\n\n**Mode:** `T2V` · `I2V` · `I2V+last` · **`triple`** (`image` + `last_frame_image` + `audio` — omit `duration`)\n\n## How the agent runs this\n\n1. Write the scene table (or plan JSON) → **approve plan**.\n2. Hero → parallel `p-image-edit` start/end stills (`pruna-api` parallel batches) → **approve stills**.\n3. Parallel Gemini TTS → **duration gate** on every MP3 → upload → listen → proceed.\n4. Parallel `p-video` triples once all anchors ready → **approve clips**.\n5. ffmpeg concat (± crossfade) → optional bed.\n\n## Workflow (after intake)\n\n### Phase 0 — Stills (parallel when independent)\n\n1. **Hero anchor** — one approved `p-image` or upload.\n2. **`p-image-edit`** per scene — **start still** (`edit_prompt`) from hero; **end still** (`last_frame_edit_prompt`) from start still. Parallel after hero exists.\n3. **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.\n\n### Phase 1 — Audio (parallel)\n\n`gemini-3.1-flash-tts` per scene → upload each to `/v1/files`.\n\n**Duration gate (required):**\n\n```bash\nffprobe -v error -show_entries format=duration -of csv=p=0 audio/narration_01.mp3\n```\n\nIf any scene exceeds **~19s**, fix before `p-video` — output truncates at the **20s** API max even when `input.audio` is set.\n\n**If a line is too long (pick one or combine):**\n\n| Remedy | When | Action |\n|--------|------|--------|\n| **Shorten copy** | One beat has too many facts | Cut clauses; keep dates/names; target **≤ ~45 words** (~17–18s) per scene |\n| **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 |\n| **Split scene** | Two story beats in one row | Add scene row + `edit_prompt` / `last_frame_edit_prompt` / narration; one MP3 per row |\n\n### Phase 2 — Video (parallel when all anchors ready)\n\n**Scene anchor triple** — one `p-video` job per row:\n\n```json\n{\n  \"prompt\": \"...\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"audio\": \"NARRATION_URL\",\n  \"resolution\": \"720p\",\n  \"fps\": 24,\n  \"save_audio\": true\n}\n```\n\nOmit `duration`. **Always** include uploaded `audio` in `input`. Poll all `get_url` until done; retry failed scenes only. Parallel pattern: `pruna-api`.\n\n### Phase 3 — Review\n\nAdjust prompt, stills, or narration; re-run **that scene only**.\n\n### Phase 4 — Assembly\n\nHard-cut concat (narration already embedded):\n\n```bash\n# clips.txt: file 'clips/01.mp4'\\nfile 'clips/02.mp4' …\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy film.mp4\n```\n\nOptional short crossfade between chained scenes (~0.15s) — use `xfade` / `acrossfade` when joins need softness; hard-cut elsewhere.\n\n**Optional bed** — `stable-audio-2.5` under VO:\n\n```bash\nffmpeg -y -i film.mp4 -i bed.mp3 \\\n  -filter_complex \"[1:a]volume=0.12[bed];[0:a][bed]amix=inputs=2:duration=first[a]\" \\\n  -map 0:v -map \"[a]\" -c:v copy -c:a aac film_with_bed.mp4\n```\n\n### Phase 5 — Manifest\n\nScene table + all six URLs per scene (start, end, audio in/out) + prediction ids.\n\n## Frame-chain + narration example (dog story)\n\n```text\nScene 1: composed start,  last=play_end,   audio=vo_1   chain→2\nScene 2: extract(clip_1), last=loss_end,   audio=vo_2   hard cut→3\nScene 3: composed start,  last=search_end, audio=vo_3   chain→4\nScene 4: extract(clip_3), last=tree_end,   audio=vo_4   chain→5\nScene 5: extract(clip_4), last=reunion,   audio=vo_5\n```\n\nSee `video-prompting` for when to chain vs hard cut, and OPEN/MID/CLOSE prompt structure.\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n\nFile v1.0.9:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"narrated-multi-scene\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1785824335705\n}\n\nFile v1.0.9:skill-card.md\n\n## Description: <br>\nUse when someone wants a multi-part story with voiceover \\u2014 episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[pruna-ai](https://clawhub.ai/user/pruna-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and creators use this skill to plan, gate, generate, and assemble multi-scene narrated videos with stills, TTS voiceover, short video clips, and optional background music. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The workflow can use external media-generation APIs and upload media assets. <br>\nMitigation: Review each approval gate and uploaded asset before proceeding with generation or file upload. <br>\nRisk: Video and audio generation may create local media files and incur paid generation costs. <br>\nMitigation: Require the explicit approve plan, approve stills, and approve clips gates before paid video work. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/narrated-multi-scene) <br>\n- [Pruna AI publisher profile](https://clawhub.ai/user/pruna-ai) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with tables, JSON snippets, and shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May coordinate generated media files through dependent image, video, TTS, audio, upload, and ffmpeg workflows.] <br>\n\n## Skill Version(s): <br>\n1.0.9 (source: server release metadata and skill frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.9:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.8: 4 files, 5796 bytes\n\nFiles: skill-card.md (1949b), skill.manifest.json (23b), SKILL.md (9774b), _meta.json (139b)\n\nFile v1.0.8:SKILL.md\n\n---\nname: narrated-multi-scene\ndescription: Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue.\nlicense: MIT\nmetadata:\n  version: \"1.0.8\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **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**.\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, narration lines, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end stills per scene | **approve stills** |\n| **A2 — TTS** | `audio/narration_*.mp3` per scene — listen | Lines OK (`ffprobe` ≤ ~19s) |\n| **B — Video** | `p-video` clips with embedded VO | **approve clips** |\n| **D — Bed** | Optional Stable Audio under concat | User accepts |\n\nExecute phases with parallel curl batches — **never** batch `p-video` before still and TTS review.\n\n## Intake: ask before generating\n\nOpen intake → **`generation-diversity`** clarification intake.\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Order of scenes (1…N)? What changes between scenes (location, time, emotion)? |\n| **Media source** | Per scene: **generate** stills/TTS with Pruna tools vs **upload** user frames or VO? |\n| **Format** | Global `aspect_ratio`; default video **`720p` / `1080p`** and `fps` for triple scenes? |\n| **Per scene *i*** | Primary `prompt`? **First frame** (`image`), **last frame** (`last_frame_image`), **narration** (`audio` URL)? Scene-level `resolution` / `fps` / `draft` overrides? |\n| **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. |\n| **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. |\n| **Visual style** | Locked `style_bible`? **One specific subject/location per still**? Avoid unrelated branding unless the brief asks for it |\n| **Global** | Default `aspect_ratio` for text-only scenes? Global `seed` policy? |\n| **Runtime** | Target total duration after assembly? |\n| **Assembly** | Concat order; narration mux; bed mix volume (~0.08–0.15 under VO)? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Scene table (template — fill during intake)\n\n| `#` | Prompt | First frame (`image`) | Last frame (`last_frame_image`) | Narration (`audio`) | Mode |\n|-----|--------|----------------------|----------------------------------|---------------------|------|\n| 1 | motion prompt | start still | end still → scene 2 | TTS line → upload | triple |\n| 2 | | = scene 1 end | end still → scene 3 | TTS line → upload | triple |\n\n**Mode:** `T2V` · `I2V` · `I2V+last` · **`triple`** (`image` + `last_frame_image` + `audio` — omit `duration`)\n\n## How the agent runs this\n\n1. Write the scene table (or plan JSON) → **approve plan**.\n2. Hero → parallel `p-image-edit` start/end stills (`pruna-api` parallel batches) → **approve stills**.\n3. Parallel Gemini TTS → **duration gate** on every MP3 → upload → listen → proceed.\n4. Parallel `p-video` triples once all anchors ready → **approve clips**.\n5. ffmpeg concat (± crossfade) → optional bed.\n\n## Workflow (after intake)\n\n### Phase 0 — Stills (parallel when independent)\n\n1. **Hero anchor** — one approved `p-image` or upload.\n2. **`p-image-edit`** per scene — **start still** (`edit_prompt`) from hero; **end still** (`last_frame_edit_prompt`) from start still. Parallel after hero exists.\n3. **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.\n\n### Phase 1 — Audio (parallel)\n\n`gemini-3.1-flash-tts` per scene → upload each to `/v1/files`.\n\n**Duration gate (required):**\n\n```bash\nffprobe -v error -show_entries format=duration -of csv=p=0 audio/narration_01.mp3\n```\n\nIf any scene exceeds **~19s**, fix before `p-video` — output truncates at the **20s** API max even when `input.audio` is set.\n\n**If a line is too long (pick one or combine):**\n\n| Remedy | When | Action |\n|--------|------|--------|\n| **Shorten copy** | One beat has too many facts | Cut clauses; keep dates/names; target **≤ ~45 words** (~17–18s) per scene |\n| **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 |\n| **Split scene** | Two story beats in one row | Add scene row + `edit_prompt` / `last_frame_edit_prompt` / narration; one MP3 per row |\n\n### Phase 2 — Video (parallel when all anchors ready)\n\n**Scene anchor triple** — one `p-video` job per row:\n\n```json\n{\n  \"prompt\": \"...\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"audio\": \"NARRATION_URL\",\n  \"resolution\": \"720p\",\n  \"fps\": 24,\n  \"save_audio\": true\n}\n```\n\nOmit `duration`. **Always** include uploaded `audio` in `input`. Poll all `get_url` until done; retry failed scenes only. Parallel pattern: `pruna-api`.\n\n### Phase 3 — Review\n\nAdjust prompt, stills, or narration; re-run **that scene only**.\n\n### Phase 4 — Assembly\n\nHard-cut concat (narration already embedded):\n\n```bash\n# clips.txt: file 'clips/01.mp4'\\nfile 'clips/02.mp4' …\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy film.mp4\n```\n\nOptional short crossfade between chained scenes (~0.15s) — use `xfade` / `acrossfade` when joins need softness; hard-cut elsewhere.\n\n**Optional bed** — `stable-audio-2.5` under VO:\n\n```bash\nffmpeg -y -i film.mp4 -i bed.mp3 \\\n  -filter_complex \"[1:a]volume=0.12[bed];[0:a][bed]amix=inputs=2:duration=first[a]\" \\\n  -map 0:v -map \"[a]\" -c:v copy -c:a aac film_with_bed.mp4\n```\n\n### Phase 5 — Manifest\n\nScene table + all six URLs per scene (start, end, audio in/out) + prediction ids.\n\n## Frame-chain + narration example (dog story)\n\n```text\nScene 1: composed start,  last=play_end,   audio=vo_1   chain→2\nScene 2: extract(clip_1), last=loss_end,   audio=vo_2   hard cut→3\nScene 3: composed start,  last=search_end, audio=vo_3   chain→4\nScene 4: extract(clip_3), last=tree_end,   audio=vo_4   chain→5\nScene 5: extract(clip_4), last=reunion,   audio=vo_5\n```\n\nSee `video-prompting` for when to chain vs hard cut, and OPEN/MID/CLOSE prompt structure.\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n\nFile v1.0.8:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"narrated-multi-scene\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1785259258366\n}\n\nFile v1.0.8:skill-card.md\n\n## Description: <br>\nUse when someone wants a multi-part story with voiceover: episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[pruna-ai](https://clawhub.ai/user/pruna-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nCreators, marketers, and developers use this skill to plan and coordinate narrated multi-scene videos with scene plans, stills, voiceover, video clips, and final assembly steps. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Provided media or narration may be uploaded to external APIs during the workflow. <br>\nMitigation: Confirm that uploaded assets are appropriate for external API processing before running generation steps. <br>\nRisk: Media generation can spend credits if the agent proceeds before the user is ready. <br>\nMitigation: Require the stated approval gates before stills, clips, and final assembly steps that trigger generation work. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/narrated-multi-scene) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, markdown, shell commands, configuration] <br>\n**Output Format:** [Markdown with tables, JSON request examples, and inline shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Uses approval gates before paid media generation and may produce scene manifests, media URLs, and assembly commands.] <br>\n\n## Skill Version(s): <br>\n1.0.8 (source: release metadata and skill frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.8:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.7: 4 files, 5897 bytes\n\nFiles: skill-card.md (2401b), skill.manifest.json (23b), SKILL.md (9474b), _meta.json (139b)\n\nFile v1.0.7:SKILL.md\n\n---\nname: narrated-multi-scene\ndescription: Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue.\nlicense: MIT\nmetadata:\n  version: \"1.0.7\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **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**.\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, narration lines, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end stills per scene | **approve stills** |\n| **A2 — TTS** | `audio/narration_*.mp3` per scene — listen | Lines OK (`ffprobe` ≤ ~19s) |\n| **B — Video** | `p-video` clips with embedded VO | **approve clips** |\n| **D — Bed** | Optional Stable Audio under concat | User accepts |\n\nExecute phases with parallel curl batches — **never** batch `p-video` before still and TTS review.\n\n## Intake: ask before generating\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Order of scenes (1…N)? What changes between scenes (location, time, emotion)? |\n| **Per scene *i*** | Primary `prompt`? **First frame** (`image`), **last frame** (`last_frame_image`), **narration** (`audio` URL)? `resolution` / `fps` / `draft`? |\n| **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. |\n| **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. |\n| **Visual style** | Locked `style_bible`? **One specific subject/location per still**? Avoid unrelated branding unless the brief asks for it |\n| **Global** | Default `aspect_ratio` for text-only scenes? Global `seed` policy? |\n| **Runtime** | Target total duration after assembly? |\n| **Assembly** | Concat order; narration mux; bed mix volume (~0.08–0.15 under VO)? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Scene table (template — fill during intake)\n\n| `#` | Prompt | First frame (`image`) | Last frame (`last_frame_image`) | Narration (`audio`) | Mode |\n|-----|--------|----------------------|----------------------------------|---------------------|------|\n| 1 | motion prompt | start still | end still → scene 2 | TTS line → upload | triple |\n| 2 | | = scene 1 end | end still → scene 3 | TTS line → upload | triple |\n\n**Mode:** `T2V` · `I2V` · `I2V+last` · **`triple`** (`image` + `last_frame_image` + `audio` — omit `duration`)\n\n## How the agent runs this\n\n1. Write the scene table (or plan JSON) → **approve plan**.\n2. Hero → parallel `p-image-edit` start/end stills (`pruna-api` parallel batches) → **approve stills**.\n3. Parallel Gemini TTS → **duration gate** on every MP3 → upload → listen → proceed.\n4. Parallel `p-video` triples once all anchors ready → **approve clips**.\n5. ffmpeg concat (± crossfade) → optional bed.\n\n## Workflow (after intake)\n\n### Phase 0 — Stills (parallel when independent)\n\n1. **Hero anchor** — one approved `p-image` or upload.\n2. **`p-image-edit`** per scene — **start still** (`edit_prompt`) from hero; **end still** (`last_frame_edit_prompt`) from start still. Parallel after hero exists.\n3. **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.\n\n### Phase 1 — Audio (parallel)\n\n`gemini-3.1-flash-tts` per scene → upload each to `/v1/files`.\n\n**Duration gate (required):**\n\n```bash\nffprobe -v error -show_entries format=duration -of csv=p=0 audio/narration_01.mp3\n```\n\nIf any scene exceeds **~19s**, fix before `p-video` — output truncates at the **20s** API max even when `input.audio` is set.\n\n**If a line is too long (pick one or combine):**\n\n| Remedy | When | Action |\n|--------|------|--------|\n| **Shorten copy** | One beat has too many facts | Cut clauses; keep dates/names; target **≤ ~45 words** (~17–18s) per scene |\n| **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 |\n| **Split scene** | Two story beats in one row | Add scene row + `edit_prompt` / `last_frame_edit_prompt` / narration; one MP3 per row |\n\n### Phase 2 — Video (parallel when all anchors ready)\n\n**Scene anchor triple** — one `p-video` job per row:\n\n```json\n{\n  \"prompt\": \"...\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"audio\": \"NARRATION_URL\",\n  \"resolution\": \"720p\",\n  \"fps\": 24,\n  \"save_audio\": true\n}\n```\n\nOmit `duration`. **Always** include uploaded `audio` in `input`. Poll all `get_url` until done; retry failed scenes only. Parallel pattern: `pruna-api`.\n\n### Phase 3 — Review\n\nAdjust prompt, stills, or narration; re-run **that scene only**.\n\n### Phase 4 — Assembly\n\nHard-cut concat (narration already embedded):\n\n```bash\n# clips.txt: file 'clips/01.mp4'\\nfile 'clips/02.mp4' …\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy film.mp4\n```\n\nOptional short crossfade between chained scenes (~0.15s) — use `xfade` / `acrossfade` when joins need softness; hard-cut elsewhere.\n\n**Optional bed** — `stable-audio-2.5` under VO:\n\n```bash\nffmpeg -y -i film.mp4 -i bed.mp3 \\\n  -filter_complex \"[1:a]volume=0.12[bed];[0:a][bed]amix=inputs=2:duration=first[a]\" \\\n  -map 0:v -map \"[a]\" -c:v copy -c:a aac film_with_bed.mp4\n```\n\n### Phase 5 — Manifest\n\nScene table + all six URLs per scene (start, end, audio in/out) + prediction ids.\n\n## Frame-chain + narration example (dog story)\n\n```text\nScene 1: composed start,  last=play_end,   audio=vo_1   chain→2\nScene 2: extract(clip_1), last=loss_end,   audio=vo_2   hard cut→3\nScene 3: composed start,  last=search_end, audio=vo_3   chain→4\nScene 4: extract(clip_3), last=tree_end,   audio=vo_4   chain→5\nScene 5: extract(clip_4), last=reunion,   audio=vo_5\n```\n\nSee `video-prompting` for when to chain vs hard cut, and OPEN/MID/CLOSE prompt structure.\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n| `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` |\n\nFile v1.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"narrated-multi-scene\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1784810163704\n}\n\nFile v1.0.7:skill-card.md\n\n## Description: <br>\nUse when someone wants a multi-part story with voiceover: episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[pruna-ai](https://clawhub.ai/user/pruna-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and creators use this skill to plan, gate, generate, review, and assemble narrated multi-scene videos from stills, TTS voiceover, video clips, optional music beds, and ffmpeg assembly steps. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The workflow can send prompts and media to external image, audio, and video generation services and may spend generation credits. <br>\nMitigation: Use the approval gates before generation, confirm media is appropriate to upload, and verify related skill installs come from the intended PrunaAI source. <br>\nRisk: Narration-led video clips can be truncated or require regeneration when scene audio exceeds the documented duration limit. <br>\nMitigation: Check each narration file with ffprobe and keep scene lines at or below the skill's approximately 19 second gate before video generation. <br>\nRisk: Generated stills, clips, or narration may not match the intended story, style, or continuity. <br>\nMitigation: Review the plan, stills, and clips at the required phase gates and rerun only the affected scene when corrections are needed. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/narrated-multi-scene) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with tables, JSON payload examples, and shell command snippets] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May include scene plans, prompts, asset URLs, API payloads, ffmpeg commands, and assembly manifests.] <br>\n\n## Skill Version(s): <br>\n1.0.7 (source: server release evidence and SKILL.md frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.7:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.6: 17 files, 39632 bytes\n\nFiles: apm.yml (586b), README-INSTALL.md (982b), references/approval-red-flags.md (2650b), references/generation-diversity.md (25910b), references/generation-quality-checklists.md (9774b), references/p-video-quality-checklist.md (1815b), references/parallel-execution.md (7572b), references/pruna-api.md (5074b), references/random-seed-ritual.md (3875b), references/scene-anchor-triple.md (10125b), references/staged-generation-gate.md (7290b), references/workflow-feedback-gates.md (5038b), skill-card.md (3008b), skill.deps.json (1250b), skill.manifest.json (289b), SKILL.md (9210b), _meta.json (139b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: narrated-multi-scene\ndescription: Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue.\nlicense: MIT\nmetadata:\n  version: \"1.0.6\"\ndepends:\n  - p-image\n  - p-image-edit\n  - p-video\n  - gemini-3.1-flash-tts\n  - stable-audio-2.5\n---\n\n## Shared generation policy\n\n<!-- shared-generation-policy -->\n\nBefore any paid `POST /v1/predictions`:\n\n1. **[Random seed ritual](./references/random-seed-ritual.md)** — always first; derive axes via sum-mod.\n2. **[Generation diversity](./references/generation-diversity.md)** — explicit prompts; rotate ≥2 scenario axes per session.\n3. **[Quality checklists](./references/generation-quality-checklists.md)** — open output files and judge pass/fail before advancing.\n4. **[Staged generation gate](./references/staged-generation-gate.md)** — plan → stills → audio → video → assembly; never skip phases in one turn.\n5. **[Approval red flags](./references/approval-red-flags.md)** — pause when plan, stills, or clips were not reviewed.\n6. **[Workflow feedback gates](./references/workflow-feedback-gates.md)** — runner flags and per-workflow commands.\n7. **[Parallel execution](./references/parallel-execution.md)** — async fan-out within each approved phase only.\n\n# Multi-scene AI video (Pruna `p-video` only)\n\nEach scene = one **`p-video`** job (same model, separate predictions). Assembly is **outside** Pruna (ffmpeg or your editor). No **`p-video-avatar`** in this workflow.\n\nSee [p-video](../../../../tools/video/p-video/SKILL.md) (first/last frame chaining), [scene-anchor-triple.md](./references/scene-anchor-triple.md), [scene-anchor-pair.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/shared/scene-anchor-pair.md) (visual-only alternative), [audio-post-production.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/shared/audio-post-production.md), and [pruna-api.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/pruna-api.md).\n\nFor **visual transitions without narration**, use [visual-transition-reel](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/visual-transition-reel/skills/visual-transition-reel/SKILL.md) instead.\n\nFor **educational explainers** (history, science, nature, how-it-works) with narrator + in-story character dialogue, use [interactive-explainer](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/interactive-explainer/skills/interactive-explainer/SKILL.md) instead of narrator-only tables.\n\n**Staged generation:** [staged-generation-gate.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/staged-generation-gate.md) · [workflow-feedback-gates.md](./references/workflow-feedback-gates.md)\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, narration lines, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end stills per scene | **approve stills** |\n| **A2 — TTS** | `audio/narration_*.mp3` per scene — listen | Lines OK |\n| **B — Video** | `p-video` clips with embedded VO | **approve clips** |\n| **D — Bed** | Optional Stable Audio under concat | User accepts |\n\nExecute phases manually or with phased curl — no bundled runner. **Never** batch `p-video` before still and TTS review.\n\n## Intake: ask before generating\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Order of scenes (1…N)? What changes between scenes (location, time, emotion)? |\n| **Per scene *i*** | Primary `prompt`? **First frame** (`image`), **last frame** (`last_frame_image`), **narration** (`audio` URL)? `resolution` / `fps` / `draft`? |\n| **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. |\n| **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. |\n| **Visual style** | Locked `style_bible`? **One specific subject/location per still** (painterly illustration, period film still, etc.)? Avoid unrelated branding (e.g. science-show nebula) unless the brief asks for it |\n| **Global** | Default `aspect_ratio` for text-only scenes? Global `seed` policy? |\n| **Runtime** | Target total duration after assembly? |\n| **Assembly** | Concat order; narration mux; bed mix volume (~0.08–0.15 under VO)? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Scene table (template — fill during intake)\n\n| `#` | Prompt | First frame (`image`) | Last frame (`last_frame_image`) | Narration (`audio`) | Mode |\n|-----|--------|----------------------|----------------------------------|---------------------|------|\n| 1 | motion prompt | start still | end still → scene 2 | TTS line → upload | triple |\n| 2 | | = scene 1 end | end still → scene 3 | TTS line → upload | triple |\n\n**Mode:** `T2V` · `I2V` · `I2V+last` · **`triple`** (`image` + `last_frame_image` + `audio` — omit `duration`)\n\n## Workflow (after intake)\n\n### Phase 0 — Stills (parallel when independent)\n\n1. **Hero anchor** — one approved `p-image` or upload.\n2. **`p-image-edit`** per scene — **start still** (`edit_prompt`) from hero; **end still** (`last_frame_edit_prompt`) from start still. Parallel after hero exists.\n3. **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.\n\n### Phase 1 — Audio (parallel)\n\n[Gemini TTS](../../../../tools/audio/gemini-3.1-flash-tts/SKILL.md) per scene → upload each to `/v1/files`.\n\n**Duration gate (required):** after TTS, `ffprobe` each MP3. If any scene exceeds **~19s**, fix before `p-video` — output truncates at the **20s** API max even when `input.audio` is set. Use [`validate_narration_duration`](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/_shared/scripts/p_video_payload.py) in runners.\n\n**If a line is too long (pick one or combine):**\n\n| Remedy | When | Action |\n|--------|------|--------|\n| **Shorten copy** | One beat has too many facts | Cut clauses; keep dates/names; target **≤ ~45 words** (~17–18s) per scene |\n| **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 |\n| **Split scene** | Two story beats in one row | Add scene row + `edit_prompt` / `last_frame_edit_prompt` / `scene_lines` entry; one narration file per row |\n\n### Phase 2 — Video (parallel when all anchors ready)\n\n**Scene anchor triple** — one `p-video` job per row:\n\n```json\n{\n  \"prompt\": \"...\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"audio\": \"NARRATION_URL\",\n  \"resolution\": \"720p\",\n  \"fps\": 24,\n  \"save_audio\": true\n}\n```\n\nOmit `duration`. **Always** include uploaded `audio` in `input` — silent `duration`-only renders truncate narration on concat. Poll all `get_url` until done; retry failed scenes only.\n\n### Phase 3 — Review\n\nAdjust prompt, stills, or narration; re-run **that scene only**.\n\n### Phase 4 — Assembly\n\n1. **Concat** clips in scene order (narration already embedded).\n2. **Optional bed** — [stable-audio-2.5](../../../../tools/audio/stable-audio-2.5/SKILL.md) under VO ([`launch_background_music.py`](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/_shared/scripts/launch_background_music.py)).\n\n### Phase 5 — Manifest\n\nScene table + all six URLs per scene (start, end, audio in/out) + prediction ids.\n\n## Frame-chain + narration example (dog story)\n\n```text\nScene 1: composed start,  last=play_end,   audio=vo_1   chain→2\nScene 2: extract(clip_1), last=loss_end,   audio=vo_2   hard cut→3\nScene 3: composed start,  last=search_end, audio=vo_3   chain→4\nScene 4: extract(clip_3), last=tree_end,   audio=vo_4   chain→5\nScene 5: extract(clip_4), last=reunion,   audio=vo_5\n```\n\nSee [scene-anchor-triple.md](./references/scene-anchor-triple.md) for when to chain vs hard cut, and OPEN/MID/CLOSE prompt structure.\n\n## Related\n\n- Single clip: [image-to-video](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/image-to-video/skills/image-to-video/SKILL.md)\n- Talking avatars: [avatar-multi-scene](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/avatar-multi-scene/skills/avatar-multi-scene/SKILL.md)\n- Audio layering: [audio-post-production.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/shared/audio-post-production.md)\n- Parallel vs phased: [parallel-execution.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/parallel-execution.md)\n- Generic chain: [pruna-generative-pipeline](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/pruna-generative-pipeline/skills/pruna-generative-pipeline/SKILL.md)\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"narrated-multi-scene\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1784235508548\n}\n\nFile v1.0.6:references/approval-red-flags.md\n\n# Approval red flags (before paid generation)\n\nPause and show assets (or ask) when any of these are true — regardless of workflow.\n\n| Red flag | Risk | Required action |\n|----------|------|-----------------|\n| Plan not presented or no **approve plan** | Wrong story, cast, or style bible | Phase 0 — scene table + sample prompts |\n| Stills not shown since last prompt edit | Silent no-op regen; wasted video credits | Phase A — paths in `stills/`; wait for **approve stills** |\n| TTS / song not listened when narration drives video | Bad pacing, wrong lines in lip-sync | Phase A2 — `audio/narration_*.mp3` or `song.mp3` |\n| Same turn: plan approval + video | User never saw plates | Split turns; never batch |\n| **approve clips** missing before concat + bed | Bad VO buried under music | Phase C/D only after clip review |\n| Visual mode, cast gender/voice, or continuity unclear | Identity drift, wrong pipeline | Ask; do not guess |\n| Using `--yes-skip-*-gate` without user asking for automation | Bypasses human review | Confirm explicitly |\n| Regen prompts without deleting stills/clips | Old assets reused | Delete targets or `--fresh` / `--regen-*` per [staged-generation-gate.md](./staged-generation-gate.md) |\n| `voice_script` revised but avatar sources not deleted | Lip sync / dialogue mismatch | Delete `sources/` + `clips/` for that scene |\n| **`POST /v1/predictions` without [random seed ritual](./random-seed-ritual.md) (SSoT)** | Duplicate outputs; copied example strings | Generate and state a ritual string first; log `ritual_seed` |\n| **`PRUNA_API_KEY` or `REPLICATE_API_TOKEN` missing** | Cannot run API or runners | Stop; send signup links from [api-credentials.md](https://github.com/PrunaAI/pruna-skills/tree/main/shared/api-credentials.md) |\n\n## When NOT to stall\n\nThe user already replied **approve plan**, **approve stills**, or **approve clips** for the current phase — proceed with that phase only.\n\n## Common mistakes\n\n| Mistake | Fix |\n|---------|-----|\n| End-to-end `--phase all` on first run | Default phased flow; skip gates only when user requests automation |\n| Showing manifest JSON instead of media paths | User reviews JPEG/PNG/MP3/MP4 |\n| Approving \"looks good\" without listing paths | Name `stills/hero.png`, scene ids, or clip filenames |\n| Mixing bed before clip review | Concat first; bed after **approve clips** |\n| Assuming regen picked up prompt edits | Delete affected files or use `--regen-stills` / `--regen-clips` |\n\nSee [staged-generation-gate.md](./staged-generation-gate.md) for phases and wording templates · [workflow-feedback-gates.md](./workflow-feedback-gates.md) for runner flags.\n\nFile v1.0.6:references/generation-diversity.md\n\n# Generation diversity (all models)\n\nOne checklist so **every** Pruna output — **`p-image`**, **`p-video`**, try-on, avatar, replace, animate — is as **diverse** as the brief allows. Details live in linked docs; this page is the agent shortcut.\n\nUse the **full** checklist here for every generation.\n\n## Contents\n\n- [Three steps (every job)](#three-steps-every-job)\n- [Explicit prompt structure](#explicit-prompt-structure-required)\n- [Text & typography by model](#text--typography-by-model)\n- [SSoT axis derivation](#ssot-axis-derivation-sum-mod)\n- [Scenario axes](#scenario-axes-rotate-across-outputs)\n- [Render categories](#render-categories)\n- [Crowded scenes](#crowded-scenes-p-image)\n- [Body type spread](#body-type-spread)\n- [Location-matched crowds](#location-matched-crowds)\n- [Group classes](#group-classes--courses)\n- [Framing & camera](#framing--camera)\n- [Scene spice](#scene-spice-when-it-fits)\n- [Photoreal anti-slop](#photoreal-anti-slop-neon--stylized-briefs)\n- [Aspect ratio](#aspect-ratio-multi-example-sets)\n- [By model](#by-model-minimum-diversity)\n- [When not to maximize diversity](#when-not-to-maximize-diversity)\n- [Anti-patterns](#anti-patterns)\n\n## Three steps (every job)\n\n1. **[Random seed ritual](./random-seed-ritual.md) (SSoT)** — **always first**, before the prompt. Generate a fresh random string, **state it in the turn**, derive axes via [sum-mod](#ssot-axis-derivation-sum-mod). **Do not** pass the ritual string to API `seed`. **One new ritual string per independent generation**; reuse only on same-brief slop retry.\n2. **Write an [explicit prompt](#explicit-prompt-structure-required)** — name specific people, animals, objects, actions, setting, and camera/light. Add text/typography only when the brief needs it — see [text rules by model](#text--typography-by-model).\n3. **Diversify the scenario row** — change at least **two axes** from the previous output in the same session (cast, setting, camera, **`render_category_tag`**, **aspect_ratio**, creatures, props, … — unless user asked for continuity).\n4. **Log** — `ritual_seed`, axes chosen, prediction id (manifest or turn text).\n\n## Explicit prompt structure (required)\n\n**Vague prompts produce generic AI slop.** After the ritual and axis picks, every still prompt must be **specific and dynamic** — concrete nouns, frozen actions, named places. Prefer playground/creative briefs over marketing abstractions.\n\n**Name at least four of these per prompt (log tags in manifest):**\n\n| Clause | Log as | Agent must specify |\n|--------|--------|-------------------|\n| **People** | `cast_descriptor` | Named role + age band + expression (`fearless grandmother in floral apron`, not `woman`) |\n| **Animals / creatures** | `creature_tag` | Species + attitude (`otter DJ`, `luna moth knight`, `VIP anglerfish`) |\n| **Objects** | `prop_tag` | Concrete props (`vinyl record`, `chrome rocket sled`, `velvet rope`, `tiny boombox`) |\n| **Action** | `action_tag` | Frozen mid-motion verb (`scratching vinyl`, `lassoing runaway taco truck`, `cape mid-swing`) |\n| **Duration** | `duration_tag` | When timing matters (`1970s`, `8PM`, `45-minute spin class`, `Saturday-morning cartoon`) |\n| **Setting** | `setting_tag` | Named place + era + materials (`packed 1970s roller rink`, `abyss-depth jellyfish nightclub`, `Monument Valley dust storm`) |\n| **Text / typography** | `text_spec` | Only when brief needs readable type — exact strings + surface (see [by model](#text--typography-by-model)) |\n| **Camera + light** | `camera_tag`, `lighting_tag` | `fish-eye lens`, `tilt-shift macro`, `teal-magenta cinematic`, `golden hour sparkle` |\n| **Style** | `render_category_tag` | Medium (`cel-shaded anime`, `baroque oil painting`, `ink-wash storybook`, `photoreal documentary`) |\n\n**Template:**\n\n```text\n{people and/or creatures} {action} with/at {specific objects} in {named setting},\n{style or era cues}, {camera_tag}, {lighting_tag}\n```\n\n**Good examples (dynamic / specific):**\n\n```text\nDisco ball reflections on an otter DJ scratching vinyl at a packed 1970s roller rink,\nfish-eye lens, glitter confetti mid-air, funky energy\n```\n\n```text\nBioluminescent jellyfish nightclub at abyss depth, VIP anglerfish in sunglasses at velvet rope,\nteal-magenta cinematic lighting\n```\n\n```text\nCorgi cowboy lassoing a runaway taco truck through Monument Valley dust storm,\npulp western poster energy, dynamic diagonal composition\n```\n\n**Anti-pattern:** `cool cyberpunk portrait, neon vibes` — no subject, no action, no place. **Right:** name who, what they're doing, where, with which props.\n\n## Text & typography by model\n\n**Never use negation to suppress text** — `no text`, `without signs`, `no typography` often **invoke** the thing you are trying to avoid. Describe surfaces positively when you want blank walls (`plain unmarked walls`, `matte unprinted props`).\n\n| Model | Prompt upsampling | Typography in prompt |\n|-------|-------------------|----------------------|\n| **`p-image`** | **No** effective prompt upsampling | **Avoid** dense readable-type requests unless user explicitly wants `text_rendering`. Short prompts; skip `readable`, `legible`, `headline`, multi-sign lists — they drift to gibberish. Collage triggers still apply: [interactive-explainer-prompts.md](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/interactive-explainer-prompts.md) (`flat lay`, `grid`, `collage`, …). |\n\n**`p-image` text hygiene:** prefer scenes without copy. If a screen appears: `monitor soft colorful blur glow only` — not legible UI unless the user explicitly asked for readable text (then simplify the brief or drop copy).\n\n**Collage triggers (all T2I models):** still avoid `flat lay`, `packshot`, `grid`, `collage`, `montage`, `contact sheet`, `split`, `before and after` — use `single frame`, `one camera angle` instead. Full table: [interactive-explainer-prompts.md](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/interactive-explainer-prompts.md).\n\n## SSoT axis derivation (sum-mod)\n\nAfter stating `ritual_seed` (random string), derive prompt choices — sum Unicode/ASCII char codes, mod list length:\n\n```text\nRATIOS = [\"1:1\", \"16:9\", \"9:16\", \"4:3\", \"3:4\", \"3:2\", \"2:3\"]\naspect_ratio  ← RATIOS[ sum(codes(ritual_seed)) % 7 ]\ncamera_tag    ← camera_tags[ sum(codes(ritual_seed[0:4])) % len(camera_tags) ]\nrender_tag    ← render_tags[ sum(codes(ritual_seed[4:8])) % len(render_tags) ]\n```\n\n`camera_tags` and `render_tags` — see [framing & camera](#framing--camera) and [render categories](#render-categories). State derived picks in the turn (*\"Aspect ratio: 16:9, camera: over-shoulder\"*).\n\n**User `api_seed`:** when the user supplies an integer for reproducibility, pass it as `input.seed` — separate from the ritual string.\n\n## Scenario axes (rotate across outputs)\n\n| Axis | Vary with | Applies to |\n|------|-----------|------------|\n| **Cast** | age, ethnicity, gender, archetype, **hairstyle**, **body type** (rotate — see [below](#body-type-spread)), disability aids (wheelchair, cane), visible age band twice in prompt | all person/content gens |\n| **Medium** | `render_category_tag` — rotate across [render categories](#render-categories) | `p-image`, avatar stills |\n| **Setting** | unique `setting_tag` — specific room/street/venue/era, not repeat adjacent rows | stills + video plates |\n| **Camera** | `camera_tag` — rotate across [framing ladder](#framing--camera); never default MC facing lens | stills, `video_prompt` |\n| **Lighting** | `lighting_tag` — golden hour · neon · overcast · practical | stills, video mood |\n| **Motion** | unique `video_prompt` per clip | `p-video`, `p-video-avatar`, animate |\n| **Voice** | natural `voice_script`; one `voice` preset per character | avatar, TTS-led video |\n| **Seed** | new ritual string per **independent** job; reuse only on same-brief slop retry | all generation skills |\n| **Aspect ratio** | different `aspect_ratio` per independent still in a batch — see [below](#aspect-ratio-multi-example-sets) | `p-image`, `p-image-edit` |\n| **Crowd density** | layered background population + activity cues — see [below](#crowded-scenes-p-image) | `p-image` plates with busy worlds |\n\nFull style/camera/lighting ladders: [visual-variety-bible.md](https://github.com/PrunaAI/pruna-skills/tree/main/shared/visual-variety-bible.md). Persona + try-on bar: [realistic-persona-showcase.md](https://github.com/PrunaAI/pruna-skills/tree/main/shared/realistic-persona-showcase.md).\n\n## Render categories\n\nRotate **`render_category_tag`** (and log it) so diversity batches cover more than photoreal portraits or anime. Category families below mirror arena leaderboards — pick a **different tag per independent output**.\n\n**Random seed ritual still applies** to every generation in [step 1](#three-steps-every-job); categories describe *what* to vary, not *when* to pick `seed`.\n\n### Text-to-image — `p-image`\n\nSources: [Arena text-to-image](https://arena.ai/leaderboard/text-to-image) · [AA text-to-image](https://artificialanalysis.ai/image/leaderboard/text-to-image)\n\n**Unified `render_category_tag`** (Arena bucket = tag — pick one per still):\n\n`product_branding_commercial` · `3d_imaging_modeling` · `cartoon_anime_fantasy` · `photoreal_cinematic` · `art` · `portraits` · `nature_environment` · `animals_creature` · `text_rendering`\n\n| Tag | Typical prompt lane |\n|-----|---------------------|\n| `product_branding_commercial` | single product on seamless studio, person + product in named setting, showroom (not `flat lay` / `packshot` words) |\n| `3d_imaging_modeling` | CG film still, clay/stop-motion, rounded 3D forms |\n| `cartoon_anime_fantasy` | cel anime, fantasy character, crowded stylized world |\n| `photoreal_cinematic` | documentary crowd scenes, film-scale wide, urban march |\n| `art` | oil, watercolor, gouache, charcoal, flat vector |\n| `portraits` | single-subject editorial or documentary portrait (crowd optional behind) |\n| `nature_environment` | landscape-wide; subject small in frame |\n| `animals_creature` | named species + handler; crowded market/park when it fits |\n| `text_rendering` | **user-requested only** — otherwise no readable text |\n\nLog `render_category_tag` in manifest. Combine with [crowded scenes](#crowded-scenes-p-image), [body type](#body-type-spread), and [scene spice](#scene-spice-when-it-fits) when the brief allows.\n\n### Image edit — `p-image-edit`\n\nSources: [Arena image edit](https://arena.ai/leaderboard/image-edit) · [AA image editing](https://artificialanalysis.ai/image/leaderboard/editing)\n\nArena modalities: `single_image_edit` · `multi_image_edit`\n\nEdit diversity tags: `background_swap` · `relight` · `wardrobe_on_plate` · `pose_or_angle_delta` · `multi_ref_composite` · `region_inpaint`\n\nVary **instruction** and **what changes** while identity URL stays fixed on character arcs.\n\n### Text-to-video — `p-video`\n\nSources: [Arena text-to-video](https://arena.ai/leaderboard/text-to-video) · [AA text-to-video](https://artificialanalysis.ai/video/leaderboard/text-to-video)\n\nMotion/scene tags: `character_performance` · `landscape_broll` · `urban_street` · `product_demo` · `abstract_mood` · `crowd_scene` · `dialogue_beat`\n\nRotate `video_prompt` grammar, start plate world, and `camera_tag` per clip.\n\n### Image-to-video — `p-video` (+ plate upload)\n\nSources: [Arena image-to-video](https://arena.ai/leaderboard/image-to-video) · [AA image-to-video](https://artificialanalysis.ai/video/leaderboard/image-to-video)\n\nPlate-driven tags: `animate_hero_still` · `camera_move_on_plate` · `environmental_parallax` · `avatar_lip_sync` · `hands_or_prop_motion`\n\nMatch motion to what the **still** already shows — do not contradict the plate.\n\n### Video edit — `p-video-replace` (and edit-style video)\n\nSource: [Arena video edit](https://arena.ai/leaderboard/video-edit)\n\nEdit tags: `face_recast` · `wardrobe_swap` · `accessory_swap` · `background_replace` · `object_in_hand_swap` · `style_transfer_on_subject`\n\nSame-gender / identity rules for talking-head beats still apply — see [visual-variety-bible.md](https://github.com/PrunaAI/pruna-skills/tree/main/shared/visual-variety-bible.md).\n\n## Crowded scenes (`p-image`)\n\nWhen the brief asks for **busy**, **crowded**, or **lively** worlds — not a lone subject on a blank wall — stack density in the prompt:\n\n1. **Three depth layers** — sharp foreground subject · readable midground faces/hands/props · landmark bokeh (stage, temple, billboards, ferris wheel).\n2. **Named population count** — `hundreds of pedestrians`, `dozens of faces in midground`, `20+ tiny clay figures` (stylized sets need explicit counts; models under-deliver on vague \"busy\").\n3. **Activity verbs** — raised hands, umbrellas open, food steam, confetti, market haggling, commuters pressed shoulder-to-shoulder.\n4. **Shallow DOF + single subject** — `single subject one frame` keeps one identity readable while the crowd stays behind them.\n5. **Age & angle lock** — repeat age band twice (`woman in her late 50s, visibly fifty`) and use [framing & camera](#framing--camera) — models drift younger, center-frame, and front-facing without it.\n\n| Crowd family | Density cues |\n|--------------|--------------|\n| **Urban rush** | crosswalk stripes, wet reflections, umbrellas, billboard bokeh |\n| **Festival / parade** | confetti, raised hands, costume layers, smoke haze |\n| **Market / bazaar** | overflowing stalls, hanging goods, steam, price tags as color blobs |\n| **Transit crush** | strap hangers, door windows, blurred faces pressed together |\n| **Stylized miniature** | counted clay/figurine shoppers (`20+`), cramped aisle, stacked crates |\n| **Institutional / ER** | framed oil portraits on beige walls, triage number board, wall sanitizer, vending machine, scuffed linoleum, TV blur, mixed-age seated patients |\n| **Urban march / protest** | named city, local landmarks, multiracial crowd cues separate from hero — see [location-matched crowds](#location-matched-crowds) |\n| **Group fitness class** | class name + duration, mixed-gender riders, realistic warm studio light — see [group classes](#group-classes--courses) |\n\n**Anti-pattern:** one blurred smear behind a portrait — name **what** the crowd is doing and **where** layers sit. **Institutional** scenes (ER, airport, classroom) need `benches full`, `standing room only`, or `shoulder-to-shoulder` — otherwise models default to a quiet hallway. Name **set dressing** too: framed portraits on walls, triage number board, vending machine glow, scuffed linoleum — generic mint corridors read AI-empty.\n\n## Body type spread\n\nModels default to one “average fitness” body. In diversity batches, **name build on the hero and vary background bodies**:\n\n| Build tag | Prompt cue |\n|-----------|------------|\n| **Plus-size / curvy** | `plus-size`, `curvy build`, `full-figured` |\n| **Athletic / muscular** | `broad shoulders`, `muscular arms`, `athletic build` |\n| **Petite / slim** | `petite frame`, `slim build`, `narrow shoulders` |\n| **Tall / lanky** | `tall and lanky`, `6-foot frame`, `long limbs` |\n| **Stocky / heavyset** | `stocky build`, `heavyset`, `barrel chest` |\n| **Lean wiry** | `lean wiry frame`, `weathered thin face` |\n\n**Rule:** rotate build across independent panels in a session — not every hero “athletic build”. Background crowd should mix ages **and** silhouettes (`elderly thin woman`, `heavyset man`, `pregnant woman seated`, `toddler on lap`).\n\n## Location-matched crowds\n\nWhen the prompt names a **real city or country**, background faces must match that place’s **demographic mix** — not clone the hero’s ethnicity.\n\n| Wrong | Right |\n|-------|--------|\n| South Asian hero + only South Asian protesters in “New York” | Hero is one identity; crowd explicitly `multiracial NYC march — Black, Latino, white, East Asian protesters` |\n| “Dense city march” with no geography | Name city + 3–4 crowd ethnicity cues + local landmarks (yellow cabs, art deco towers, steam vent) |\n| Festival in Lagos with only Nordic faces | Match crowd to `setting_tag` region |\n\n**Prompt pattern:** lock hero cast in sentence 1; sentence 2 lists **four+ distinct background silhouettes** unrelated to hero ethnicity; sentence 3 names **local landmarks** so the plate cannot read as generic stock.\n\n**Applies to:** protests, airports, transit, street markets, sports crowds — any scene where “crowded” implies a real place.\n\n## Group classes & courses\n\nWhen the scene is a **class, workshop, or team activity**, name the **course type** and **who else is in the room** — models default to monochrome crowds (all men, all one age).\n\n| Specify | Example cues |\n|---------|----------------|\n| **Class type** | `45-minute evening spin class`, `beginner yoga flow`, `HIIT bootcamp circuit` |\n| **Room realism** | warm overhead track lights, mirror wall, rubber floor, water bottles, towels — **not** magenta-cyan neon strips unless brief is explicitly nightclub |\n| **Gender mix** | hero is one person; crowd `mixed-gender class — women with ponytails, men with beards, nonbinary cyclist` |\n| **Body + age mix** | plus-size rider, petite woman, athletic man, woman in her 50s — same as [body type spread](#body-type-spread) |\n\n**Lighting rule for fitness:** real boutique studios are **dim warm overhead** or **single spotlight on instructor** — avoid `split gel`, `neon LED strips`, `magenta-cyan` on photoreal gym plates; those read AI-fake.\n\n**Prompt pattern:** `Documentary fitness portrait` + class name + instructor on bike at front + `20+ mixed-gender cyclists` with 3–4 named background silhouettes + realistic room props.\n\n## Framing & camera\n\nModels default to **centered subject, eyes at camera**. In diversity batches, **rotate `camera_tag` and frame placement** every row — log both in manifest.\n\n**Gaze rule:** `glance off-lens`, `profile`, `back to camera`, `looking down at [prop]`, or `watching the crowd` — **not** `facing camera` or `looking at viewer` unless the user asked for a direct-address avatar plate.\n\n**Placement rule:** name where the subject sits in frame — `left third`, `right third`, `lower right corner`, `edge of frame`, `small in environmental wide` — **not** centered mugshot every time.\n\n| `camera_tag` | Prompt cue |\n|--------------|------------|\n| **Overhead / bird's eye** | `overhead aerial view`, `top-down`, `drone shot looking straight down` |\n| **High corner** | `high angle from corner`, `surveillance-style downward angle` |\n| **Worm's eye** | `ground-level worm's eye`, `camera on pavement` |\n| **Crane-down** | `slight high angle crane-down` |\n| **Over-shoulder** | `over-shoulder from behind`, `seen past someone's shoulder` |\n| **Profile / side** | `profile side angle`, `walking across frame` |\n| **From behind** | `back to camera`, `three-quarter from behind` |\n| **Dutch tilt** | `dutch tilt` — tension scenes only |\n| **Through crowd** | `subject visible through gap in crowd`, `foreground heads out of focus` |\n\n**Batch rule:** no two adjacent stills share the same `camera_tag` **and** placement corner (e.g. don't do `left third` twice in a row).\n\nAvatar / lip-sync exception: face must stay readable and mouth visible — use `slight angle from the side` or `three-quarter`, still **off-center** and **off-lens gaze** when not delivering VO to camera.\n\n## Scene spice (when it fits)\n\nDefault plates are person + crowd + place. Add **one or two specific attributes** when the setting naturally supports them — not random clutter on every row.\n\n| Spice type | When to add | Example |\n|------------|-------------|---------|\n| **Animals** | setting implies them | dog park → `golden retriever on leash`; harbor → `seagulls overhead`; rooftop → `pigeons on water tower`; parade → `police horse midground` |\n| **Held / worn props** | role or weather | `red umbrella tucked under arm`, `wire beekeeper smoker`, `chipped ceramic mug`, `sample strawberry basket` |\n| **Micro-detail** | one thumb-stopping oddity | `muddy paw prints on pavement`, `honey jar on crate`, `green parade beads on fence` |\n\nCamera and placement live in [framing & camera](#framing--camera) — not optional spice.\n\n**Rule:** pick **at most two** spice items per prompt. They must answer “what would a photographer notice here?” — not a checklist dump.\n\n**Skip spice when:** product hero, avatar MC talking head, try-on full-body (garment is the focus), or minimal studio brief.\n\n## Photoreal anti-slop (neon / stylized briefs)\n\nStylized settings still need **documentary skin discipline** or outputs go waxy:\n\n- Lead with `documentary portrait, natural skin pores, not CGI, not illustration` even for neon/cyberpunk worlds.\n- Prefer **worn real materials** — matte leather, faded denim, scratched CRT bezels, sticky carpet — over `holographic puffer`, `chrome armor`, `HUD`.\n- Name **gritty location cues** — basement arcade, wet alley, scuffed linoleum — not abstract `neon corridor`.\n- Background crowd faces need **imperfect texture**; blur is fine, plastic skin in midground is not.\n\n## Aspect ratio (multi-example sets)\n\nWhen generating **two or more** stills in one session (playground grid, demo batch, mood board), give each independent output a **different** `aspect_ratio` unless the user locked a format.\n\n**Allowed `p-image` values:** `1:1` · `16:9` · `9:16` · `4:3` · `3:4` · `3:2` · `2:3`\n\n**How to pick:** after the [random seed ritual](./random-seed-ritual.md), use [sum-mod](#ssot-axis-derivation-sum-mod) on `ritual_seed` — state it in the turn (*\"Aspect ratio: 16:9\"*). Do **not** default every example to `9:16` or `1:1`.\n\n| Ratio | Typical use |\n|-------|-------------|\n| `9:16` | vertical UGC, full-body fashion, avatar talking head |\n| `16:9` | environmental wide, cinematic landscape plate |\n| `3:4` | editorial portrait, try-on full-body |\n| `4:3` | classic portrait, product + person |\n| `1:1` | packshot grid, social tile |\n| `3:2` · `2:3` | magazine / poster crops |\n\nMatch prompt framing to ratio (e.g. `16:9 horizontal wide shot`, `9:16 vertical full body`). **`p-image-try-on`** inherits plate size when `preserve_input_size: true` — diversify person plates first.\n\n**Same character arc:** one ratio for the whole chain unless the user asks for reframes.\n\n## By model (minimum diversity)\n\n| Model | Besides ritual seed, always vary |\n|-------|-----------------------------------|\n| **`p-image`** | cast/creature + objects + action + setting + camera + **`render_category_tag`** + **aspect_ratio**; [explicit structure](#explicit-prompt-structure-required); [text hygiene](#text--typography-by-model) (no upsampling) |\n| **`p-image-edit`** | edit tag + setting/angle delta; same identity URL |\n| **`p-image-try-on`** | person plate world + garment complexity; preserve scene |\n| **`p-image-upscale`** | N/A on prompt — diversify **source** stills |\n| **`p-video`** | motion/scene tag + `video_prompt`; differ start plates per scene |\n| **`p-video-avatar`** | `video_prompt` + still world per scene; lock voice per character |\n| **`p-video-animate`** | persona still style/setting per slider ref |\n| **`p-video-replace`** | video-edit tag + full cast spread on showcase reels |\n\n## When **not** to maximize diversity\n\n- **Same character arc** — lock hero plate URL, one `voice`, cast descriptor; vary only setting/angle/motion per scene.\n- **User asked for continuity** — match their cast and approved plates.\n- **Draft → final** — same prompt; change only `draft: false`. Use `api_seed` only if user locked API reproducibility.\n\n## Anti-patterns\n\n| Wrong | Right |\n|-------|--------|\n| Copy doc example ritual strings | [Random seed ritual](./random-seed-ritual.md) — fresh string each time |\n| Pass ritual string as API `seed` | Ritual is SSoT planning only; `api_seed` when user requests |\n| White wall + MC CU on every demo | Rotate setting + camera + cast |\n| One `video_prompt` for whole reel | Unique motion per scene row |\n| New ritual string mid avatar chain on same brief | Reuse `ritual_seed` until recast or new independent output |\n| Same aspect ratio on every playground example | Rotate `1:1` · `16:9` · `9:16` · `4:3` · `3:4` · `3:2` · `2:3` per [aspect ratio rules](#aspect-ratio-multi-example-sets) |\n| Every hero same athletic body | Rotate [body type spread](#body-type-spread) |\n| Generic hospital hallway | Named ER set dressing + mixed body types in crowd |\n| `holographic` / `chrome` on photoreal cyber scenes | Worn leather, scratched cabinets, documentary skin cues |\n| Monoculture crowd in a named global city | [Location-matched crowds](#location-matched-crowds) — hero ≠ background ethnicity |\n| Magenta-cyan neon on photoreal gym | Warm overhead studio light, mirror wall, real spin bikes |\n| All-male or all-female group class | [Group classes](#group-classes--courses) — mixed-gender background cues |\n| Centered subject every frame | [Framing & camera](#framing--camera) — rotate `camera_tag` + placement |\n| Subject facing camera / at viewer | Off-lens gaze, profile, from behind, or watching crowd |\n| Random animals with no setting reason | Animals only when place implies them |\n| Every stylized panel is anime | Rotate [render categories](#render-categories) — use `cartoon_anime_fantasy` at most once per batch |\n| Vague `cool portrait, neon vibes` | [Explicit structure](#explicit-prompt-structure-required) — named subject, action, objects, setting |\n| `no text` / `without signage` in prompt | Negation invokes text — use [text rules by model](#text--typography-by-model) |\n| Dense typography on **`p-image`** | Drop copy or simplify the brief — `p-image` has no prompt upsampling |\n\n## Related\n\n- [generation-quality-checklists.md](./generation-quality-checklists.md) — core + model checklists\n- [staged-generation-gate.md](./staged-generation-gate.md) — approval phases\n\nFile v1.0.6:references/generation-quality-checklists.md\n\n# Generation quality checklist hub\n\nUse this as the shared quality gate across models and workflows.\nRun the **Core checklist** for every generation job, then run the model-specific checklist.\n\n## Who applies these checklists?\n\n**The coding agent** — by **opening the real output files** (images, video, or audio) and reviewing them with vision. These checklists are **not** automated test scripts. There is no separate scoring service: the agent reads each item and judges pass or fail from what it sees and hears.\n\nTypical flow:\n\n1. **Generate or download** the asset to a local path (`stills/`, `clips/`, etc.).\n2. **Inspect the file** — view the image, watch the video clip, or listen to narration when the checklist covers audio.\n3. Run the **Core checklist** (below), then the **model-specific checklist** for that job.\n4. **If something fails** — note which items failed, adjust prompt / settings / seed, and regenerate **only that asset** (do not advance to expensive video steps on a bad still).\n5. **If it passes** — show the user the file paths (and previews when helpful). In workflows, still follow [staged-generation-gate.md](./staged-generation-gate.md): agent checklist review happens **before** you ask the user to approve stills or clips.\n\nThe user's **approve plan / approve stills / approve clips** gates are separate. Agent checklists catch obvious problems early so the user is not asked to sign off on broken outputs.\n\nMaintenance rule: keep tool/workflow mapping only in this file to avoid link drift.\n\n## Match map (tool -> checklist -> workflows)\n\n| Tool/model | Checklist | Common workflows |\n|------------|-----------|---------------|\n| `p-image` | [`p-image-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/image/p-image-quality-checklist.md) · persona bar: [`realistic-persona-showcase.md`](https://github.com/PrunaAI/pruna-skills/tree/main/shared/realistic-persona-showcase.md) | [`image-to-video`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/image-to-video/skills/image-to-video/SKILL.md), [`narrated-multi-scene`](../SKILL.md), [`WORKFLOW-RECIPES`](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md) |\n| `p-image-edit` | [`p-image-edit-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/image/p-image-edit-quality-checklist.md) | [`avatar-single-scene`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/avatar-single-scene/skills/avatar-single-scene/SKILL.md), [`avatar-multi-scene`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/avatar-multi-scene/skills/avatar-multi-scene/SKILL.md), [`WORKFLOW-RECIPES`](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md) |\n| `p-image-upscale` | [`p-image-upscale-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/image/p-image-upscale-quality-checklist.md) | [`image-to-video`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/image-to-video/skills/image-to-video/SKILL.md), [`narrated-multi-scene`](../SKILL.md), [`WORKFLOW-RECIPES`](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md), [`generate_upscale_comparison.py`](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/_shared/scripts/generate_upscale_comparison.py) |\n| `p-image-try-on` | [`p-image-try-on-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/image/p-image-try-on-quality-checklist.md) | [`WORKFLOW-RECIPES`](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md), [`p-image-try-on`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-image-try-on/skills/p-image-try-on/SKILL.md), [`realistic-persona-showcase.md`](https://github.com/PrunaAI/pruna-skills/tree/main/shared/realistic-persona-showcase.md) |\n| `p-video` | [`p-video-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/video/p-video-quality-checklist.md) | [`image-to-video`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/image-to-video/skills/image-to-video/SKILL.md), [`narrated-multi-scene`](../SKILL.md), [`interactive-explainer`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/interactive-explainer/skills/interactive-explainer/SKILL.md), [`visual-transition-reel`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/visual-transition-reel/skills/visual-transition-reel/SKILL.md), [`WORKFLOW-RECIPES`](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md) |\n| `p-video-avatar` | [`p-video-avatar-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/video/p-video-avatar-quality-checklist.md) · persona bar: [`realistic-persona-showcase.md`](https://github.com/PrunaAI/pruna-skills/tree/main/shared/realistic-persona-showcase.md) | [`avatar-single-scene`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/avatar-single-scene/skills/avatar-single-scene/SKILL.md), [`avatar-multi-scene`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/avatar-multi-scene/skills/avatar-multi-scene/SKILL.md), [`interactive-explainer`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/interactive-explainer/skills/interactive-explainer/SKILL.md), [`WORKFLOW-RECIPES`](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md) |\n| `p-video-animate` | [`p-video-animate-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/video/p-video-animate-quality-checklist.md) | [`avatar-multi-scene`](https://gith\n\nArchive v1.0.2: 15 files, 35496 bytes\n\nFiles: apm.yml (606b), README-INSTALL.md (562b), references/generation-diversity.md (26021b), references/p-video-quality-checklist.md (1825b), references/parallel-execution.md (7550b), references/pruna-api.md (4980b), references/random-seed-ritual.md (4019b), references/scene-anchor-triple.md (10189b), references/staged-generation-gate.md (7631b), references/workflow-feedback-gates.md (5591b), skill-card.md (3226b), skill.deps.json (1250b), skill.manifest.json (445b), SKILL.md (8071b), _meta.json (139b)","readmeExcerpt":"Skill: narrated-multi-scene Owner: pruna-ai Summary: Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. Tags: ai:1.0.14, generative:1.0.14, latest:1.0.14, pruna:1.0.14 Version history: v1.0.14 | 2026-09-29T15:36:50.636Z | auto - Version bump to 1.0.14. - Documentation update: SKILL.md revised; minor adjustments, no wo","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"ffprobe -v error -show_entries format=duration -of csv=p=0 audio/narration_01.mp3"},{"language":"json","snippet":"{\n  \"prompt\": \"...\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"audio\": \"NARRATION_URL\",\n  \"resolution\": \"720p\",\n  \"fps\": 24,\n  \"save_audio\": true\n}"},{"language":"bash","snippet":"# clips.txt: file 'clips/01.mp4'\\nfile 'clips/02.mp4' …\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy film.mp4"},{"language":"bash","snippet":"ffmpeg -y -i film.mp4 -i bed.mp3 \\\n  -filter_complex \"[1:a]volume=0.12[bed];[0:a][bed]amix=inputs=2:duration=first[a]\" \\\n  -map 0:v -map \"[a]\" -c:v copy -c:a aac film_with_bed.mp4"},{"language":"text","snippet":"Scene 1: composed start,  last=play_end,   audio=vo_1   chain→2\nScene 2: extract(clip_1), last=loss_end,   audio=vo_2   hard cut→3\nScene 3: composed start,  last=search_end, audio=vo_3   chain→4\nScene 4: extract(clip_3), last=tree_end,   audio=vo_4   chain→5\nScene 5: extract(clip_4), last=reunion,   audio=vo_5"},{"language":"bash","snippet":"ffprobe -v error -show_entries format=duration -of csv=p=0 audio/narration_01.mp3"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: narrated-multi-scene\ndescription: Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue.\nlicense: MIT\nmetadata:\n  version: \"1.0.14\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image-ideogram` | Use when photo generation needs more control — photoreal results, text in the image, or structured JSON with hex colors and bounding boxes. Simpler photo generation, edits, and video use other skills in the suite. | `npx skills add PrunaAI/pruna-skills@p-image-ideogram -y` |\n| `p-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `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` |\n| `p-video-2` | Use when someone wants a polished short clip from text, images, or imported audio — 1080p B-roll, start/end frame animation, or a motion shot with a mixed track. Not for cinematic generated-audio clips or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2 -y` |\n| `p-video` | Use when someone wants a simple short clip from text or images — quick B-roll, drafts, or start/end frame animation. Not when the brief needs cinematic generation, highest quality, tight lip-sync, or imported audio at 1080p. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `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` |\n| `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` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **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**.\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, narration lines, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end stills per scene | **approve stills"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"narrated-multi-scene\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790696210636\n}"},{"path":"skill-card.md","content":"## Description:\n\nHelps create linked video scenes with voiceover, from scene planning and stills through narration, clip review, and assembly.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[pruna-ai](https://clawhub.ai/user/pruna-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCreators and production teams use this skill to plan, generate, review, and assemble multi-scene narrated videos without on-camera dialogue.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Installing related skills from an untrusted or changing source could introduce unexpected behavior.\n\nMitigation: Use a trusted, version-pinned installation path for referenced Pruna skills.\n\nRisk: Generated or uploaded media may be sent to a configured provider, and paid video generation may incur costs.\n\nMitigation: Review media-sharing requirements and retain the plan, stills, narration, and clip approval gates before paid jobs.\n\n## Reference(s):\n\n- [Narrated Multi Scene on ClawHub](https://clawhub.ai/pruna-ai/skills/narrated-multi-scene)\n\n## Skill Output:\n\n**Output Type(s):** [Markdown, Guidance, Shell commands, Configuration]\n\n**Output Format:** [Markdown scene plans and review prompts, with media-generation and assembly instructions]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Plans include per-scene prompts, stills, narration, and approval gates; completed workflows may produce media files and a scene manifest.]\n\n## Skill Version(s):\n\n1.0.14 (source: release evidence and skill frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"skill.manifest.json","content":"{\n  \"references\": []\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. Skill: narrated-multi-scene Owner: pruna-ai Summary: Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. Tags: ai:1.0.14, generative:1.0.14, latest:1.0.14, pruna:1.0.14 Version history: v1.0.14 | 2026-09-29T15:36:50.636Z | auto - Version bump to 1.0.14. - Documentation update: SKILL.md revised; minor adjustments, no wo","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1402,"uniquenessScore":47,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T11:10:56.971Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T11:10:56.971Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T13:40:58.552Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}