Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Process video files with audio extraction, format conversion (mp4, webm), and Whisper transcription. Use when user mentions video conversion, audio extraction, transcription, mp4, webm, ffmpeg, or whisper transcription.
.claude/skills/microck-video-processor/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 92% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 159% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 189% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 49% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 68% | 0% |
This skill provides video processing utilities including audio extraction, format conversion, and audio transcription using FFmpeg and OpenAI's Whisper model.
Required tools (must be installed in your environment):
bash # macOS brew install ffmpeg
# Ubuntu/Debian apt-get install ffmpeg
# Verify installation ffmpeg -version
bash # Install via pip pip install -U openai-whisper
# Verify installation whisper --help
Python packages (included in script via PEP 723):
Use the scripts/video_processor.py script for all video processing tasks. The script provides a simple CLI with the following commands:
Extract the audio track from a video file:
bashuv run .claude/skills/video-processor/scripts/video_processor.py extract-audio input.mp4 output.wav
Options:
--format: Output audio format (default: wav). Supports: wav, mp3, aac, flacConvert any video file to MP4 format:
bashuv run .claude/skills/video-processor/scripts/video_processor.py to-mp4 input.avi output.mp4
Options:
--codec: Video codec (default: libx264). Common options: libx264, libx265, h264--preset: Encoding speed/quality preset (default: medium). Options: ultrafast, fast, medium, slow, veryslowConvert any video file to WebM format (web-optimized):
bashuv run .claude/skills/video-processor/scripts/video_processor.py to-webm input.mp4 output.webm
Options:
--codec: Video codec (default: libvpx-vp9). Options: libvpx, libvpx-vp9Transcribe audio or video files to text using OpenAI's Whisper model:
bash# Transcribe video file (audio will be extracted automatically) uv run .claude/skills/video-processor/scripts/video_processor.py transcribe input.mp4 transcript.txt # Transcribe audio file directly uv run .claude/skills/video-processor/scripts/video_processor.py transcribe audio.wav transcript.txt
Options:
--model: Whisper model size (default: base). Options:tiny: Fastest, lowest accuracy (~1GB RAM)base: Fast, good accuracy (~1GB RAM) DEFAULT]small: Balanced (~2GB RAM)medium: High accuracy (~5GB RAM)large: Best accuracy, slowest (~10GB RAM)--language: Language code (default: auto-detect). Examples: en, es, fr, de, zh--format: Output format (default: txt). Options: txt, srt, vtt, jsonTranscription workflow:
Process a video end-to-end:
bash# 1. Extract audio for analysis uv run .claude/skills/video-processor/scripts/video_processor.py extract-audio lecture.mp4 lecture.wav # 2. Transcribe to SRT subtitles uv run .claude/skills/video-processor/scripts/video_processor.py transcribe lecture.mp4 lecture.srt --format srt --model small # 3. Convert to web format uv run .claude/skills/video-processor/scripts/video_processor.py to-webm lecture.mp4 lecture.webm
FFmpeg and Whisper Integration:
Audio Format for Transcription:
Output Formats:
The script includes comprehensive error handling:
tiny or base models for quick draftssmall or medium for production transcriptionslarge only when maximum accuracy is requiredUser request:
I have an AVI file from my old camera. Can you convert it to MP4?You would:
bash uv run .claude/skills/video-processor/scripts/video_processor.py to-mp4 old_video.avi output.mp4
User request:
I recorded a lecture video and need a transcript. Can you extract the audio and transcribe it?You would:
bash uv run .claude/skills/video-processor/scripts/video_processor.py extract-audio lecture.mp4 lecture.wav
bash uv run .claude/skills/video-processor/scripts/video_processor.py transcribe lecture.mp4 transcript.txt --model base
User request:
I need to put this video on my website with subtitles. Can you help?You would:
bash uv run .claude/skills/video-processor/scripts/video_processor.py to-webm presentation.mp4 presentation.webm
bash uv run .claude/skills/video-processor/scripts/video_processor.py transcribe presentation.mp4 subtitles.srt --format srt --model small
User request:
I have a Spanish interview video that needs an accurate transcript for publication.You would:
bash uv run .claude/skills/video-processor/scripts/video_processor.py transcribe interview.mp4 transcript.txt --model medium --language es
bash uv run .claude/skills/video-processor/scripts/video_processor.py transcribe interview.mp4 transcript.srt --format srt --model medium --language es
User request:
I have a folder of training videos that all need to be converted to WebM and transcribed.You would:
bash ls training_videos/*.mp4
bash # For each video: video1.mp4, video2.mp4, etc. uv run .claude/skills/video-processor/scripts/video_processor.py to-webm training_videos/video1.mp4 output/video1.webm uv run .claude/skills/video-processor/scripts/video_processor.py transcribe training_videos/video1.mp4 output/video1.txt --model base
# Repeat for each file
The video-processor skill provides a unified interface for common video processing tasks:
All operations are handled through a single, well-documented script with sensible defaults and comprehensive error handling.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 7,623 | 22,745 | +198% | 1 | 1 | 0% | 1,171 | 2,859 | +144% | 0 | 0 | — |
case-02 | fail→pass | 7,561 | 2,202 | -71% | 1 | 1 | 0% | 1,360 | 2,610 | +92% | 0 | 0 | — |
case-03 | fail→pass | 7,656 | 7,457 | -3% | 1 | 1 | 0% | 1,336 | 3,460 | +159% | 0 | 0 | — |
case-04 | pass→pass | 6,742 | 2,372 | -65% | 1 | 1 | 0% | 1,110 | 2,564 | +131% | 0 | 0 | — |
case-05 | fail→pass | 5,586 | 2,571 | -54% | 1 | 1 | 0% | 943 | 2,727 | +189% | 0 | 0 | — |
case-06 | pass→pass | 7,528 | 3,360 | -55% | 1 | 1 | 0% | 1,354 | 2,786 | +106% | 0 | 0 | — |
case-07 | pass→pass | 7,333 | 1,900 | -74% | 1 | 1 | 0% | 1,369 | 2,534 | +85% | 0 | 0 | — |
case-12 | pass→pass | 3,003 | 3,580 | +19% | 1 | 1 | 0% | 528 | 2,664 | +405% | 0 | 0 | — |
case-08 | pass→pass | 9,989 | 6,840 | -32% | 1 | 1 | 0% | 1,826 | 2,826 | +55% | 0 | 0 | — |
case-09 | fail→pass | 11,075 | 4,204 | -62% | 1 | 1 | 0% | 1,967 | 2,933 | +49% | 0 | 0 | — |
case-10 | pass→pass | 4,606 | 4,369 | -5% | 1 | 1 | 0% | 875 | 2,474 | +183% | 0 | 0 | — |
case-11 | pass→pass | 7,752 | 2,642 | -66% | 1 | 1 | 0% | 1,546 | 2,619 | +69% | 0 | 0 | — |
case-13 | fail→pass | 7,303 | 3,543 | -51% | 1 | 1 | 0% | 1,466 | 2,458 | +68% | 0 | 0 | — |
case-14 | pass→fail | 10,236 | 6,250 | -39% | 1 | 1 | 0% | 1,929 | 2,687 | +39% | 0 | 0 | — |
case-15 | pass→pass | 7,016 | 2,456 | -65% | 1 | 1 | 0% | 1,348 | 2,621 | +94% | 0 | 0 | — |
case-16 | fail→pass | 6,685 | 2,438 | -64% | 1 | 1 | 0% | 1,177 | 2,463 | +109% | 0 | 0 | — |
case-17 | fail→pass | 3,158 | 24,520 | +676% | 1 | 1 | 0% | 553 | 2,867 | +418% | 0 | 0 | — |
case-18 | pass→pass | 12,566 | 4,816 | -62% | 1 | 1 | 0% | 2,135 | 2,987 | +40% | 0 | 0 | — |
case-19 | pass→pass | 7,240 | 4,384 | -39% | 1 | 1 | 0% | 1,264 | 2,451 | +94% | 0 | 0 | — |
case-20 | pass→pass | 10,874 | 10,955 | +1% | 1 | 1 | 0% | 2,100 | 3,513 | +67% | 0 | 0 | — |
case-21 | pass→fail | 6,360 | 2,243 | -65% | 1 | 1 | 0% | 1,191 | 2,603 | +119% | 0 | 0 | — |
case-22 | fail→fail | 4,652 | 19,072 | +310% | 1 | 1 | 0% | 802 | 2,578 | +221% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +23 percentage points is the difference between those two pass rates over the 20 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.