From creative
Edit, process, and render videos using FFmpeg and Remotion. Handles stitching, transitions, captions, teasers, and transcription. USE THIS SKILL WHEN user mentions video, clip, footage, mp4, mov, avi, mkv, or any video format, wants to combine, stitch, merge, or join video files, asks about transitions, fades, crossfades, or effects between clips, needs captions, subtitles, or TikTok-style word highlighting, wants a teaser, trailer, or highlight reel from longer video, mentions FFmpeg, ffprobe, Remotion, or related errors, asks about video transcription or whisper speech-to-text, asks about video duration, resolution, fps, or trimming, has .mp4, .mov, .captions.json files or video folders, or asks about thumbnails, overlays, title cards, or graphics for video.
npx claudepluginhub naveedharri/benai-skills --plugin creativeThis skill uses the workspace's default tool permissions.
Edits, processes, and renders videos using FFmpeg and Remotion.
references/captions.mdreferences/ffmpeg-basics.mdreferences/graphics-generation.mdreferences/intelligent-editing.mdreferences/qa-testing.mdreferences/reference-implementation.mdreferences/remotion-setup.mdreferences/remotion-tips.mdreferences/stitching.mdreferences/teasers.mdreferences/title-cards.mdreferences/transcription.mdreferences/transitions.mdreferences/video-analysis.mdGuides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Automates semantic versioning and release workflow for Claude Code plugins: bumps versions in package.json, marketplace.json, plugin.json; verifies builds; creates git tags, GitHub releases, changelogs.
Edits, processes, and renders videos using FFmpeg and Remotion.
This skill enables Claude to act as a smart video editor. Before executing commands:
See references/intelligent-editing.md for detailed workflow, questions to ask, and quality checks.
| Task | FFmpeg | Remotion |
|---|---|---|
| Stitching | Same codec, no effects | Transitions, overlays, programmatic |
| Transitions | Simple crossfades | Multiple types, custom timing |
| Captions | SRT burn-in | TikTok-style word highlighting |
| Teasers | Quick clips | Text overlays, branded elements |
General guidance:
Read these files as needed using the Read tool:
| File | Contents |
|---|---|
| references/intelligent-editing.md | Smart editing workflow, questions, quality checks |
| references/video-analysis.md | Analyze videos with ffprobe |
| references/transcription.md | Whisper transcription for speech analysis |
| references/qa-testing.md | QA tests before user preview |
| File | Contents |
|---|---|
| references/stitching.md | Combine multiple clips into one video |
| references/transitions.md | Add fade, slide, wipe between clips |
| references/captions.md | Add subtitles and TikTok-style captions |
| references/teasers.md | Create 30-second teasers/trailers |
| references/title-cards.md | Add chapter headers, bumpers, section titles |
| references/graphics-generation.md | Generate thumbnails, overlays, social graphics |
| File | Contents |
|---|---|
| references/ffmpeg-basics.md | Common FFmpeg patterns and troubleshooting |
| references/remotion-setup.md | Remotion project setup and workflow |
| references/remotion-tips.md | Animations, timing, springs, sequences, and captions |
| references/reference-implementation.md | Complete working code to recreate the project |
# 1. Setup whisper.cpp (one-time)
npx ts-node scripts/setup-whisper.ts
# 2. Transcribe all videos (GPU accelerated)
npx ts-node scripts/transcribe-fast.ts
# Check installation
which ffmpeg || brew install ffmpeg
# Basic concat (same codec)
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4
# Burn in subtitles
ffmpeg -i video.mp4 -vf "subtitles=captions.srt" output.mp4
# Start preview (always do this first)
npm run dev
# Render (only when user requests)
npx remotion render CompositionName out/video.mp4
@remotion/install-whisper-cpp - NOT Python whisper (10x faster with GPU)base.en model for speed, medium.en for final qualitywhisperCppVersion: '1.5.5' in transcribe() calltokenLevelTimestamps: true for word-level captions#FFD700#FFFFFF#E0E0E0WebkitTextStroke: '3px black',
paintOrder: 'stroke fill',
textShadow: '0px 0px 4px rgba(0,0,0,1), 0px 0px 8px rgba(0,0,0,0.8)'
OffthreadVideo componentstartFrom AND endAt propsMath.round((ms / 1000) * fps)intro.mp4 not Intro Video.mp4-c copy) fails silently with mismatched codecsffprobe to check codecs before concatenatingpublic/ folder for Remotion projects