Content & Communication

/video-showcase

Create product/project showcase videos using Remotion (React). Takes project description + screenshots → generates compositions → renders MP4. Use when asked to make demo videos, product showcases, or animated project walkthroughs.

$ golems-cli skills install video-showcase
Experimental
75% best pass rate
12 assertions
3 evals

Updated 2 weeks ago

Create polished 60-90 second product showcase videos programmatically using React + Remotion.

Prerequisites

  • Remotion project initialized in ~/Gits/contentGolem/remotion/
  • ffmpeg installed (brew install ffmpeg)
  • Chrome/Chromium for headless rendering (Remotion bundles this)

Quick Reference

ActionCommand
Previewcd ~/Gits/contentGolem/remotion && npx remotion preview
Rendernpx remotion render <CompositionId> out/video.mp4 --props='{"title":"My Project"}'
Batch renderUse renderMedia() API in a script (see below)

Workflow

1. Gather Inputs

Collect from user:

  • Project name and tagline
  • Screenshots (2-5 key screens, placed in remotion/public/)
  • Key features (3-5 bullet points)
  • Tech stack (for badges/icons)
  • Color palette (or extract from screenshots)
  • Duration preference (30s / 60s / 90s)

2. Choose Template

TemplateBest ForDuration
ProductHeroSaaS/web app with screenshots60s
CodeWalkthroughDeveloper tools, CLI, libraries90s
BeforeAfterRedesigns, improvements45s
MetricShowcaseGrowth, performance, stats30s
ArchitectureDiagramSystem design, infrastructure60s

3. Generate Composition

Create a new TSX composition file in remotion/src/compositions/:

import { useCurrentFrame, useVideoConfig, interpolate, spring, Sequence, AbsoluteFill, Img } from "remotion";
import { staticFile } from "remotion";
 
type Props = {
  title: string;
  tagline: string;
  features: string[];
  screenshots: string[];  // filenames in public/
  colors: { primary: string; bg: string; text: string };
};
 
export const ProductHero: React.FC<Props> = ({ title, tagline, features, screenshots, colors }) => {
  const frame = useCurrentFrame();
  const { fps } = useVideoConfig();
 
  // Intro: title + tagline fade in (0-2s)
  // Screenshots: pan/zoom through each (2-8s per screenshot)
  // Features: slide in one by one (2s each)
  // Outro: call to action (last 3s)
 
  return (
    <AbsoluteFill style={{ backgroundColor: colors.bg }}>
      {/* Build composition here */}
    </AbsoluteFill>
  );
};

4. Render

# Preview in browser
npx remotion preview
 
# Render to MP4
npx remotion render ProductHero out/showcase.mp4 \
  --props='{"title":"My App","tagline":"Ship faster","features":["Fast","Reliable","Beautiful"],"screenshots":["screen1.png","screen2.png"],"colors":{"primary":"#3B82F6","bg":"#0F172A","text":"#F8FAFC"}}'
 
# Render for specific platform
npx remotion render ProductHero out/linkedin.mp4 --width=1920 --height=1080  # LinkedIn
npx remotion render ProductHero out/twitter.mp4 --width=1280 --height=720   # Twitter/X
npx remotion render ProductHero out/short.mp4 --width=1080 --height=1920    # Reels/Shorts