Pobranie i analiza transkrypcji YouTube. Triggers: youtube, yt, transkrypcja, transcript
Pobiera transkrypcję z YouTube i umożliwia analizę/pytania o film.
C:\Users\kamil\AppData\Local\Temp\yt-transcripts\
mkdir -p "C:\Users\kamil\AppData\Local\Temp\yt-transcripts"
python -m yt_dlp --write-auto-sub --sub-lang en,pl --skip-download --sub-format vtt -o "C:\Users\kamil\AppData\Local\Temp\yt-transcripts\%(id)s" "$url" 2>&1
Możliwe błędy:
429 Too Many Requests → Spróbuj tylko --sub-lang enNo subtitles → Film nie ma napisów, poinformuj użytkownikadir "C:\Users\kamil\AppData\Local\Temp\yt-transcripts\*.vtt" /b 2>nul
Usuń timestampy i duplikaty - stwórz czysty plik .txt:
python -c "
import re
import sys
with open(sys.argv[1], 'r', encoding='utf-8') as f:
content = f.read()
# Usuń nagłówek WEBVTT
content = re.sub(r'^WEBVTT.*?\n\n', '', content, flags=re.DOTALL)
# Usuń timestampy i tagi
content = re.sub(r'\d{2}:\d{2}:\d{2}\.\d{3} --> \d{2}:\d{2}:\d{2}\.\d{3}.*?\n', '', content)
content = re.sub(r'<[^>]+>', '', content)
content = re.sub(r'align:start position:\d+%', '', content)
# Usuń puste linie i duplikaty
lines = [l.strip() for l in content.split('\n') if l.strip()]
# Usuń powtarzające się linie (napisy często duplikują)
unique = []
for line in lines:
if not unique or line != unique[-1]:
unique.append(line)
print('\n'.join(unique))
" "$vtt_file" > "${vtt_file%.vtt}.txt"
Task(subagent_type="Explore"):
"KONTEKST: Użytkownik chce przeanalizować film YouTube.
ZADANIE: Przeczytaj CAŁY plik transkrypcji:
[ścieżka do .txt]
Następnie:
1. Podaj tytuł/temat filmu (pierwsze 30 sekund)
2. Zrób SZCZEGÓŁOWE podsumowanie (500-800 słów)
3. Wypisz KLUCZOWE PUNKTY (bullet points)
4. Wypisz CYTATY WARTE ZAPAMIĘTANIA
5. Jeśli użytkownik zadał pytanie: '$pytanie' - odpowiedz na nie
FORMAT: Markdown z sekcjami"
📺 **YouTube Transcript Ready**
**Film:** [tytuł z transkrypcji]
**Plik:** [ścieżka do .txt]
[Podsumowanie od agenta]
---
Możesz zadawać pytania o ten film.
Plik transkrypcji: [ścieżka]
Jeśli użytkownik zadaje pytanie o film (po /yt), użyj:
Task(subagent_type="Explore"):
"KONTEKST: Użytkownik pyta o film YouTube.
Transkrypcja: [ścieżka]
PYTANIE: [pytanie użytkownika]
Przeczytaj transkrypcję i odpowiedz szczegółowo."
Po zakończeniu rozmowy o filmie:
del "C:\Users\kamil\AppData\Local\Temp\yt-transcripts\*.*"
| Błąd | Rozwiązanie |
|---|---|
| No subtitles | Film nie ma napisów - poinformuj |
| 429 Rate limit | Poczekaj 30s, spróbuj ponownie |
| File too large | Podziel na części (offset/limit) |
| JS runtime warning | Ignoruj - działa bez tego |