YouTube-kanavan uutiskirjeen automatisointi RSS:llä ja yhdellä API:lla

YouTube-kanavan uutiskirjeen automatisointi tarvitsee tasan kolme osaa: RSS-syötteen, jonka YouTube julkaisee hiljaisesti jokaiselle kanavalle, transkriptio-API:n ja cron-työn. Maanantaiaamun koosteeni — kuusi kanavaa omalta erikoisalaltani, tiivistettyinä oikealla sisällöllä pikkukuvaotsikoiden sijaan — on pyörinyt ilman valvontaa neljä kuukautta noin 40 Python-rivillä. Tässä rakennusohje.
RSS-syöte, jota YouTube ei mainosta
Jokaisella kanavalla on syöte osoitteessa:
https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID
Löydät kanavan ID:n avaamalla kanavasivun, katsomalla lähdekoodin ja hakemalla channelId. Syöte palauttaa uusimmat lataukset (suunnilleen viimeiset 15) julkaisupäivineen — ei API-avainta, ei OAuthia, ei YouTube Data API -kiintiötä. Se on koko putken liipaisin.
Skripti
Kysele syötteet, pidä viimeiset 7 päivää, transkriboi, tiivistä:
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"])
Jokainen result sisältää kentät title, pubDate ja jopa 60 tuhatta merkkiä content-sisältöä — noin 45 minuuttia puhetta, runsaasti koostetiivistelmää varten. Lähetä kukin valitsemallesi LLM:lle tarkoituksella tylsällä kehotteella:
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}
Yhdistä tiivistelmät, lisää linkit, ohjaa valitsemaasi sähköpostityökaluun (itse käytän tavallista SMTP-kutsua) ja ajasta se: 0 7 1 python3 /home/you/digest.py.
Kiintiölaskelma
Kuusi kanavaa, keskimäärin kaksi latausta viikossa, on karkeasti 48–50 transkriptiota kuukaudessa — 5,99 dollarin perustason 50 videota kattaa sen ilman yhtään ylimääräistä, mikä on joko tyydyttävää tai hermoja raastavaa temperamentistasi riippuen. Jos kanavasi ovat tuotteliaita, pro-taso 9,99 dollarilla ja 500 videolla poistaa jännityksen. Ilmaisen tason 5 kuukaudessa riittää yhden kanavan koosteeseen, esimerkiksi oman viikkosi latausten kertauksen lähettämiseen tilaajillesi.
Kaksi vikaantumistapaa
Molemmat ovat ajoitusongelmia, ja molemmat kannattaa käsitellä rehellisesti. Ensinnäkin: tunti ennen cron-työsi laukeamista julkaistulla videolla ei välttämättä ole vielä käsiteltyjä tekstityksiä, joten API palauttaa TRANSCRIPT_UNAVAILABLE. Lokitan nämä id:t ja yritän niitä uudelleen seuraavalla ajolla sen sijaan, että pudottaisin ne — koosteen ajaminen päivän viikkorajan jäljessä toimii myös. Toiseksi: RSS-syöte listaa vain viimeaikaiset lataukset, joten kuukausittainen tahti päivittäin julkaisevalla kanavalla ohittaa videoita hiljaisesti. Viikoittainen kysely on turvallinen kaikille testaamilleni kanaville; jos lähde julkaisee useammin kuin kahdesti päivässä, kysele kahdesti viikossa.
Jos et halua ylläpitää skriptiä
Sama putki rakentuu no-code-työkaluilla RSS-liipaisinsolmulla: n8n-versio ja Make-versio käyvät sen läpi vaihe vaiheelta. Ja jos haluat kolmen lauseen koostetta rikkaammat videokohtaiset kuvaukset, jaksokuvauskehote istuu suoraan tähän silmukkaan.
Google-kirjautuminen osoitteessa youtube2text.org/app/keys antaa avaimen alle minuutissa — ei korttia, ei puhelinta — ja maanantain sähköpostilaatikkosi alkaa ansaita paikkansa.