Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Transcribe audio and video from URLs (YouTube, direct media links) using WhisperKit locally. Optionally analyze transcripts with AI when explicitly requested. Use when users provide URLs to media content and request transcription or speech-to-text conversion.
.claude/skills/nicepkg-transcribe-and-analyze/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 20% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -33% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 148% | 0% |
Local transcription of audio/video content using WhisperKit. Analysis is available on request using OpenAI or local Ollama.
bashpython3 scripts/transcribe.py "https://youtube.com/watch?v=..."
bashpython3 scripts/transcribe.py "https://youtube.com/watch?v=..." python3 scripts/analyze_transcript.py whisper-transcriptions/video.md
bashpython3 scripts/transcribe.py "https://youtube.com/watch?v=..." python3 scripts/analyze_transcript.py whisper-transcriptions/video.md --local
bash# Basic python3 scripts/transcribe.py "URL" # Custom output directory python3 scripts/transcribe.py "URL" --output-dir "/path/to/save" # Higher accuracy (slower) python3 scripts/transcribe.py "URL" --model medium # Without timestamps python3 scripts/transcribe.py "URL" --no-timestamps # Custom filename python3 scripts/transcribe.py "URL" --filename "my-transcription.md"
| Model | Speed | Accuracy | Use Case | |-------|-------|----------|----------| | tiny | Fastest | Lowest | Quick drafts, testing | | base | Fast | Reasonable | Simple content | | small | Balanced | Good | Default - most use cases | | medium | Slower | High | Lectures, important content | | large | Slowest | Highest | Critical accuracy needed |
pip install yt-dlp or brew install yt-dlpScript checks for these and provides install instructions if missing.
Transcriptions save to ./whisper-transcriptions/ as markdown:
markdown# Transcription **Source:** https://youtube.com/watch?v=example **Transcribed:** 2025-01-15 14:30:00 **Tool:** WhisperKit --- [00:00:00.000 --> 00:00:05.000] Welcome to this video...
OpenAI API (default):
bashpython3 scripts/analyze_transcript.py transcript.md python3 scripts/analyze_transcript.py transcript.md --model gpt-4o
Requires OPENAI_API_KEY environment variable.
Local Ollama:
bashpython3 scripts/analyze_transcript.py transcript.md --local python3 scripts/analyze_transcript.py transcript.md --local --model mistral
Requires Ollama running (ollama serve).
bash# Default comprehensive analysis (OpenAI) python3 scripts/analyze_transcript.py transcript.md # Use local Ollama python3 scripts/analyze_transcript.py transcript.md --local # Specify model python3 scripts/analyze_transcript.py transcript.md --model gpt-4o python3 scripts/analyze_transcript.py transcript.md --local --model llama3.2 # Custom analysis prompt python3 scripts/analyze_transcript.py transcript.md --prompt "List all tools mentioned" # Custom output location python3 scripts/analyze_transcript.py transcript.md --output ~/Documents/analysis.md # Print to stdout instead of saving python3 scripts/analyze_transcript.py transcript.md --print
bash--prompt "List all technologies and tools mentioned" --prompt "What are the main arguments presented?" --prompt "Extract all statistics and data points" --prompt "Summarize in 5 bullet points" --prompt "What questions were asked and how were they answered?"
pip install openai (used for both OpenAI and Ollama)Analysis saves alongside transcript as transcript_name_analysis.md:
markdown# Transcript Analysis **Source Transcript:** path/to/transcript.md **Analysis Model:** gpt-4o-mini (OpenAI) **Tokens Used:** 33,763 --- [Analysis content]
bashpython3 scripts/transcribe.py "https://youtube.com/watch?v=abc123" python3 scripts/analyze_transcript.py whisper-transcriptions/watch.md
bashpython3 scripts/transcribe.py "https://youtube.com/watch?v=abc123" python3 scripts/analyze_transcript.py whisper-transcriptions/watch.md --local
bashpython3 scripts/analyze_transcript.py transcript.md --output summary.md python3 scripts/analyze_transcript.py transcript.md --prompt "List action items" --output actions.md python3 scripts/analyze_transcript.py transcript.md --prompt "Extract quotes" --output quotes.md
bashpython3 scripts/transcribe.py "URL1" python3 scripts/transcribe.py "URL2" python3 scripts/transcribe.py "URL3"
references/troubleshooting.md)references/configuration.md)references/usage-patterns.md)| Script | Purpose | |--------|---------| | scripts/transcribe.py | Download and transcribe audio/video from URLs (WhisperKit) | | scripts/analyze_transcript.py | AI analysis of transcript files (OpenAI or Ollama) |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-06 | pass→pass | 6,809 | 2,294 | -66% | 1 | 1 | 0% | 1,239 | 1,882 | +52% | 0 | 0 | — |
case-01 | fail→pass | 11,190 | 11,369 | +2% | 1 | 1 | 0% | 1,755 | 2,116 | +21% | 0 | 0 | — |
case-02 | fail→pass | 10,683 | 4,931 | -54% | 1 | 1 | 0% | 1,937 | 2,320 | +20% | 0 | 0 | — |
case-03 | fail→pass | 10,676 | 2,142 | -80% | 1 | 1 | 0% | 1,405 | 1,887 | +34% | 0 | 0 | — |
case-04 | fail→pass | 16,373 | 2,695 | -84% | 1 | 1 | 0% | 3,012 | 2,008 | -33% | 0 | 0 | — |
case-05 | fail→pass | 5,331 | 2,256 | -58% | 1 | 1 | 0% | 773 | 1,915 | +148% | 0 | 0 | — |
case-07 | fail→pass | 8,486 | 2,100 | -75% | 1 | 1 | 0% | 1,325 | 1,881 | +42% | 0 | 0 | — |
case-08 | fail→pass | 10,433 | 3,063 | -71% | 1 | 1 | 0% | 1,941 | 2,079 | +7% | 0 | 0 | — |
case-09 | fail→pass | 7,033 | 2,397 | -66% | 1 | 1 | 0% | 1,125 | 1,925 | +71% | 0 | 0 | — |
case-10 | fail→pass | 9,506 | 4,707 | -50% | 1 | 1 | 0% | 1,559 | 2,300 | +48% | 0 | 0 | — |
case-20 | pass→pass | 13,607 | 12,236 | -10% | 1 | 1 | 0% | 2,473 | 3,872 | +57% | 0 | 0 | — |
case-11 | fail→pass | 8,732 | 2,020 | -77% | 1 | 1 | 0% | 1,340 | 1,826 | +36% | 0 | 0 | — |
case-12 | pass→pass | 4,134 | 1,584 | -62% | 1 | 1 | 0% | 589 | 1,787 | +203% | 0 | 0 | — |
case-13 | fail→pass | 10,963 | 2,525 | -77% | 1 | 1 | 0% | 1,822 | 1,987 | +9% | 0 | 0 | — |
case-14 | pass→pass | 6,124 | 1,543 | -75% | 1 | 1 | 0% | 911 | 1,766 | +94% | 0 | 0 | — |
case-15 | fail→pass | 8,492 | 1,902 | -78% | 1 | 1 | 0% | 1,245 | 1,848 | +48% | 0 | 0 | — |
case-16 | pass→pass | 9,769 | 2,342 | -76% | 1 | 1 | 0% | 1,548 | 1,908 | +23% | 0 | 0 | — |
case-17 | fail→pass | 10,228 | 2,932 | -71% | 1 | 1 | 0% | 1,727 | 2,092 | +21% | 0 | 0 | — |
case-18 | fail→pass | 8,159 | 2,780 | -66% | 1 | 1 | 0% | 1,377 | 2,067 | +50% | 0 | 0 | — |
case-19 | fail→pass | 4,256 | 1,271 | -70% | 1 | 1 | 0% | 669 | 1,762 | +163% | 0 | 0 | — |
case-21 | pass→pass | 13,601 | 15,884 | +17% | 1 | 1 | 0% | 2,536 | 3,752 | +48% | 0 | 0 | — |
case-22 | pass→pass | 8,979 | 5,694 | -37% | 1 | 1 | 0% | 1,568 | 2,503 | +60% | 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. The headline lift of +68 percentage points is the difference between those two pass rates over the 22 comparable cases.
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.