Transcripciones de video en LangChain
Carga transcripciones de YouTube y TikTok como Documents de LangChain con marcas de tiempo, o dale a un agente de LangChain las herramientas MCP de Transcript Dock.
Actualizado
Respuesta corta: hay dos formas. Para indexar, un cargador pequeño convierte una transcripción en objetos Document de LangChain, uno por cada segmento de subtítulos con su hora de inicio. Para agentes, el servidor MCP de Transcript Dock se conecta a LangChain mediante langchain-mcp-adapters y el agente obtiene las transcripciones por su cuenta.
Un cargador de documentos#
Veinte líneas, sin paquetes adicionales. Cada Document conserva la URL del video y los tiempos, así que los resultados de la búsqueda pueden citar el momento del que provienen. Agrupa los segmentos en fragmentos más grandes antes de calcular los embeddings, como se muestra en transcripciones para RAG.
# pip install langchain-core requestsimport requestsfrom langchain_core.documents import DocumentAPI = "https://www.transcriptdock.com"H = {"Authorization": "Bearer td_live_YOUR_KEY"}def load_video(url: str, mode: str = "captions_only") -> list[Document]:"""One Document per caption segment, with the video URL and start time as metadata."""job = requests.post(f"{API}/v1/jobs", headers={**H, "Idempotency-Key": f"lc-{url}"[:128]},json={"source": {"url": url}, "mode": mode}).json()while job["status"] not in ("succeeded", "failed", "cancelled"):job = requests.get(f"{API}/v1/jobs/{job['id']}", params={"wait": 25}, headers=H).json()if job["status"] != "succeeded":raise RuntimeError(job["error"]["code"])t = requests.get(f"{API}/v1/transcripts/{job['result_id']}", headers=H).json()meta = {"source": t["source"]["canonical_url"], "title": t["source"]["title"], "language": t["language"]}return [Document(page_content=s["text"], metadata={**meta, "start": s["start"], "end": s["end"]})for s in t["segments"]]docs = load_video("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
Herramientas de agente mediante MCP#
MultiServerMCPClient se conecta al servidor remoto y convierte sus herramientas en herramientas de LangChain: get_video_transcript, búsqueda en YouTube, listado de canales y de listas de reproducción, y listado de perfiles de TikTok.
# pip install langchain-mcp-adapters langgraph langchain-anthropicimport asynciofrom langchain_mcp_adapters.client import MultiServerMCPClientfrom langgraph.prebuilt import create_react_agentasync def main():client = MultiServerMCPClient({"transcriptdock": {"url": "https://www.transcriptdock.com/mcp","transport": "streamable_http","headers": {"Authorization": "Bearer td_live_YOUR_KEY"},}})tools = await client.get_tools()agent = create_react_agent("anthropic:claude-sonnet-5-5", tools)out = await agent.ainvoke({"messages": "Summarize https://www.youtube.com/watch?v=dQw4w9WgXcQ"})print(out["messages"][-1].content)asyncio.run(main())
Los nombres de las herramientas, sus argumentos y sus costos en créditos están en la página de MCP. LlamaIndex y otros frameworks que usan MCP se conectan de la misma forma.