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.

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
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"
manifest: skills/tools/youtube-transcripter/SKILL.md
source content

Youtube 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:

  • --out
    is only for single input.
  • --out-dir
    writes
    transcript_<id>.txt
    for each input. Default is
    transcripts/
    .
  • --wrap 125
    reflows lines to 125 chars; use
    --wrap 0
    to keep raw line breaks.

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:

  1. Install
    yt-dlp
    (prefer Chocolatey if available)

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
  1. yt-dlp
    with auto captions (binary or Python module)
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.

  1. 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/

  • scripts/get_transcript.py
    extracts transcripts for one or more URLs/IDs via
    youtube-transcript-api
    with
    yt-dlp
    binary or Python module fallback.