Zum Inhalt springen
Transcript Dock
AnmeldenKostenlos starten

Seitenmenü

Transcript Dock

Videotranskripte in LangChain

Laden Sie YouTube- und TikTok-Transkripte als LangChain-Documents mit Zeitstempeln, oder geben Sie einem LangChain-Agenten die MCP-Tools von Transcript Dock.

Kurz gesagt: Es gibt zwei Wege. Für die Indexierung macht ein kleiner Loader aus einem Transkript LangChain-Document-Objekte, eines pro Untertitelsegment mit seiner Startzeit. Für Agenten wird der MCP-Server von Transcript Dock über langchain-mcp-adapters an LangChain angebunden, und der Agent holt die Transkripte selbst.

Ein Document-Loader#

Zwanzig Zeilen, kein zusätzliches Paket. Jedes Document behält die Video-URL und die Zeitangaben, sodass Suchtreffer den Moment zitieren können, aus dem sie stammen. Fassen Sie Segmente vor dem Embedding zu größeren Abschnitten zusammen, wie unter Transkripte für RAG gezeigt.

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")

Agenten-Tools über MCP#

MultiServerMCPClient verbindet sich mit dem Remote-Server und macht dessen Tools zu LangChain-Tools: get_video_transcript, YouTube-Suche, das Auflisten von Kanälen und Playlists sowie das Auflisten von TikTok-Profilen.

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())

Tool-Namen, Argumente und Credit-Kosten stehen auf der MCP-Seite. LlamaIndex und andere Frameworks, die MCP sprechen, verbinden sich auf dieselbe Weise.