El problema que resuelve
Los coaches y divulgadores responden cada día las mismas preguntas en comentarios y mensajes directos, aunque ya las hayan tratado en sus vídeos. Su audiencia no encuentra el vídeo adecuado y el creador no puede escalar las respuestas personales. Un chatbot del canal responde con la voz del creador y lleva a los espectadores de vuelta al contenido original.
Qué incluir en tu primera versión
- Respuestas basadas solo en los vídeos del propio creador
- Citas que enlazan al vídeo y la marca de tiempo exactos
- Actualizaciones automáticas cuando se publican vídeos nuevos
- Un plan gratuito con límite de preguntas y un plan de pago para miembros
- Un widget que se puede insertar en la web o la comunidad del creador
Cómo construirlo, paso a paso
- 01
Ingiere el canal
Resuelve el canal o una lista de reproducción seleccionada y envía todos los IDs de vídeo a /batch con format.paragraphs y format.timestamp.
- 02
Divide y genera embeddings
Guarda cada párrafo con el título del vídeo, la URL y el tiempo de inicio, y crea los embeddings en una base de datos vectorial.
- 03
Recupera y responde
Para cada pregunta, recupera los párrafos más relevantes y pide a un LLM que responda usando solo esos, citando el vídeo y la marca de tiempo.
- 04
Mantenlo al día
Comprueba de forma programada si hay vídeos nuevos en el canal y añade al índice solo las nuevas transcripciones.
Código de inicio
Esta idea se basa en el patrón "Receta 3: carga en bloque una lista de reproducción en una base de conocimiento". Usa tus propios canales, prompts y almacenamiento.
import requests
API = "https://www.youtubetranscript.dev/api/v2"
HEADERS = {"Authorization": "Bearer yt_sk_live_YOUR_KEY"}
playlist = requests.post(f"{API}/playlists/resolve", headers=HEADERS,
json={"playlist_url": "https://www.youtube.com/playlist?list=PLAYLIST_ID",
"limit": 100}).json()
ids = [v["video_id"] for v in playlist["items"]]
batch = requests.post(f"{API}/batch", headers=HEADERS, json={
"video_ids": ids,
"format": {"timestamp": True, "paragraphs": True},
}).json()
# Large batches run async: poll GET /batch/{batch_id} until status is "completed"
for r in batch.get("results", []):
if r["status"] == "completed":
for p in r["data"]["transcript"].get("paragraphs") or []:
store(video_id=r["video_id"], start=p["start"], text=p["text"]) # your vector DBCómo genera ingresos
Cobra al creador una cuota mensual por el chatbot alojado, o comparte ingresos de un plan de pago que él vende a su audiencia. Las comunidades de membresía y los vendedores de cursos pueden incluirlo como ventaja premium.
Errores que debes evitar
- Dejar que el modelo responda con conocimiento general: limítalo a los fragmentos de transcripción recuperados para que suene como el creador.
- Usar fragmentos de tamaño fijo que cortan las frases por la mitad: agrupar por párrafos mantiene el contexto.
- Lanzarlo sin la aprobación del creador: constrúyelo con él, porque se trata de su voz y su contenido.
Preguntas sobre esta idea
¿Puedo entrenar un chatbot con un canal de YouTube?
Sí. En lugar de entrenar un modelo, recuperas los fragmentos relevantes de las transcripciones y haces que un LLM responda a partir de ellos. Esto se llama generación aumentada por recuperación (RAG).
¿Cómo hago que el chatbot cite sus fuentes?
Guarda la URL del vídeo y el tiempo de inicio con cada fragmento de transcripción e indica al modelo que los incluya en cada respuesta.
¿Cuánto cuesta indexar un canal completo?
Los vídeos con subtítulos nativos cuestan 1 crédito cada uno. Indexar un canal de 300 vídeos cuesta unos 300 créditos una sola vez, y después solo pagas por los vídeos nuevos.