Video Captions
by @ivangdavila
Generate professional captions and subtitles with multi-engine transcription, word-level timing, styling presets, and burn-in.
clawhub install video-captionsπ About This Skill
name: Video Captions slug: video-captions version: 1.0.1 homepage: https://clawic.com/skills/video-captions description: Generate professional captions and subtitles with multi-engine transcription, word-level timing, styling presets, and burn-in. changelog: Declared optional cloud API env vars in metadata to clarify that cloud engines require user-provided keys metadata: {"clawdbot":{"emoji":"π¬","requires":{"bins":["ffmpeg","whisper"],"env":{"optional":["ASSEMBLYAI_API_KEY","DEEPGRAM_API_KEY"]}},"os":["linux","darwin"]}}
When to Use
User needs captions or subtitles for video content. Agent handles transcription, timing, formatting, styling, translation, and burn-in across all major formats and platforms.
Quick Reference
| Topic | File |
|-------|------|
| Transcription engines | engines.md |
| Output formats | formats.md |
| Styling presets | styling.md |
| Platform requirements | platforms.md |
Core Rules
1. Engine Selection by Context
| Scenario | Engine | Why | |----------|--------|-----| | Default (recommended) | Whisper local | 100% offline, no data leaves machine | | Apple Silicon | MLX Whisper | Native acceleration, still local | | Word timestamps | whisper-timestamped | DTW alignment, still local |
Default: Whisper local (turbo model). See engines.md for optional cloud alternatives.
2. Format Selection by Platform
| Platform | Format | Notes | |----------|--------|-------| | YouTube | VTT or SRT | VTT preferred | | Netflix/Pro | TTML | Strict timing rules | | Social (TikTok, IG) | Burn-in (ASS) | Embedded in video | | General | SRT | Universal compatibility | | Karaoke/effects | ASS | Advanced styling |
Ask user's target platform if not specified.
3. Professional Timing Standards
Netflix-compliant (default):
Social media:
4. Segmentation Rules
Break lines:
Never separate:
5. Word-Level Timestamps
Use word timestamps for:
Enable with --word-timestamps flag.
6. Speaker Identification
For multi-speaker content:
[Speaker 1] or [Name] if knownJOHN: What do you think?7. Quality Verification
Before delivering:
Workflow
Basic Transcription
# Auto-detect language, output SRT
whisper video.mp4 --model turbo --output_format srtSpecify language
whisper video.mp4 --model turbo --language es --output_format srtMultiple formats
whisper video.mp4 --model turbo --output_format all
Word-Level Timestamps
# Using whisper-timestamped
whisper_timestamped video.mp4 --model large-v3 --output_format srtWith VAD pre-processing (reduces hallucinations)
whisper_timestamped video.mp4 --vad silero --accurate
Styled Subtitles (ASS)
# Generate SRT first, then convert with style
ffmpeg -i video.mp4 -vf "subtitles=video.srt:force_style='FontName=Arial,FontSize=24,PrimaryColour=&HFFFFFF,OutlineColour=&H000000,Outline=2,Shadow=1,Alignment=2'" output.mp4
Burn-In for Social Media
# TikTok/Instagram style (centered, bold)
ffmpeg -i video.mp4 -vf "subtitles=video.srt:force_style='FontName=Montserrat-Bold,FontSize=32,PrimaryColour=&HFFFFFF,OutlineColour=&H000000,Outline=3,Shadow=0,Alignment=10,MarginV=50'" output.mp4Netflix style (bottom, clean)
ffmpeg -i video.mp4 -vf "subtitles=video.srt:force_style='FontName=Netflix Sans,FontSize=48,PrimaryColour=&HFFFFFF,OutlineColour=&H000000,Outline=2,Shadow=1,Alignment=2'" output.mp4
Translation
# Transcribe + translate to English
whisper video.mp4 --model turbo --task translate --output_format srt
Format Conversion
# SRT to VTT
ffmpeg -i video.srt video.vttSRT to ASS (for styling)
ffmpeg -i video.srt video.ass
Caption Traps
--language explicitly for mixed content--max_line_width 42 for Netflix compliance-b:v 8M)Common Scenarios
YouTube Video
1. Transcribe:whisper video.mp4 --output_format vtt
2. Upload .vtt to YouTube Studio
3. Review auto-sync suggestionsTikTok/Instagram Reel
1. Transcribe with word timestamps 2. Apply bold animated style 3. Burn-in:ffmpeg -i video.mp4 -vf "subtitles=video.ass" -c:a copy output.mp4
4. Export at platform resolutionNetflix/Professional
1. Use Whisper large-v3 for best local accuracy 2. Export TTML format 3. Verify: 42 chars/line, 2 lines max, timing gaps 4. Include translator credit as last subtitlePodcast/Interview
1. Enable speaker diarization 2. Format as dialogue:[SPEAKER]: text
3. SDH option: include [music], [laughter] descriptionsForeign Film Translation
1. Transcribe in original language 2. Translate:--task translate for English
3. Or use external translation + timing syncExternal Endpoints
Default: 100% LOCAL processing. No network calls.
| Endpoint | Data Sent | When Used | |----------|-----------|-----------| | Whisper (local) | None (local) | Default β always | | api.assemblyai.com | Audio file | Only if user sets ASSEMBLYAI_API_KEY | | api.deepgram.com | Audio file | Only if user sets DEEPGRAM_API_KEY |
Cloud APIs are documented as alternatives but never used unless user explicitly provides API keys and requests cloud processing. By default, all processing stays on your machine.
Security & Privacy
Default workflow is 100% offline:
Cloud APIs are OPTIONAL and OPT-IN:
ASSEMBLYAI_API_KEY or DEEPGRAM_API_KEYThis skill does NOT:
Related Skills
Install withclawhub install if user confirms:
ffmpeg β video/audio processingvideo β general video tasksvideo-edit β video editingaudio β audio processingFeedback
clawhub star video-captionsclawhub syncβ‘ When to Use
User needs captions or subtitles for video content. Agent handles transcription, timing, formatting, styling, translation, and burn-in across all major formats and platforms.