Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Fetch YouTube video transcripts and transform them into structured content (chapters, summaries, threads, blog posts). Use when the user shares a YouTube URL or video link, asks to summarize a video, requests a transcript, or wants to extract and reformat content from any YouTube video.
.claude/skills/graniet-youtube-content/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -48% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -50% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -10% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -8% | 0% |
This skill is repo-local and stays inactive until explicitly activated.
When the original instructions refer to legacy tool names, use these Kheish mappings:
terminal => bashweb_extract => web_fetch, plus web_search when discovery is neededsearch_files => grep_search and glob_searchbrowser_* tools require a browser-capable surfaced tool or MCP; if none is available, use the closest available surface and say so explicitlyWhen the instructions mention local helper files, resolve them from ${KHEISH_SKILL_DIR}.
Extract transcripts from YouTube videos and convert them into useful formats.
bashpip install youtube-transcript-api
SKILL_DIR is the directory containing this SKILL.md file. The script accepts any standard YouTube URL format, short links (youtu.be), shorts, embeds, live links, or a raw 11-character video ID.
bash# JSON output with metadata python3 SKILL_DIR/scripts/fetch_transcript.py "https://youtube.com/watch?v=VIDEO_ID" # Plain text (good for piping into further processing) python3 SKILL_DIR/scripts/fetch_transcript.py "URL" --text-only # With timestamps python3 SKILL_DIR/scripts/fetch_transcript.py "URL" --timestamps # Specific language with fallback chain python3 SKILL_DIR/scripts/fetch_transcript.py "URL" --language tr,en
After fetching the transcript, format it based on what the user asks for:
00:00 Introduction — host opens with the problem statement
03:45 Background — prior work and why existing solutions fall short
12:20 Core method — walkthrough of the proposed approach
24:10 Results — benchmark comparisons and key takeaways
31:55 Q&A — audience questions on scalability and next steps--text-only --timestamps.--language to get any available transcript. If still empty, tell the user the video likely has transcripts disabled.--language to fetch any available transcript, then note the actual language to the user.pip install youtube-transcript-api and retry.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 7,860 | 7,049 | -10% | 1 | 1 | 0% | 1,460 | 997 | -32% | 0 | 0 | — |
case-02 | fail→fail | 2,232 | 4,792 | +115% | 1 | 1 | 0% | 289 | 1,031 | +257% | 0 | 0 | — |
case-03 | fail→fail | 11,221 | 5,142 | -54% | 1 | 1 | 0% | 1,857 | 1,051 | -43% | 0 | 0 | — |
case-04 | pass→pass | 3,126 | 1,390 | -56% | 1 | 1 | 0% | 477 | 976 | +105% | 0 | 0 | — |
case-05 | fail→fail | 6,964 | 6,732 | -3% | 1 | 1 | 0% | 1,111 | 1,302 | +17% | 0 | 0 | — |
case-06 | fail→pass | 6,247 | 1,784 | -71% | 1 | 1 | 0% | 1,206 | 1,122 | -7% | 0 | 0 | — |
case-07 | fail→pass | 11,917 | 1,588 | -87% | 1 | 1 | 0% | 2,023 | 1,060 | -48% | 0 | 0 | — |
case-08 | fail→pass | 11,348 | 1,788 | -84% | 1 | 1 | 0% | 2,065 | 1,029 | -50% | 0 | 0 | — |
case-09 | fail→pass | 9,060 | 3,117 | -66% | 1 | 1 | 0% | 1,538 | 1,387 | -10% | 0 | 0 | — |
case-10 | pass→fail | 5,739 | 6,611 | +15% | 1 | 1 | 0% | 964 | 1,257 | +30% | 0 | 0 | — |
case-11 | pass→pass | 6,134 | 1,406 | -77% | 1 | 1 | 0% | 1,018 | 954 | -6% | 0 | 0 | — |
case-12 | fail→pass | 10,622 | 4,885 | -54% | 1 | 1 | 0% | 1,777 | 1,630 | -8% | 0 | 0 | — |
case-13 | pass→pass | 8,533 | 4,679 | -45% | 1 | 1 | 0% | 1,510 | 1,157 | -23% | 0 | 0 | — |
case-14 | fail→pass | 7,409 | 1,500 | -80% | 1 | 1 | 0% | 1,188 | 1,059 | -11% | 0 | 0 | — |
case-15 | pass→pass | 6,695 | 1,311 | -80% | 1 | 1 | 0% | 1,161 | 1,007 | -13% | 0 | 0 | — |
case-21 | pass→pass | 12,676 | 8,493 | -33% | 1 | 1 | 0% | 2,020 | 2,147 | +6% | 0 | 0 | — |
case-16 | fail→pass | 9,070 | 1,809 | -80% | 1 | 1 | 0% | 1,428 | 1,076 | -25% | 0 | 0 | — |
case-17 | fail→pass | 7,276 | 2,391 | -67% | 1 | 1 | 0% | 1,368 | 1,172 | -14% | 0 | 0 | — |
case-18 | pass→pass | 11,288 | 1,998 | -82% | 1 | 1 | 0% | 2,080 | 1,136 | -45% | 0 | 0 | — |
case-19 | fail→pass | 9,625 | 2,077 | -78% | 1 | 1 | 0% | 1,523 | 1,136 | -25% | 0 | 0 | — |
case-20 | pass→pass | 11,079 | 1,575 | -86% | 1 | 1 | 0% | 1,917 | 1,067 | -44% | 0 | 0 | — |
case-22 | pass→pass | 6,022 | 3,974 | -34% | 1 | 1 | 0% | 1,189 | 1,521 | +28% | 0 | 0 | — |
case-23 | pass→pass | 12,019 | 10,778 | -10% | 1 | 1 | 0% | 2,777 | 3,034 | +9% | 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. 23 cases were attempted, and 18 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +35 percentage points is the difference between those two pass rates over the 18 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
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.