agentleFS
PrunaAIPrunaAI/pruna-skills/skills/video/p-video-avatar/SKILL.md

p-video-avatar

Skill20 starsChanged 46 days agoApache-2.0View on GitHub

Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo.

  • Reads credentials
  • Sends data out

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

3 rules. About 0 are common, 2 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Follow each skill's Before generating / craft sections — do not restate guide content here.

    line 24
  2. Distinctive:

    Use a different skill instead:

    line 56
  3. Very specific:

    Use urls.get as input.image.

    line 79

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Prerequisites

Install and load these skills before generating (skip if already in context via @pruna):

SkillDescriptionInstall
generation-diversityUse 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-promptingUse 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
image-promptingUse when crafting still-image prompts for any generative model — composition, identity sheets, edits, try-on, and photoreal personas.npx skills add PrunaAI/pruna-skills@image-prompting -y
pruna-apiUse 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-avatar` 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. Multiple talking-head scenes with the same person → redirect to avatar-multi-scene (this skill is one clip only). Draft host motion with Prompt craft (dynamic + faithful) — do not paste skill examples.

Skill boundary

This skill = one p-video-avatar prediction per invocation.

Out of scope (stop and redirect):

  • Several host segments with continuity → avatar-multi-scene
  • Multi-scene assembly, concat, or parallel scene batches → workflow skills (avatar-multi-scene, narrated-multi-scene, …)
  • Silent B-roll / no talking head → p-video
  • Motion transfer from a template video → p-video-animate

Prompt craft (dynamic + faithful)

video_prompt (and optional voice_prompt) must be fresh per clip and faithful to the user's host beat. Diversity applies to camera nuance and delivery wording — not to changing who speaks or what they say.

DoDon't
Ritual seed from generation-diversity before drafting; unique video_prompt per clip in multi-scene workReuse one video_prompt string across a reel, or paste this skill's sample (Medium close-up speaking directly to lens) when the user asked for something else
Lock portrait identity from image; match head motion and pacing to voice_script or uploaded audioInvent a new persona, wardrobe, or script line the user did not approve
Use video-prompting dramaturgy — one camera move, physics-safe head motion, mouth visibleDefault The person is talking. for anything beyond a quick test
Show video_prompt (+ script/voice fields) before POST when wording is not lockedSilent regen that changes tone, framing, or delivery from the brief

Fidelity check (before pay): the clip must still be the user's speaker, script/audio, and approved host beat. If mouth visibility or pacing drifts from the brief, rewrite.

When NOT to use

Use a different skill instead:

SkillDescriptionInstall
p-video-2-proUse 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
p-video-2Use 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
p-videoUse when someone wants a simple short clip from text or images — quick B-roll, drafts, or start/end frame animation. Not when the brief needs cinematic generation, highest quality, tight lip-sync, or imported audio at 1080p.npx skills add PrunaAI/pruna-skills@p-video -y
p-video-animateUse 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
p-video-replaceUse 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-sceneUse 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
avatar-single-sceneUse when someone wants one polished host-on-camera beat — a speaking person with intake and approval gates before generation.npx skills add PrunaAI/pruna-skills@avatar-single-scene -y
video-editingUse 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 portrait

curl -X POST "https://api.pruna.ai/v1/files" \
  -H "apikey: ${PRUNA_API_KEY}" \
  -F "content=@/path/to/portrait.png"

Use urls.get as 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-avatar' \
  -d '{
    "input": {
      "image": "https://api.pruna.ai/v1/files/FILE_ID",
      "voice_script": "Hey — so we shipped something I've wanted for a while.",
      "voice": "Puck (Male)",
      "voice_language": "English (US)",
      "voice_prompt": "Natural conversational tone — relaxed pacing, real pauses.",
      "resolution": "720p",
      "video_prompt": "Medium close-up speaking directly to lens, subtle push-in",
      "negative_prompt": "subtitles, captions, on-screen text, watermark, logo, typography, letters, words",
      "negative_prompt_strength": 0.35
    }
  }'

Poll and download: follow pruna-api.

Complete the random seed ritual from generation-diversity before writing prompts — omit seed unless the user supplied api_seed. Confirm voice_language with the user.

For multiple clips: create all jobs in parallel (async, no Try-Sync), then batch-poll.

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-avatar' \
  -H 'Try-Sync: true' \
  -d '{
    "input": {
      "image": "https://api.pruna.ai/v1/files/FILE_ID",
      "voice_script": "Hey — so we shipped something I've wanted for a while.",
      "voice": "Puck (Male)",
      "voice_language": "English (US)",
      "voice_prompt": "Natural conversational tone — relaxed pacing, real pauses.",
      "resolution": "720p",
      "video_prompt": "Medium close-up speaking directly to lens, subtle push-in"
    }
  }'

Uploaded narration (audio wins over voice_script)

Generate gemini-3.1-flash-tts → upload to /v1/files. Pass as input.audio with portrait image. If both audio and voice_script are set, audio wins.

curl -X POST 'https://api.pruna.ai/v1/predictions' \
  -H 'Content-Type: application/json' \
  -H "apikey: ${PRUNA_API_KEY}" \
  -H 'Model: p-video-avatar' \
  -d '{
    "input": {
      "image": "https://api.pruna.ai/v1/files/PORTRAIT_ID",
      "audio": "https://api.pruna.ai/v1/files/NARRATION_ID",
      "resolution": "720p",
      "video_prompt": "Medium close-up, natural head motion matching narration"
    }
  }'

Before generating

  1. Complete Prerequisites guide reading order (generation-diversity → video-prompting).
  2. Ritual seed → draft a dynamic + faithful video_prompt (section above) → confirm image URL, voice_script (or audio), voice / voice_language, voice_prompt, video_prompt, and resolution. Explicit user confirmation before any paid call.
  3. Pruna notes: P-API uses snake_case (voice_script, video_prompt, …). Mouth must be visible on the plate. Unique video_prompt per clip — do not reuse one string across a multi-scene reel. Default The person is talking. is quick-test only.

Negative prompt (experimental — suppress on-screen text)

FieldDefaultRule
negative_prompt""Comma-separated elements to suppress
negative_prompt_strength0Both must be set: non-empty prompt and strength > 0

Starter: subtitles, captions, on-screen text, burned-in text, watermark, logo, typography, letters, words. Start strength around 0.3–0.4. See avatar-single-scene for gated host workflows.

Typical next steps

Common follow-ons after this skill:

SkillDescriptionInstall
avatar-multi-sceneUse 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
avatar-single-sceneUse when someone wants one polished host-on-camera beat — a speaking person with intake and approval gates before generation.npx skills add PrunaAI/pruna-skills@avatar-single-scene -y
video-editingUse 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

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.