HomeBlogTranscribePlansAPI Keys

Automatiza una newsletter de canales de YouTube con RSS y una sola API

Entradas de un feed RSS fluyendo a través de un script hacia un resumen de newsletter por correo

Automatizar una newsletter de canales de YouTube necesita exactamente tres piezas: el feed RSS que YouTube publica discretamente para cada canal, una API de transcripciones y un cron job. Mi resumen de los lunes por la mañana — seis canales de mi nicho, resumidos con sustancia real en lugar de títulos de miniatura — lleva cuatro meses funcionando sin supervisión con unas 40 líneas de Python. Aquí está la construcción.

El feed RSS que YouTube no anuncia

Cada canal tiene un feed en:

https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID

Para encontrar el ID de un canal, abre la página del canal, mira el código fuente y busca channelId. El feed devuelve las subidas más recientes (aproximadamente las últimas 15) con fechas de publicación — sin clave de API, sin OAuth, sin cuota de la YouTube Data API. Ese es el disparador de todo el pipeline.

El script

Consulta los feeds, conserva los últimos 7 días, transcribe, resume:

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"])

Cada result trae title, pubDate y hasta 60k caracteres de content — unos 45 minutos de conversación, de sobra para el resumen de un digest. Envía cada uno a tu LLM preferido con un prompt deliberadamente aburrido:

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}

Concatena los resúmenes, añade los enlaces, envíalo a tu herramienta de correo preferida (yo uso una llamada SMTP simple) y prográmalo: 0 7 1 python3 /home/you/digest.py.

Las cuentas de la cuota

Seis canales con una media de dos subidas por semana son aproximadamente 48-50 transcripciones al mes — los 50 videos del plan básico de $5.99 lo cubren sin nada de margen, lo cual resulta satisfactorio o angustiante según tu temperamento. Si tus canales son prolíficos, el plan pro de $9.99 con 500 videos elimina el suspenso. Los 5 al mes del plan gratuito funcionan para un digest de un solo canal, como enviar a tus propios suscriptores un resumen de tus subidas de la semana.

Los dos modos de fallo

Ambos son problemas de sincronización, y ambos merecen manejarse con honestidad. Primero, un video publicado una hora antes de que se dispare tu cron job puede no tener todavía los subtítulos procesados, así que la API devuelve TRANSCRIPT_UNAVAILABLE. Yo registro esos ids y los reintento en la siguiente ejecución en lugar de descartarlos — ejecutar el digest con un día de retraso respecto al corte semanal también funciona. Segundo, el feed RSS solo lista las subidas recientes, así que una cadencia mensual sobre un canal que sube a diario perderá videos silenciosamente. La consulta semanal es segura para cualquier canal que he probado; si una fuente publica más de dos veces al día, consulta dos veces por semana.

Si prefieres no mantener un script

El mismo pipeline se construye en herramientas no-code con un nodo disparador de RSS: la versión de n8n y la versión de Make lo explican paso a paso. Y si quieres reseñas por video más ricas que un digest de tres frases, el prompt de notas de episodio encaja directamente en este bucle.

Un inicio de sesión de Google en youtube2text.org/app/keys te da una clave en menos de un minuto — sin tarjeta, sin teléfono — y tu bandeja de entrada de los lunes empieza a ganarse el sueldo.