Files
antigravity-skills-reference/skills/youtube-summarizer/scripts/extract-transcript.py
Eric Andrade 801c8fa475 feat: add 4 universal skills from cli-ai-skills
- Add audio-transcriber skill (v1.2.0): Transform audio to Markdown with Whisper
- Add youtube-summarizer skill (v1.2.0): Generate summaries from YouTube videos
- Update prompt-engineer skill: Enhanced with 11 optimization frameworks
- Update skill-creator skill: Improved automation workflow

All skills are zero-config, cross-platform (Claude Code, Copilot CLI, Codex)
and follow Quality Bar V4 standards.

Source: https://github.com/ericgandrade/cli-ai-skills
2026-02-04 17:37:45 -03:00

66 lines
2.3 KiB
Python

#!/usr/bin/env python3
"""
Extract YouTube video transcript
Usage: ./extract-transcript.py VIDEO_ID [LANGUAGE_CODE]
"""
import sys
from youtube_transcript_api import YouTubeTranscriptApi, TranscriptsDisabled, NoTranscriptFound
def extract_transcript(video_id, language='en'):
"""Extract transcript from YouTube video"""
try:
# Try to get transcript in specified language with fallback to English
transcript = YouTubeTranscriptApi.get_transcript(
video_id,
languages=[language, 'en']
)
# Combine all transcript segments
full_text = " ".join([entry['text'] for entry in transcript])
return full_text
except TranscriptsDisabled:
print(f"❌ Transcripts are disabled for video {video_id}", file=sys.stderr)
sys.exit(1)
except NoTranscriptFound:
print(f"❌ No transcript found for video {video_id}", file=sys.stderr)
sys.exit(1)
except Exception as e:
print(f"❌ Error: {e}", file=sys.stderr)
sys.exit(1)
def list_available_transcripts(video_id):
"""List all available transcripts for a video"""
try:
transcript_list = YouTubeTranscriptApi.list_transcripts(video_id)
print(f"✅ Available transcripts for {video_id}:")
for transcript in transcript_list:
generated = "[Auto-generated]" if transcript.is_generated else "[Manual]"
translatable = "(translatable)" if transcript.is_translatable else ""
print(f" - {transcript.language} ({transcript.language_code}) {generated} {translatable}")
return True
except Exception as e:
print(f"❌ Error listing transcripts: {e}", file=sys.stderr)
return False
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: ./extract-transcript.py VIDEO_ID [LANGUAGE_CODE]")
print(" ./extract-transcript.py VIDEO_ID --list (list available transcripts)")
sys.exit(1)
video_id = sys.argv[1]
# Check if user wants to list available transcripts
if len(sys.argv) > 2 and sys.argv[2] == "--list":
list_available_transcripts(video_id)
sys.exit(0)
# Extract transcript
language = sys.argv[2] if len(sys.argv) > 2 else 'en'
transcript = extract_transcript(video_id, language)
print(transcript)