Awesome-omni-skill youtube-transcripter
Extract a YouTube video transcript from a URL and summarize it into important content, learnings, and suggestions. Use when the user provides a YouTube link and wants a clean transcript and structured notes without timestamps, with fallback extraction methods if the primary tool is unavailable.
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/tools/youtube-transcripter" ~/.claude/skills/diegosouzapw-awesome-omni-skill-youtube-transcripter && rm -rf "$T"
skills/tools/youtube-transcripter/SKILL.mdYoutube Transcripter
Overview
Extract a transcript from a YouTube URL and produce a concise, structured summary focused on key content, learnings, and actionable suggestions.
Workflow
1) Confirm input
- Require a YouTube URL or video ID. Multiple inputs are allowed.
- Assume no timestamps unless the user explicitly asks.
- Default language is auto-detected; ask only if a specific language is required.
2) First-time setup (one-time)
Make sure at least one transcript extractor is installed. Prefer
yt-dlp:
choco install yt-dlp -y
If Chocolatey is not available or not elevated, use pip:
python -m pip install yt-dlp
Optional (API-based):
python -m pip install youtube-transcript-api
3) Extract transcript (best-effort with fallback)
Preferred: run the bundled script:
python scripts/get_transcript.py "https://www.youtube.com/watch?v=VIDEO_ID"
Multiple inputs (URLs or IDs) into a folder:
python scripts/get_transcript.py VIDEO_ID_1 "https://youtu.be/VIDEO_ID_2" --out-dir transcripts
Notes:
is only for single input.--out
writes--out-dir
for each input. Default istranscript_<id>.txt
.transcripts/
reflows lines to 125 chars; use--wrap 125
to keep raw line breaks.--wrap 0
To force a language:
python scripts/get_transcript.py "https://www.youtube.com/watch?v=VIDEO_ID" --lang en --out transcript_VIDEO_ID.txt
Fallback order if the script fails:
- Install
(prefer Chocolatey if available)yt-dlp
Check:
choco -v
If Chocolatey is available, install (requires admin shell):
choco install yt-dlp -y
If Chocolatey is not available or not elevated, use pip:
python -m pip install yt-dlp
with auto captions (binary or Python module)yt-dlp
yt-dlp --skip-download --write-auto-sub --sub-lang en --sub-format vtt "https://www.youtube.com/watch?v=VIDEO_ID"
Then strip timestamps and cue markers from the
.vtt file.
- If tools are unavailable, ask the user for the transcript text or a downloaded caption file.
4) Capture metadata (title + channel)
If
yt-dlp is available, fetch title and channel:
yt-dlp --print "%(title)s|%(channel)s|%(uploader)s" "https://www.youtube.com/watch?v=VIDEO_ID"
PowerShell-safe quoting:
yt-dlp --print '%(title)s|%(channel)s|%(uploader)s' "https://www.youtube.com/watch?v=VIDEO_ID"
If tools are unavailable, ask the user for the video title and channel name. If
yt-dlp warns about missing JavaScript runtime, note that it may omit some fields; use channel if uploader is missing.
5) Summarize and structure notes
Always save the structured summary to a file for agent-friendly reading, e.g.
transcript_summary.md in the working directory. Keep the raw transcript as transcript.txt.
Always keep raw transcripts in transcripts/ and save summaries in the working directory.
For multiple videos, include the YouTube ID in filenames: transcript_<id>.txt and transcript_summary_<id>.md.
Write files as UTF-8 to preserve umlauts and other non-ASCII characters.
Do not paste the full summary into chat; confirm file paths only.
Use this output template. Keep it tight and information-dense.
# Title Channel: <channel name> URL: <youtube url> Video ID: <id> ## Summary - 3-6 bullets capturing the core message ## Key Points - ... ## Learnings - ... ## Suggestions / Recommendations - ... ## Action Items (optional) - ... ## Open Questions (optional) - ...
Quality checks
- Remove filler, intros, sponsor reads, and repeated segments.
- Preserve important claims, stats, or steps.
- If advice is speculative, label it as such.
- Keep language plain and direct.
- If you hit HTTP 429 (rate limit), wait and retry later or switch to a different network/IP; changing language rarely resolves rate limits.
Resources
scripts/
extracts transcripts for one or more URLs/IDs viascripts/get_transcript.py
withyoutube-transcript-api
binary or Python module fallback.yt-dlp