A Claude Code skill that takes a product, feature, or page and produces a polished ~45–60s launch/walkthrough video end to end — then publishes it:
- Real screenshots — Playwright captures your actual product UI
- Motion video — a Remotion composition (1080p / 30fps)
- Emotive voice-over — OpenAI
gpt-4o-mini-tts, scene-synced and loudness-normalized - YouTube publish —
youtubeuploader+ the Data API, unlisted → approve → public - Page embed — a click-to-play facade (the iframe only loads on click)
- Announce — drops the link in your team channel
It exists because doing this by hand means rediscovering the same non-obvious details every time: OAuth redirect quirks, voice-over sync math, loudness targets, the lazy-iframe embed, upload quotas.
Drop the launch-video/ folder into your project's skills directory:
cp -r launch-video /path/to/your/project/.claude/skills/Claude Code discovers it automatically. It triggers on requests like "make a launch/demo/walkthrough video", "add a voice-over", "ship this to YouTube", or "add videos to our top pages".
Fill in launch-video/config.md with a few IDs (YouTube channel, OAuth client secret path, GCP
project number, announcement channel, brand colors). The skill reads those instead of hardcoded
values, so it works for any product.
launch-video/
├── SKILL.md # the 7-step pipeline + guardrails
├── config.md # per-project settings you fill in
├── references/
│ ├── youtube-publishing.md # auth setup, OAuth redirect gotcha, quota, metadata
│ ├── video-production.md # screenshot capture, render/mux/encode
│ └── embed-and-announce.md # the click-to-play embed + announcement
├── scripts/
│ ├── tts_voiceover.py # scene-synced, loudness-normalized voice-over track
│ ├── youtube.py # OAuth exchange/refresh + status/privacy/metadata
│ └── scenes.example.json # example VO scene list
└── remotion-scaffold/ # a reusable Remotion project to copy per video
└── src/{theme,components,scenes,Root,index}.tsx
- Claude Code
ffmpeg, Node.js,youtubeuploader(brew install youtubeuploader)- An OpenAI API key (voice-over) and a Google OAuth client with YouTube Data API v3 enabled
- Unlisted → approve → public, every time. The video goes public only after a human watches it.
- The Google OAuth consent is the user's to give — the skill never auto-approves it.
- YouTube API quota is ~6 uploads / 24h; larger batches span days.
- The YouTube CLI can't set a thumbnail — add one in Studio.
MIT — see LICENSE.
Built with Claude Code. Not affiliated with or endorsed by Google, OpenAI, or Remotion.