HomeBlogTranscribePlansAPI Keys

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

RSS-syötteen merkinnät virtaavat skriptin läpi sähköpostiuutiskirjeen koosteeksi

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.