Create animated product videos with reveals and animations. Use when creating product demos, promotional videos, or dynamic visual content.
Turn a product and a goal into a complete Product Video Production Spec β one chosen video concept, a beat-by-beat shot list with timings, an animation and pacing plan, and generation-ready keyframe prompts. The governing principle: one video communicates one thing. Every beat either builds toward the single message (the reveal, the benefit, the transformation) or it gets cut. You produce the plan and the keyframes; rendering the motion happens downstream.
skills/creative/talking-head.skills/creative/remotion-script-writer; you can still run this skill first to define concept and beats, then hand the beat sheet over.skills/creative/social-graphics.skills/creative/creative-strategist first; its style guide feeds this skill.Ask in one tight batch, only what's missing:
skills/creative/creative-strategist style guide or existing brand assets to match?Infer from context instead of asking: aspect ratio from platform, mood from product category, style from any existing brand materials in the project. Don't stall: if the product and goal are clear, state your assumptions for the rest ("Assuming Reels, 12s, vertical, energetic β say otherwise") and proceed.
| If the message is⦠| Type | Duration | Beat structure |
|---|---|---|---|
| "This exists / it's new" | Reveal | 5β15s | hidden/obscured β reveal animation (fade, slide, rotate) β hero shot |
| "It does these 2β4 things" | Feature Showcase | 15β30s | feature 1 highlight β feature 2 β feature 3 β full product |
| "Here's the benefit in use" | In Action | 10β20s | product in environment β product being used β outcome shown |
| "Look at the change" | Transformation | 10β15s | before state β morph β after state |
| "Just show the object" (e-commerce, listings) | 360 Spin | 5β10s | continuous smooth rotation, clean background |
Commit to one type with a one-line reason. Offer a single backup only if two genuinely fit. Never showcase more than 4 features β cut to the strongest.
Aspect ratio by placement: 9:16 vertical (TikTok/Reels/Shorts/Stories), 16:9 (YouTube, web hero), 1:1 or 4:5 (feed posts). These map directly to --aspect-ratio values in the CLI.
Match to brand personality β pick exactly one and use its phrase verbatim in every keyframe prompt so frames stay consistent:
| Brand feel | Style | Prompt phrase |
|---|---|---|
| Elegant, calm | Smooth Fade | "smooth fade transitions, gentle pacing, elegant" |
| Modern, energetic | Dynamic Slide | "dynamic slide transitions, elements slide in, energetic pacing" |
| Cinematic, bold | Zoom & Rotate | "zoom and rotate moves, dynamic pacing, cinematic" |
| Sophisticated, fluid | Morphing | "smooth morphing transitions, fluid animation, sophisticated" |
| High-tech | Particle Effects | "particle effects, product materializes/dissolves, high-tech" |
Break the duration into 3β6 beats. For each beat: time range, what's on screen, camera/motion, and the transition out. Every beat must advance the single message; the last beat always holds the product + CTA for β₯2 seconds.
One keyframe per beat (two for a transformation's before/after). Each prompt = subject + state at that beat + the animation-style phrase + lighting + the same style/lighting descriptors across all frames (consistency is what makes frames read as one video). All keyframes use identical background and lighting descriptions unless the beat explicitly changes location.
If FAL_API_KEY (or FAL_KEY) is set, generate the keyframes now with the repo CLI β model fal-ai/nano-banana-pro via docs/fal_api.py:
python docs/creative_cli.py custom \
--category "video-keyframes" --name "beat-1-hero" \
--prompt "<keyframe prompt>" --aspect-ratio 9:16 --resolution 2K
If no key is set, deliver the prompts as ready-to-run commands. Note: nano-banana-pro generates still keyframes only β the motion between them is produced downstream (Remotion, a video generation tool, or an editor).
Always deliver this structure:
# Product Video Production Spec β [Product]
## Overview
- **Message (one sentence):** ...
- **Type:** Reveal | Feature Showcase | In Action | Transformation | 360 Spin β [one-line reason]
- **Platform / placement:** ... Β· **Aspect ratio:** ... Β· **Duration:** ...s Β· **Pacing:** Fast/Medium/Slow
- **Animation style:** [style + verbatim prompt phrase]
- **CTA:** ...
## Beat sheet
| # | Time | On screen | Camera / motion | Transition out |
|---|------|-----------|-----------------|----------------|
| 1 | 0β3s | ... | ... | ... |
| 2 | 3β7s | ... | ... | ... |
(final beat: product + CTA, held β₯2s)
## Keyframes
### KF-1 (beat 1) β [label]
> [full nano-banana-pro prompt]
`python docs/creative_cli.py custom --category "video-keyframes" --name "kf-1" --prompt "..." --aspect-ratio [ratio] --resolution 2K`
(repeat per beat; identical style/lighting descriptors across all)
## Audio direction
- Music: [genre/energy matched to pacing] Β· Sound design: [key moments] Β· VO: [none, or one line per beat]
## Production notes
- [render path: Remotion via skills/creative/remotion-script-writer / video gen tool / editor]
- [anything beat-specific: logo timing, text overlays, loop point for trade-show/spin videos]
skills/creative/creative-strategist β feeds in: the style guide (colors, mood, lighting language) that all keyframe prompts must obey.skills/creative/product-photography β feeds in: existing hero-shot prompts/lighting setups reused as the video's hero frame for consistency.skills/creative/image-generation β consumes: keyframe prompts, if the user wants deeper control over generation than the CLI one-liners.skills/creative/remotion-script-writer β consumes: the beat sheet + keyframes, when the video will be rendered as a Remotion composition.skills/creative/social-graphics β consumes: hero keyframes as source imagery for supporting static posts.