Video transcribe
Cloud-based agent skills for creating AI avatar talking-head videos and short-form reels (skills.sh format)
npx -y skills add puntorigen/avatar-skills --skill video-transcribeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 28 days oldThe repository was created 28 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 1 stars1 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
Download a single video by URL (Instagram reel/post, or any yt-dlp-supported link) and transcribe its spoken audio to text with faster-whisper — or transcribe a local media file. Writes plain text, an SRT subtitle file, and a JSON with per-segment timecodes. Uses yt-dlp for download and faster-whisper (default `small`, CPU/int8) for transcription. Use when the user wants the spoken text / transcript / subtitles of an Instagram reel or other video, wants to turn a reel's audio into a script, or wants to transcribe a local audio/video file.
SKILL.md
4.4 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
Video Transcribe
Download one video by URL and extract its spoken audio as text, or transcribe a
local media file. One script does both: scripts/transcribe.py.
Output (in the chosen folder): <basename>.txt (full text), <basename>.srt
(subtitles), <basename>.json (language, duration, model, and per-segment
timecodes).
Inputs
| Parameter | Required | Example |
|---|---|---|
| Video URL or local file path | yes | https://www.instagram.com/reels/DZScDIDNTi7/ |
--output-dir | no | reference-reels/DZScDIDNTi7 |
--language | no | es (default: auto-detect) |
--model | no | small (default), medium, large-v3, tiny |
Prerequisites
yt-dlp, ffmpeg, and faster-whisper must be available (all present on this
machine). If needed: pip3 install -r requirements.txt and brew install ffmpeg.
Workflow checklist
- [ ] Step 1: Confirm the content is public (URL) or the file exists (local)
- [ ] Step 2: Run transcribe.py (downloads if URL, then transcribes)
- [ ] Step 3: Report the text + output file paths
Step 1: Source check
For a URL, open it to confirm it is public (no login wall / not private). For a local file, confirm the path exists. Stop if private/missing.
Step 2: Download + transcribe
# Instagram reel (or any yt-dlp URL): download + transcribe, force Spanish
python3 .cursor/skills/video-transcribe/scripts/transcribe.py \
"https://www.instagram.com/reels/DZScDIDNTi7/" \
--output-dir reference-reels/DZScDIDNTi7 --language es
# Local file (outputs land next to it as <stem>.txt/.srt/.json)
python3 .cursor/skills/video-transcribe/scripts/transcribe.py path/to/clip.mp4
The script:
- If the source is a URL, downloads it with
yt-dlp --no-playlist(best mp4) to<output-dir>/<basename>.<ext>. - Transcribes the media with faster-whisper (VAD-filtered). faster-whisper decodes the media via ffmpeg, so no separate audio extraction step is needed.
- Writes
<basename>.txt,<basename>.srt,<basename>.jsonand prints the full text to stdout.
Defaults: --basename transcript for URLs (file stem for local files),
--output-dir . for URLs (the file's own folder for local files).
Useful flags: --model large-v3 (higher accuracy, slower + ~GBs download),
--language es (skip auto-detect / fix wrong detection), --cleanup (delete the
downloaded video afterwards), --device cuda --compute-type float16 (GPU).
Step 3: Report to user
Give the detected language, duration, the transcript text, and the output paths.
Fix only obvious ASR slips (it is phonetic: e.g. tu menta → tu mente,
acronyms mis-heard) when handing the text to the user — note any corrections.
Model choice
small (default) matches the repo's voice / alignment pipeline (voice-isolate,
avatar-reel-composer) and is fast on CPU with good Spanish accuracy. Step up to
medium / large-v3 only when accuracy matters more than speed; tiny for quick
tests. First use of a model downloads its weights (large-v3 is ~3 GB).
Anti-patterns
- Do not hand-extract audio with a separate ffmpeg call first — faster-whisper decodes the media directly.
- Do not use this for a whole Instagram/TikTok/YouTube profile — it handles
one video. For batch profile downloads use
instagram-videos,tiktok-videos, oryoutube-videos, then point this at the saved files. - Do not transcribe private / login-walled content.
- Do not commit downloaded videos — add the output dir to
.gitignore.
Utility scripts
| Script | Purpose |
|---|---|
scripts/transcribe.py | Download (yt-dlp) if URL + transcribe (faster-whisper) → txt/srt/json (main entry point) |
Additional resources
- Usage examples: examples.md
- To then clone the voice / build a reel from the transcript, see the
voice-cloneandavatar-reel-composerskills.
What ships with it: 3 files
8.0 KB alongside SKILL.md, 1 of them executable
scripts/
- transcribe.pyruns6.3 KB
- examples.md1.5 KB
- requirements.txt210 B