HomeBlogTranscribePlansAPI Keys

Transcripciones de YouTube en Notion: Caminos Sin Código y Python

Base de datos de Notion de videos de YouTube con contenido de transcripción y resumen almacenado dentro de cada página

Guardar cada transcripción de YouTube en Notion convierte un canal que sigues en una base de datos que puedes buscar, etiquetar, y vincular de tus notas. Hay dos formas buenas de construirlo — una automatización sin código o un script de Python de aproximadamente veinte líneas — y te daré ambos, porque el correcto depende enteramente de si ya ejecutas n8n o Make.

Ruta 1: sin código

Si una herramienta de automatización ya está en tu vida, esto es tres módulos de trabajo. El disparador es el feed RSS del canal (cada canal tiene uno: https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID), el medio es una llamada HTTP, y el final es un paso "crear página" de Notion apuntado a tu base de datos.

El paso HTTP es el mismo en cada herramienta:

La respuesta vuelve como {"result": {"videoId", "title", "pubDate", "content", ...}} — mapea result.title al título de la página y result.content al cuerpo de la página. He escrito recorridos completos para n8n, incluyendo un nodo de resumen de LLM antes del paso de Notion, y para Make con su configuración de enrutador.

Ruta 2: veinte líneas de Python

¿Sin plataforma de automatización? La API de Notion más una llamada requests te consigue el mismo resultado. Configuración primero: crea una integración interna en notion.so/my-integrations, copia su secreto, y comparte tu base de datos de destino con la integración (las bases de datos son invisibles para las integraciones hasta que lo hagas). La base de datos necesita una propiedad de título llamada Name.

import requests

YT_KEY = "yt_YOUR_KEY"
NOTION_KEY = "secret_YOUR_NOTION_KEY"
DATABASE_ID = "your-database-id"

def add_video(url):
    r = requests.get(
        "https://youtube2text.org/api/transcribe",
        params={"url": url, "maxChars": 20000},
        headers={"x-api-key": YT_KEY},
    ).json()["result"]
    text = r["content"]
    chunks = [text[i:i + 2000] for i in range(0, len(text), 2000)]
    blocks = [{"object": "block", "type": "paragraph",
               "paragraph": {"rich_text": [{"text": {"content": c}}]}}
              for c in chunks[:100]]
    requests.post(
        "https://api.notion.com/v1/pages",
        headers={"Authorization": f"Bearer {NOTION_KEY}",
                 "Notion-Version": "2022-06-28",
                 "Content-Type": "application/json"},
        json={"parent": {"database_id": DATABASE_ID},
              "properties": {"Name": {"title": [{"text": {"content": r["title"]}}]}},
              "children": blocks},
    )

add_video("https://www.youtube.com/watch?v=dQw4w9WgXcQ")

El parámetro url toma cualquier forma de URL de YouTube o un id de 11 caracteres desnudo. Para una clave sin registrarse, curl -s https://youtube2text.org/api/demo-key devuelve una compartida gratuita — 5 videos al mes por IP, suficiente para probar.

Por qué el script divide el texto

Ese rebanado en piezas de 2000 caracteres no es decoración — es una regla de Notion. La API limita cada texto enriquecido a 2,000 caracteres y cada solicitud de crear página a 100 bloques, que es la limitación honesta de toda esta configuración: aproximadamente 200,000 caracteres por solicitud, y las transcripciones largas hacen que las páginas sean lentas de abrir mucho antes de eso. Por eso establezco maxChars a 20000. Si genuinamente necesitas transcripciones completas de múltiples horas almacenadas, añade los bloques restantes con solicitudes de seguimiento al punto final de bloques — pero para la mayoría de los archivos, 20k caracteres más un resumen vence una pared de subtítulos automáticos.

Agregar el resumen

La transcripción es la materia prima; el resumen es lo que realmente leerás en seis meses. Slot una llamada de LLM entre la obtención y la creación de la página — aliméntalo con r["content"], pide cinco puntos, y antepone el resultado como el primer bloque de párrafo (en n8n esto es solo un nodo más). Una vez que los resúmenes viven junto a las transcripciones, la base de datos también se convierte en un corpus de recuperación decente — ese es el punto de partida para construir RAG sobre un canal completo.

Claves y costos

La clave demo compartida no aguantará un canal que realmente sigas. Inicia sesión con Google en youtube2text.org/app/keys — sin teléfono, sin tarjeta — para tu propia clave: gratuito 5 videos al mes, $5.99 por 50, $9.99 por 500, $19.99 ilimitado. El lado de Notion es gratuito; las transcripciones casi lo son.