Welches Problem es löst
Große Videobibliotheken sind praktisch nicht durchsuchbar. Fans spulen stundenlang durch Material, um einen Moment zu finden, an den sie sich nur halb erinnern, Kursteilnehmer schauen ganze Lektionen erneut, um eine einzige Erklärung zu finden, und Unternehmen verlieren Wissen, das in aufgezeichneten Vorträgen vergraben ist. Mit indexierten, zeitgestempelten Transkripten wird jede Bibliothek durchsuchbar wie ein Dokument – und die Treffer springen direkt zur richtigen Stelle.
Was in die erste Version gehört
- Phrasen- und Stichwortsuche über alle Videos eines Kanals oder einer Playlist
- Treffer mit dem passenden Satz und einem Link zum exakten Zeitstempel
- Semantische Suche, damit „Wie lege ich meinen Preis fest“ auch „Stundensätze kalkulieren“ findet
- Filter nach Datum, Video und Sprecher
- Automatische Indexierung neuer Uploads
Schritt für Schritt bauen
- 01
Videoliste sammeln
Rufen Sie /channels/resolve oder /playlists/resolve mit dem Kanal-Handle bzw. der Playlist-URL auf, um alle Video-IDs und Titel zu erhalten.
- 02
Transkripte gesammelt abrufen
Senden Sie die IDs mit aktiviertem format.timestamp und format.paragraphs an /batch. Große Batches laufen asynchron – fragen Sie also /batch/{batch_id} ab oder nutzen Sie einen Webhook.
- 03
Segmente indexieren
Speichern Sie jeden Absatz mit Video-ID und Startzeit. Für die Stichwortsuche reicht die Postgres-Volltextsuche; für eine bedeutungsbasierte Suche ergänzen Sie Embeddings in pgvector oder einer Vektordatenbank.
- 04
Such-UI bauen
Geben Sie die besten Treffer mit umgebendem Text und einem Link im Format youtube.com/watch?v=ID&t=SEKUNDEN zurück, damit Nutzer genau an der richtigen Stelle landen.
- 05
Aktuell halten
Lassen Sie einen geplanten Job den Kanal erneut auflösen, neue Video-IDs finden und nur diese transkribieren.
Starter-Code
Diese Idee basiert auf dem Muster „Rezept 3: Eine Playlist gesammelt in eine Wissensdatenbank laden“. Setzen Sie Ihre eigenen Kanäle, Prompts und Speicherlösungen ein.
import requests
API = "https://www.youtubetranscript.dev/api/v2"
HEADERS = {"Authorization": "Bearer yt_sk_live_YOUR_KEY"}
playlist = requests.post(f"{API}/playlists/resolve", headers=HEADERS,
json={"playlist_url": "https://www.youtube.com/playlist?list=PLAYLIST_ID",
"limit": 100}).json()
ids = [v["video_id"] for v in playlist["items"]]
batch = requests.post(f"{API}/batch", headers=HEADERS, json={
"video_ids": ids,
"format": {"timestamp": True, "paragraphs": True},
}).json()
# Large batches run async: poll GET /batch/{batch_id} until status is "completed"
for r in batch.get("results", []):
if r["status"] == "completed":
for p in r["data"]["transcript"].get("paragraphs") or []:
store(video_id=r["video_id"], start=p["start"], text=p["text"]) # your vector DBWarum es sich lohnt
Verkaufen Sie es an den Eigentümer der Bibliothek statt an die Zuschauer: Podcast-Netzwerke, Kursplattformen und Unternehmen mit internen Videoarchiven zahlen eine Monatsgebühr für eine Suche, die ihr Publikum bei der Stange hält. Für Fan-Communities funktioniert auch eine kostenlose öffentliche Suche mit einem bezahlten Tarif für Benachrichtigungen oder API-Zugriff.
Fehler, die Sie vermeiden sollten
- Ganze Transkripte als ein einziges Dokument indexieren: Ohne Zeitstempel auf Absatzebene werden die Suchergebnisse nutzlos.
- Bei jedem Update den gesamten Kanal neu transkribieren, statt festzuhalten, welche Video-IDs bereits verarbeitet wurden.
- Sich nur auf exakte Stichworttreffer verlassen: Gesprochene Sprache ist unordentlich, also bauen Sie früh eine semantische Suche ein.
Fragen zu dieser Idee
Brauche ich eine Vektordatenbank, um YouTube-Transkripte zu durchsuchen?
Nein. Die Postgres-Volltextsuche bewältigt die Stichwortsuche für die meisten Bibliotheken gut. Ergänzen Sie Embeddings, wenn Treffer der Bedeutung statt dem exakten Wortlaut entsprechen sollen.
Wie verlinke ich einen Suchtreffer auf die genaue Stelle im Video?
Jedes Transkriptsegment enthält eine Startzeit in Sekunden. Hängen Sie &t= gefolgt von dieser Zahl an die YouTube-URL an.
Kann ich Videos ohne Untertitel indexieren?
Ja. Aktivieren Sie allow_asr mit einer Webhook-URL, dann transkribiert die API das Audio per KI-Spracherkennung, wenn keine Untertitel vorhanden sind.