Saltar al contenido
Transcript Dock
Iniciar sesiónEmpezar gratis

Menú del sitio

Transcript Dock

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.

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.

loader.py
# pip install langchain-core requests
import requests
from langchain_core.documents import Document
 
API = "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.

agent.py
# pip install langchain-mcp-adapters langgraph langchain-anthropic
import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
 
async 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.