Prerequisites
Install and load these skills before generating (skip if already in context via @pruna):
| Skill |
Description |
Install |
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 |
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 |
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 |
Or install the full suite once: npx skills add PrunaAI/pruna-skills@pruna -y
Follow each skill's Before generating / craft sections — do not restate guide content here.
Agent habit
In the first reply, name `p-video-animate` 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 optional instruction_prompt, follow Prompt craft (dynamic + faithful) — do not paste skill examples. Redirect when When NOT to use fits better.
Prompt craft (dynamic + faithful)
Appearance comes from image; motion from video. Optional instruction_prompt is surgical — one concrete end beat or pose fix, not a new scene.
| Do |
Don't |
Ritual seed before drafting; leave instruction_prompt blank when refs already align |
Copy this skill's generic sample (Animate the reference subject using the motion from the source video) when the user named a specific beat |
| Lock the user's subject (from image) and motion source (from video); match framing/pose to the template's first frame |
Invent a different performance or swap the subject |
When needed, one concrete instruction_prompt beat (hold landing pose on final frame, match arm raise at 0:03) |
Mood-only rewrites or vague make it dance better |
Show instruction_prompt (if any) before POST when not locked |
Silent regen that changes identity or ignores the template motion |
Fidelity check (before pay): still the user's still + template video. Repose with p-image-edit when close but not exact — do not compensate with a vague prompt.
Skill boundary
|
p-video-animate (this skill) |
p-video-replace |
| User question |
Animate this picture with some motion? |
Replace this person in this video? |
| Inputs |
One image + motion-template video |
Source video + images (1–4) |
| Job |
Still performs using copied motion |
People/props in footage swapped for refs |
Use p-video-replace for in-place identity swap. Use this skill for motion-transfer showcases and persona variants.
When NOT to use
Use a different skill instead:
| Skill |
Description |
Install |
p-image-edit |
Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. |
npx skills add PrunaAI/pruna-skills@p-image-edit -y |
p-video-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 |
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 |
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 |
HTTP (curl)
Upload source assets
curl -X POST "https://api.pruna.ai/v1/files" \
-H "apikey: ${PRUNA_API_KEY}" \
-F "content=@/path/to/source-video.mp4"
curl -X POST "https://api.pruna.ai/v1/files" \
-H "apikey: ${PRUNA_API_KEY}" \
-F "content=@/path/to/reference-image.png"
Use each response urls.get in input.video and input.image.
Create (async — recommended)
curl -X POST 'https://api.pruna.ai/v1/predictions' \
-H 'Content-Type: application/json' \
-H "apikey: ${PRUNA_API_KEY}" \
-H 'Model: p-video-animate' \
-d '{
"input": {
"video": "https://api.pruna.ai/v1/files/source-video-abc123",
"image": "https://api.pruna.ai/v1/files/reference-image-def456",
"resolution": "720p",
"target_fps": "original",
"instruction_prompt": "Animate the reference subject using the motion from the source video."
}
}'
Poll and download: follow pruna-api. Output duration follows the source video.
Complete the random seed ritual from generation-diversity before writing prompts.
Create (sync — quick test only)
curl -X POST 'https://api.pruna.ai/v1/predictions' \
-H 'Content-Type: application/json' \
-H "apikey: ${PRUNA_API_KEY}" \
-H 'Model: p-video-animate' \
-H 'Try-Sync: true' \
-d '{
"input": {
"video": "https://api.pruna.ai/v1/files/source-video-abc123",
"image": "https://api.pruna.ai/v1/files/reference-image-def456"
}
}'
Before generating
- Complete Prerequisites guide reading order (
generation-diversity → video-prompting).
- Ritual seed → draft optional dynamic + faithful
instruction_prompt (section above) → confirm video (motion/audio source), image (subject), resolution, target_fps, and instruction_prompt.
- Pruna notes: appearance from image, motion from video. Match framing/pose/limb visibility to the template’s first frame; repose with
p-image-edit when close but not exact. Leave instruction_prompt blank unless you need one concrete end beat. Runware map: referenceImages[0] → image, referenceVideos[0] → video, positivePrompt → instruction_prompt, settings.preserveAudio → save_audio.
Required input
video (string URL): source RGB .mp4
image (string URL): reference subject to animate
Common optional fields
resolution: 720p (default) or 1080p
target_fps: original (default), 24, or 48
instruction_prompt (string)
save_audio (boolean, default true)
seed, disable_safety_checker
Typical next steps
Common follow-ons after this skill:
| Skill |
Description |
Install |
p-image |
Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. |
npx skills add PrunaAI/pruna-skills@p-image -y |
p-image-edit |
Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. |
npx skills add PrunaAI/pruna-skills@p-image-edit -y |
p-video-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 |
avatar-multi-scene |
Use when someone wants the same person hosting several clips — multi-segment UGC, comparison reels, or mixed speaking and animated scenes with continuity. |
npx skills add PrunaAI/pruna-skills@avatar-multi-scene -y |
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 |
1---2name: p-video-animate3description: Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip.4license: MIT5---67## Prerequisites89Install and load these skills before generating (skip if already in context via `@pruna`):1011| Skill | Description | Install |12| --- | --- | --- |13| `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` |14| `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` |15| `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` |1617Or install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`1819Follow each skill's **Before generating** / craft sections — do not restate guide content here.2021## Agent habit2223In the **first reply**, name `` `p-video-animate` `` 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 optional **`instruction_prompt`**, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.2425## Prompt craft (dynamic + faithful)2627Appearance comes from **`image`**; motion from **`video`**. Optional **`instruction_prompt`** is **surgical** — one concrete end beat or pose fix, not a new scene.2829| Do | Don't |30| --- | --- |31| Ritual seed before drafting; leave **`instruction_prompt`** blank when refs already align | Copy this skill's generic sample (`Animate the reference subject using the motion from the source video`) when the user named a specific beat |32| Lock the user's subject (from image) and motion source (from video); match framing/pose to the template's first frame | Invent a different performance or swap the subject |33| When needed, one concrete **`instruction_prompt`** beat (`hold landing pose on final frame`, `match arm raise at 0:03`) | Mood-only rewrites or vague `make it dance better` |34| Show **`instruction_prompt`** (if any) before `POST` when not locked | Silent regen that changes identity or ignores the template motion |3536**Fidelity check (before pay):** still the user's still + template video. Repose with `p-image-edit` when close but not exact — do not compensate with a vague prompt.3738## Skill boundary3940| | **p-video-animate** (this skill) | **p-video-replace** |41|---|----------------------------------|---------------------|42| **User question** | *Animate this picture with some motion?* | *Replace this person in this video?* |43| **Inputs** | One **`image`** + motion-template **`video`** | Source **`video`** + **`images`** (1–4) |44| **Job** | Still performs using copied motion | People/props in footage swapped for refs |4546**Use `p-video-replace`** for in-place identity swap. **Use this skill** for motion-transfer showcases and persona variants.4748## When NOT to use4950Use a different skill instead:5152| Skill | Description | Install |53| --- | --- | --- |54| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |55| `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` |56| `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` |57| `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` |5859## HTTP (curl)6061### Upload source assets6263```bash64curl -X POST "https://api.pruna.ai/v1/files" \65 -H "apikey: ${PRUNA_API_KEY}" \66 -F "content=@/path/to/source-video.mp4"6768curl -X POST "https://api.pruna.ai/v1/files" \69 -H "apikey: ${PRUNA_API_KEY}" \70 -F "content=@/path/to/reference-image.png"71```7273Use each response `urls.get` in `input.video` and `input.image`.7475### Create (async — recommended)7677```bash78curl -X POST 'https://api.pruna.ai/v1/predictions' \79 -H 'Content-Type: application/json' \80 -H "apikey: ${PRUNA_API_KEY}" \81 -H 'Model: p-video-animate' \82 -d '{83 "input": {84 "video": "https://api.pruna.ai/v1/files/source-video-abc123",85 "image": "https://api.pruna.ai/v1/files/reference-image-def456",86 "resolution": "720p",87 "target_fps": "original",88 "instruction_prompt": "Animate the reference subject using the motion from the source video."89 }90 }'91```9293Poll and download: follow `pruna-api`. Output duration follows the source video.9495Complete the random seed ritual from `generation-diversity` before writing prompts.9697### Create (sync — quick test only)9899```bash100curl -X POST 'https://api.pruna.ai/v1/predictions' \101 -H 'Content-Type: application/json' \102 -H "apikey: ${PRUNA_API_KEY}" \103 -H 'Model: p-video-animate' \104 -H 'Try-Sync: true' \105 -d '{106 "input": {107 "video": "https://api.pruna.ai/v1/files/source-video-abc123",108 "image": "https://api.pruna.ai/v1/files/reference-image-def456"109 }110 }'111```112113## Before generating1141151. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).1162. Ritual seed → draft optional **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`** (motion/audio source), **`image`** (subject), **`resolution`**, **`target_fps`**, and **`instruction_prompt`**.1173. **Pruna notes:** appearance from **image**, motion from **video**. Match framing/pose/limb visibility to the template’s first frame; repose with `p-image-edit` when close but not exact. Leave **`instruction_prompt`** blank unless you need one concrete end beat. Runware map: `referenceImages[0]` → `image`, `referenceVideos[0]` → `video`, `positivePrompt` → `instruction_prompt`, `settings.preserveAudio` → `save_audio`.118119## Required input120121- `video` (string URL): source RGB `.mp4`122- `image` (string URL): reference subject to animate123124## Common optional fields125126- `resolution`: `720p` (default) or `1080p`127- `target_fps`: `original` (default), `24`, or `48`128- `instruction_prompt` (string)129- `save_audio` (boolean, default `true`)130- `seed`, `disable_safety_checker`131132## Typical next steps133134Common follow-ons after this skill:135136| Skill | Description | Install |137| --- | --- | --- |138| `p-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |139| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |140| `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` |141| `avatar-multi-scene` | Use when someone wants the same person hosting several clips — multi-segment UGC, comparison reels, or mixed speaking and animated scenes with continuity. | `npx skills add PrunaAI/pruna-skills@avatar-multi-scene -y` |142| `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` |143