Aller au contenu
Transcript Dock
Se connecterCommencer gratuitement

Menu du site

Transcript Dock

Transcriptions vidéo dans LangChain

Chargez les transcriptions YouTube et TikTok comme Documents LangChain avec horodatage, ou donnez à un agent LangChain les outils MCP de Transcript Dock.

En bref, il y a deux façons. Pour l'indexation, un petit loader transforme une transcription en objets Document de LangChain, un par segment de sous-titres, avec son heure de début. Pour les agents, le serveur MCP de Transcript Dock se branche sur LangChain via langchain-mcp-adapters, et l'agent récupère lui-même les transcriptions.

Un loader de documents#

Une vingtaine de lignes, sans package supplémentaire. Chaque Document conserve l'URL de la vidéo et son timing, afin que les résultats de recherche puissent citer le moment exact d'où ils viennent. Regroupez les segments en blocs plus grands avant l'embedding, comme le montre la page transcriptions pour le 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")

Des outils d'agent via MCP#

MultiServerMCPClient se connecte au serveur distant et transforme ses outils en outils LangChain : get_video_transcript, la recherche YouTube, la liste des chaînes et des playlists, et la liste des profils 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())

Les noms des outils, leurs arguments et leurs coûts en crédits sont indiqués sur la page MCP. LlamaIndex et les autres frameworks compatibles avec MCP se connectent de la même façon.