Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Extract transcripts from YouTube videos and generate comprehensive, detailed summaries using intelligent analysis frameworks
.claude/skills/lingxling-youtube-summarizer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 623% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 101% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 241% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 173% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 208% | 0% |
This skill extracts transcripts from YouTube videos and generates comprehensive, verbose summaries using the STAR + R-I-S-E framework. It validates video availability, extracts transcripts using the youtube-transcript-api Python library, and produces detailed documentation capturing all insights, arguments, and key points.
The skill is designed for users who need thorough content analysis and reference documentation from educational videos, lectures, tutorials, or informational content.
This skill should be used when:
Before processing videos, validate the environment and dependencies:
bash# Check if youtube-transcript-api is installed python3 -c "import youtube_transcript_api" 2>/dev/null if [ $? -ne 0 ]; then echo "⚠️ youtube-transcript-api not found" # Offer to install fi # Check Python availability if ! command -v python3 &>/dev/null; then echo "❌ Python 3 is required but not installed" exit 1 fi
Ask the user if dependency is missing:
youtube-transcript-api is required but not installed.
Would you like to install it now?
- [ ] Yes - Install with pip (pip install youtube-transcript-api)
- [ ] No - I'll install it manuallyIf user selects "Yes":
bashpip install youtube-transcript-api
Verify installation:
bashpython3 -c "import youtube_transcript_api; print('✅ youtube-transcript-api installed successfully')"
Throughout the workflow, display a visual progress gauge before each step to keep the user informed. The gauge format is:
bashecho "[████░░░░░░░░░░░░░░░░] 20% - Step 1/5: Validating URL"
Format specifications:
Display the initial status box before Step 1:
╔══════════════════════════════════════════════════════════════╗
║ 📹 YOUTUBE SUMMARIZER - Processing Video ║
╠══════════════════════════════════════════════════════════════╣
║ → Step 1: Validating URL [IN PROGRESS] ║
║ ○ Step 2: Checking Availability ║
║ ○ Step 3: Extracting Transcript ║
║ ○ Step 4: Generating Summary ║
║ ○ Step 5: Formatting Output ║
╠══════════════════════════════════════════════════════════════╣
║ Progress: ██████░░░░░░░░░░░░░░░░░░░░░░░░ 20% ║
╚══════════════════════════════════════════════════════════════╝Objective: Extract video ID and validate URL format.
Supported URL Formats:
https://www.youtube.com/watch?v=VIDEO_IDhttps://youtube.com/watch?v=VIDEO_IDhttps://youtu.be/VIDEO_IDhttps://m.youtube.com/watch?v=VIDEO_IDActions:
bash# Extract video ID using regex or URL parsing URL="$USER_PROVIDED_URL" # Pattern 1: youtube.com/watch?v=VIDEO_ID if echo "$URL" | grep -qE 'youtube\.com/watch\?v='; then VIDEO_ID=$(echo "$URL" | sed -E 's/.*[?&]v=([^&]+).*/\1/') # Pattern 2: youtu.be/VIDEO_ID elif echo "$URL" | grep -qE 'youtu\.be/'; then VIDEO_ID=$(echo "$URL" | sed -E 's/.*youtu\.be\/([^?]+).*/\1/') else echo "❌ Invalid YouTube URL format" exit 1 fi echo "📹 Video ID extracted: $VIDEO_ID"
If URL is invalid:
❌ Invalid YouTube URL
Please provide a valid YouTube URL in one of these formats:
- https://www.youtube.com/watch?v=VIDEO_ID
- https://youtu.be/VIDEO_ID
Example: https://www.youtube.com/watch?v=dQw4w9WgXcQProgress:
bashecho "[████████░░░░░░░░░░░░] 40% - Step 2/5: Checking Availability"
Objective: Verify video exists and transcript is accessible.
Actions:
pythonfrom youtube_transcript_api import YouTubeTranscriptApi, TranscriptsDisabled, NoTranscriptFound import sys video_id = sys.argv[1] try: # Get list of available transcripts transcript_list = YouTubeTranscriptApi.list_transcripts(video_id) print(f"✅ Video accessible: {video_id}") print("📝 Available transcripts:") for transcript in transcript_list: print(f" - {transcript.language} ({transcript.language_code})") if transcript.is_generated: print(" [Auto-generated]") except TranscriptsDisabled: print(f"❌ Transcripts are disabled for video {video_id}") sys.exit(1) except NoTranscriptFound: print(f"❌ No transcript found for video {video_id}") sys.exit(1) except Exception as e: print(f"❌ Error accessing video: {e}") sys.exit(1)
Error Handling:
| Error | Message | Action | |-------|---------|--------| | Video not found | "❌ Video does not exist or is private" | Ask user to verify URL | | Transcripts disabled | "❌ Transcripts are disabled for this video" | Cannot proceed | | No transcript available | "❌ No transcript found (not auto-generated or manually added)" | Cannot proceed | | Private/restricted video | "❌ Video is private or restricted" | Ask for public video |
Progress:
bashecho "[████████████░░░░░░░░] 60% - Step 3/5: Extracting Transcript"
Objective: Retrieve transcript in preferred language.
Actions:
pythonfrom youtube_transcript_api import YouTubeTranscriptApi video_id = "VIDEO_ID" try: # Try to get transcript in user's preferred language first # Fall back to English if not available transcript = YouTubeTranscriptApi.get_transcript( video_id, languages=['pt', 'en'] # Prefer Portuguese, fallback to English ) # Combine transcript segments into full text full_text = " ".join([entry['text'] for entry in transcript]) # Get video metadata from youtube_transcript_api import YouTubeTranscriptApi transcript_list = YouTubeTranscriptApi.list_transcripts(video_id) print("✅ Transcript extracted successfully") print(f"📊 Transcript length: {len(full_text)} characters") # Save to temporary file for processing with open(f"/tmp/transcript_{video_id}.txt", "w") as f: f.write(full_text) except Exception as e: print(f"❌ Error extracting transcript: {e}") exit(1)
Transcript Processing:
Progress:
bashecho "[████████████████░░░░] 80% - Step 4/5: Generating Summary"
Objective: Apply enhanced STAR + R-I-S-E prompt to create detailed summary.
Prompt Applied:
Use the enhanced prompt from Phase 2 (STAR + R-I-S-E framework) with the extracted transcript as input.
Actions:
Implementation:
bash# Use the transcript file as input to the AI prompt TRANSCRIPT_FILE="/tmp/transcript_${VIDEO_ID}.txt" # The AI agent will: # 1. Read the transcript # 2. Apply the STAR + R-I-S-E summarization framework # 3. Generate comprehensive Markdown output # 4. Structure with headers, lists, and highlights Read "$TRANSCRIPT_FILE" # Read transcript into context
Then apply the full summarization prompt (from enhanced version in Phase 2).
Progress:
bashecho "[████████████████████] 100% - Step 5/5: Formatting Output"
Objective: Deliver the summary in clean, well-structured Markdown.
Output Structure:
markdown# [Video Title] **Canal:** [Channel Name] **Duração:** [Duration] **URL:** [https://youtube.com/watch?v=VIDEO_ID] **Data de Publicação:** [Date if available] ## 📝 Detailed Summary ### [Topic 1] [Comprehensive explanation with examples, data, quotes...] #### [Subtopic 1.1] [Detailed breakdown...] ### [Topic 2] [Continued detailed analysis...] ## 📚 Concepts and Terminology - **[Term 1]:** [Definition and context] - **[Term 2]:** [Definition and context] ## 📌 Conclusion [Final synthesis and takeaways]
User Input:
claude> summarize this youtube video https://youtu.be/abc123Skill Response:
⚠️ youtube-transcript-api not installed
This skill requires the Python library 'youtube-transcript-api'.
Would you like me to install it now?
- [ ] Yes - Install with pip
- [ ] No - I'll install manuallyUser selects "Yes":
bash$ pip install youtube-transcript-api Successfully installed youtube-transcript-api-0.6.1 ✅ Installation complete! Proceeding with video summary...
User Input:
claude> summarize youtube video www.youtube.com/some-videoSkill Response:
❌ Invalid YouTube URL format
Expected format examples:
- https://www.youtube.com/watch?v=VIDEO_ID
- https://youtu.be/VIDEO_ID
Please provide a valid YouTube video URL.This video provides a comprehensive introduction to the fundamental concepts of Artificial Intelligence (AI), designed for beginners and professionals who want to understand the technical foundations and practical applications of modern AI. The instructor covers everything from basic definitions to machine learning algorithms, using practical examples and visualizations to facilitate understanding.
... continued detailed summary ...]
**Save Options:**
What would you like to save? → Summary + raw transcript
✅ File saved: resumo-exemplo123-2026-02-01.md (includes raw transcript) ████████████████████] 100% - ✓ Processing complete!
Welcome to this comprehensive tutorial on machine learning fundamentals. In today's video, we'll explore the core concepts that power modern AI systems...Version: 1.2.0 Last Updated: 2026-02-02 Maintained By: Eric Andrade
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 10,933 | 17,463 | +60% | 1 | 1 | 0% | 1,675 | 3,574 | +113% | 0 | 0 | — |
case-02 | fail→fail | 4,758 | 5,343 | +12% | 1 | 1 | 0% | 711 | 4,012 | +464% | 0 | 0 | — |
case-03 | fail→fail | 38,948 | 45,873 | +18% | 1 | 1 | 0% | 6,020 | 9,233 | +53% | 0 | 0 | — |
case-04 | pass→pass | 7,348 | 3,882 | -47% | 1 | 1 | 0% | 913 | 3,596 | +294% | 0 | 0 | — |
case-05 | fail→pass | 4,180 | 3,787 | -9% | 1 | 1 | 0% | 489 | 3,536 | +623% | 0 | 0 | — |
case-06 | fail→fail | 5,629 | 8,289 | +47% | 1 | 1 | 0% | 1,053 | 4,442 | +322% | 0 | 0 | — |
case-07 | pass→pass | 7,870 | 4,623 | -41% | 1 | 1 | 0% | 1,372 | 3,899 | +184% | 0 | 0 | — |
case-08 | fail→pass | 25,711 | 10,735 | -58% | 1 | 1 | 0% | 2,604 | 5,234 | +101% | 0 | 0 | — |
case-09 | pass→pass | 8,651 | 8,326 | -4% | 1 | 1 | 0% | 1,696 | 4,344 | +156% | 0 | 0 | — |
case-10 | pass→pass | 9,872 | 9,422 | -5% | 1 | 1 | 0% | 1,897 | 4,599 | +142% | 0 | 0 | — |
case-11 | fail→pass | 7,772 | 5,821 | -25% | 1 | 1 | 0% | 1,142 | 3,889 | +241% | 0 | 0 | — |
case-12 | fail→pass | 20,302 | 6,311 | -69% | 1 | 1 | 0% | 1,573 | 4,291 | +173% | 0 | 0 | — |
case-13 | fail→pass | 7,333 | 5,020 | -32% | 1 | 1 | 0% | 1,307 | 4,023 | +208% | 0 | 0 | — |
case-14 | pass→pass | 9,547 | 3,619 | -62% | 1 | 1 | 0% | 1,626 | 3,711 | +128% | 0 | 0 | — |
case-15 | fail→pass | 10,413 | 4,980 | -52% | 1 | 1 | 0% | 1,522 | 3,705 | +143% | 0 | 0 | — |
case-16 | fail→fail | 3,578 | 4,839 | +35% | 1 | 1 | 0% | 565 | 3,673 | +550% | 0 | 0 | — |
case-17 | pass→pass | 13,004 | 6,010 | -54% | 1 | 1 | 0% | 2,254 | 3,910 | +73% | 0 | 0 | — |
case-18 | pass→pass | 10,358 | 2,859 | -72% | 1 | 1 | 0% | 1,653 | 3,515 | +113% | 0 | 0 | — |
case-19 | pass→pass | 6,281 | 4,928 | -22% | 1 | 1 | 0% | 1,168 | 3,713 | +218% | 0 | 0 | — |
case-20 | fail→fail | 11,303 | 12,692 | +12% | 1 | 1 | 0% | 2,212 | 5,489 | +148% | 0 | 0 | — |
case-21 | pass→pass | 12,287 | 4,645 | -62% | 1 | 1 | 0% | 1,938 | 3,792 | +96% | 0 | 0 | — |
case-22 | fail→fail | 16,062 | 4,306 | -73% | 1 | 1 | 0% | 2,940 | 3,601 | +22% | 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. 22 cases were attempted. The headline lift of +27 percentage points is the difference between those two pass rates over the 22 comparable cases.
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.