Come Riassumere Video YouTube con gli LLM
Ti è mai capitato di voler ottenere i punti chiave di un lungo video YouTube senza guardarlo per intero? Questo tutorial ti mostra come generare automaticamente riassunti usando le trascrizioni di YouTube e l’AI.
Seguiremo tre semplici passaggi: ottenere le trascrizioni video, darle in pasto a un LLM, e godersi i risultati.
Prerequisiti
Prima di iniziare, avrai bisogno di:
- Python 3.7+
- Una chiave API OpenAI
- Video YouTube con trascrizioni disponibili
Installa i pacchetti necessari:
1pip install youtube-transcript-api openai
Passaggio 1: Estrarre le Trascrizioni YouTube
YouTube genera automaticamente trascrizioni per la maggior parte dei video. La libreria youtube-transcript-api
rende l’accesso semplice e diretto.
1from youtube_transcript_api import YouTubeTranscriptApi
2from youtube_transcript_api.formatters import TextFormatter
3from urllib.parse import urlparse, parse_qs
4
5def extract_video_id(url):
6 """Extract video ID from various YouTube URL formats"""
7 if 'youtu.be/' in url:
8 return url.split('youtu.be/')[-1].split('?')[0]
9 elif 'youtube.com/watch?v=' in url:
10 parsed = urlparse(url)
11 return parse_qs(parsed.query)['v'][0]
12 return None
13
14def get_video_transcript(video_id, languages=['en']):
15 """Fetch transcript for a YouTube video"""
16 try:
17 transcript_api = YouTubeTranscriptApi()
18 transcript_list = transcript_api.fetch(video_id=video_id, languages=languages)
19
20 if not transcript_list:
21 return None
22
23 formatter = TextFormatter()
24 transcript_text = formatter.format_transcript(transcript_list)
25
26 # Clean up the text
27 transcript_text = transcript_text.replace('\n', ' ')
28 transcript_text = ' '.join(transcript_text.split())
29
30 return transcript_text
31
32 except Exception as e:
33 print(f"Could not retrieve transcript: {e}")
34 return None
35
36# Example usage
37video_url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
38video_id = extract_video_id(video_url)
39transcript = get_video_transcript(video_id)
40print(f"Transcript length: {len(transcript)} characters")
L’API delle trascrizioni gestisce automaticamente lingue e formati diversi. La maggior parte dei video popolari ha trascrizioni disponibili.
Passaggio 2: Generare Riassunti con OpenAI
Ora diamo la trascrizione a un LLM per generare un riassunto intelligente.
1import openai
2
3class VideoSummarizer:
4 def __init__(self):
5 self.client = openai.OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
6
7 def summarize_video(self, transcript, model='gpt-5-mini'):
8 """Generate summary from video transcript"""
9
10 # Truncate if too long (roughly 8000 chars = 2000 tokens)
11 if len(transcript) > 8000:
12 transcript = transcript[:8000] + "..."
13
14 prompt = f"""
15Analyze this YouTube video transcript and provide a clear, structured summary.
16
17Instructions:
18- Identify the main topic and key points
19- Highlight important insights or conclusions
20- Use bullet points for clarity
21- Keep it concise but comprehensive
22
23Transcript:
24{transcript}
25
26Summary:
27"""
28
29 try:
30 response = self.client.chat.completions.create(
31 model=model,
32 messages=[{"role": "user", "content": prompt}],
33 max_completion_tokens=4096
34 )
35
36 return response.choices[0].message.content
37
38 except Exception as e:
39 print(f"Error generating summary: {e}")
40 return f"Summary failed. First 500 chars: {transcript[:500]}..."
41
42# Example usage
43summarizer = VideoSummarizer()
44summary = summarizer.summarize_video(transcript)
45print(summary)
La chiave è creare un prompt chiaro che dica all’AI esattamente che tipo di riassunto vuoi.
Passaggio 3: Mettere Tutto Insieme
Ecco la pipeline completa:
1def summarize_youtube_video(video_url):
2 """Complete pipeline to summarize a YouTube video"""
3
4 print(f"Processing: {video_url}")
5
6 # Step 1: Extract video ID and transcript
7 video_id = extract_video_id(video_url)
8 if not video_id:
9 return "Invalid YouTube URL"
10
11 transcript = get_video_transcript(video_id)
12 if not transcript:
13 return "No transcript available for this video"
14
15 print(f"Transcript extracted: {len(transcript)} characters")
16
17 # Step 2: Generate summary
18 summarizer = VideoSummarizer()
19 summary = summarizer.summarize_video(transcript)
20
21 return summary
22
23# Example usage
24video_url = "https://www.youtube.com/watch?v=your_video_here"
25
26summary = summarize_youtube_video(video_url)
27print("\n" + "="*60)
28print("VIDEO SUMMARY")
29print("="*60)
30print(summary)
Conclusione
Con circa 100 righe di Python, puoi costruire un sistema che riassume automaticamente qualsiasi video YouTube con trascrizioni disponibili. Il processo in tre fasi—estrarre trascrizione, elaborare con LLM, godersi i risultati—funziona in modo affidabile per la maggior parte dei contenuti.
Questo approccio è particolarmente utile per video educativi, interviste e conferenze tecniche dove vuoi capire rapidamente i punti principali senza guardare l’intero video. Oppure, se sei come me, puoi scoprire cosa si nasconde dietro i titoli clickbait.
Il codice completo è disponibile qui