Requirements
Required:
ffmpeg/ffprobe— core video processing
Optional:
whisper— local transcription for captionsrealesrgan— AI upscaling
Quick Reference
| Situation | Load |
|---|---|
| Platform specs (YouTube, TikTok, Instagram) | platforms.md |
| FFmpeg commands by task | commands.md |
| Quality/compression settings | quality.md |
| Workflow by use case | workflows.md |
Core Capabilities
| Task | Method |
|---|---|
| Convert/compress | FFmpeg (see commands.md) |
| Generate captions | Whisper → SRT/VTT |
| Change aspect ratio | Crop, pad, or smart reframe |
| Clean audio | Normalize, denoise, enhance |
| Batch operations | Process entire folders in one run |
Execution Pattern
- Clarify target — What platform? What format? File size limit?
- Check source —
ffprobefor codec, resolution, duration, audio - Process — FFmpeg for transformation
- Verify — Confirm output meets specs before delivering
- Deliver — Provide file to user
Common Requests → Actions
| User says | Agent does |
|---|---|
| "Make this work for TikTok" | Reframe to 9:16, check duration ≤3min, compress |
| "Add subtitles" | Whisper → SRT → burn-in or deliver separately |
| "Compress for WhatsApp" | Target <64MB, H.264, AAC |
| "Extract audio" | -vn -acodec mp3 or -acodec copy |
| "Make a GIF" | Extract frames, optimize palette, loop |
| "Split into clips" | Cut at timestamps with -ss and -t |
Quality Rules
- Always re-encode audio to AAC for maximum compatibility
- Use
-movflags +faststartfor web playback - CRF 23 is good default for H.264 (lower = better, bigger)
- Check before delivering — verify duration, file size, playability
Platform Quick Reference
| Platform | Aspect | Max Duration | Max Size |
|---|---|---|---|
| TikTok | 9:16 | 3 min | 287MB |
| Instagram Reels | 9:16 | 90s | 250MB |
| YouTube Shorts | 9:16 | 60s | No limit |
| YouTube | 16:9 | 12h | 256GB |
| Any | 3 min | 64MB |
Scope
This skill:
- Processes video files user explicitly provides
- Runs FFmpeg commands on user request
- Does NOT access files without user instruction
- Does NOT upload to external services automatically