Product Video
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.
When to use / when not to
- Use for product-centric motion content: reveals, feature showcases, product-in-action, transformations, 360 spins.
- If the video is fronted by a person (presenter, testimonial, UGC) → use
skills/creative/talking-head.
- If the video will be rendered programmatically in Remotion (UI demos, code tutorials, data viz) → use
skills/creative/remotion-script-writer; you can still run this skill first to define concept and beats, then hand the beat sheet over.
- If the user needs static assets (posts, banners) →
skills/creative/social-graphics.
- If there is no brand style guide yet and the user cares about brand consistency → run
skills/creative/creative-strategist first; its style guide feeds this skill.
Intake
Ask in one tight batch, only what's missing:
- Product — what is it and what's the one thing the video must communicate (new launch? a feature? a benefit? a before/after)?
- Where it runs — TikTok/Reels/Shorts, product page, YouTube pre-roll, trade show loop? (This decides aspect ratio, duration, pacing.)
- What the viewer should do after — the CTA.
- Brand style — is there a
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.
Workflow
1. Choose the video type (decision rule, not a menu)
| 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.
2. Set pacing from platform
- Fast (5–10s, quick snappy cuts): social feeds, ads, anything skippable. Hook in the first 2 seconds.
- Medium (10–20s, smooth transitions): product pages, marketing site, email embeds.
- Slow (20–30s, deliberate luxurious moves): premium/luxury products, storytelling. Only choose slow if the product's price point earns the patience.
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.
3. Pick one animation style
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" |
4. Write the beat sheet
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.
5. Write keyframe prompts
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).
6. Self-check against the quality bar, then deliver the spec.
Required output format
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]
Quality bar (check before delivering)
- One message; if you can't state it in one sentence, restart at step 1.
- Hook lands within the first 2 seconds for Fast pacing, 4 for Medium.
- Beat count 3–6; no beat shorter than 1.5s; timings sum exactly to the stated duration.
- Every keyframe prompt contains the same animation-style phrase and the same lighting/background descriptors (unless the beat changes location) — inconsistent frames are the #1 failure mode.
- Prompts specify "smooth", "fluid" motion language — never leave motion quality implicit.
- CTA present in the final beat, held ≥2 seconds.
- No invented performance claims ("this format gets 3x engagement") — pacing/duration guidance above is heuristic, label it as such if asked.
Integration
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.
1---2name: product-video3description: Plan an animated product video end-to-end: pick the video type, define the animation style and pacing, write a beat-by-beat shot list, and produce ready-to-run keyframe prompts. Use whenever the user wants a product video, product animation, launch video, promo or ad video, animated product reveal, 360 spin, feature showcase, or 'a short video for my product' — even if they only say 'I need a video for the launch' or 'make my product look good in motion'. Also use to storyboard a video another tool will render. Produces a Product Video Production Spec: concept, beat sheet with timings and transitions, keyframe prompt list for fal-ai/nano-banana-pro, and audio/CTA direction.4---5
6# Product Video
7
8Turn 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.
9
10## When to use / when not to
11
12- Use for product-centric motion content: reveals, feature showcases, product-in-action, transformations, 360 spins.
13- If the video is fronted by a person (presenter, testimonial, UGC) → use `skills/creative/talking-head`.
14- If the video will be rendered programmatically in Remotion (UI demos, code tutorials, data viz) → use `skills/creative/remotion-script-writer`; you can still run this skill first to define concept and beats, then hand the beat sheet over.
15- If the user needs static assets (posts, banners) → `skills/creative/social-graphics`.
16- If there is no brand style guide yet and the user cares about brand consistency → run `skills/creative/creative-strategist` first; its style guide feeds this skill.
17
18## Intake
19
20Ask in one tight batch, only what's missing:
21
221. **Product** — what is it and what's the one thing the video must communicate (new launch? a feature? a benefit? a before/after)?
232. **Where it runs** — TikTok/Reels/Shorts, product page, YouTube pre-roll, trade show loop? (This decides aspect ratio, duration, pacing.)
243. **What the viewer should do after** — the CTA.
254. **Brand style** — is there a `skills/creative/creative-strategist` style guide or existing brand assets to match?
26
27Infer 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.
28
29## Workflow
30
31### 1. Choose the video type (decision rule, not a menu)
32
33| If the message is… | Type | Duration | Beat structure |
34|---|---|---|---|
35| "This exists / it's new" | **Reveal** | 5–15s | hidden/obscured → reveal animation (fade, slide, rotate) → hero shot |
36| "It does these 2–4 things" | **Feature Showcase** | 15–30s | feature 1 highlight → feature 2 → feature 3 → full product |
37| "Here's the benefit in use" | **In Action** | 10–20s | product in environment → product being used → outcome shown |
38| "Look at the change" | **Transformation** | 10–15s | before state → morph → after state |
39| "Just show the object" (e-commerce, listings) | **360 Spin** | 5–10s | continuous smooth rotation, clean background |
40
41Commit 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.
42
43### 2. Set pacing from platform
44
45- **Fast** (5–10s, quick snappy cuts): social feeds, ads, anything skippable. Hook in the first 2 seconds.
46- **Medium** (10–20s, smooth transitions): product pages, marketing site, email embeds.
47- **Slow** (20–30s, deliberate luxurious moves): premium/luxury products, storytelling. Only choose slow if the product's price point earns the patience.
48
49Aspect 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.
50
51### 3. Pick one animation style
52
53Match to brand personality — pick exactly one and use its phrase verbatim in every keyframe prompt so frames stay consistent:
54
55| Brand feel | Style | Prompt phrase |
56|---|---|---|
57| Elegant, calm | Smooth Fade | "smooth fade transitions, gentle pacing, elegant" |
58| Modern, energetic | Dynamic Slide | "dynamic slide transitions, elements slide in, energetic pacing" |
59| Cinematic, bold | Zoom & Rotate | "zoom and rotate moves, dynamic pacing, cinematic" |
60| Sophisticated, fluid | Morphing | "smooth morphing transitions, fluid animation, sophisticated" |
61| High-tech | Particle Effects | "particle effects, product materializes/dissolves, high-tech" |
62
63### 4. Write the beat sheet
64
65Break 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.
66
67### 5. Write keyframe prompts
68
69One 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.
70
71If `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`:
72
73```bash
74python docs/creative_cli.py custom \
75 --category "video-keyframes" --name "beat-1-hero" \
76 --prompt "<keyframe prompt>" --aspect-ratio 9:16 --resolution 2K
77```
78
79If 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).
80
81### 6. Self-check against the quality bar, then deliver the spec.
82
83## Required output format
84
85Always deliver this structure:
86
87```markdown
88# Product Video Production Spec — [Product]
89
90## Overview
91- **Message (one sentence):** ...
92- **Type:** Reveal | Feature Showcase | In Action | Transformation | 360 Spin — [one-line reason]
93- **Platform / placement:** ... · **Aspect ratio:** ... · **Duration:** ...s · **Pacing:** Fast/Medium/Slow
94- **Animation style:** [style + verbatim prompt phrase]
95- **CTA:** ...
96
97## Beat sheet
98| # | Time | On screen | Camera / motion | Transition out |
99|---|------|-----------|-----------------|----------------|
100| 1 | 0–3s | ... | ... | ... |
101| 2 | 3–7s | ... | ... | ... |
102(final beat: product + CTA, held ≥2s)
103
104## Keyframes
105### KF-1 (beat 1) — [label]
106> [full nano-banana-pro prompt]
107`python docs/creative_cli.py custom --category "video-keyframes" --name "kf-1" --prompt "..." --aspect-ratio [ratio] --resolution 2K`
108(repeat per beat; identical style/lighting descriptors across all)
109
110## Audio direction
111- Music: [genre/energy matched to pacing] · Sound design: [key moments] · VO: [none, or one line per beat]
112
113## Production notes
114- [render path: Remotion via skills/creative/remotion-script-writer / video gen tool / editor]
115- [anything beat-specific: logo timing, text overlays, loop point for trade-show/spin videos]
116```
117
118## Quality bar (check before delivering)
119
120- One message; if you can't state it in one sentence, restart at step 1.
121- Hook lands within the first 2 seconds for Fast pacing, 4 for Medium.
122- Beat count 3–6; no beat shorter than 1.5s; timings sum exactly to the stated duration.
123- Every keyframe prompt contains the same animation-style phrase and the same lighting/background descriptors (unless the beat changes location) — inconsistent frames are the #1 failure mode.
124- Prompts specify "smooth", "fluid" motion language — never leave motion quality implicit.
125- CTA present in the final beat, held ≥2 seconds.
126- No invented performance claims ("this format gets 3x engagement") — pacing/duration guidance above is heuristic, label it as such if asked.
127
128## Integration
129
130- `skills/creative/creative-strategist` → feeds in: the style guide (colors, mood, lighting language) that all keyframe prompts must obey.
131- `skills/creative/product-photography` → feeds in: existing hero-shot prompts/lighting setups reused as the video's hero frame for consistency.
132- `skills/creative/image-generation` → consumes: keyframe prompts, if the user wants deeper control over generation than the CLI one-liners.
133- `skills/creative/remotion-script-writer` → consumes: the beat sheet + keyframes, when the video will be rendered as a Remotion composition.
134- `skills/creative/social-graphics` → consumes: hero keyframes as source imagery for supporting static posts.