Launch Video & Visuals
This skill covers the creation of visual and video assets for product launches. These are the highest-impact assets you'll create — a great demo video or GIF stops the scroll, communicates value faster than words, and gets shared. A bad one can actively undermine the launch by making the product look confusing or unpolished.
The media hierarchy
For most launches, the decision of what to create follows this order:
- Demo video — Shows the product in action with context. Best for explaining how something works.
- Animated GIF or screen recording loop — Shorter, auto-plays inline on social. Best for showing a specific interaction.
- Annotated screenshot — Static, fast to produce, good for showing a specific state or feature.
- Diagram or illustration — For architecture, concepts, or things that can't be screenshotted.
In general: use video when the flow matters, GIF when a single interaction communicates the value, and screenshots when one specific state is the point.
Demo video
Length by platform
| Platform |
Target length |
Hard limit |
| Product Hunt |
60-90 seconds |
3 minutes |
| Landing page hero |
60-90 seconds |
2 minutes |
| X/Twitter embedded |
30-45 seconds |
2 minutes 20 seconds |
| LinkedIn |
45-90 seconds |
10 minutes |
| YouTube (full demo) |
3-5 minutes |
— |
The platform hard limits aren't just technical — engagement drops sharply beyond them. A 4-minute PH video is effectively no video.
Script structure (for short-form demo)
Keep this to 5-7 beats:
- Problem (5-10 seconds) — State the problem being solved. One sentence. Not a long setup.
- Introduce the solution (5-10 seconds) — Name the product and the core value prop.
- Demo: happy path (30-60 seconds) — Show the primary use case working end-to-end. This is the heart of the video.
- Key capabilities (10-20 seconds) — 2-3 quick cuts showing secondary features. Keep it fast.
- Proof point (5-10 seconds) — A metric, customer quote, or benchmark. One slide or voiceover line.
- CTA (5 seconds) — One action. "Try it free at [URL]" or "Sign up at [URL]."
Avoid: long intros, animated logos (audiences click away), slow product startup screens, and anything that doesn't show the product doing something.
Recording tips
- Use a demo environment, not production. Clean data, no embarrassing customer info, reliable state.
- Slow down deliberate interactions. People follow cursor movements better when you move intentionally, not at normal working speed.
- Record at 2x your target resolution. Record at 2880×1800 or 1440×900 (Retina), then downscale for delivery. This gives you zoom room and looks sharper.
- Hide everything extraneous. Close Slack notifications, hide browser bookmarks bar, use a clean browser profile. Distractions in the recording erode trust.
- Capture more than you'll use. Record full workflows and cut in post. It's faster than re-recording because you missed a beat.
Voiceover vs. silent
Both work. The choice depends on context:
- Voiceover: Warmer, more explanatory, works better on YouTube and landing pages. Requires a clean recording environment and good audio quality. Bad audio is worse than no audio.
- Silent with text overlays: Works better on autoplay-with-mute contexts (social feeds). Faster to produce. Requires clear on-screen labels.
If you're unsure: record the demo silently, add text overlays for key moments, then decide whether to add voiceover based on the platform.
Tooling
- Screen recording: Loom (quick), Screen Studio (polished output, good for marketing), QuickTime (raw), OBS (full control)
- Video editing: CapCut (fast, easy), DaVinci Resolve (professional, free), Final Cut Pro, Adobe Premiere
- Motion design / logo animations: After Effects, Motion (Mac), Jitter (web-based)
- Captions/subtitles: Descript (also good for editing by transcript), Captions app, Rev
- Programmatic video: Remotion (React-based — see section below)
Programmatic video with Remotion
For teams that ship fast and don't want to wait on a motion designer for every launch, programmatic video lets you write React components and render them as MP4 files. The video is code: version-controlled, parametrized, and iteratable without a timeline editor.
When to use programmatic video
Works well for:
- Launch announcement clips (15-45 seconds) for social media
- Product walkthrough videos showing UI in action
- Feature highlight reels with text overlays and screenshots
- Data-driven videos (benchmark comparisons, growth metrics)
- Templated videos you'll reuse across launches (just swap content)
Less suited for:
- Cinematic brand videos requiring complex motion design
- Founder narrative videos with live footage
- Videos that need extensive custom illustration or 3D
For major Tier 1 launches, you might combine approaches: programmatic video for social clips and a professional motion designer for the hero video.
Remotion setup
npx create-video@latest my-launch-video
cd my-launch-video
npm start # Opens Remotion Studio for preview
Key concepts:
- Composition: A video is a React component with a defined duration (in frames) and framerate
- useCurrentFrame(): Hook that returns the current frame number — use it to drive animations
- Sequence: Component that offsets its children in time — use it to sequence scenes
- spring(): Animation utility for natural-feeling motion (ease-in/out)
- Assets: Images, screenshots, and audio go in the
public/ folder
Scene planning template
Before writing code, plan the video scene by scene:
| Field |
Description |
| Scene # |
Sequential number |
| Duration |
Seconds (e.g., "3s") |
| Purpose |
What this scene communicates (one sentence) |
| Text content |
Exact text that appears on screen |
| Visual elements |
Screenshots, icons, code snippets, diagrams |
| Animation style |
Fade in, slide from left, typewriter, scale up, etc. |
| Transition out |
How this scene exits (fade, cut, slide) |
Code patterns
Sequenced scenes:
<Sequence from={0} durationInFrames={90}>
<HookScene />
</Sequence>
<Sequence from={90} durationInFrames={120}>
<DemoScene />
</Sequence>
<Sequence from={210} durationInFrames={90}>
<CTAScene />
</Sequence>
Text reveal:
const frame = useCurrentFrame();
const opacity = interpolate(frame, [0, 20], [0, 1], {
extrapolateRight: 'clamp',
});
return <h1 style={{ opacity }}>Your primary value prop here</h1>;
Iteration workflow
- Plan scenes using the template above
- Collect assets — screenshots, logos, product images →
public/ folder
- Write or prompt the first draft — get the structure and content right
- Preview in Studio — watch it through, note timing and visual issues
- Iterate — adjust timing, animation, and content. Usually takes 2-4 rounds
- Render —
npx remotion render src/index.ts MyComposition out/video.mp4
- Check platform specs — verify resolution and file size work for your target platform
GIFs and short loops
GIFs auto-play on most platforms and are ideal for showing a single interaction — a UI state change, a CLI command output, an API response. They're faster to produce than video and often more effective for social posts.
When to use GIF vs. video
Use GIF when:
- The entire value can be communicated in 3-8 seconds
- You're showing a single UI interaction, not a workflow
- The asset will be embedded in a tweet or README where video playback is less reliable
Use video when:
- The value requires context (problem → solution)
- The interaction takes more than 8 seconds to demonstrate
- You need audio
Recording GIFs
- Capture at 2x, downscale to target resolution
- Keep under 5MB for web performance (use palette reduction or fewer frames)
- Loop seamlessly — the start and end state should match so the loop doesn't jar
- Tool options: CleanShot X (recommended for Mac), Kap, Giphy Capture, Gifski (for converting video clips)
Optimizing GIF file size
- Reduce color palette (256 → 128 or 64 colors for many UI recordings)
- Drop frames (30fps → 15fps is rarely noticeable in UI recordings)
- Crop aggressively — show only what's changing, not the whole screen
- Convert to MP4 with autoplay/loop instead of GIF when the platform supports it (MP4 is ~10x smaller than equivalent GIF)
Screenshots
Screenshots are underused in launches. A well-composed screenshot with clear annotation communicates a feature faster than a paragraph.
Composition
- Show the product in a meaningful state — not an empty screen, not a loading state, not a screen full of dummy data that makes features hard to see
- Use a clean environment — browser without tabs, dark or light mode consistently applied, no personal data visible
- Highlight the relevant area — callout boxes, arrows, or highlights direct attention to what matters
Annotation tools
- CleanShot X (Mac) — captures, annotates, and exports in one flow
- Skitch — simple annotations
- Figma / Sketch — for more polished product shots with custom styling
Browser framing
For web products, use a browser frame to make screenshots look intentional rather than raw. Tools like Screely, Browserframe, or custom Figma templates add a browser chrome overlay.
Multiple screenshots for feature grids
Landing pages and Product Hunt galleries often need 3-5 screenshots showing different aspects of the product. Plan these as a set:
- Each screenshot shows a distinct capability
- Consistent visual treatment (same zoom level, same browser theme, same annotation style)
- Tell a progression: entry → key action → result
Asset checklist by tier
Tier 1
Tier 2
Tier 3
Open Graph images
Every piece of content that gets shared as a link (blog post, landing page, changelog entry) should have a custom Open Graph (OG) image. The OG image is what appears when the link is pasted into Twitter, Slack, iMessage, or LinkedIn.
- Size: 1200×630px
- Content: Product name + primary value prop. Treat it like a billboard — readable at small size
- Consistency: Use a template so all your launch content has a cohesive look
- Tools: Figma template, Vercel OG (code-generated), Bannerbear (automated)
Video specs by platform
| Platform |
Resolution |
Max length |
Format |
Notes |
| X/Twitter |
1280×720 or 1920×1080 |
2:20 |
MP4 (H.264) |
Autoplay muted — add captions |
| LinkedIn |
1920×1080 |
10 min |
MP4 (H.264) |
Square (1080×1080) works well in feed |
| Product Hunt |
1920×1080 |
90 sec |
MP4 |
Keep under 50MB |
| Website hero |
1920×1080 |
No limit |
MP4/WebM |
Consider autoplay loop (no audio) |
Companion skills
- launch-strategy — determines which assets are needed for the launch tier
- launch-tweet — the GIFs and videos go in the tweet (attached, not linked)
- launch-landing-page — the demo video and screenshots go on the page
- launch-distribution — per-platform format requirements
1---2name: launch-video3description: Plan and produce video and visual assets for product launches — demo videos, GIFs, screenshots, and programmatic video with Remotion. Use this skill whenever someone asks to create a demo video, record a product walkthrough, make a launch GIF, plan visual assets for a launch, or decide what media to create for an announcement. Also trigger for "what should our demo video show," "how do we record the product," "I need visuals for the launch," "make a video for this launch," or any request about creating non-text media tied to a product release. Covers video scripting, recording, programmatic video (Remotion), GIF creation, screenshot best practices, and per-platform format guidance.4---56# Launch Video & Visuals78This skill covers the creation of visual and video assets for product launches. These are the highest-impact assets you'll create — a great demo video or GIF stops the scroll, communicates value faster than words, and gets shared. A bad one can actively undermine the launch by making the product look confusing or unpolished.910## The media hierarchy1112For most launches, the decision of what to create follows this order:13141. **Demo video** — Shows the product in action with context. Best for explaining how something works.152. **Animated GIF or screen recording loop** — Shorter, auto-plays inline on social. Best for showing a specific interaction.163. **Annotated screenshot** — Static, fast to produce, good for showing a specific state or feature.174. **Diagram or illustration** — For architecture, concepts, or things that can't be screenshotted.1819In general: use video when the *flow* matters, GIF when a *single interaction* communicates the value, and screenshots when *one specific state* is the point.2021## Demo video2223### Length by platform2425| Platform | Target length | Hard limit |26|----------|--------------|------------|27| Product Hunt | 60-90 seconds | 3 minutes |28| Landing page hero | 60-90 seconds | 2 minutes |29| X/Twitter embedded | 30-45 seconds | 2 minutes 20 seconds |30| LinkedIn | 45-90 seconds | 10 minutes |31| YouTube (full demo) | 3-5 minutes | — |3233The platform hard limits aren't just technical — engagement drops sharply beyond them. A 4-minute PH video is effectively no video.3435### Script structure (for short-form demo)3637Keep this to 5-7 beats:38391. **Problem** (5-10 seconds) — State the problem being solved. One sentence. Not a long setup.402. **Introduce the solution** (5-10 seconds) — Name the product and the core value prop.413. **Demo: happy path** (30-60 seconds) — Show the primary use case working end-to-end. This is the heart of the video.424. **Key capabilities** (10-20 seconds) — 2-3 quick cuts showing secondary features. Keep it fast.435. **Proof point** (5-10 seconds) — A metric, customer quote, or benchmark. One slide or voiceover line.446. **CTA** (5 seconds) — One action. "Try it free at [URL]" or "Sign up at [URL]."4546Avoid: long intros, animated logos (audiences click away), slow product startup screens, and anything that doesn't show the product doing something.4748### Recording tips4950- **Use a demo environment, not production.** Clean data, no embarrassing customer info, reliable state.51- **Slow down deliberate interactions.** People follow cursor movements better when you move intentionally, not at normal working speed.52- **Record at 2x your target resolution.** Record at 2880×1800 or 1440×900 (Retina), then downscale for delivery. This gives you zoom room and looks sharper.53- **Hide everything extraneous.** Close Slack notifications, hide browser bookmarks bar, use a clean browser profile. Distractions in the recording erode trust.54- **Capture more than you'll use.** Record full workflows and cut in post. It's faster than re-recording because you missed a beat.5556### Voiceover vs. silent5758Both work. The choice depends on context:5960- **Voiceover**: Warmer, more explanatory, works better on YouTube and landing pages. Requires a clean recording environment and good audio quality. Bad audio is worse than no audio.61- **Silent with text overlays**: Works better on autoplay-with-mute contexts (social feeds). Faster to produce. Requires clear on-screen labels.6263If you're unsure: record the demo silently, add text overlays for key moments, then decide whether to add voiceover based on the platform.6465### Tooling6667- **Screen recording**: Loom (quick), Screen Studio (polished output, good for marketing), QuickTime (raw), OBS (full control)68- **Video editing**: CapCut (fast, easy), DaVinci Resolve (professional, free), Final Cut Pro, Adobe Premiere69- **Motion design / logo animations**: After Effects, Motion (Mac), Jitter (web-based)70- **Captions/subtitles**: Descript (also good for editing by transcript), Captions app, Rev71- **Programmatic video**: Remotion (React-based — see section below)7273## Programmatic video with Remotion7475For teams that ship fast and don't want to wait on a motion designer for every launch, programmatic video lets you write React components and render them as MP4 files. The video is code: version-controlled, parametrized, and iteratable without a timeline editor.7677### When to use programmatic video7879Works well for:80- Launch announcement clips (15-45 seconds) for social media81- Product walkthrough videos showing UI in action82- Feature highlight reels with text overlays and screenshots83- Data-driven videos (benchmark comparisons, growth metrics)84- Templated videos you'll reuse across launches (just swap content)8586Less suited for:87- Cinematic brand videos requiring complex motion design88- Founder narrative videos with live footage89- Videos that need extensive custom illustration or 3D9091For major Tier 1 launches, you might combine approaches: programmatic video for social clips and a professional motion designer for the hero video.9293### Remotion setup9495```bash96npx create-video@latest my-launch-video97cd my-launch-video98npm start # Opens Remotion Studio for preview99```100101Key concepts:102- **Composition**: A video is a React component with a defined duration (in frames) and framerate103- **useCurrentFrame()**: Hook that returns the current frame number — use it to drive animations104- **Sequence**: Component that offsets its children in time — use it to sequence scenes105- **spring()**: Animation utility for natural-feeling motion (ease-in/out)106- **Assets**: Images, screenshots, and audio go in the `public/` folder107108### Scene planning template109110Before writing code, plan the video scene by scene:111112| Field | Description |113|-------|-------------|114| **Scene #** | Sequential number |115| **Duration** | Seconds (e.g., "3s") |116| **Purpose** | What this scene communicates (one sentence) |117| **Text content** | Exact text that appears on screen |118| **Visual elements** | Screenshots, icons, code snippets, diagrams |119| **Animation style** | Fade in, slide from left, typewriter, scale up, etc. |120| **Transition out** | How this scene exits (fade, cut, slide) |121122### Code patterns123124**Sequenced scenes:**125```tsx126<Sequence from={0} durationInFrames={90}>127 <HookScene />128</Sequence>129<Sequence from={90} durationInFrames={120}>130 <DemoScene />131</Sequence>132<Sequence from={210} durationInFrames={90}>133 <CTAScene />134</Sequence>135```136137**Text reveal:**138```tsx139const frame = useCurrentFrame();140const opacity = interpolate(frame, [0, 20], [0, 1], {141 extrapolateRight: 'clamp',142});143144return <h1 style={{ opacity }}>Your primary value prop here</h1>;145```146147### Iteration workflow1481491. **Plan scenes** using the template above1502. **Collect assets** — screenshots, logos, product images → `public/` folder1513. **Write or prompt the first draft** — get the structure and content right1524. **Preview in Studio** — watch it through, note timing and visual issues1535. **Iterate** — adjust timing, animation, and content. Usually takes 2-4 rounds1546. **Render** — `npx remotion render src/index.ts MyComposition out/video.mp4`1557. **Check platform specs** — verify resolution and file size work for your target platform156157## GIFs and short loops158159GIFs auto-play on most platforms and are ideal for showing a single interaction — a UI state change, a CLI command output, an API response. They're faster to produce than video and often more effective for social posts.160161### When to use GIF vs. video162163Use GIF when:164- The entire value can be communicated in 3-8 seconds165- You're showing a single UI interaction, not a workflow166- The asset will be embedded in a tweet or README where video playback is less reliable167168Use video when:169- The value requires context (problem → solution)170- The interaction takes more than 8 seconds to demonstrate171- You need audio172173### Recording GIFs174175- **Capture at 2x**, downscale to target resolution176- **Keep under 5MB** for web performance (use palette reduction or fewer frames)177- **Loop seamlessly** — the start and end state should match so the loop doesn't jar178- **Tool options**: CleanShot X (recommended for Mac), Kap, Giphy Capture, Gifski (for converting video clips)179180### Optimizing GIF file size181182- Reduce color palette (256 → 128 or 64 colors for many UI recordings)183- Drop frames (30fps → 15fps is rarely noticeable in UI recordings)184- Crop aggressively — show only what's changing, not the whole screen185- Convert to MP4 with autoplay/loop instead of GIF when the platform supports it (MP4 is ~10x smaller than equivalent GIF)186187## Screenshots188189Screenshots are underused in launches. A well-composed screenshot with clear annotation communicates a feature faster than a paragraph.190191### Composition192193- **Show the product in a meaningful state** — not an empty screen, not a loading state, not a screen full of dummy data that makes features hard to see194- **Use a clean environment** — browser without tabs, dark or light mode consistently applied, no personal data visible195- **Highlight the relevant area** — callout boxes, arrows, or highlights direct attention to what matters196197### Annotation tools198199- **CleanShot X** (Mac) — captures, annotates, and exports in one flow200- **Skitch** — simple annotations201- **Figma / Sketch** — for more polished product shots with custom styling202203### Browser framing204205For web products, use a browser frame to make screenshots look intentional rather than raw. Tools like Screely, Browserframe, or custom Figma templates add a browser chrome overlay.206207### Multiple screenshots for feature grids208209Landing pages and Product Hunt galleries often need 3-5 screenshots showing different aspects of the product. Plan these as a set:210- Each screenshot shows a distinct capability211- Consistent visual treatment (same zoom level, same browser theme, same annotation style)212- Tell a progression: entry → key action → result213214## Asset checklist by tier215216### Tier 1217- [ ] Demo video (60-90 seconds, suitable for PH and landing page)218- [ ] Short social cut (30-45 seconds from the same recording)219- [ ] 3-5 annotated screenshots for landing page and PH gallery220- [ ] 1-2 GIFs for social posts (showing key interactions)221- [ ] Open Graph image for blog post and social link previews222223### Tier 2224- [ ] 1-2 GIFs or short screen recording225- [ ] 2-3 screenshots for landing page section226- [ ] Open Graph image227228### Tier 3229- [ ] 1 screenshot230- [ ] Optional: short GIF if the change is visual231232## Open Graph images233234Every piece of content that gets shared as a link (blog post, landing page, changelog entry) should have a custom Open Graph (OG) image. The OG image is what appears when the link is pasted into Twitter, Slack, iMessage, or LinkedIn.235236- **Size**: 1200×630px237- **Content**: Product name + primary value prop. Treat it like a billboard — readable at small size238- **Consistency**: Use a template so all your launch content has a cohesive look239- **Tools**: Figma template, Vercel OG (code-generated), Bannerbear (automated)240241## Video specs by platform242243| Platform | Resolution | Max length | Format | Notes |244|----------|-----------|------------|--------|-------|245| X/Twitter | 1280×720 or 1920×1080 | 2:20 | MP4 (H.264) | Autoplay muted — add captions |246| LinkedIn | 1920×1080 | 10 min | MP4 (H.264) | Square (1080×1080) works well in feed |247| Product Hunt | 1920×1080 | 90 sec | MP4 | Keep under 50MB |248| Website hero | 1920×1080 | No limit | MP4/WebM | Consider autoplay loop (no audio) |249250## Companion skills251252- **launch-strategy** — determines which assets are needed for the launch tier253- **launch-tweet** — the GIFs and videos go in the tweet (attached, not linked)254- **launch-landing-page** — the demo video and screenshots go on the page255- **launch-distribution** — per-platform format requirements