agentsclimarketplace

Youtube transcribe

Skill chenwei791129/agent-skills/skills/youtube-transcribe

My agent skills

Install
npx -y skills add chenwei791129/agent-skills --skill youtube-transcribe

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Transcribe a YouTube video (or any local audio/video file) into a text transcript, SRT subtitles, and JSON using whisper locally. Use this whenever the user shares a YouTube URL and wants its subtitles, captions, transcript, 字幕, or 逐字稿 — especially when the video has no captions to download — or wants to transcribe / 轉錄 an audio or video file. Triggers on requests like "幫我抓這部 YouTube 的字幕/逐字稿", "transcribe this video", "把這段音檔轉成文字". Runs locally and is cross-platform: mlx-whisper on Apple Silicon, faster-whisper elsewhere.

SKILL.md

5.5 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it

YouTube / Audio Transcription

Turn a YouTube video — or any local audio/video file — into a transcript without relying on YouTube-provided captions. Many videos (especially re-uploads and some Chinese-language uploads) have no subtitles and no auto-captions, so downloading captions with yt-dlp --write-subs returns nothing. This skill sidesteps that by downloading the audio and transcribing it locally with a whisper engine chosen by platform.

When to reach for this

  • The user gives a YouTube URL and wants the 字幕 / 逐字稿 / transcript / captions.
  • yt-dlp --list-subs reports has no subtitles / has no automatic captions.
  • The user has a local .m4a/.mp3/.mp4/etc. file to transcribe.

Prerequisites

  • uv installed (used to run yt-dlp and the transcription script without polluting the global env). The script auto-selects the whisper engine and uv installs only the one your platform needs:
    • Apple Silicon Macmlx-whisper (MLX/Metal, GPU-accelerated).
    • Intel Mac / Linux / Windowsfaster-whisper (CTranslate2, CPU or NVIDIA CUDA).
  • A JavaScript runtime — node, bun, or deno — on PATH. Recent yt-dlp needs one to extract YouTube; the script auto-detects whichever is present.
  • ffmpeg recommended but not required: if absent, the script falls back to macOS's built-in afconvert (so on non-macOS, install ffmpeg).

Usage

The whole pipeline is one self-contained script. Run it with uv run so dependencies are provisioned automatically:

uv run ~/.claude/skills/youtube-transcribe/scripts/yt_transcribe.py \
  "https://www.youtube.com/watch?v=VIDEO_ID" \
  --output-dir /tmp/whisper_out

Common options:

  • --language zh — force a language instead of auto-detecting (faster, avoids mis-detection on bilingual intros).
  • --model mlx-community/whisper-large-v3-turbo — the default; good speed/quality on Apple Silicon. Swap for mlx-community/whisper-large-v3 for max quality or a smaller model for speed.
  • --output-name my-video — base filename for outputs (defaults to the video id).
  • --formats txt,srt — pick which outputs to write (default txt,srt,json).

A local file works the same way — just pass a path instead of a URL:

uv run ~/.claude/skills/youtube-transcribe/scripts/yt_transcribe.py /path/to/talk.m4a --language en

The first run downloads the whisper model (~1.6 GB for turbo) into the Hugging Face cache; later runs reuse it.

Outputs

Written to --output-dir (default: current directory), named after the video id (or --output-name):

  • <name>.txt — plain-text transcript (one blob).
  • <name>.srt — subtitles with timestamps.
  • <name>.json — full result incl. per-segment timestamps and detected language.

After transcribing

The raw whisper output reflects the spoken language verbatim. If the audio is Mandarin, whisper emits Simplified Chinese. Per the user's global rule, when presenting the transcript in chat, convert it to 正體中文 (Traditional) and clean up obvious mis-hearings of proper nouns / technical terms (model names, CVE ids, tool names). Offer a tidied, sectioned summary rather than dumping the full wall of text, and tell the user where the full files live.

How it works (and why)

  1. Download audioyt-dlp -f "bestaudio[ext=m4a]/bestaudio". Format 140 (128 kbps m4a) downloads without solving YouTube's player JS "n" challenge, so we avoid --remote-components ejs:github (it fetches+runs remote code and is typically blocked by the sandbox). The script prefixes uvx if yt-dlp isn't installed, and adds --js-runtimes <node|bun|deno> for whichever runtime exists.
  2. Normalize audio — convert to 16 kHz mono 16-bit WAV with ffmpeg, or macOS afconvert if ffmpeg is missing.
  3. Transcribe — read the WAV into a numpy float32 array and pass it straight to the engine (mlx_whisper.transcribe(...) on Apple Silicon, faster_whisper.WhisperModel.transcribe(...) elsewhere). Both produce the same normalized result shape (text / language / segments). Handing whisper a decoded array means it never shells out to ffmpeg internally — which is the usual cause of FileNotFoundError: ffmpeg on machines without it.

Troubleshooting

  • has no subtitles but you still want text — that's exactly this skill's job; proceed to transcribe the audio.
  • FileNotFoundError: ffmpeg — shouldn't happen via this script (it converts first), but if you call the whisper engine directly on an m4a, convert to WAV first.
  • On non-Apple-Silicon and conversion failsafconvert is macOS-only, so install ffmpeg (Linux/Windows have no built-in fallback).
  • yt-dlp warns about JS challenge / "Only images are available" — ensure node/bun/deno is on PATH; the script needs one for extraction. Do not reach for --remote-components ejs:github to fix it.
  • Garbled / wrong-language output — pass --language explicitly.

What ships with it: 1 file

10.9 KB alongside SKILL.md, 1 of them executable

scripts/

Gives 0 of the 12 instructions most video audio skills give in ~1.3k tokens

Counted across 622 of the 795 authors here whose files we hold, read 2026-08-07

  • Read individual rule files for detailed explanationsin 21 of 622, across 10 files
  • Render final videoin 13 of 622, across 6 files
  • Use WAV PCM 16kHz mono audio formatin 12 of 622, across 3 files
  • Use this skill when dealing with Remotion codein 11 of 622, across 4 files
  • Save generated audio to a WAV filein 11 of 622, across 4 files
  • Handle conversion errors gracefullyin 10 of 622, across 6 files
  • Add captions to videos alwaysin 10 of 622, across 4 files
  • Generate music from text descriptions using MusicGenin 9 of 622, across 2 files
  • Do not skip pipeline layersin 9 of 622, across 3 files
  • Do not make one tool do everythingin 9 of 622, across 3 files
  • Use Azure Document Intelligence for complex PDFsin 9 of 622, across 4 files
  • Never ask the user to paste their full API keyin 9 of 622, across 3 files

Said here and by no other author read

  • run the pipeline script using uv
  • force a language explicitly if output is garbled
  • pick desired output formats
  • clean up misheard proper nouns
  • present a sectioned summary in chat
  • tell the user where output files are

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.