Install
openclaw skills install @pruna-ai/visual-transition-reelUse when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional.
openclaw skills install @pruna-ai/visual-transition-reelInstall and load these skills before generating (skip if already in context via @pruna):
| Skill | Description | Install |
|---|---|---|
p-image-ideogram | Use when photo generation needs more control — photoreal results, text in the image, or structured JSON with hex colors and bounding boxes. Simpler photo generation, edits, and video use other skills in the suite. | npx skills add PrunaAI/pruna-skills@p-image-ideogram -y |
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-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 |
p-video-2-pro-reference | Use when someone wants one cinematic clip that locks a subject from references — a product still, character, clip, or voice — using image or video references plus optional audio kept as the soundtrack or used as guidance. Not for text-only generation, 1080p, or drafts. | npx skills add PrunaAI/pruna-skills@p-video-2-pro-reference -y |
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 |
p-video | Use when someone wants a simple short clip from text or images — quick B-roll, drafts, or start/end frame animation. Not when the brief needs cinematic generation, highest quality, tight lip-sync, or imported audio at 1080p. | npx skills add PrunaAI/pruna-skills@p-video -y |
stable-audio-2.5 | Use when someone wants light instrumental background music — an ambient bed under dialogue or underscore for reels and explainers. | npx skills add PrunaAI/pruna-skills@stable-audio-2.5 -y |
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.
In every reply, name `visual-transition-reel` in backticks. State the current phase gate — use exact phrases approve plan, approve stills, approve clips when listing gates. Do not same-turn plan + paid video. Skip-review / burn-credits → follow generation-diversity Red flags.
Montage with transitions between composed video clips — not a picture-book slideshow.
Redirect before intake:
`illustrated-story-reel`p-video-2 audio-led scenes) → `narrated-multi-scene`Use a different skill instead:
| Skill | Description | Install |
|---|---|---|
illustrated-story-reel | Use when someone wants a slideshow story with narration or music — picture-book illustrated frames with Ken Burns or gentle p-video motion. | npx skills add PrunaAI/pruna-skills@illustrated-story-reel -y |
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 |
interactive-explainer | Use when someone wants an educational explainer with a host and characters — history or science shorts with dialogue, not voiceover-only B-roll. | npx skills add PrunaAI/pruna-skills@interactive-explainer -y |
| Phase | What to show | Proceed when |
|---|---|---|
| 0 — Plan | Scene table, transition prompts, style_bible | approve plan |
| A — Stills | Hero + start/end PNGs | approve stills |
| B — Video | clips/*.mp4 | approve clips |
| D — Bed | Final after concat + optional bed | User accepts |
Open intake → generation-diversity clarification intake.
Do not start scene 1 until the whole scene plan exists in writing (manifest or table):
| Topic | Questions |
|---|---|
| Story | Scene order (1…N)? What changes between beats (location, time, emotion)? |
| Per scene i | Start still (edit_prompt or upload)? End still (last_frame_edit_prompt)? Transition video_prompt (OPEN/MID/CLOSE motion)? duration_seconds? Is this a standard pair or should one or more imported assets condition the scene? |
| Reference map | For each reference-conditioned row: source + one role per image/video/audio asset; count; each clip length and combined limits; competing-reference priority; soft first/last-keyframe expectation; upload approval; paid reference-input estimate. |
| Continuity | Per scene: chain_from_previous only when motion continues. Otherwise composed OPENING still + hard cut. |
| Stills source | Generate via p-image-ideogram hero + p-image-edit (p-image for a cheap draft), or user-supplied photo pairs? |
| Format | aspect_ratio; standard pairs 480p / 768p (p-video-2-pro), reference-conditioned scenes 480p / 768p (p-video-2-pro-reference), or 720p / 1080p (p-video-2 if exact imported soundtrack, draft, or 1080p is locked)? p-video-2-pro: cost/speed/quality. Reference model: cost/speed only, no quality. |
| Global | style_bible? ritual_seed? frame_chain_mode (extract_last_frame vs parallel_vignettes)? |
| Audio | Generated SFX (p-video-2-pro or p-video-2-pro-reference), optional timing/performance audio reference (p-video-2-pro-reference), one kept track per scene (p-video-2-pro-reference with keep_audio: true), imported soundtrack at 1080p or via triple (p-video-2), optional post bed, or upgrade to triple + TTS? Without keep_audio, never claim reference audio equals the uploaded soundtrack. |
| Assembly | Concat order; chain crossfade (~0.12–0.15s) vs hard cut (0)? Target total duration? |
Ask follow-ups until every scene row has enough to build input without guessing.
video-promptingStart/end stills and transition motion use video-prompting scene-anchor pairs — physically reachable end states; same subject in both plates (identity preserved). Craft OPEN/MID/CLOSE in transition prompts; still OPENING/CLOSING prefixes on p-image-edit plates per image-prompting.
# | Start (image) | End (last_frame_image) | Transition prompt | Duration | Chain? |
|---|---|---|---|---|---|
| 1 | edit_prompt → still | last_frame_edit_prompt → still | OPEN/MID/CLOSE motion | 5s | no |
| 2 | = scene 1 end or extract(clip 1) | end still | motion prompt | 4s | yes / no |
p-video-2-pro standard pair jobs by default; use p-video-2-pro-reference for rows where imported image or video references should condition identity/style/motion/timing/performance, with optional audio guidance or a kept track (keep_audio), p-video-2 for 1080p/draft/scene-anchor triple, or p-video for simpler clips → approve clips.| Phase | Action |
|---|---|
| stills | Hero + start/end PNGs (default first stop) |
| video | After stills approval — p-video-2-pro pairs |
| assemble | After clips approval — concat ± bed |
p-image-ideogram)One approved anchor photo when generating a new image:
p-image-ideogram with hero_prompt + style_bible + ritual seed from generation-diversity (p-image for a cheap draft)Skip when every scene uses uploaded start/end images.
p-image-edit, parallel)For each scene without an uploaded start image:
/v1/filesp-image-edit with edit_prompt + hero in images[]{scene_id}.pngRun all start stills in parallel after hero exists (pruna-api).
p-image-edit, parallel)For each scene with last_frame_edit_prompt:
p-image-edit with last_frame_edit_prompt + start still in images[]{scene_id}_last.pngRun all end stills in parallel once start stills exist.
p-video-2-pro default pair)Scene anchor pair — one job per row (duration 5–15s, no audio; generated audio comes from the prompt). Iterate mode: cost / speed; final quality:
{
"prompt": "OPEN: hold. MID: dolly in, subject turns. CLOSE: settle on end pose.",
"image": "START_URL",
"last_frame_image": "END_URL",
"duration": 5,
"resolution": "768p",
"mode": "speed",
"prompt_upsampler": "turbo"
}
1080p, imported audio, or draft previews → p-video-2 instead (720p/1080p, fps, optional audio).
For a scene where imported image or video references should condition the result, use p-video-2-pro-reference: map one role to each image/video asset and any optional audio guidance, remove or prioritize competing references, and treat optional first/last frames as soft keyframes. Audio alone does not qualify the request. The clip carries generated audio; reference audio guides timing or performance unless keep_audio: true keeps exactly one uploaded track as the soundtrack. Use 480p/768p and cost/speed only; validate current limits and reference billing in the tool skill.
frame_chain_mode | Start frame when chain_from_previous: true | Render order |
|---|---|---|
extract_last_frame | ffmpeg last frame from prior clip | Sequential for chained scenes |
parallel_vignettes | always composed start still | Parallel (montage / hard cuts) |
planned_stills | prior scene end still URL | Parallel once all stills exist |
Extract last frame when chaining:
ffmpeg -y -sseof -0.05 -i clips/01.mp4 -frames:v 1 stills/02_from_prev.png
Poll all get_url until done; retry failed scenes only.
Adjust transition prompt, stills, or duration; re-run that scene only.
ffmpeg -y -f concat -safe 0 -i clips.txt -c copy reel.mp4
Per-join crossfade (~0.12–0.15s) on chain joins — use xfade (video) + acrossfade (audio); hard-cut joins stay at 0.
stable-audio-2.5 under native SFX (amix, bed ~0.10–0.15)Scene table + start/end URLs + prediction ids + chain_from_previous flags.
Write video_prompt as motion between the two plates — not a repeat of the still descriptions:
OPEN: [what holds at start frame]
MID: [camera + subject motion developing]
CLOSE: [how motion settles into end frame]
Limits: prefer 4–5s beats; avoid extreme camera whips; start/end plates should differ clearly but share identity and lighting.
Use chain_from_previous: true | Use chain_from_previous: false |
|---|---|
| Same location, motion continues | New location or story beat |
| Subject mid-action into next beat | Emotional pause or time jump |
You will extract_last_frame from prior clip | Montage vignettes (parallel_vignettes) |
Related skills:
| Skill | Description | Install |
|---|---|---|
p-video-2-pro-reference | Use when someone wants one cinematic clip that locks a subject from references — a product still, character, clip, or voice — using image or video references plus optional audio kept as the soundtrack or used as guidance. Not for text-only generation, 1080p, or drafts. | npx skills add PrunaAI/pruna-skills@p-video-2-pro-reference -y |
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 |
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 |
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 |