Paso a paso: Creación de un agente de investigación de YouTube con Claude Code
Si alguna vez has pasado una tarde entera navegando sin rumbo por YouTube, solo para olvidar qué videos valía la pena guardar, no estás solo. Ahora imagina un asistente incansable que pueda encontrar los mejores videos, extraer resúmenes, extraer citas clave, marcar con marcas de tiempo las ideas y devolver las fuentes a pedido, rápidamente. Eso es exactamente lo que puede hacer un agente de investigación de YouTube. En esta guía paso a paso, construiremos un agente de investigación práctico de YouTube con Claude Code, diseñado para creadores, analistas, estudiantes y estudiantes obsesionados que desean distinguir la señal del ruido.
Tomaremos una ruta práctica y directa: arquitectura, código, indicaciones y medidas de seguridad. En el camino, tomaremos decisiones basadas en opiniones que podrás cambiar más adelante. Al final, tendrás un agente funcional que puede buscar en YouTube, recopilar transcripciones, razonar a través de múltiples videos y producir informes de investigación claros.
Qué estamos construyendo (y por qué es importante)
- Objetivo: Un agente de investigación de YouTube que pueda:
- Buscar en YouTube por consulta
- Clasificar los resultados por relevancia/participación
- Obtener transcripciones (subtítulos automáticos o de terceros)
- Dividir y adjuntar contenido para su recuperación
- Usar Claude Code para sintetizar ideas de múltiples videos
- Producir notas estructuradas: resumen, afirmaciones, marcas de tiempo, citas y referencias
- Palabra clave principal: "Building a YouTube research agent with Claude Code"
- Formato: Tutorial paso a paso con código ejecutable y mensajes
- Salidas: Resumen de investigación de Markdown + JSON para uso programático
Por qué es importante: YouTube es la base de conocimiento público más grande de charlas, lecciones, demostraciones y debates. Pero es ruidoso. Construir un agente de investigación de YouTube con Claude Code te da una ventaja: puedes agregar información de docenas de videos en minutos, no en horas.
Arquitectura de un vistazo
Mantendremos la primera versión simple y robusta.
- Entradas: una consulta de investigación (p. ej., "arquitecturas de agentes LLM 2025"), restricciones opcionales (rango de fechas, canal, duración)
- Búsqueda de YouTube: YouTube Data API v3 (o SerpAPI como alternativa)
- Transcripciones: YouTube Transcript API; recurrir a ASR (p. ej., Whisper) cuando no esté disponible
- Fragmentación: Segmentación basada en oraciones (aproximadamente 800–1200 tokens)
- Incrustaciones: Usar un modelo de incrustación local o alojado (p. ej.,
text-embedding-3-large, nomic-embed-text o bge-large)
- Almacén de vectores:
FAISS local para mayor velocidad; se puede cambiar a Pinecone, Weaviate o Qdrant
- Razonamiento: Claude Code para la orquestación, el uso de herramientas, la síntesis y la ejecución de código dentro de un bucle controlado
- Salidas: Informe de Markdown + índice JSON con citas, marcas de tiempo y puntuaciones
Flujo de datos: Consulta → Búsqueda → Obtener metadatos → Transcripción → Fragmento → Incrustar → Recuperar los K principales → Síntesis de Claude Code → Informe.
Requisitos previos y configuración
- Claves API:
YOUTUBE_API_KEY, ANTHROPIC_API_KEY (para Claude Code)
- Opcional:
OPENAI_API_KEY o incrustaciones locales
google-api-python-client, youtube-transcript-api
faiss-cpu, numpy, pandas, tiktoken (o sentencepiece)
requests, pydantic, tenacity
pip install google-api-python-client youtube-transcript-api faiss-cpu numpy pandas requests pydantic tenacity anthropic tiktoken
Variables de entorno:
export YOUTUBE_API_KEY=YOUR_YT_KEY
export ANTHROPIC_API_KEY=YOUR_ANTHROPIC_KEY
Paso 1: Búsqueda en YouTube con filtros
Buscaremos en YouTube y devolveremos metadatos estructurados: título, canal, fecha de publicación, duración, vistas (si están disponibles) e ID del video.
# file: yt_search.py
from googleapiclient.discovery import build
import os
YOUTUBE_API_KEY = os.environ — channel, date\n\n"
"---\n"
"JSON schema: {\"claims\":[{\"claim\":str,\"support\":[{\"video_id\":str,\"start\":float,\"end\":float}]}]}\n"
)
def call_claude(goal: str, passages: list[dict]):
passages_str = "\n\n".join(
f"[rank {p['rank']} | score {p['score']:.3f}] (vID={p.get('video_id','?')}, {p.get('start',0):.1f}-{p.get('end',0):.1f})\n{p['text']}"
for p in passages
)
msg = client.messages.create(
model="claude-3-5-sonnet-20240620",
max_tokens=1800,
temperature=0.2,
system=SYSTEM_PROMPT,
messages=[
{"role": "user", "content": USER_TEMPLATE.format(goal=goal, passages=passages_str)}
])
return msg.content[0].text
Sugerencias de indicaciones al construir un agente de investigación de YouTube con Claude Code:
- Solicitar salidas estructuradas en formatos legibles tanto para humanos como para máquinas
- Aplicar citas con marcas de tiempo
- Fomentar las revelaciones de incertidumbre y las contradicciones
Paso 6: Juntando todo
Conectemos consulta → búsqueda → transcripciones → fragmentos → incrustaciones → recuperar → sintetizar.
# file: run_agent.py
from yt_search import search_youtube
from transcripts import fetch_transcript
from chunking import transcript_to_docs
from embeddings import VectorStore
from orchestrator import call_claude
from datetime import datetime
def build_corpus(query: str, max_videos=8):
results = search_youtube(query, max_results=max_videos)
corpus_docs = []
for r in results:
tx = fetch_transcript(r["video_id"]) or []
if not tx:
continue
docs = transcript_to_docs(tx)
for d in docs:
d.update({
"video_id": r["video_id"],
"title": r["title"],
"channel": r["channel"],
"url": r["url"],
})
corpus_docs.extend(docs)
return corpus_docs
def research(query: str, k=12):
corpus = build_corpus(query)
if not corpus:
return "No transcripts available."
vs = VectorStore
vs.add(corpus)
passages = vs.search(query, k=k)
md = call_claude(query, passages)
timestamp = datetime.utcnow.isoformat
return f"<!-- generated {timestamp} UTC -->\n\n" + md
if __name__ == "__main__":
print(research("LLM agents for YouTube research"))
Esta versión de referencia de un agente de investigación de YouTube con Claude Code buscará, recuperará y sintetizará información de múltiples videos con citas. Actualiza las incrustaciones y agrega el almacenamiento en caché para que esté listo para producción.
Siete actualizaciones para que sea genial
- Mejores incrustaciones y búsqueda híbrida
- Cambia las incrustaciones de alta calidad y agrega la búsqueda de palabras clave BM25. El híbrido ofrece más recuperación en términos de nicho y mejor precisión en temas abstractos.
- Ampliar las herramientas para obtener metadatos más enriquecidos
- Extraer comentarios, relación de me gusta/no me gusta y autoridad del canal. Agrega un reclasificador (codificador cruzado) para los 100 candidatos principales.
- Planificación de investigación de varios turnos
- Usar Claude Code para proponer un plan de investigación: subpreguntas, hipótesis y comprobaciones de cobertura. Ejecutar iterativamente hasta que se cumplan los umbrales de cobertura.
- Seguimiento de evidencia y contraevidencia
- Para cada afirmación, registra fragmentos de apoyo y contradicción. Presentar ambos en los informes; agregar puntuaciones de confianza.
- Estrategias de video largo
- Usar la detección de escenas a través de subtítulos o Whisper word timings. Resumir por sección antes de la síntesis global para evitar la dilución del contexto.
- Almacenamiento en caché y persistencia
- Almacenar transcripciones, incrustaciones e informes por consulta. Reutilizar cuando los usuarios modifiquen los filtros. Agregar deduplicación por ID de video.
- Formatos de exportación y entrega
- Exportar Markdown, PDF y JSON. Entrega por correo electrónico o Slack. Renderizar marcas de tiempo como enlaces
?t=mmss en los que se puede hacer clic.
Indicaciones que puedes reutilizar
Usar estas plantillas al construir un agente de investigación de YouTube con Claude Code.
Sistema: eres un agente de investigación meticuloso. Sintetiza a través de múltiples transcripciones de YouTube. Citar en línea con [vID @ mm:ss] e incluir una sección de Fuentes con URL. Devolver tanto un resumen de Markdown como una carga útil JSON de afirmaciones con soporte con marca de tiempo.
Usuario: Objetivo de la investigación: {topic}
Restricciones: centrarse en {audience or scope}; preferir fuentes dentro de {date range}; incluir desacuerdos.
Pasajes candidatos (clasificados):
{retrieved_passages}
Salida: Resumen → Ideas clave (viñetas) → Citas notables (con marcas de tiempo) → Contradicciones y brechas → Fuentes. Luego JSON {"claims": ...}
Medidas de seguridad y ética
- Respetar los derechos del creador: Enlazar a los videos originales y evitar la publicación de grandes transcripciones textuales.
- Ser transparente: Mostrar de dónde provienen las afirmaciones utilizando marcas de tiempo e ID de video.
- Evitar la sobre-simplificación: Preservar los matices; señalar cuando los subtítulos se generan automáticamente y es probable que sean ruidosos.
- Manejar los temas delicados con cuidado: Resaltar la incertidumbre y buscar fuentes diversas.
Solución de problemas: problemas y soluciones comunes
- "No se encontró ninguna transcripción"
- Recurrir a Whisper; probar diferentes idiomas; verificar si el video está bloqueado por región.
- Mala calidad de recuperación
- Actualizar las incrustaciones; agregar BM25; aumentar la superposición de fragmentos; ajustar el parámetro top-K.
- Forzar un esquema de citas estricto; penalizar las afirmaciones no respaldadas; requerir marcas de tiempo exactas presentes en los fragmentos recuperados.
- Almacenar en caché de forma agresiva; reducir
max_results; solicitudes por lotes; agregar retroceso con tenacity.
- Resumir por sección; restringir los tokens máximos; usar indicaciones de planificación con un esquema explícito.
Medición de la calidad
- Precisión@K de fragmentos recuperados frente a un conjunto etiquetado
- Tasa de fidelidad: proporción de afirmaciones con soporte verificable con marca de tiempo
- Cobertura: número de videos relevantes únicos citados
- Latencia: tiempo desde la consulta hasta el informe
Ejemplo: Investigación de "Bases de datos vectoriales explicadas"
- Consulta: "bases de datos vectoriales explicadas para desarrolladores 2025"
- Filtros: videos posteriores a 2023, duración de 6 a 30 minutos
- Resultado: el agente cita 6 videos, destaca las ventajas y desventajas de HNSW vs. IVF-PQ, analiza el costo/recuperación y enlaza a puntos de referencia. La sección de contradicciones compara las afirmaciones del proveedor con los resultados de código abierto.
Por cierto: automatización de esto dentro de tu flujo de trabajo
Si trabajas con documentos y código, vale la pena automatizar el último tramo. Un pequeño CLI puede ejecutar consultas nocturnas y colocar resúmenes de Markdown en tu base de conocimiento. También puedes conectarlo a plantillas de problemas para la investigación de sprints.
Vale la pena señalar: si tu flujo de trabajo ya reside en una barra lateral del navegador o en un asistente de IA, herramientas como Sider.AI pueden optimizar el ciclo de investigación: selecciona un tema, ejecuta una búsqueda, captura transcripciones y redacta un resumen con tecnología de Claude directamente donde trabajas. Esto puede ahorrar el cambio de contexto y hacer que la construcción de un agente de investigación de YouTube con Claude Code sea aún más práctico para los equipos. Conclusiones clave
- Construir un agente de investigación de YouTube con Claude Code es una forma de alto apalancamiento para convertir videos en resúmenes prácticos.
- La pila mínima: YouTube API + transcripciones + fragmentación + incrustaciones + FAISS + síntesis de Claude.
- Rutas de actualización: búsqueda híbrida, reclasificación, bucles de planificación y seguimiento estricto de citas.
- Comenzar de forma sencilla, medir la fidelidad e iterar hacia la fiabilidad.
Próximos pasos
- Implementar un modelo de incrustación real y una recuperación híbrida
- Agregar un paso de reclasificación y métricas de calidad
- Crear un trabajo programado para actualizar los temas semanalmente
- Empaquetar como un CLI y una interfaz de usuario web ligera
Preguntas frecuentes
P1: ¿Cómo empiezo a construir un agente de investigación de YouTube con Claude Code?
Comienza con la búsqueda de YouTube, obtén transcripciones, fragmenta el contenido, incrusta en un almacén de vectores y usa Claude Code para sintetizar los resultados. La guía anterior proporciona código paso a paso para ensamblar una canalización de trabajo.
P2: ¿Qué bibliotecas son las mejores para un agente de investigación de YouTube?
Usa la API de datos de YouTube para la búsqueda, youtube-transcript-api para subtítulos, FAISS para la búsqueda de vectores y el SDK de Anthropic para llamar a Claude Code. Puedes intercambiar incrustaciones con OpenAI, Nomic o BGE.
P3: ¿Cómo me aseguro de que las citas y las marcas de tiempo sean precisas?
Mantén las marcas de tiempo de inicio/fin durante la fragmentación y exige que Claude Code cite [video_id @ mm:ss]. Valida que las marcas de tiempo citadas existan en los fragmentos recuperados antes de publicar.
P4: ¿Puedo usar este agente para videos privados o no listados?
Sí, si tienes acceso y puedes obtener transcripciones o ejecutar ASR local (p. ej., Whisper). Siempre respeta los permisos y evita la distribución de contenido protegido por derechos de autor.
P5: ¿Cómo puedo escalar este agente de investigación de YouTube para equipos?
Agrega almacenamiento en caché, un almacén de vectores compartido, colas de trabajos y ejecuciones programadas. Intégralo con Slack o una wiki, y considera un asistente basado en navegador como Sider.AI para optimizar los flujos de trabajo de los investigadores.