YouTube-Kanal-Newsletter automatisieren mit RSS und einer API

Die Automatisierung eines YouTube-Kanal-Newsletters braucht genau drei Teile: den RSS-Feed, den YouTube stillschweigend für jeden Kanal veröffentlicht, eine Transkript-API und einen Cronjob. Mein Montagmorgen-Digest — sechs Kanäle aus meiner Nische, zusammengefasst mit echter Substanz statt Thumbnail-Titeln — läuft seit vier Monaten unbeaufsichtigt mit rund 40 Zeilen Python. Hier ist der Aufbau.
Der RSS-Feed, den YouTube nicht bewirbt
Jeder Kanal hat einen Feed unter:
https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID
Um die ID eines Kanals zu finden, öffne die Kanalseite, zeig den Quelltext an und such nach channelId. Der Feed liefert die neuesten Uploads (grob die letzten 15) mit Veröffentlichungsdaten — kein API-Key, kein OAuth, kein Kontingent der YouTube Data API. Das ist der Trigger für die ganze Pipeline.
Das Skript
Feeds abfragen, die letzten 7 Tage behalten, transkribieren, zusammenfassen:
import feedparser, requests
from datetime import datetime, timedelta, timezone
CHANNELS = ["UC_channel_id_1", "UC_channel_id_2"]
API_KEY = "yt_your_key"
cutoff = datetime.now(timezone.utc) - timedelta(days=7)
videos = []
for cid in CHANNELS:
feed = feedparser.parse(
f"https://www.youtube.com/feeds/videos.xml?channel_id={cid}")
for e in feed.entries:
published = datetime(*e.published_parsed[:6], tzinfo=timezone.utc)
if published < cutoff:
continue
r = requests.get("https://youtube2text.org/api/transcribe",
params={"url": e.link, "maxChars": 60000},
headers={"x-api-key": API_KEY}, timeout=60).json()
if "result" in r:
videos.append(r["result"])
Jedes result enthält title, pubDate und bis zu 60k Zeichen content — etwa 45 Minuten Gerede, reichlich für eine Digest-Zusammenfassung. Schick jedes an dein LLM der Wahl mit einem bewusst langweiligen Prompt:
Summarize this video transcript for a newsletter digest.
Three sentences, no hype, end with one concrete takeaway
a reader can act on. Video: {title}
{content}
Zusammenfassungen aneinanderhängen, Links ergänzen, an dein E-Mail-Tool der Wahl weiterreichen (ich nutze einen schlichten SMTP-Aufruf) und einplanen: 0 7 1 python3 /home/you/digest.py.
Kontingent-Rechnung
Sechs Kanäle mit im Schnitt zwei Uploads pro Woche sind grob 48-50 Transkripte im Monat — die 50 Videos des Basic-Tarifs für 5,99 $ decken das ohne jede Reserve ab, was je nach Temperament entweder befriedigend oder nervenaufreibend ist. Sind deine Kanäle produktiv, nimmt Pro für 9,99 $ mit 500 Videos die Spannung raus. Die 5 pro Monat des Free-Tiers funktionieren für einen Ein-Kanal-Digest, etwa um deinen eigenen Abonnenten einen Wochenrückblick deiner Uploads zu schicken.
Die zwei Fehlermodi
Beide sind Timing-Probleme, und beide verdienen ehrliche Behandlung. Erstens: Ein Video, das eine Stunde vor deinem Cronjob veröffentlicht wurde, hat möglicherweise noch keine verarbeiteten Untertitel, die API liefert dann TRANSCRIPT_UNAVAILABLE. Ich logge diese IDs und versuche sie im nächsten Lauf erneut, statt sie fallenzulassen — den Digest einen Tag hinter dem Wochen-Stichtag laufen zu lassen funktioniert ebenfalls. Zweitens: Der RSS-Feed listet nur die jüngsten Uploads, ein monatlicher Rhythmus bei einem Kanal mit täglichen Uploads verpasst also stillschweigend Videos. Wöchentliches Abfragen ist für jeden Kanal, den ich getestet habe, sicher; postet eine Quelle mehr als zweimal am Tag, frag zweimal pro Woche ab.
Wenn du lieber kein Skript pflegen willst
Dieselbe Pipeline lässt sich in No-Code-Tools mit einem RSS-Trigger-Node bauen: Die n8n-Version und die Make-Version führen beide Schritt für Schritt hindurch. Und wenn du reichhaltigere Video-Texte als einen Drei-Sätze-Digest willst, passt der Shownotes-Prompt direkt in diese Schleife.
Eine Google-Anmeldung unter youtube2text.org/app/keys bringt dir in unter einer Minute einen Key — keine Karte, kein Telefon — und dein Montags-Posteingang fängt an, sich zu lohnen.