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-edit` in backticks, confirm PRUNA_API_KEY (or stop with signup links from pruna-api), then ask for the source video (max 15s) and edit brief. Open intake → generation-diversity clarification intake before the first POST. Draft edits with Prompt craft (dynamic + faithful) — do not paste skill examples. Redirect when When NOT to use fits better.
Prompt craft (dynamic + faithful)
prompt is surgical and request-locked. One principal change per run. Describe the desired final state, then name what must stay unchanged. Change only what the user asked; keep camera, motion, audio, and unmentioned elements identical.
| Do |
Don't |
Formula: Change only [X]. Preserve [geometry / motion / camera / lighting / unmentioned subjects]. |
Vague make it better / mood-only rewrites that invent a new scene |
| Name every must-keep from the user (subject, camera path, lighting, props) |
Drop keep-clauses and hope the model preserves them |
| Ritual seed before drafting; fresh wording for keep clauses when the brief allows |
Copy this skill's sample (sunset sky) when the user described a different edit |
Point at refs when used: add the accessory from the first reference |
Vague use the reference with no source slot |
Show prompt before POST when wording is not locked |
Silent edit that changes camera, cast, or unrequested regions |
Fidelity check (before pay): the prompt must still satisfy the user’s change and every stated keep. Do not “spice” extras when they asked for one attribute or environment edit.
Weak jobs (avoid or warn): a brand-new scene/plot; adding an object with its own independent motion (especially a new in-hand shape); changing camera angle, camera motion, or zoom.
Skill boundary
|
p-video-edit |
p-video-replace |
| User question |
Change the color / environment / object / text / lighting in this clip? |
Replace this person in this video? |
| Goal |
Instruction edit of the source clip |
Swap identity into existing footage |
| Reference images |
Optional images — 0 to 4 |
Required images — 1 to 4 |
| Prompt field |
prompt |
instruction_prompt |
Use p-video-replace when the job is a character swap from required reference stills. Use this skill for prompt-driven attribute, environment, object, text, or lighting edits.
When NOT to use
Use a different skill instead:
| Skill |
Description |
Install |
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 |
p-video |
Use when someone wants a simple short clip from text or images — quick B-roll, drafts, or start/end frame animation. Not when the brief needs the highest quality or tight lip-sync. |
npx skills add PrunaAI/pruna-skills@p-video -y |
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-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 |
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 |
HTTP (curl)
Upload source video
curl -X POST "https://api.pruna.ai/v1/files" \
-H "apikey: ${PRUNA_API_KEY}" \
-F "content=@/path/to/source-video.mp4"
Use the response urls.get in input.video. Source video maximum length: 15 seconds.
Optional reference images
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.images (up to 4; jpg, jpeg, png, webp).
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-edit' \
-d '{
"input": {
"video": "https://api.pruna.ai/v1/files/source-video-abc123",
"prompt": "Change only the sky to a sunset. Preserve the subject, camera path, and lighting on the foreground."
}
}'
Poll and download: follow pruna-api. Output duration follows the source video. Billing is per returned second ($0.045 standard, $0.025 draft). Rate limit: 50 requests per minute.
Complete the random seed ritual from generation-diversity before writing prompts — do not pass the ritual string as API seed. Optional seed only when the user requests reproducibility.
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-edit' \
-H 'Try-Sync: true' \
-d '{
"input": {
"video": "https://api.pruna.ai/v1/files/source-video-abc123",
"prompt": "Change only the sky to a sunset. Preserve the subject, camera path, and lighting on the foreground.",
"draft": true
}
}'
Before generating
- Complete Prerequisites guide reading order (
generation-diversity → video-prompting).
- Ritual seed → draft a dynamic + faithful
prompt (section above) → confirm video (≤15s), prompt, optional images (0–4), draft, save_audio, and edit intent (attribute / remove / add / environment / relight / text / reference-guided).
- Pruna notes: one principal change per run. Identity or product match comes from optional
images; the edit instruction lives in prompt. Vague targets and brand-new scenes drop quality. Do not send a task field — it is not in the public API.
Required input
video (string URL): source video to edit. Maximum length: 15 seconds
prompt (string): text instruction describing the edit
Common optional fields
images (array of up to 4 string URLs): reference image(s) for reference-guided editing (jpg, jpeg, png, webp)
prompt_upsampling (boolean, default true)
draft (boolean, default false): faster, lower-quality preview; billed at $0.025 per output second
save_audio (boolean, default true)
seed (integer): set only for reproducible reruns
Typical next steps
Common follow-ons after this skill:
| Skill |
Description |
Install |
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-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 |
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-edit3description: 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.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-edit` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for the source video (max **15s**) and edit brief. Open intake → `generation-diversity` clarification intake before the first `POST`. Draft edits with **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.2425## Prompt craft (dynamic + faithful)2627`prompt` is **surgical** and **request-locked**. One principal change per run. Describe the desired final state, then name what must stay unchanged. Change only what the user asked; keep camera, motion, audio, and unmentioned elements identical.2829| Do | Don't |30| ---------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |31| Formula: `Change only [X]. Preserve [geometry / motion / camera / lighting / unmentioned subjects].` | Vague `make it better` / mood-only rewrites that invent a new scene |32| Name every **must-keep** from the user (subject, camera path, lighting, props) | Drop keep-clauses and hope the model preserves them |33| Ritual seed before drafting; fresh wording for keep clauses when the brief allows | Copy this skill's sample (`sunset sky`) when the user described a different edit |34| Point at refs when used: `add the accessory from the first reference` | Vague `use the reference` with no source slot |35| Show `prompt` before `POST` when wording is not locked | Silent edit that changes camera, cast, or unrequested regions |3637**Fidelity check (before pay):** the prompt must still satisfy the user’s change **and** every stated keep. Do not “spice” extras when they asked for one attribute or environment edit.3839**Weak jobs (avoid or warn):** a brand-new scene/plot; adding an object with its own independent motion (especially a new in-hand shape); changing camera angle, camera motion, or zoom.4041## Skill boundary4243| | **p-video-edit** | **p-video-replace** |44| -------------------- | ------------------------------------------------------------------------- | --------------------------------------- |45| **User question** | *Change the color / environment / object / text / lighting in this clip?* | *Replace this person in this video?* |46| **Goal** | Instruction edit of the **source clip** | Swap identity **into** existing footage |47| **Reference images** | Optional `images` — **0 to 4** | Required `images` — **1 to 4** |48| **Prompt field** | `prompt` | `instruction_prompt` |4950**Use** `p-video-replace` when the job is a character swap from required reference stills. **Use this skill** for prompt-driven attribute, environment, object, text, or lighting edits.5152## When NOT to use5354Use a different skill instead:5556| Skill | Description | Install |57| --- | --- | --- |58| `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` |59| `p-video` | Use when someone wants a simple short clip from text or images — quick B-roll, drafts, or start/end frame animation. Not when the brief needs the highest quality or tight lip-sync. | `npx skills add PrunaAI/pruna-skills@p-video -y` |60| `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` |61| `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` |62| `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` |6364## HTTP (curl)6566### Upload source video6768```bash69curl -X POST "https://api.pruna.ai/v1/files" \70 -H "apikey: ${PRUNA_API_KEY}" \71 -F "content=@/path/to/source-video.mp4"72```7374Use the response `urls.get` in `input.video`. Source video maximum length: **15 seconds**.7576### Optional reference images7778```bash79curl -X POST "https://api.pruna.ai/v1/files" \80 -H "apikey: ${PRUNA_API_KEY}" \81 -F "content=@/path/to/reference-image.png"82```8384Use each response `urls.get` in `input.images` (up to 4; `jpg`, `jpeg`, `png`, `webp`).8586### Create (async — recommended)8788```bash89curl -X POST 'https://api.pruna.ai/v1/predictions' \90 -H 'Content-Type: application/json' \91 -H "apikey: ${PRUNA_API_KEY}" \92 -H 'Model: p-video-edit' \93 -d '{94 "input": {95 "video": "https://api.pruna.ai/v1/files/source-video-abc123",96 "prompt": "Change only the sky to a sunset. Preserve the subject, camera path, and lighting on the foreground."97 }98 }'99```100101Poll and download: follow `pruna-api`. Output duration follows the source video. Billing is per **returned** second (`$0.045` standard, `$0.025` draft). Rate limit: 50 requests per minute.102103Complete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`. Optional `seed` only when the user requests reproducibility.104105### Create (sync — quick test only)106107```bash108curl -X POST 'https://api.pruna.ai/v1/predictions' \109 -H 'Content-Type: application/json' \110 -H "apikey: ${PRUNA_API_KEY}" \111 -H 'Model: p-video-edit' \112 -H 'Try-Sync: true' \113 -d '{114 "input": {115 "video": "https://api.pruna.ai/v1/files/source-video-abc123",116 "prompt": "Change only the sky to a sunset. Preserve the subject, camera path, and lighting on the foreground.",117 "draft": true118 }119 }'120```121122## Before generating1231241. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).1252. Ritual seed → draft a **dynamic + faithful** `prompt` (section above) → confirm `video` (≤15s), `prompt`, optional `images` (0–4), `draft`, `save_audio`, and edit intent (attribute / remove / add / environment / relight / text / reference-guided).1263. **Pruna notes:** one principal change per run. Identity or product match comes from optional `images`; the edit instruction lives in `prompt`. Vague targets and brand-new scenes drop quality. Do not send a `task` field — it is not in the public API.127128## Required input129130- `video` (string URL): source video to edit. Maximum length: 15 seconds131- `prompt` (string): text instruction describing the edit132133## Common optional fields134135- `images` (array of up to 4 string URLs): reference image(s) for reference-guided editing (`jpg`, `jpeg`, `png`, `webp`)136- `prompt_upsampling` (boolean, default `true`)137- `draft` (boolean, default `false`): faster, lower-quality preview; billed at `$0.025` per output second138- `save_audio` (boolean, default `true`)139- `seed` (integer): set only for reproducible reruns140141## Typical next steps142143Common follow-ons after this skill:144145| Skill | Description | Install |146| --- | --- | --- |147| `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` |148| `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` |149| `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` |150