انتقل إلى المحتوى
Transcript Dock
تسجيل الدخولابدأ مجانًا

قائمة الموقع

Transcript Dock

نصوص الفيديو في LangChain

حمّل نصوص YouTube وTikTok كـ Document في LangChain مع الطوابع الزمنية، أو امنح وكيل LangChain أدوات MCP الخاصة بـ Transcript Dock.

باختصار: هناك طريقتان. للفهرسة، يحوّل محمّل صغير النص إلى كائنات Document في LangChain، كل كائن لمقطع ترجمة واحد مع وقت بدايته. وللوكلاء، يتصل خادم MCP الخاص بـ Transcript Dock بـ LangChain عبر langchain-mcp-adapters، فيجلب الوكيل النصوص بنفسه.

محمّل مستندات#

عشرون سطرًا، دون حزمة إضافية. يحتفظ كل Document بعنوان الفيديو وتوقيته، فتتمكن نتائج الاسترجاع من الإشارة إلى اللحظة التي جاءت منها. اجمع المقاطع في كتل أكبر قبل التضمين، كما هو موضح في نصوص الفيديو لـ 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")

أدوات الوكيل عبر MCP#

يتصل MultiServerMCPClient بالخادم البعيد ويحوّل أدواته إلى أدوات LangChain: get_video_transcript، والبحث في YouTube، وعرض القنوات وقوائم التشغيل، وعرض ملفات 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())

أسماء الأدوات ومعاملاتها وتكاليف الأرصدة موضحة في صفحة MCP. وتتصل LlamaIndex وغيرها من أطر العمل التي تدعم MCP بالطريقة نفسها.