{"id":"0c60c7e0-fd24-4925-869e-2454cfcf45a5","entityType":"agent","slug":"clawhub-pruna-ai-p-video","name":"p-video","canonicalUrl":"https://www.xpersona.co/agent/clawhub-pruna-ai-p-video","canonicalPath":"/agent/clawhub-pruna-ai-p-video","generatedAt":"2026-10-10T14:47:02.969Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T11:39:52.972Z","emptyReason":null},"description":"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. Skill: p-video Owner: pruna-ai Summary: 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. 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:34:47.201Z | auto p-video 1.0.14 - Updated SKILL.m","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:p-video","sourceUrl":"https://clawhub.ai/pruna-ai/p-video","homepage":"https://clawhub.ai/pruna-ai/skills/p-video","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/pruna-ai/p-video","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/pruna-ai/skills/p-video","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"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 generati"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T11:39:52.972Z","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:39:52.972Z","emptyReason":null},"stars":null,"forks":null,"downloads":1458,"packageName":null,"latestVersion":"1.0.14","tractionLabel":"1.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T11:39:52.972Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T11:39:52.972Z","lastCrawledAt":"2026-10-10T11:39:52.972Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T11:39:52.972Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.14","createdAt":"2026-09-29T15:34:47.201Z","changelog":"p-video 1.0.14 - Updated SKILL.md to version 1.0.14. - Removed the file skill-card.md. - No behavioral or interface changes described; documentation cleanup only.","fileCount":4,"zipByteSize":5888},{"version":"1.0.13","createdAt":"2026-09-17T13:57:18.264Z","changelog":"**Expanded routing and clarified boundaries for p-video.** - Improved the description and warnings to clarify when to use or route away from `p-video`, especially for cinematic, 1080p, and imported audio needs. - Updated agent routing: direct cinematic generation with audio to `p-video-2-pro`; 1080p/imported audio/drafts to `p-video-2`. - Added and adjusted \"When NOT to use\" section with new options (`p-video-2-pro`, updated `p-video-2`), with sharper role descriptions. - Removed deprecated documentation file (`skill-card.md`).","fileCount":4,"zipByteSize":6024},{"version":"1.0.12","createdAt":"2026-09-10T13:55:41.247Z","changelog":"**p-video 1.0.12 – distinguishes quick/simple video from best-quality** - Updated description and routing: Use `p-video` for simple, quick clips (drafts, B-roll, basic motion); use `p-video-2` for highest-quality or tighter lip-sync. - Added clear guidance to redirect requests for hero shots or best-quality clips to `p-video-2`. - Clarified scope and boundaries—do not use for talking-head-only, best-quality, or multi-scene tasks. - Removed the `skill-card.md` file for simplification. - Improved skill selection tables and agent guidance for easier task routing.","fileCount":4,"zipByteSize":5970},{"version":"1.0.11","createdAt":"2026-09-03T14:10:11.344Z","changelog":"p-video 1.0.11 - Updated skill guidance to recommend `p-video-edit` for text-based editing of existing clips (new out-of-skill scenario). - Clarified boundaries for in-skill vs. out-of-skill: editing, assembly, and model-based edits now explicitly redirect to other skills. - Removed the obsolete skill-card.md file.","fileCount":4,"zipByteSize":5713},{"version":"1.0.10","createdAt":"2026-08-28T07:56:21.686Z","changelog":"- Bumped skill version to 1.0.10. - Updated SKILL.md metadata to reflect new version. - Removed deprecated skill-card.md file.","fileCount":4,"zipByteSize":5627},{"version":"1.0.9","createdAt":"2026-08-04T06:17:37.170Z","changelog":"- Bumped version to 1.0.9. - Updated `SKILL.md` to reflect the new version. - Removed the `skill-card.md` file.","fileCount":4,"zipByteSize":5598},{"version":"1.0.8","createdAt":"2026-07-28T17:19:44.487Z","changelog":"p-video v1.0.8 - Agent now explicitly opens a `generation-diversity` clarification intake before the first generation request. - Updated agent guidance to reflect this intake process in \"Agent habit\" section. - Removed redundant or outdated file: skill-card.md. - Version bump to 1.0.8 in metadata.","fileCount":4,"zipByteSize":5624},{"version":"1.0.7","createdAt":"2026-07-23T12:34:36.704Z","changelog":"**Major update: simplifies and clarifies usage, consolidates references, and introduces explicit prerequisites.** - Adds a **Prerequisites** section with required companion skills and installation commands for prompt craft and API usage. - Defines a strict **agent reply habit**, requiring first reply checks for API key and proper prompt draft practices. - Expands **prompt crafting guidelines** for faithful, user-matched, and diverse video prompts, referencing best practices via other skills. - Moves detailed policies and checklists to external skills; removes in-skill references and older guide files. - Makes **skill boundaries and redirect logic** explicit, with table of out-of-scope skills and install commands. - Updates metadata and file structure, reflecting streamlined documentation and remixed example code.","fileCount":4,"zipByteSize":5535}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s173djpkkm1x4yfzg522h5vfp989mrn5:p-video","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-p-video/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video/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-10T14:47:02.962Z"}},"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-p-video/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video/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:39:52.972Z","emptyReason":null},"readme":"Skill: p-video\n\nOwner: pruna-ai\n\nSummary: 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.\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:34:47.201Z | auto\n\np-video 1.0.14\n\n- Updated SKILL.md to version 1.0.14.\n- Removed the file skill-card.md.\n- No behavioral or interface changes described; documentation cleanup only.\n\nv1.0.13 | 2026-09-17T13:57:18.264Z | auto\n\n**Expanded routing and clarified boundaries for p-video.**\n\n- Improved the description and warnings to clarify when to use or route away from `p-video`, especially for cinematic, 1080p, and imported audio needs.\n- Updated agent routing: direct cinematic generation with audio to `p-video-2-pro`; 1080p/imported audio/drafts to `p-video-2`.\n- Added and adjusted \"When NOT to use\" section with new options (`p-video-2-pro`, updated `p-video-2`), with sharper role descriptions.\n- Removed deprecated documentation file (`skill-card.md`).\n\nv1.0.12 | 2026-09-10T13:55:41.247Z | auto\n\n**p-video 1.0.12 – distinguishes quick/simple video from best-quality**\n\n- Updated description and routing: Use `p-video` for simple, quick clips (drafts, B-roll, basic motion); use `p-video-2` for highest-quality or tighter lip-sync.\n- Added clear guidance to redirect requests for hero shots or best-quality clips to `p-video-2`.\n- Clarified scope and boundaries—do not use for talking-head-only, best-quality, or multi-scene tasks.\n- Removed the `skill-card.md` file for simplification.\n- Improved skill selection tables and agent guidance for easier task routing.\n\nv1.0.11 | 2026-09-03T14:10:11.344Z | auto\n\np-video 1.0.11\n\n- Updated skill guidance to recommend `p-video-edit` for text-based editing of existing clips (new out-of-skill scenario).\n- Clarified boundaries for in-skill vs. out-of-skill: editing, assembly, and model-based edits now explicitly redirect to other skills.\n- Removed the obsolete skill-card.md file.\n\nv1.0.10 | 2026-08-28T07:56:21.686Z | auto\n\n- Bumped skill version to 1.0.10.\n- Updated SKILL.md metadata to reflect new version.\n- Removed deprecated skill-card.md file.\n\nv1.0.9 | 2026-08-04T06:17:37.170Z | auto\n\n- Bumped version to 1.0.9.\n- Updated `SKILL.md` to reflect the new version.\n- Removed the `skill-card.md` file.\n\nv1.0.8 | 2026-07-28T17:19:44.487Z | auto\n\np-video v1.0.8\n\n- Agent now explicitly opens a `generation-diversity` clarification intake before the first generation request.\n- Updated agent guidance to reflect this intake process in \"Agent habit\" section.\n- Removed redundant or outdated file: skill-card.md.\n- Version bump to 1.0.8 in metadata.\n\nv1.0.7 | 2026-07-23T12:34:36.704Z | auto\n\n**Major update: simplifies and clarifies usage, consolidates references, and introduces explicit prerequisites.**\n\n- Adds a **Prerequisites** section with required companion skills and installation commands for prompt craft and API usage.\n- Defines a strict **agent reply habit**, requiring first reply checks for API key and proper prompt draft practices.\n- Expands **prompt crafting guidelines** for faithful, user-matched, and diverse video prompts, referencing best practices via other skills.\n- Moves detailed policies and checklists to external skills; removes in-skill references and older guide files.\n- Makes **skill boundaries and redirect logic** explicit, with table of out-of-scope skills and install commands.\n- Updates metadata and file structure, reflecting streamlined documentation and remixed example code.\n\nv1.0.6 | 2026-07-16T20:59:28.159Z | auto\n\np-video 1.0.6\n\n- Updated skill description for clarity and put greater emphasis on single-clip generation.\n- Added a new \"Shared generation policy\" section outlining mandatory pre-generation steps and quality checks.\n- Updated all policy and reference links to new `/references/policies/` paths for improved documentation consistency.\n- Removed the obsolete `skill-card.md` file.\n- Increased version metadata to 1.0.6 and improved documentation structure.\n\nv1.0.2 | 2026-07-16T13:33:24.824Z | auto\n\n- Clarified skill boundary: p-video now strictly handles one video clip per invocation; multi-scene or parallel assembly requests are redirected to dedicated skills.\n- Added new guidance on agent and data safety handling before uploads or paid actions.\n- Updated documentation structure for simpler navigation and clearer execution rules.\n- Removed legacy references to parallel execution and multi-scene pipelines from this skill’s documentation.\n- Added and referenced the new agent-safety document; removed outdated files.\n\nv1.0.1 | 2026-07-14T15:48:04.848Z | auto\n\np-video 1.0.1\n\n- Refined SKILL.md to clarify scope: for single video clips, start/end frame animation, B-roll, and cinematic shots—not multi-scene or avatar videos.\n- Updated intake and reference links to point to new plugin/workflow structure and documentation locations.\n- Removed pspm.json and skill-card.md for simplification.\n- Improved prompts and usage instructions for visual transition and scene chaining, with more accurate external references.\n- Added explicit exclusion of talking-head and motion transfer scenarios in description.\n\nv0.0.1 | 2026-07-14T15:04:35.259Z | auto\n\np-video 0.0.1\n\n- Initial release of the skill for generating premium video clips from text, images (start/end stills), or optional audio.\n- Supports single-clip, start/end frame animation, B-roll, and cinematic shots.\n- Enables “first/last frame chaining” for multi-scene handoffs and motion interpolation between two images.\n- Outlines key HTTP usage patterns, required/optional parameters, and best practices for continuity.\n- Includes usage guides, example curl commands, and references for advanced pipelines and workflows.\n\nv1.0.0 | 2026-06-30T14:59:49.844Z | auto\n\n- Initial release of the p-video skill for generating premium video from text, stills, or audio.\n- Supports animating between start and end images for smoother scene transitions.\n- Enables creation of B-roll, cinematic clips, and multi-scene narrated videos with flexible chaining.\n- Accepts prompt, duration, resolution, fps, and optional audio or image anchors for detailed control.\n- Includes documentation on HTTP usage, best practices for continuity, and multi-scene pipeline integration.\n\nArchive index:\n\nArchive v1.0.14: 4 files, 5888 bytes\n\nFiles: skill-card.md (1854b), skill.manifest.json (23b), SKILL.md (12259b), _meta.json (127b)\n\nFile v1.0.14:SKILL.md\n\n---\nname: p-video\ndescription: 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.\nlicense: MIT\nmetadata:\n  version: \"1.0.14\"\n  package: pruna-skills\n  pruna_model: p-video\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -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\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## Agent habit\n\n**Routing:** Use `` `p-video` `` for **simple, quick** clips — drafts, light B-roll, short motion. Cinematic generation with generated audio → `` `p-video-2-pro` ``. 1080p, imported audio, or draft previews → `` `p-video-2` ``.\n\nIn the **first reply**, name `` `p-video` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Open intake → **`generation-diversity`** clarification intake before the first `POST`. When drafting motion prompts, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nEvery `input.prompt` must be **fresh and specific**, and must **match the user's beat**. Diversity never overrides the brief.\n\n| Do | Don't |\n| --- | --- |\n| Run the `generation-diversity` random seed ritual; state it; rotate ≥2 free axes (camera move, lighting shift, texture, pacing) when the brief allows | Copy curl examples from this skill (`rain-slick street`, `dog tosses plush`, …) or reuse a prior session's prompt |\n| Lock user-required facts first (subject, action beat, OPEN/MID/CLOSE when frame-anchored, narration sync when `audio` is set) | Swap the subject or motion for a “cooler” clip that ignores the request |\n| Structure with `video-prompting` dramaturgy — one frozen action per beat, physics-safe motion, camera grammar | Vague mood-only strings (`cinematic vibe, neon energy`) |\n| When `audio` is set, motion and pacing must **match the narration beat** | Drift to unrelated action while VO plays |\n| Show the drafted prompt + mode fields before `POST` when the user has not locked wording | Silent regen with a different subject or beat than approved |\n\n**Fidelity check (before pay):** if you remove the user's named subject/action/setting from the prompt, the job is wrong — rewrite. Free axes only fill what the brief left open.\n\nWhen showing a drafted prompt, still name `` `p-video` `` (guides help craft; this tool owns the call).\n\n## Skill boundary\n\nThis skill = **one `p-video` prediction** per invocation.\n\n**Out of scope (do not execute from this skill):**\n\n- Multi-scene assembly, concat, subagent orchestration, or parallel scene batches\n- Motion transfer from a template video → `p-video-animate`\n- Talking-head-only / lip-sync host without native scene audio → `p-video-avatar`\n- Cinematic generation with generated audio → `p-video-2-pro`\n- 1080p, imported audio, or draft previews → `p-video-2`\n\nIf the request exceeds one clip, **stop** and recommend: `image-to-video` (one narrated beat), `visual-transition-reel` (multi-scene visual), or `narrated-multi-scene` (multi-scene + VO).\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-2-pro` | Use when someone wants a cinematic clip from text or start/end frames — product ads, documentary shots, or dialogue with generated audio. Not for 1080p, imported audio tracks, or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2-pro -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-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -y` |\n| `p-video-edit` | Use when someone wants to edit an existing video with a text instruction — recolor, restyle, remove or add objects, change environment or lighting, update on-screen text, or apply optional reference-guided product and accessory edits. Not for a new clip from scratch or ffmpeg assembly. | `npx skills add PrunaAI/pruna-skills@p-video-edit -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\n## HTTP (curl)\n\n### Upload for image-to-video / frame anchors\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/first-frame.png\"\n```\n\nPass `urls.get` as `input.image` (first frame) and/or `input.last_frame_image` (last frame). Upload TTS/music the same way for `input.audio`.\n\n### Create (async text-to-video — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Slow dolly in on rain-slick street at night, neon reflections, distant traffic hiss\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"aspect_ratio\": \"16:9\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`.\n\n### First / last frame (visual transition)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"OPEN: hold wide on wet alley, neon flicker. MID: slow dolly in, rain ticks on pavement. CLOSE: settle on end pose.\",\n      \"image\": \"https://api.pruna.ai/v1/files/START_ID\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/END_ID\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"fps\": 24\n    }\n  }'\n```\n\n### Scene anchor triple (`image` + `last_frame_image` + `audio`)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Dog tosses plush upward, tail wagging, motion matches narrator, warm light\",\n      \"image\": \"https://api.pruna.ai/v1/files/SCENE_START\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/SCENE_END\",\n      \"audio\": \"https://api.pruna.ai/v1/files/SCENE_NARRATION\",\n      \"resolution\": \"720p\",\n      \"fps\": 24,\n      \"save_audio\": true\n    }\n  }'\n```\n\n**Omit `duration`** when `audio` is set. Clip length = min(audio length, **20s**) — keep TTS ≤ ~19s (`ffprobe` before render).\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft a **dynamic + faithful** motion prompt (section above) → confirm **mode** (T2V / I2V / frame pair / audio), **`duration`** (unless audio-driven), **`resolution`**, **`fps`**, **`draft`**, and **`prompt`** with the user.\n3. **Pruna notes:** when `image` is set, `aspect_ratio` is ignored. With `audio`, omit `duration` and set **`save_audio: true`** to keep narration. Prefer uploaded VO over post-mux. If the request is multi-scene — **stop** (see Skill boundary).\n\n## Required input\n\n- `prompt` (string)\n\n## Common optional fields\n\n| Field | Role |\n|-------|------|\n| `image` | First frame — I2V anchor; when set, `aspect_ratio` is ignored |\n| `last_frame_image` | Optional end-state still |\n| `audio` | Audio-conditioned; duration follows audio (capped at **20s**); flac/mp3/wav |\n| `duration` | 1–20s (ignored if `audio` set) |\n| `resolution` | `720p` (default) or `1080p` |\n| `fps` | `24` (default) or `48` |\n| `aspect_ratio` | When no `image`: `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3`, `1:1` |\n| `draft` | `true` ≈ 4× faster/cheaper preview; `false` = final |\n| `save_audio` | Keep model-generated or uploaded audio on output |\n| `seed`, `prompt_upsampling`, `disable_safety_filter` | Reproducibility / client policy |\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-2-pro` | Use when someone wants a cinematic clip from text or start/end frames — product ads, documentary shots, or dialogue with generated audio. Not for 1080p, imported audio tracks, or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2-pro -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| `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| `visual-transition-reel` | Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. | `npx skills add PrunaAI/pruna-skills@visual-transition-reel -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -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\": \"p-video\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790696087201\n}\n\nFile v1.0.14:skill-card.md\n\n## Description:\n\nGuides an agent in creating one short video clip from text, images, or frame anchors with Pruna's p-video model.\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 developers use this skill to draft a single short B-roll clip or animate an image or start/end frame pair through Pruna. It is not intended for multi-scene assembly or tightly lip-synced hosts.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Prompts, images, or audio may be sent to Pruna.\n\nMitigation: Use only media you are willing to share with Pruna; obtain approval before using sensitive or regulated content.\n\nRisk: Unpinned network installation commands may run unverified tooling.\n\nMitigation: Pin or otherwise verify the install tooling before running the documented npx commands.\n\nRisk: The optional safety-filter bypass can disable content safeguards.\n\nMitigation: Do not enable disable_safety_filter without an explicit, governed reason.\n\n## Reference(s):\n\n- [p-video on ClawHub](https://clawhub.ai/pruna-ai/skills/p-video)\n\n## Skill Output:\n\n**Output Type(s):** [Text guidance, Shell commands, Configuration instructions]\n\n**Output Format:** [Markdown with inline bash code blocks]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guides one video-generation request; the generated clip is returned by Pruna's service.]\n\n## Skill Version(s):\n\n1.0.14 (source: skill frontmatter and ClawHub release evidence)\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, 6024 bytes\n\nFiles: skill-card.md (2248b), skill.manifest.json (23b), SKILL.md (12259b), _meta.json (127b)\n\nFile v1.0.13:SKILL.md\n\n---\nname: p-video\ndescription: 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.\nlicense: MIT\nmetadata:\n  version: \"1.0.13\"\n  package: pruna-skills\n  pruna_model: p-video\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -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\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## Agent habit\n\n**Routing:** Use `` `p-video` `` for **simple, quick** clips — drafts, light B-roll, short motion. Cinematic generation with generated audio → `` `p-video-2-pro` ``. 1080p, imported audio, or draft previews → `` `p-video-2` ``.\n\nIn the **first reply**, name `` `p-video` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Open intake → **`generation-diversity`** clarification intake before the first `POST`. When drafting motion prompts, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nEvery `input.prompt` must be **fresh and specific**, and must **match the user's beat**. Diversity never overrides the brief.\n\n| Do | Don't |\n| --- | --- |\n| Run the `generation-diversity` random seed ritual; state it; rotate ≥2 free axes (camera move, lighting shift, texture, pacing) when the brief allows | Copy curl examples from this skill (`rain-slick street`, `dog tosses plush`, …) or reuse a prior session's prompt |\n| Lock user-required facts first (subject, action beat, OPEN/MID/CLOSE when frame-anchored, narration sync when `audio` is set) | Swap the subject or motion for a “cooler” clip that ignores the request |\n| Structure with `video-prompting` dramaturgy — one frozen action per beat, physics-safe motion, camera grammar | Vague mood-only strings (`cinematic vibe, neon energy`) |\n| When `audio` is set, motion and pacing must **match the narration beat** | Drift to unrelated action while VO plays |\n| Show the drafted prompt + mode fields before `POST` when the user has not locked wording | Silent regen with a different subject or beat than approved |\n\n**Fidelity check (before pay):** if you remove the user's named subject/action/setting from the prompt, the job is wrong — rewrite. Free axes only fill what the brief left open.\n\nWhen showing a drafted prompt, still name `` `p-video` `` (guides help craft; this tool owns the call).\n\n## Skill boundary\n\nThis skill = **one `p-video` prediction** per invocation.\n\n**Out of scope (do not execute from this skill):**\n\n- Multi-scene assembly, concat, subagent orchestration, or parallel scene batches\n- Motion transfer from a template video → `p-video-animate`\n- Talking-head-only / lip-sync host without native scene audio → `p-video-avatar`\n- Cinematic generation with generated audio → `p-video-2-pro`\n- 1080p, imported audio, or draft previews → `p-video-2`\n\nIf the request exceeds one clip, **stop** and recommend: `image-to-video` (one narrated beat), `visual-transition-reel` (multi-scene visual), or `narrated-multi-scene` (multi-scene + VO).\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-2-pro` | Use when someone wants a cinematic clip from text or start/end frames — product ads, documentary shots, or dialogue with generated audio. Not for 1080p, imported audio tracks, or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2-pro -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-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -y` |\n| `p-video-edit` | Use when someone wants to edit an existing video with a text instruction — recolor, restyle, remove or add objects, change environment or lighting, update on-screen text, or apply optional reference-guided product and accessory edits. Not for a new clip from scratch or ffmpeg assembly. | `npx skills add PrunaAI/pruna-skills@p-video-edit -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\n## HTTP (curl)\n\n### Upload for image-to-video / frame anchors\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/first-frame.png\"\n```\n\nPass `urls.get` as `input.image` (first frame) and/or `input.last_frame_image` (last frame). Upload TTS/music the same way for `input.audio`.\n\n### Create (async text-to-video — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Slow dolly in on rain-slick street at night, neon reflections, distant traffic hiss\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"aspect_ratio\": \"16:9\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`.\n\n### First / last frame (visual transition)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"OPEN: hold wide on wet alley, neon flicker. MID: slow dolly in, rain ticks on pavement. CLOSE: settle on end pose.\",\n      \"image\": \"https://api.pruna.ai/v1/files/START_ID\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/END_ID\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"fps\": 24\n    }\n  }'\n```\n\n### Scene anchor triple (`image` + `last_frame_image` + `audio`)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Dog tosses plush upward, tail wagging, motion matches narrator, warm light\",\n      \"image\": \"https://api.pruna.ai/v1/files/SCENE_START\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/SCENE_END\",\n      \"audio\": \"https://api.pruna.ai/v1/files/SCENE_NARRATION\",\n      \"resolution\": \"720p\",\n      \"fps\": 24,\n      \"save_audio\": true\n    }\n  }'\n```\n\n**Omit `duration`** when `audio` is set. Clip length = min(audio length, **20s**) — keep TTS ≤ ~19s (`ffprobe` before render).\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft a **dynamic + faithful** motion prompt (section above) → confirm **mode** (T2V / I2V / frame pair / audio), **`duration`** (unless audio-driven), **`resolution`**, **`fps`**, **`draft`**, and **`prompt`** with the user.\n3. **Pruna notes:** when `image` is set, `aspect_ratio` is ignored. With `audio`, omit `duration` and set **`save_audio: true`** to keep narration. Prefer uploaded VO over post-mux. If the request is multi-scene — **stop** (see Skill boundary).\n\n## Required input\n\n- `prompt` (string)\n\n## Common optional fields\n\n| Field | Role |\n|-------|------|\n| `image` | First frame — I2V anchor; when set, `aspect_ratio` is ignored |\n| `last_frame_image` | Optional end-state still |\n| `audio` | Audio-conditioned; duration follows audio (capped at **20s**); flac/mp3/wav |\n| `duration` | 1–20s (ignored if `audio` set) |\n| `resolution` | `720p` (default) or `1080p` |\n| `fps` | `24` (default) or `48` |\n| `aspect_ratio` | When no `image`: `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3`, `1:1` |\n| `draft` | `true` ≈ 4× faster/cheaper preview; `false` = final |\n| `save_audio` | Keep model-generated or uploaded audio on output |\n| `seed`, `prompt_upsampling`, `disable_safety_filter` | Reproducibility / client policy |\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-2-pro` | Use when someone wants a cinematic clip from text or start/end frames — product ads, documentary shots, or dialogue with generated audio. Not for 1080p, imported audio tracks, or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2-pro -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| `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| `visual-transition-reel` | Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. | `npx skills add PrunaAI/pruna-skills@visual-transition-reel -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -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\": \"p-video\",\n  \"version\": \"1.0.13\",\n  \"publishedAt\": 1789653438264\n}\n\nFile v1.0.13:skill-card.md\n\n## Description:\n\nUse when someone wants a simple short clip from text or images, including quick B-roll, drafts, or start/end frame animation, but not when the brief needs cinematic generation, highest quality, tight lip-sync, or imported audio at 1080p.\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\nDevelopers and agents use this skill to prepare and submit one simple Pruna p-video generation request from text, images, optional frame anchors, or short approved audio. It helps route away from cinematic, multi-scene, avatar, motion-transfer, or 1080p/imported-audio requests that require a different Pruna skill.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill directs agents to install multiple unpinned external Pruna skills.\n\nMitigation: Use pinned or preapproved prerequisite skill versions, and avoid installing the full Pruna suite unless the broader suite is explicitly needed.\n\nRisk: Prompts, images, or audio may be sent to Pruna's hosted API for third-party processing.\n\nMitigation: Submit only content approved for third-party processing and confirm environment policy before uploading user media or generated audio.\n\n## Reference(s):\n\n- [ClawHub p-video skill page](https://clawhub.ai/pruna-ai/skills/p-video)\n- [Pruna file upload API endpoint](https://api.pruna.ai/v1/files)\n- [Pruna prediction API endpoint](https://api.pruna.ai/v1/predictions)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with inline bash and JSON request examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Supports one p-video prediction per invocation and may include upload, prediction, polling, and download guidance.]\n\n## Skill Version(s):\n\n1.0.13 (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.13:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.12: 4 files, 5970 bytes\n\nFiles: skill-card.md (2212b), skill.manifest.json (23b), SKILL.md (11571b), _meta.json (127b)\n\nFile v1.0.12:SKILL.md\n\n---\nname: p-video\ndescription: 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.\nlicense: MIT\nmetadata:\n  version: \"1.0.12\"\n  package: pruna-skills\n  pruna_model: p-video\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -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\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## Agent habit\n\n**Routing:** Use `` `p-video` `` for **simple, quick** clips — drafts, light B-roll, short motion. When the brief needs **best quality** (polished delivery, tight lip-sync, native audio, hero shots), use `` `p-video-2` ``.\n\nIn the **first reply**, name `` `p-video` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Open intake → **`generation-diversity`** clarification intake before the first `POST`. When drafting motion prompts, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nEvery `input.prompt` must be **fresh and specific**, and must **match the user's beat**. Diversity never overrides the brief.\n\n| Do | Don't |\n| --- | --- |\n| Run the `generation-diversity` random seed ritual; state it; rotate ≥2 free axes (camera move, lighting shift, texture, pacing) when the brief allows | Copy curl examples from this skill (`rain-slick street`, `dog tosses plush`, …) or reuse a prior session's prompt |\n| Lock user-required facts first (subject, action beat, OPEN/MID/CLOSE when frame-anchored, narration sync when `audio` is set) | Swap the subject or motion for a “cooler” clip that ignores the request |\n| Structure with `video-prompting` dramaturgy — one frozen action per beat, physics-safe motion, camera grammar | Vague mood-only strings (`cinematic vibe, neon energy`) |\n| When `audio` is set, motion and pacing must **match the narration beat** | Drift to unrelated action while VO plays |\n| Show the drafted prompt + mode fields before `POST` when the user has not locked wording | Silent regen with a different subject or beat than approved |\n\n**Fidelity check (before pay):** if you remove the user's named subject/action/setting from the prompt, the job is wrong — rewrite. Free axes only fill what the brief left open.\n\nWhen showing a drafted prompt, still name `` `p-video` `` (guides help craft; this tool owns the call).\n\n## Skill boundary\n\nThis skill = **one `p-video` prediction** per invocation.\n\n**Out of scope (do not execute from this skill):**\n\n- Multi-scene assembly, concat, subagent orchestration, or parallel scene batches\n- Motion transfer from a template video → `p-video-animate`\n- Talking-head-only / lip-sync host without native scene audio → `p-video-avatar`\n- Best-quality clip or tight in-scene lip-sync → `p-video-2`\n\nIf the request exceeds one clip, **stop** and recommend: `image-to-video` (one narrated beat), `visual-transition-reel` (multi-scene visual), or `narrated-multi-scene` (multi-scene + VO).\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\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-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -y` |\n| `p-video-edit` | Use when someone wants to edit an existing video with a text instruction — recolor, restyle, remove or add objects, change environment or lighting, update on-screen text, or apply optional reference-guided product and accessory edits. Not for a new clip from scratch or ffmpeg assembly. | `npx skills add PrunaAI/pruna-skills@p-video-edit -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\n## HTTP (curl)\n\n### Upload for image-to-video / frame anchors\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/first-frame.png\"\n```\n\nPass `urls.get` as `input.image` (first frame) and/or `input.last_frame_image` (last frame). Upload TTS/music the same way for `input.audio`.\n\n### Create (async text-to-video — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Slow dolly in on rain-slick street at night, neon reflections, distant traffic hiss\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"aspect_ratio\": \"16:9\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`.\n\n### First / last frame (visual transition)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"OPEN: hold wide on wet alley, neon flicker. MID: slow dolly in, rain ticks on pavement. CLOSE: settle on end pose.\",\n      \"image\": \"https://api.pruna.ai/v1/files/START_ID\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/END_ID\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"fps\": 24\n    }\n  }'\n```\n\n### Scene anchor triple (`image` + `last_frame_image` + `audio`)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Dog tosses plush upward, tail wagging, motion matches narrator, warm light\",\n      \"image\": \"https://api.pruna.ai/v1/files/SCENE_START\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/SCENE_END\",\n      \"audio\": \"https://api.pruna.ai/v1/files/SCENE_NARRATION\",\n      \"resolution\": \"720p\",\n      \"fps\": 24,\n      \"save_audio\": true\n    }\n  }'\n```\n\n**Omit `duration`** when `audio` is set. Clip length = min(audio length, **20s**) — keep TTS ≤ ~19s (`ffprobe` before render).\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft a **dynamic + faithful** motion prompt (section above) → confirm **mode** (T2V / I2V / frame pair / audio), **`duration`** (unless audio-driven), **`resolution`**, **`fps`**, **`draft`**, and **`prompt`** with the user.\n3. **Pruna notes:** when `image` is set, `aspect_ratio` is ignored. With `audio`, omit `duration` and set **`save_audio: true`** to keep narration. Prefer uploaded VO over post-mux. If the request is multi-scene — **stop** (see Skill boundary).\n\n## Required input\n\n- `prompt` (string)\n\n## Common optional fields\n\n| Field | Role |\n|-------|------|\n| `image` | First frame — I2V anchor; when set, `aspect_ratio` is ignored |\n| `last_frame_image` | Optional end-state still |\n| `audio` | Audio-conditioned; duration follows audio (capped at **20s**); flac/mp3/wav |\n| `duration` | 1–20s (ignored if `audio` set) |\n| `resolution` | `720p` (default) or `1080p` |\n| `fps` | `24` (default) or `48` |\n| `aspect_ratio` | When no `image`: `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3`, `1:1` |\n| `draft` | `true` ≈ 4× faster/cheaper preview; `false` = final |\n| `save_audio` | Keep model-generated or uploaded audio on output |\n| `seed`, `prompt_upsampling`, `disable_safety_filter` | Reproducibility / client policy |\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\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| `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| `visual-transition-reel` | Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. | `npx skills add PrunaAI/pruna-skills@visual-transition-reel -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -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\": \"p-video\",\n  \"version\": \"1.0.12\",\n  \"publishedAt\": 1789048541247\n}\n\nFile v1.0.12:skill-card.md\n\n## Description:\n\nUse 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.\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\nDevelopers and creative agents use this skill to prepare and execute one simple Pruna p-video generation job from text, images, frame anchors, or short audio.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill references auto-confirmed installation commands for mutable external companion skills.\n\nMitigation: Review install commands before use and prefer preinstalled or pinned companion skill versions.\n\nRisk: Running auto-confirmed package commands in an environment with secrets can expose credentials or expand supply-chain risk.\n\nMitigation: Run installs in a clean environment and avoid auto-confirmed npx installs where sensitive credentials are present.\n\nRisk: Video generation can require uploading images, voice, audio, or proprietary prompts to Pruna services.\n\nMitigation: Do not upload confidential media or proprietary prompts unless Pruna's data handling is acceptable for that content.\n\n## Reference(s):\n\n- [p-video on ClawHub](https://clawhub.ai/pruna-ai/skills/p-video)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, API Calls, Configuration instructions]\n\n**Output Format:** [Markdown with inline bash code blocks and JSON request examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires PRUNA_API_KEY; supports prompt, image, last_frame_image, audio, duration, resolution, fps, aspect_ratio, draft, save_audio, seed, prompt_upsampling, and disable_safety_filter fields.]\n\n## Skill Version(s):\n\n1.0.12 (source: server release metadata 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.12:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.11: 4 files, 5713 bytes\n\nFiles: skill-card.md (2147b), skill.manifest.json (23b), SKILL.md (10943b), _meta.json (127b)\n\nFile v1.0.11:SKILL.md\n\n---\nname: p-video\ndescription: 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.\nlicense: MIT\nmetadata:\n  version: \"1.0.11\"\n  package: pruna-skills\n  pruna_model: p-video\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -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\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## Agent habit\n\nIn the **first reply**, name `` `p-video` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Open intake → **`generation-diversity`** clarification intake before the first `POST`. When drafting motion prompts, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nEvery `input.prompt` must be **fresh and specific**, and must **match the user's beat**. Diversity never overrides the brief.\n\n| Do | Don't |\n| --- | --- |\n| Run the `generation-diversity` random seed ritual; state it; rotate ≥2 free axes (camera move, lighting shift, texture, pacing) when the brief allows | Copy curl examples from this skill (`rain-slick street`, `dog tosses plush`, …) or reuse a prior session's prompt |\n| Lock user-required facts first (subject, action beat, OPEN/MID/CLOSE when frame-anchored, narration sync when `audio` is set) | Swap the subject or motion for a “cooler” clip that ignores the request |\n| Structure with `video-prompting` dramaturgy — one frozen action per beat, physics-safe motion, camera grammar | Vague mood-only strings (`cinematic vibe, neon energy`) |\n| When `audio` is set, motion and pacing must **match the narration beat** | Drift to unrelated action while VO plays |\n| Show the drafted prompt + mode fields before `POST` when the user has not locked wording | Silent regen with a different subject or beat than approved |\n\n**Fidelity check (before pay):** if you remove the user's named subject/action/setting from the prompt, the job is wrong — rewrite. Free axes only fill what the brief left open.\n\nWhen showing a drafted prompt, still name `` `p-video` `` (guides help craft; this tool owns the call).\n\n## Skill boundary\n\nThis skill = **one `p-video` prediction** per invocation.\n\n**Out of scope (do not execute from this skill):**\n\n- Multi-scene assembly, concat, subagent orchestration, or parallel scene batches\n- Motion transfer from a template video → `p-video-animate`\n- Talking-head / lip-sync → `p-video-avatar`\n\nIf the request exceeds one clip, **stop** and recommend: `image-to-video` (one narrated beat), `visual-transition-reel` (multi-scene visual), or `narrated-multi-scene` (multi-scene + VO).\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -y` |\n| `p-video-edit` | Use when someone wants to edit an existing video with a text instruction — recolor, restyle, remove or add objects, change environment or lighting, update on-screen text, or apply optional reference-guided product and accessory edits. Not for a new clip from scratch or ffmpeg assembly. | `npx skills add PrunaAI/pruna-skills@p-video-edit -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\n## HTTP (curl)\n\n### Upload for image-to-video / frame anchors\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/first-frame.png\"\n```\n\nPass `urls.get` as `input.image` (first frame) and/or `input.last_frame_image` (last frame). Upload TTS/music the same way for `input.audio`.\n\n### Create (async text-to-video — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Slow dolly in on rain-slick street at night, neon reflections, distant traffic hiss\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"aspect_ratio\": \"16:9\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`.\n\n### First / last frame (visual transition)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"OPEN: hold wide on wet alley, neon flicker. MID: slow dolly in, rain ticks on pavement. CLOSE: settle on end pose.\",\n      \"image\": \"https://api.pruna.ai/v1/files/START_ID\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/END_ID\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"fps\": 24\n    }\n  }'\n```\n\n### Scene anchor triple (`image` + `last_frame_image` + `audio`)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Dog tosses plush upward, tail wagging, motion matches narrator, warm light\",\n      \"image\": \"https://api.pruna.ai/v1/files/SCENE_START\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/SCENE_END\",\n      \"audio\": \"https://api.pruna.ai/v1/files/SCENE_NARRATION\",\n      \"resolution\": \"720p\",\n      \"fps\": 24,\n      \"save_audio\": true\n    }\n  }'\n```\n\n**Omit `duration`** when `audio` is set. Clip length = min(audio length, **20s**) — keep TTS ≤ ~19s (`ffprobe` before render).\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft a **dynamic + faithful** motion prompt (section above) → confirm **mode** (T2V / I2V / frame pair / audio), **`duration`** (unless audio-driven), **`resolution`**, **`fps`**, **`draft`**, and **`prompt`** with the user.\n3. **Pruna notes:** when `image` is set, `aspect_ratio` is ignored. With `audio`, omit `duration` and set **`save_audio: true`** to keep narration. Prefer uploaded VO over post-mux. If the request is multi-scene — **stop** (see Skill boundary).\n\n## Required input\n\n- `prompt` (string)\n\n## Common optional fields\n\n| Field | Role |\n|-------|------|\n| `image` | First frame — I2V anchor; when set, `aspect_ratio` is ignored |\n| `last_frame_image` | Optional end-state still |\n| `audio` | Audio-conditioned; duration follows audio (capped at **20s**); flac/mp3/wav |\n| `duration` | 1–20s (ignored if `audio` set) |\n| `resolution` | `720p` (default) or `1080p` |\n| `fps` | `24` (default) or `48` |\n| `aspect_ratio` | When no `image`: `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3`, `1:1` |\n| `draft` | `true` ≈ 4× faster/cheaper preview; `false` = final |\n| `save_audio` | Keep model-generated or uploaded audio on output |\n| `seed`, `prompt_upsampling`, `disable_safety_filter` | Reproducibility / client policy |\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\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| `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| `visual-transition-reel` | Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. | `npx skills add PrunaAI/pruna-skills@visual-transition-reel -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -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\": \"p-video\",\n  \"version\": \"1.0.11\",\n  \"publishedAt\": 1788444611344\n}\n\nFile v1.0.11:skill-card.md\n\n## Description:\n\nUse 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.\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 guide an agent through creating one short Pruna p-video clip from a prompt, optional image anchors, and optional audio. It helps collect inputs, craft a faithful video prompt, and prepare the Pruna API request while redirecting multi-scene, lip-sync, and editing requests to other skills.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Generated-video requests may upload user prompts, images, and audio to Pruna.\n\nMitigation: Avoid private or sensitive media unless the user is comfortable sending it to Pruna, and confirm consent before submitting prompts or files.\n\nRisk: The skill may ask the agent to install additional Pruna helper skills from a live remote repository.\n\nMitigation: Prefer pinned or reviewed dependency versions in stricter environments before installing helper skills.\n\n## Reference(s):\n\n- [p-video Skill Page](https://clawhub.ai/pruna-ai/skills/p-video)\n- [Pruna Files API](https://api.pruna.ai/v1/files)\n- [Pruna Predictions API](https://api.pruna.ai/v1/predictions)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, guidance]\n\n**Output Format:** [Markdown with inline curl examples and configuration guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [The skill may guide upload, prediction creation, polling, and download steps for a single short video generation request.]\n\n## Skill Version(s):\n\n1.0.11 (source: server release evidence and skill 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, 5627 bytes\n\nFiles: skill-card.md (2175b), skill.manifest.json (23b), SKILL.md (10577b), _meta.json (127b)\n\nFile v1.0.10:SKILL.md\n\n---\nname: p-video\ndescription: 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.\nlicense: MIT\nmetadata:\n  version: \"1.0.10\"\n  package: pruna-skills\n  pruna_model: p-video\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -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\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## Agent habit\n\nIn the **first reply**, name `` `p-video` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Open intake → **`generation-diversity`** clarification intake before the first `POST`. When drafting motion prompts, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nEvery `input.prompt` must be **fresh and specific**, and must **match the user's beat**. Diversity never overrides the brief.\n\n| Do | Don't |\n| --- | --- |\n| Run the `generation-diversity` random seed ritual; state it; rotate ≥2 free axes (camera move, lighting shift, texture, pacing) when the brief allows | Copy curl examples from this skill (`rain-slick street`, `dog tosses plush`, …) or reuse a prior session's prompt |\n| Lock user-required facts first (subject, action beat, OPEN/MID/CLOSE when frame-anchored, narration sync when `audio` is set) | Swap the subject or motion for a “cooler” clip that ignores the request |\n| Structure with `video-prompting` dramaturgy — one frozen action per beat, physics-safe motion, camera grammar | Vague mood-only strings (`cinematic vibe, neon energy`) |\n| When `audio` is set, motion and pacing must **match the narration beat** | Drift to unrelated action while VO plays |\n| Show the drafted prompt + mode fields before `POST` when the user has not locked wording | Silent regen with a different subject or beat than approved |\n\n**Fidelity check (before pay):** if you remove the user's named subject/action/setting from the prompt, the job is wrong — rewrite. Free axes only fill what the brief left open.\n\nWhen showing a drafted prompt, still name `` `p-video` `` (guides help craft; this tool owns the call).\n\n## Skill boundary\n\nThis skill = **one `p-video` prediction** per invocation.\n\n**Out of scope (do not execute from this skill):**\n\n- Multi-scene assembly, concat, subagent orchestration, or parallel scene batches\n- Motion transfer from a template video → `p-video-animate`\n- Talking-head / lip-sync → `p-video-avatar`\n\nIf the request exceeds one clip, **stop** and recommend: `image-to-video` (one narrated beat), `visual-transition-reel` (multi-scene visual), or `narrated-multi-scene` (multi-scene + VO).\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -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\n## HTTP (curl)\n\n### Upload for image-to-video / frame anchors\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/first-frame.png\"\n```\n\nPass `urls.get` as `input.image` (first frame) and/or `input.last_frame_image` (last frame). Upload TTS/music the same way for `input.audio`.\n\n### Create (async text-to-video — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Slow dolly in on rain-slick street at night, neon reflections, distant traffic hiss\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"aspect_ratio\": \"16:9\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`.\n\n### First / last frame (visual transition)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"OPEN: hold wide on wet alley, neon flicker. MID: slow dolly in, rain ticks on pavement. CLOSE: settle on end pose.\",\n      \"image\": \"https://api.pruna.ai/v1/files/START_ID\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/END_ID\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"fps\": 24\n    }\n  }'\n```\n\n### Scene anchor triple (`image` + `last_frame_image` + `audio`)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Dog tosses plush upward, tail wagging, motion matches narrator, warm light\",\n      \"image\": \"https://api.pruna.ai/v1/files/SCENE_START\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/SCENE_END\",\n      \"audio\": \"https://api.pruna.ai/v1/files/SCENE_NARRATION\",\n      \"resolution\": \"720p\",\n      \"fps\": 24,\n      \"save_audio\": true\n    }\n  }'\n```\n\n**Omit `duration`** when `audio` is set. Clip length = min(audio length, **20s**) — keep TTS ≤ ~19s (`ffprobe` before render).\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft a **dynamic + faithful** motion prompt (section above) → confirm **mode** (T2V / I2V / frame pair / audio), **`duration`** (unless audio-driven), **`resolution`**, **`fps`**, **`draft`**, and **`prompt`** with the user.\n3. **Pruna notes:** when `image` is set, `aspect_ratio` is ignored. With `audio`, omit `duration` and set **`save_audio: true`** to keep narration. Prefer uploaded VO over post-mux. If the request is multi-scene — **stop** (see Skill boundary).\n\n## Required input\n\n- `prompt` (string)\n\n## Common optional fields\n\n| Field | Role |\n|-------|------|\n| `image` | First frame — I2V anchor; when set, `aspect_ratio` is ignored |\n| `last_frame_image` | Optional end-state still |\n| `audio` | Audio-conditioned; duration follows audio (capped at **20s**); flac/mp3/wav |\n| `duration` | 1–20s (ignored if `audio` set) |\n| `resolution` | `720p` (default) or `1080p` |\n| `fps` | `24` (default) or `48` |\n| `aspect_ratio` | When no `image`: `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3`, `1:1` |\n| `draft` | `true` ≈ 4× faster/cheaper preview; `false` = final |\n| `save_audio` | Keep model-generated or uploaded audio on output |\n| `seed`, `prompt_upsampling`, `disable_safety_filter` | Reproducibility / client policy |\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\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| `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| `visual-transition-reel` | Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. | `npx skills add PrunaAI/pruna-skills@visual-transition-reel -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -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\": \"p-video\",\n  \"version\": \"1.0.10\",\n  \"publishedAt\": 1787903781686\n}\n\nFile v1.0.10:skill-card.md\n\n## Description:\n\nUse 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.\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 developers and creative operators use this skill to create one short p-video clip from text, first or last frame images, or an audio-conditioned scene anchor through Pruna's hosted video API.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill uses Pruna's hosted video API with a user-provided API key.\n\nMitigation: Use a dedicated PRUNA_API_KEY and install the skill only when Pruna API use is intended.\n\nRisk: Image and audio inputs may be uploaded to the Pruna service.\n\nMitigation: Avoid uploading sensitive images or audio unless the user is comfortable sending those files to Pruna.\n\nRisk: A paid or irreversible API call could be made with an unintended prompt or mode.\n\nMitigation: Show the drafted prompt and mode fields before POST when wording is not already locked, then proceed only with user-approved inputs.\n\n## Reference(s):\n\n- [ClawHub p-video skill page](https://clawhub.ai/pruna-ai/skills/p-video)\n- [Pruna file upload API endpoint](https://api.pruna.ai/v1/files)\n- [Pruna predictions API endpoint](https://api.pruna.ai/v1/predictions)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, API Calls, Configuration]\n\n**Output Format:** [Markdown with inline bash code blocks and JSON request bodies]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces guidance for one p-video prediction per invocation; uploaded audio controls clip length up to 20 seconds.]\n\n## Skill Version(s):\n\n1.0.10 (source: release evidence and SKILL.md 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.10:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.9: 4 files, 5598 bytes\n\nFiles: skill-card.md (2269b), skill.manifest.json (23b), SKILL.md (10576b), _meta.json (126b)\n\nFile v1.0.9:SKILL.md\n\n---\nname: p-video\ndescription: 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.\nlicense: MIT\nmetadata:\n  version: \"1.0.9\"\n  package: pruna-skills\n  pruna_model: p-video\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -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\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## Agent habit\n\nIn the **first reply**, name `` `p-video` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Open intake → **`generation-diversity`** clarification intake before the first `POST`. When drafting motion prompts, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nEvery `input.prompt` must be **fresh and specific**, and must **match the user's beat**. Diversity never overrides the brief.\n\n| Do | Don't |\n| --- | --- |\n| Run the `generation-diversity` random seed ritual; state it; rotate ≥2 free axes (camera move, lighting shift, texture, pacing) when the brief allows | Copy curl examples from this skill (`rain-slick street`, `dog tosses plush`, …) or reuse a prior session's prompt |\n| Lock user-required facts first (subject, action beat, OPEN/MID/CLOSE when frame-anchored, narration sync when `audio` is set) | Swap the subject or motion for a “cooler” clip that ignores the request |\n| Structure with `video-prompting` dramaturgy — one frozen action per beat, physics-safe motion, camera grammar | Vague mood-only strings (`cinematic vibe, neon energy`) |\n| When `audio` is set, motion and pacing must **match the narration beat** | Drift to unrelated action while VO plays |\n| Show the drafted prompt + mode fields before `POST` when the user has not locked wording | Silent regen with a different subject or beat than approved |\n\n**Fidelity check (before pay):** if you remove the user's named subject/action/setting from the prompt, the job is wrong — rewrite. Free axes only fill what the brief left open.\n\nWhen showing a drafted prompt, still name `` `p-video` `` (guides help craft; this tool owns the call).\n\n## Skill boundary\n\nThis skill = **one `p-video` prediction** per invocation.\n\n**Out of scope (do not execute from this skill):**\n\n- Multi-scene assembly, concat, subagent orchestration, or parallel scene batches\n- Motion transfer from a template video → `p-video-animate`\n- Talking-head / lip-sync → `p-video-avatar`\n\nIf the request exceeds one clip, **stop** and recommend: `image-to-video` (one narrated beat), `visual-transition-reel` (multi-scene visual), or `narrated-multi-scene` (multi-scene + VO).\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -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\n## HTTP (curl)\n\n### Upload for image-to-video / frame anchors\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/first-frame.png\"\n```\n\nPass `urls.get` as `input.image` (first frame) and/or `input.last_frame_image` (last frame). Upload TTS/music the same way for `input.audio`.\n\n### Create (async text-to-video — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Slow dolly in on rain-slick street at night, neon reflections, distant traffic hiss\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"aspect_ratio\": \"16:9\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`.\n\n### First / last frame (visual transition)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"OPEN: hold wide on wet alley, neon flicker. MID: slow dolly in, rain ticks on pavement. CLOSE: settle on end pose.\",\n      \"image\": \"https://api.pruna.ai/v1/files/START_ID\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/END_ID\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"fps\": 24\n    }\n  }'\n```\n\n### Scene anchor triple (`image` + `last_frame_image` + `audio`)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Dog tosses plush upward, tail wagging, motion matches narrator, warm light\",\n      \"image\": \"https://api.pruna.ai/v1/files/SCENE_START\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/SCENE_END\",\n      \"audio\": \"https://api.pruna.ai/v1/files/SCENE_NARRATION\",\n      \"resolution\": \"720p\",\n      \"fps\": 24,\n      \"save_audio\": true\n    }\n  }'\n```\n\n**Omit `duration`** when `audio` is set. Clip length = min(audio length, **20s**) — keep TTS ≤ ~19s (`ffprobe` before render).\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft a **dynamic + faithful** motion prompt (section above) → confirm **mode** (T2V / I2V / frame pair / audio), **`duration`** (unless audio-driven), **`resolution`**, **`fps`**, **`draft`**, and **`prompt`** with the user.\n3. **Pruna notes:** when `image` is set, `aspect_ratio` is ignored. With `audio`, omit `duration` and set **`save_audio: true`** to keep narration. Prefer uploaded VO over post-mux. If the request is multi-scene — **stop** (see Skill boundary).\n\n## Required input\n\n- `prompt` (string)\n\n## Common optional fields\n\n| Field | Role |\n|-------|------|\n| `image` | First frame — I2V anchor; when set, `aspect_ratio` is ignored |\n| `last_frame_image` | Optional end-state still |\n| `audio` | Audio-conditioned; duration follows audio (capped at **20s**); flac/mp3/wav |\n| `duration` | 1–20s (ignored if `audio` set) |\n| `resolution` | `720p` (default) or `1080p` |\n| `fps` | `24` (default) or `48` |\n| `aspect_ratio` | When no `image`: `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3`, `1:1` |\n| `draft` | `true` ≈ 4× faster/cheaper preview; `false` = final |\n| `save_audio` | Keep model-generated or uploaded audio on output |\n| `seed`, `prompt_upsampling`, `disable_safety_filter` | Reproducibility / client policy |\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\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| `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| `visual-transition-reel` | Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. | `npx skills add PrunaAI/pruna-skills@visual-transition-reel -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -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\": \"p-video\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1785824257170\n}\n\nFile v1.0.9:skill-card.md\n\n## Description: <br>\nUse when someone wants one short video clip from text or images, including B-roll, start/end frame animation, or a quick motion shot. <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>\nExternal users and developers use p-video to generate one short video clip from a prompt, image anchors, frame pair, or uploaded audio through Pruna's API. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Prompts, uploaded images, and uploaded audio can be sent to Pruna using PRUNA_API_KEY. <br>\nMitigation: Use only prompts and media that are acceptable to upload to Pruna, and confirm credential handling before making API calls. <br>\nRisk: Optional related-skill installs can add broader Pruna suite behavior than this single-clip helper requires. <br>\nMitigation: Install only the related Pruna skills needed for the requested video workflow. <br>\nRisk: A generation request can spend API resources on a prompt or mode the user did not intend. <br>\nMitigation: Show and confirm the drafted prompt, mode, duration, resolution, fps, and draft setting before submitting the prediction. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page for p-video](https://clawhub.ai/pruna-ai/skills/p-video) <br>\n- [Pruna file upload API endpoint](https://api.pruna.ai/v1/files) <br>\n- [Pruna predictions API endpoint](https://api.pruna.ai/v1/predictions) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, Configuration] <br>\n**Output Format:** [Markdown with curl examples and JSON request bodies] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Produces one p-video prediction per invocation; audio-conditioned clips are capped at 20 seconds.] <br>\n\n## Skill Version(s): <br>\n1.0.9 (source: server release metadata and skill metadata) <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, 5624 bytes\n\nFiles: skill-card.md (2264b), skill.manifest.json (23b), SKILL.md (10576b), _meta.json (126b)\n\nFile v1.0.8:SKILL.md\n\n---\nname: p-video\ndescription: 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.\nlicense: MIT\nmetadata:\n  version: \"1.0.8\"\n  package: pruna-skills\n  pruna_model: p-video\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -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\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## Agent habit\n\nIn the **first reply**, name `` `p-video` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Open intake → **`generation-diversity`** clarification intake before the first `POST`. When drafting motion prompts, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nEvery `input.prompt` must be **fresh and specific**, and must **match the user's beat**. Diversity never overrides the brief.\n\n| Do | Don't |\n| --- | --- |\n| Run the `generation-diversity` random seed ritual; state it; rotate ≥2 free axes (camera move, lighting shift, texture, pacing) when the brief allows | Copy curl examples from this skill (`rain-slick street`, `dog tosses plush`, …) or reuse a prior session's prompt |\n| Lock user-required facts first (subject, action beat, OPEN/MID/CLOSE when frame-anchored, narration sync when `audio` is set) | Swap the subject or motion for a “cooler” clip that ignores the request |\n| Structure with `video-prompting` dramaturgy — one frozen action per beat, physics-safe motion, camera grammar | Vague mood-only strings (`cinematic vibe, neon energy`) |\n| When `audio` is set, motion and pacing must **match the narration beat** | Drift to unrelated action while VO plays |\n| Show the drafted prompt + mode fields before `POST` when the user has not locked wording | Silent regen with a different subject or beat than approved |\n\n**Fidelity check (before pay):** if you remove the user's named subject/action/setting from the prompt, the job is wrong — rewrite. Free axes only fill what the brief left open.\n\nWhen showing a drafted prompt, still name `` `p-video` `` (guides help craft; this tool owns the call).\n\n## Skill boundary\n\nThis skill = **one `p-video` prediction** per invocation.\n\n**Out of scope (do not execute from this skill):**\n\n- Multi-scene assembly, concat, subagent orchestration, or parallel scene batches\n- Motion transfer from a template video → `p-video-animate`\n- Talking-head / lip-sync → `p-video-avatar`\n\nIf the request exceeds one clip, **stop** and recommend: `image-to-video` (one narrated beat), `visual-transition-reel` (multi-scene visual), or `narrated-multi-scene` (multi-scene + VO).\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -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\n## HTTP (curl)\n\n### Upload for image-to-video / frame anchors\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/first-frame.png\"\n```\n\nPass `urls.get` as `input.image` (first frame) and/or `input.last_frame_image` (last frame). Upload TTS/music the same way for `input.audio`.\n\n### Create (async text-to-video — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Slow dolly in on rain-slick street at night, neon reflections, distant traffic hiss\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"aspect_ratio\": \"16:9\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`.\n\n### First / last frame (visual transition)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"OPEN: hold wide on wet alley, neon flicker. MID: slow dolly in, rain ticks on pavement. CLOSE: settle on end pose.\",\n      \"image\": \"https://api.pruna.ai/v1/files/START_ID\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/END_ID\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"fps\": 24\n    }\n  }'\n```\n\n### Scene anchor triple (`image` + `last_frame_image` + `audio`)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Dog tosses plush upward, tail wagging, motion matches narrator, warm light\",\n      \"image\": \"https://api.pruna.ai/v1/files/SCENE_START\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/SCENE_END\",\n      \"audio\": \"https://api.pruna.ai/v1/files/SCENE_NARRATION\",\n      \"resolution\": \"720p\",\n      \"fps\": 24,\n      \"save_audio\": true\n    }\n  }'\n```\n\n**Omit `duration`** when `audio` is set. Clip length = min(audio length, **20s**) — keep TTS ≤ ~19s (`ffprobe` before render).\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft a **dynamic + faithful** motion prompt (section above) → confirm **mode** (T2V / I2V / frame pair / audio), **`duration`** (unless audio-driven), **`resolution`**, **`fps`**, **`draft`**, and **`prompt`** with the user.\n3. **Pruna notes:** when `image` is set, `aspect_ratio` is ignored. With `audio`, omit `duration` and set **`save_audio: true`** to keep narration. Prefer uploaded VO over post-mux. If the request is multi-scene — **stop** (see Skill boundary).\n\n## Required input\n\n- `prompt` (string)\n\n## Common optional fields\n\n| Field | Role |\n|-------|------|\n| `image` | First frame — I2V anchor; when set, `aspect_ratio` is ignored |\n| `last_frame_image` | Optional end-state still |\n| `audio` | Audio-conditioned; duration follows audio (capped at **20s**); flac/mp3/wav |\n| `duration` | 1–20s (ignored if `audio` set) |\n| `resolution` | `720p` (default) or `1080p` |\n| `fps` | `24` (default) or `48` |\n| `aspect_ratio` | When no `image`: `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3`, `1:1` |\n| `draft` | `true` ≈ 4× faster/cheaper preview; `false` = final |\n| `save_audio` | Keep model-generated or uploaded audio on output |\n| `seed`, `prompt_upsampling`, `disable_safety_filter` | Reproducibility / client policy |\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\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| `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| `visual-transition-reel` | Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. | `npx skills add PrunaAI/pruna-skills@visual-transition-reel -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -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\": \"p-video\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1785259184487\n}\n\nFile v1.0.8:skill-card.md\n\n## Description: <br>\nUse when someone wants one short video clip from text or images — B-roll, start/end frame animation, or a quick motion shot. <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 creative operators use this skill to prepare and submit a single Pruna p-video generation request for short text-to-video, image-to-video, frame-pair, or audio-conditioned clips. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Generated-video requests may upload prompts, images, and audio to Pruna using PRUNA_API_KEY. <br>\nMitigation: Review user inputs before submission and avoid sending sensitive or unauthorized media. <br>\nRisk: Optional fields such as disable_safety_filter can affect provider and policy safeguards. <br>\nMitigation: Leave safety-related options at their defaults unless the user has reviewed and accepted the policy implications. <br>\nRisk: The workflow depends on referenced helper skills for prompt diversity, video prompting, audio prompting, and Pruna API handling. <br>\nMitigation: Review the referenced helper skills before installation or use in the same agent environment. <br>\n\n\n## Reference(s): <br>\n- [ClawHub p-video skill page](https://clawhub.ai/pruna-ai/skills/p-video) <br>\n- [Pruna files API endpoint](https://api.pruna.ai/v1/files) <br>\n- [Pruna predictions API endpoint](https://api.pruna.ai/v1/predictions) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, API calls, Configuration] <br>\n**Output Format:** [Markdown with inline bash and JSON examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires PRUNA_API_KEY and guides one async p-video prediction per invocation.] <br>\n\n## Skill Version(s): <br>\n1.0.8 (source: release evidence and skill metadata) <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, 5535 bytes\n\nFiles: skill-card.md (2146b), skill.manifest.json (23b), SKILL.md (10487b), _meta.json (126b)\n\nFile v1.0.7:SKILL.md\n\n---\nname: p-video\ndescription: 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.\nlicense: MIT\nmetadata:\n  version: \"1.0.7\"\n  package: pruna-skills\n  pruna_model: p-video\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -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\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## Agent habit\n\nIn the **first reply**, name `` `p-video` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. When drafting motion prompts, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nEvery `input.prompt` must be **fresh and specific**, and must **match the user's beat**. Diversity never overrides the brief.\n\n| Do | Don't |\n| --- | --- |\n| Run the `generation-diversity` random seed ritual; state it; rotate ≥2 free axes (camera move, lighting shift, texture, pacing) when the brief allows | Copy curl examples from this skill (`rain-slick street`, `dog tosses plush`, …) or reuse a prior session's prompt |\n| Lock user-required facts first (subject, action beat, OPEN/MID/CLOSE when frame-anchored, narration sync when `audio` is set) | Swap the subject or motion for a “cooler” clip that ignores the request |\n| Structure with `video-prompting` dramaturgy — one frozen action per beat, physics-safe motion, camera grammar | Vague mood-only strings (`cinematic vibe, neon energy`) |\n| When `audio` is set, motion and pacing must **match the narration beat** | Drift to unrelated action while VO plays |\n| Show the drafted prompt + mode fields before `POST` when the user has not locked wording | Silent regen with a different subject or beat than approved |\n\n**Fidelity check (before pay):** if you remove the user's named subject/action/setting from the prompt, the job is wrong — rewrite. Free axes only fill what the brief left open.\n\nWhen showing a drafted prompt, still name `` `p-video` `` (guides help craft; this tool owns the call).\n\n## Skill boundary\n\nThis skill = **one `p-video` prediction** per invocation.\n\n**Out of scope (do not execute from this skill):**\n\n- Multi-scene assembly, concat, subagent orchestration, or parallel scene batches\n- Motion transfer from a template video → `p-video-animate`\n- Talking-head / lip-sync → `p-video-avatar`\n\nIf the request exceeds one clip, **stop** and recommend: `image-to-video` (one narrated beat), `visual-transition-reel` (multi-scene visual), or `narrated-multi-scene` (multi-scene + VO).\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -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\n## HTTP (curl)\n\n### Upload for image-to-video / frame anchors\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/first-frame.png\"\n```\n\nPass `urls.get` as `input.image` (first frame) and/or `input.last_frame_image` (last frame). Upload TTS/music the same way for `input.audio`.\n\n### Create (async text-to-video — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Slow dolly in on rain-slick street at night, neon reflections, distant traffic hiss\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"aspect_ratio\": \"16:9\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`.\n\n### First / last frame (visual transition)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"OPEN: hold wide on wet alley, neon flicker. MID: slow dolly in, rain ticks on pavement. CLOSE: settle on end pose.\",\n      \"image\": \"https://api.pruna.ai/v1/files/START_ID\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/END_ID\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"fps\": 24\n    }\n  }'\n```\n\n### Scene anchor triple (`image` + `last_frame_image` + `audio`)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Dog tosses plush upward, tail wagging, motion matches narrator, warm light\",\n      \"image\": \"https://api.pruna.ai/v1/files/SCENE_START\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/SCENE_END\",\n      \"audio\": \"https://api.pruna.ai/v1/files/SCENE_NARRATION\",\n      \"resolution\": \"720p\",\n      \"fps\": 24,\n      \"save_audio\": true\n    }\n  }'\n```\n\n**Omit `duration`** when `audio` is set. Clip length = min(audio length, **20s**) — keep TTS ≤ ~19s (`ffprobe` before render).\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft a **dynamic + faithful** motion prompt (section above) → confirm **mode** (T2V / I2V / frame pair / audio), **`duration`** (unless audio-driven), **`resolution`**, **`fps`**, **`draft`**, and **`prompt`** with the user.\n3. **Pruna notes:** when `image` is set, `aspect_ratio` is ignored. With `audio`, omit `duration` and set **`save_audio: true`** to keep narration. Prefer uploaded VO over post-mux. If the request is multi-scene — **stop** (see Skill boundary).\n\n## Required input\n\n- `prompt` (string)\n\n## Common optional fields\n\n| Field | Role |\n|-------|------|\n| `image` | First frame — I2V anchor; when set, `aspect_ratio` is ignored |\n| `last_frame_image` | Optional end-state still |\n| `audio` | Audio-conditioned; duration follows audio (capped at **20s**); flac/mp3/wav |\n| `duration` | 1–20s (ignored if `audio` set) |\n| `resolution` | `720p` (default) or `1080p` |\n| `fps` | `24` (default) or `48` |\n| `aspect_ratio` | When no `image`: `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3`, `1:1` |\n| `draft` | `true` ≈ 4× faster/cheaper preview; `false` = final |\n| `save_audio` | Keep model-generated or uploaded audio on output |\n| `seed`, `prompt_upsampling`, `disable_safety_filter` | Reproducibility / client policy |\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\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| `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| `visual-transition-reel` | Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. | `npx skills add PrunaAI/pruna-skills@visual-transition-reel -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -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\": \"p-video\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1784810076704\n}\n\nFile v1.0.7:skill-card.md\n\n## Description: <br>\nUse when someone wants one short video clip from text or images: B-roll, start/end frame animation, or a quick motion shot. <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>\nExternal developers and creators use this skill to have an agent prepare and submit one short Pruna p-video generation request from text, image anchors, and optional audio. It is intended for single-clip B-roll, image-to-video, frame-pair animation, or a quick motion shot, not multi-scene films or lip-synced avatars. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Generated-video requests can send user prompts, images, and audio to Pruna's external API using PRUNA_API_KEY. <br>\nMitigation: Avoid submitting sensitive media or private text unless the user intends to send it to Pruna, and confirm the API key is available only for the authorized account. <br>\n\n\n## Reference(s): <br>\n- [ClawHub p-video skill page](https://clawhub.ai/pruna-ai/skills/p-video) <br>\n- [Pruna file upload API endpoint](https://api.pruna.ai/v1/files) <br>\n- [Pruna predictions API endpoint](https://api.pruna.ai/v1/predictions) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance] <br>\n**Output Format:** [Markdown guidance with JSON request bodies and curl command examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Produces one p-video prediction workflow per invocation; image, last-frame image, audio, duration, resolution, fps, aspect ratio, draft, and save-audio settings may shape the request.] <br>\n\n## Skill Version(s): <br>\n1.0.7 (source: server release metadata and skill metadata) <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: 14 files, 35077 bytes\n\nFiles: README-INSTALL.md (878b), references/agent-safety.md (2037b), references/api-credentials.md (3064b), references/generation-diversity.md (25978b), references/generation-quality-checklists.md (10290b), references/p-video-quality-checklist.md (1815b), references/pruna-api.md (4818b), references/random-seed-ritual.md (4011b), references/scene-anchor-pair.md (8034b), references/scene-anchor-triple.md (10443b), skill-card.md (2853b), skill.manifest.json (241b), SKILL.md (12903b), _meta.json (126b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: p-video\ndescription: 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.\nlicense: MIT\nmetadata:\n  version: \"1.0.6\"\n  pruna_model: p-video\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.\n\n# p-video (Pruna)\n\nPremium video from text, optional **first-frame** / **last-frame** images, or optional audio. Same model on [Replicate](https://replicate.com/prunaai/p-video).\n\nFull P-API parameters: [p-video model docs](https://docs.api.pruna.ai/guides/models/p-video).\n\nShared HTTP patterns: [pruna-api.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/pruna-api.md) (upload, [poll](#poll), [download](#download))\n\n## Skill boundary\n\nThis skill = **one `p-video` prediction** per invocation.\n\n**Out of scope (do not execute from this skill):**\n\n- Multi-scene assembly, concat, subagent orchestration, or parallel scene batches\n- Motion transfer from a template video → [p-video-animate](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-video-animate/skills/p-video-animate/SKILL.md)\n- Talking-head / lip-sync → [p-video-avatar](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-video-avatar/skills/p-video-avatar/SKILL.md)\n\nIf the request exceeds one clip, **stop** and recommend: [image-to-video](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/image-to-video/skills/image-to-video/SKILL.md) (one narrated beat), [visual-transition-reel](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/visual-transition-reel/skills/visual-transition-reel/SKILL.md) (multi-scene visual), or [narrated-multi-scene](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/narrated-multi-scene/skills/narrated-multi-scene/SKILL.md) (multi-scene + VO).\n\n## HTTP (curl)\n\n### Create (async — recommended)\n\nSee **Example: async text-to-video** below. Poll and download: [pruna-api.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/pruna-api.md#poll).\n\n### Upload for image-to-video / frame anchors\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/first-frame.png\"\n```\n\nPass `urls.get` as `input.image` (first frame) and/or `input.last_frame_image` (last frame).\n\n## Before generating\n\n**Data handling:** [agent-safety.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/agent-safety.md) before any upload or paid call.\n\n1. **[Generation diversity](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/generation-diversity.md)** — ritual seed + axis rotation before each job.\n2. Confirm **mode** (T2V / I2V / **visual transition pair** / scene anchor triple / audio), **`duration`** (unless audio-driven), **`resolution`**, **`fps`**, **`draft`**, **`seed`**, and **`prompt`** with the user.\n3. If the request is multi-scene or needs subagents/concat — **stop** and switch skills (see **Skill boundary**).\n\nFor **narration or music** on this single clip, see [audio-post-production.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/shared/audio-post-production.md) — Gemini TTS, Stable Audio beds, or upload audio for audio-conditioned mode.\n\nValidate renders with [p-video-quality-checklist.md](./references/p-video-quality-checklist.md).\n\n## Required input\n\n- `prompt` (string)\n\n## Common optional fields\n\n| Field | Role |\n|-------|------|\n| `image` | **First frame** — image-to-video anchor; when set, `aspect_ratio` is ignored |\n| `last_frame_image` | **Last frame** — optional end-state still the clip should move toward |\n| `audio` | Audio-conditioned; duration follows audio (capped at **20s** on P-API); formats flac, mp3, wav |\n| `duration` | 1–20 seconds on P-API (ignored if `audio` set). With `audio`, clip length = min(audio length, **20s**) — keep TTS ≤ ~19s |\n| `resolution` | `720p` (default) or `1080p` |\n| `fps` | `24` (default) or `48` |\n| `aspect_ratio` | When no `image`: `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3`, `1:1` |\n| `draft` | `true` = ~4× faster/cheaper preview ([pricing](https://replicate.com/prunaai/p-video)); `false` = final |\n| `save_audio` | Keep model-generated dialogue/SFX on output (native audio) |\n| `seed` | Reproducibility |\n| `prompt_upsampling` | Auto prompt enhancement (default on Replicate) |\n| `disable_safety_filter` | Client policy |\n\n## First / last frame (single clip)\n\nUse **`image`** + **`last_frame_image`** to steer motion between two known compositions — the model interpolates from start plate to end plate.\n\n1. Upload or generate **start still** → `input.image`\n2. Upload or **`p-image-edit`** an **end still** (same subject, new pose/background beat) → `input.last_frame_image`\n3. **`p-video`** with a motion-only `prompt` describing camera + action between the two plates\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Dog turns head toward flying toy, grass sways, gentle push-in, warm afternoon light\",\n      \"image\": \"https://api.pruna.ai/v1/files/START_ID\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/END_ID\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"fps\": 24\n    }\n  }'\n```\n\nCanonical specs: [scene-anchor-pair.md](./references/scene-anchor-pair.md) · [scene-anchor-triple.md](./references/scene-anchor-triple.md) (one narrated beat).\n\n## Visual transition mode (scene anchor pair)\n\nUse when you have **two photos** and want **`p-video`** to **interpolate motion between them** — no narration required. Stills from [`p-image`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-image/skills/p-image/SKILL.md) hero + [`p-image-edit`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-image-edit/skills/p-image-edit/SKILL.md), or user uploads.\n\n| Field | Required | Role |\n|-------|----------|------|\n| `image` | yes | Start plate |\n| `last_frame_image` | yes | End plate |\n| `prompt` | yes | OPEN → MID → CLOSE **motion** between plates (not still descriptions) |\n| `duration` | yes | Prefer 4–5s; omit when `audio` is set |\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"OPEN: hold wide. MID: slow dolly in, neon flickers. CLOSE: settle on end pose.\",\n      \"image\": \"https://api.pruna.ai/v1/files/START_ID\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/END_ID\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"fps\": 24\n    }\n  }'\n```\n\n**Stills pipeline:** `p-image` (hero) → `p-image-edit` (`edit_prompt` → start) → `p-image-edit` (`last_frame_edit_prompt` → end).\n\n## Scene anchor triple (`image` + `last_frame_image` + `audio`)\n\nFor **one** narrated beat, pass three uploaded anchors in a single prediction:\n\n| Anchor | Field | Role |\n|--------|-------|------|\n| **First frame** | `image` | Opening composition |\n| **Last frame** | `last_frame_image` | Closing composition |\n| **Narration / VO** | `audio` | Uploaded TTS or music — **sets clip duration** (up to **20s** P-API max) |\n\nAll three are Pruna file URLs from `POST /v1/files`. **Omit `duration`** when `audio` is set. **Probe TTS** with `ffprobe` before render — lines longer than ~19s are truncated ([`p_video_payload.py`](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/_shared/scripts/p_video_payload.py) `validate_narration_duration`).\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Dog tosses plush upward, tail wagging, motion matches narrator, warm light\",\n      \"image\": \"https://api.pruna.ai/v1/files/SCENE_START\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/SCENE_END\",\n      \"audio\": \"https://api.pruna.ai/v1/files/SCENE_NARRATION\",\n      \"resolution\": \"720p\",\n      \"fps\": 24,\n      \"save_audio\": true\n    }\n  }'\n```\n\nFull single-beat + multi-scene extension: [scene-anchor-triple.md](./references/scene-anchor-triple.md).\n\n## Audio modes\n\n| Mode | Input | Duration | When |\n|------|-------|----------|------|\n| **Silent / native SFX** | `prompt` only (optional `save_audio`) | `duration` | Ambient clips, model-generated sound |\n| **Uploaded audio (preferred)** | `audio` URL + `prompt` (+ optional `image`, `last_frame_image`) | Follows audio — **omit `duration`** | VO, TTS, song slices — upload to `/v1/files` first; set **`save_audio`: true** when keeping narration |\n| **External narration** | [gemini-3.1-flash-tts](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/gemini-3.1-flash-tts/skills/gemini-3.1-flash-tts/SKILL.md) → upload → `audio` | Follows audio | Documentary narrator — same as uploaded audio; **never** post-mux over silent clips |\n| **Post mux (fallback only)** | Silent `p-video` renders | `duration` | Only when re-render is impossible — truncates long TTS |\n\nShared helper: [`p_video_payload.py`](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/_shared/scripts/p_video_payload.py) — enforces omitting `duration` when `audio` is set.\n\nFull layering guide: [audio-post-production.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/shared/audio-post-production.md).\n\n## Example: async text-to-video (recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Slow dolly in, rain on city street at night, cinematic\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"aspect_ratio\": \"16:9\"\n    }\n  }'\n```\n\nPoll and download: [pruna-api.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/pruna-api.md#poll).\n\n## Example: image-to-video (first frame only)\n\nUpload image to `/v1/files`, pass its `urls.get` as `input.image`.\n\n## Example: audio-conditioned with frame anchors (narrated story beat)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Dog searches through tall grass, cinematic, motion matches narrator mood\",\n      \"image\": \"https://api.pruna.ai/v1/files/START_ID\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/END_ID\",\n      \"audio\": \"https://api.pruna.ai/v1/files/NARRATION_ID\",\n      \"resolution\": \"720p\",\n      \"fps\": 24,\n      \"save_audio\": true\n    }\n  }'\n```\n\nOmit `duration` when `audio` is set. See **Scene anchor triple** above.\n\n## Example: audio-conditioned (narration only, no last frame)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Dog searches through tall grass, cinematic, matches narrator mood\",\n      \"image\": \"https://api.pruna.ai/v1/files/START_ID\",\n      \"audio\": \"https://api.pruna.ai/v1/files/NARRATION_ID\",\n      \"resolution\": \"720p\",\n      \"fps\": 24\n    }\n  }'\n```\n\n## Related workflows (do not execute from this skill)\n\n- One-scene narrated beat: [image-to-video](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/image-to-video/skills/image-to-video/SKILL.md)\n- Visual transitions (pair, multi-scene): [visual-transition-reel](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/visual-transition-reel/skills/visual-transition-reel/SKILL.md)\n- Multi-scene + frame chain + narration: [narrated-multi-scene](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/narrated-multi-scene/skills/narrated-multi-scene/SKILL.md)\n- Talking portrait: [p-video-avatar](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-video-avatar/skills/p-video-avatar/SKILL.md)\n- Motion transfer: [p-video-animate](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-video-animate/skills/p-video-animate/SKILL.md)\n- Narration TTS: [gemini-3.1-flash-tts](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/gemini-3.1-flash-tts/skills/gemini-3.1-flash-tts/SKILL.md)\n- Pipeline hub: [pruna-generative-pipeline](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md)\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-video\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1784235568159\n}\n\nFile v1.0.6:references/agent-safety.md\n\n# Agent safety (data, credentials, locale)\n\nRequired before the first paid generation call (`POST /v1/predictions`, Replicate prediction, or file upload to Pruna/Replicate). Link from tool and workflow skills that transmit media.\n\n## Privacy / external transmission\n\nLocal images, audio, scripts, and portraits are **uploaded to remote APIs** (primarily `https://api.pruna.ai/`; Replicate for TTS/song/bed/WhisperX). Uploads may include biometric-like portraits, personal voice, or copyrighted material.\n\n- Get **explicit user acknowledgment** before the first upload or prediction in a session (or when new media is introduced).\n- Do **not** use third-party likenesses or voices without the user’s confirmation that they have consent.\n- Tell the user that content leaves the local environment and is processed/stored remotely per the provider’s terms.\n\n## Credentials\n\n- Read `PRUNA_API_KEY` / `REPLICATE_API_TOKEN` from the **host environment** only (shell / `.env` — never commit).\n- **Never** embed keys in prompts, chat, manifests, plan JSON, logs, or subagent task text.\n- Prefer the **parent agent** to own API calls. Do not fan credentials across parallel subagents unless the host documents isolated secret injection.\n- If a key is missing, stop and use the templates in [api-credentials.md](./api-credentials.md).\n\n## Local disk\n\nDownloads (`curl -o …`, runners writing under an output dir) **create or overwrite** local files. Confirm the output path with the user before writing; avoid clobbering unrelated paths.\n\n## Locale and voice\n\n- Confirm **`voice_language`** (and voice preset) with the user before avatar/TTS jobs.\n- Examples that use `English (US)` are **illustrative only** — not a silent default override of user locale.\n\n## Related\n\n- [api-credentials.md](./api-credentials.md) — signup + header rules\n- [pruna-api.md](./pruna-api.md) — upload / poll / download\n- [staged-generation-gate.md](https://github.com/PrunaAI/pruna-skills/tree/main/policies/staged-generation-gate.md) — approval phases\n\nFile v1.0.6:references/api-credentials.md\n\n# API credentials (Pruna + Replicate)\n\n**Agent rule:** Before any `POST /v1/predictions`, Replicate prediction, or paid runner — check env vars. If a required key is **missing or empty**, **stop** and tell the user how to sign up. Do not guess, mock, or skip with placeholder keys.\n\n## Pruna P-API\n\n| | |\n|--|--|\n| **Env var** | `PRUNA_API_KEY` |\n| **Header** | `apikey: ${PRUNA_API_KEY}` (not `Authorization: Bearer`) |\n| **Sign up / get key** | [Pruna dashboard](https://dashboard.pruna.ai/) |\n| **Docs** | [Quickstart](https://docs.api.pruna.ai/guides/quickstart) · [pruna-api.md](./pruna-api.md) |\n\n**Used by:** all `p-image*`, `p-video*` tool skills and Pruna workflow runners.\n\n### If `PRUNA_API_KEY` is missing — agent message template\n\n> Pruna generation needs an API key. Sign up or sign in at **[dashboard.pruna.ai](https://dashboard.pruna.ai/)**, create an API key, then set:\n>\n> ```bash\n> export PRUNA_API_KEY=\"your_key_here\"\n> ```\n>\n> Add that to your shell profile or project `.env` (never commit the key). Reply when it’s set and we can continue.\n\n## Replicate\n\n| | |\n|--|--|\n| **Env var** | `REPLICATE_API_TOKEN` |\n| **Header** | `Authorization: Bearer ${REPLICATE_API_TOKEN}` |\n| **Sign up / get token** | [Replicate API tokens](https://replicate.com/account/api-tokens) ([sign in](https://replicate.com/signin) first if needed) |\n| **Docs** | [replicate-api.md](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/replicate-api/SKILL.md) |\n\n**Used by:** `music-2.5`, `gemini-3.1-flash-tts`, `stable-audio-2.5`, `whisperx`, and workflow beds/TTS/song phases.\n\n### If `REPLICATE_API_TOKEN` is missing — agent message template\n\n> This step uses Replicate (song, TTS, transcription, or background bed). Create a token at **[replicate.com/account/api-tokens](https://replicate.com/account/api-tokens)**, then set:\n>\n> ```bash\n> export REPLICATE_API_TOKEN=\"r8_...\"\n> ```\n>\n> Reply when it’s set and we can continue.\n\n## Which key does this job need?\n\n| Task | Keys required |\n|------|----------------|\n| `p-image`, `p-image-edit`, `p-image-upscale`, `p-image-try-on` | `PRUNA_API_KEY` |\n| `p-video`, `p-video-avatar`, `p-video-animate`, `p-video-replace` | `PRUNA_API_KEY` |\n| Music 2.5 song generation | `REPLICATE_API_TOKEN` |\n| Gemini TTS narration | `REPLICATE_API_TOKEN` |\n| Stable Audio background bed | `REPLICATE_API_TOKEN` |\n| WhisperX transcription | `REPLICATE_API_TOKEN` |\n| Music video / explainer (full pipeline) | **Both** — Pruna for stills/video; Replicate for song/TTS/bed as needed |\n\nWhen only one key is missing, suggest **only** that provider’s signup link — not both.\n\n## Security\n\n- Never print full keys in chat or commit them to git.\n- `.env` is gitignored; prefer env vars over hardcoding in plans or manifests.\n- Never embed keys in prompts, manifests, plan JSON, logs, or **subagent task text**.\n- Prefer the **parent agent** to own API calls; do not fan credentials across parallel subagents unless the host documents isolated secret injection.\n- Full rules: [agent-safety.md](./agent-safety.md).\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 an\n\nArchive v1.0.2: 14 files, 35167 bytes\n\nFiles: README-INSTALL.md (585b), references/agent-safety.md (2049b), references/api-credentials.md (3069b), references/generation-diversity.md (26021b), references/generation-quality-checklists.md (10763b), references/p-video-quality-checklist.md (1756b), references/pruna-api.md (4773b), references/random-seed-ritual.md (4088b), references/scene-anchor-pair.md (8039b), references/scene-anchor-triple.md (10497b), skill-card.md (3616b), skill.manifest.json (341b), SKILL.md (12224b), _meta.json (126b)","readmeExcerpt":"Skill: p-video Owner: pruna-ai Summary: 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. 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:34:47.201Z | auto p-video 1.0.14 - Updated SKILL.m","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"curl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/first-frame.png\""},{"language":"bash","snippet":"curl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/first-frame.png\""},{"language":"bash","snippet":"curl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{"},{"language":"bash","snippet":"curl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Slow dolly in on rain-slick street at night, neon reflections, distant traffic hiss\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"aspect_ratio\": \"16:9\"\n    }\n  }'"},{"language":"bash","snippet":"curl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{"},{"language":"bash","snippet":"curl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"OPEN: hold wide on wet alley, neon flicker. MID: slow dolly in, rain ticks on pavement. CLOSE: settle on end pose.\",\n      \"image\": \"https://api.pruna.ai/v1/files/START_ID\",\n      \"last_frame_image\": \"https://api.pruna.ai/v1/files/END_ID\",\n      \"duration\": 5,\n      \"resolution\": \"720p\",\n      \"fps\": 24\n    }\n  }'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: p-video\ndescription: 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.\nlicense: MIT\nmetadata:\n  version: \"1.0.14\"\n  package: pruna-skills\n  pruna_model: p-video\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -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\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## Agent habit\n\n**Routing:** Use `` `p-video` `` for **simple, quick** clips — drafts, light B-roll, short motion. Cinematic generation with generated audio → `` `p-video-2-pro` ``. 1080p, imported audio, or draft previews → `` `p-video-2` ``.\n\nIn the **first reply**, name `` `p-video` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Open intake → **`generation-diversity`** clarification intake before the first `POST`. When drafting motion prompts, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nEvery `input.prompt` must be **fresh and specific**, and must **match the user's beat**. Diversity never overrides the brief.\n\n| Do | Don't |\n| --- | --- |\n| Run the `generation-diversity` random seed ritual; state it; rotate ≥2 free axes (camera move, lighting shift, texture, pacing) when the brief allows | Copy curl examples from this skill (`rain-slick street`, `dog tosses plush`, …) or reuse a prior session's prompt |\n| Lock user-required facts first (subject, action beat, OPEN/MID/CLOSE when frame-anchored, narration sync when `audio` is set) | Swap the subject or motion for a “cooler” clip that ignores the request |\n| Structure with `video-prompting` dramaturgy — one frozen action per beat, physics-safe motion, camera grammar | Vague mood-only str"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-video\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790696087201\n}"},{"path":"skill-card.md","content":"## Description:\n\nGuides an agent in creating one short video clip from text, images, or frame anchors with Pruna's p-video model.\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 developers use this skill to draft a single short B-roll clip or animate an image or start/end frame pair through Pruna. It is not intended for multi-scene assembly or tightly lip-synced hosts.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Prompts, images, or audio may be sent to Pruna.\n\nMitigation: Use only media you are willing to share with Pruna; obtain approval before using sensitive or regulated content.\n\nRisk: Unpinned network installation commands may run unverified tooling.\n\nMitigation: Pin or otherwise verify the install tooling before running the documented npx commands.\n\nRisk: The optional safety-filter bypass can disable content safeguards.\n\nMitigation: Do not enable disable_safety_filter without an explicit, governed reason.\n\n## Reference(s):\n\n- [p-video on ClawHub](https://clawhub.ai/pruna-ai/skills/p-video)\n\n## Skill Output:\n\n**Output Type(s):** [Text guidance, Shell commands, Configuration instructions]\n\n**Output Format:** [Markdown with inline bash code blocks]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guides one video-generation request; the generated clip is returned by Pruna's service.]\n\n## Skill Version(s):\n\n1.0.14 (source: skill frontmatter and ClawHub release evidence)\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 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. Skill: p-video Owner: pruna-ai Summary: 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. 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:34:47.201Z | auto p-video 1.0.14 - Updated SKILL.m","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1486,"uniquenessScore":46,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T11:39:52.972Z","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:39:52.972Z","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-10T14:47:02.969Z","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"}]}}}