RAG اور LLM پائپ لائنز کے لیے ویڈیو ٹرانسکرپٹس
YouTube اور TikTok ویڈیوز کو ایسے chunks میں بدلیں جنہیں LLM تلاش اور حوالہ دے سکے: ٹائم شدہ حصے لیں، وقت کے لحاظ سے chunk کریں، اور ٹائم اسٹیمپ لنکس محفوظ رکھیں۔
اپ ڈیٹ ہوا
مختصر جواب: ٹرانسکرپٹ کو plain text کے بجائے JSON کے طور پر حاصل کریں۔ segments array میں ہر کیپشن لائن کا شروع اور ختم ہونے کا وقت ہوتا ہے، اس لیے آپ وقت کے لحاظ سے chunk کر سکتے ہیں اور شروع کا وقت میٹا ڈیٹا کے طور پر محفوظ کر سکتے ہیں۔ پھر آپ کے ماڈل کا ہر جواب ویڈیو کے بالکل اسی لمحے کے لنک سے جڑ سکتا ہے۔
ٹائم شدہ حصے سادہ متن سے بہتر کیوں ہیں#
- حوالے: جو chunk جانتا ہے کہ وہ 754 سیکنڈ پر شروع ہوتا ہے، وہ اس لمحے کا لنک بن جاتا ہے۔
- قدرتی حدیں: کیپشن کی لائنیں وقفوں پر ختم ہوتی ہیں، اس لیے chunks کم ہی کسی جملے کو آدھا کاٹتے ہیں۔
- ماخذ:
source_originبتاتا ہے کہ متن تخلیق کار سے آیا، پلیٹ فارم کے خودکار کیپشن سے، یا AI ٹرانسکرپشن سے، اورlanguageاس کی زبان دیتا ہے۔
حاصل کریں اور chunk کریں#
یہ ایک ٹرانسکرپٹ لیتا ہے اور حصوں کو تقریباً ایک منٹ کی کھڑکیوں میں گروپ کرتا ہے۔ ٹرانسکرپٹ JSON کی شکل API ریفرنس میں بیان کی گئی ہے۔
import requestsAPI = "https://www.transcriptdock.com"H = {"Authorization": "Bearer td_live_YOUR_KEY"}def transcript(url: str) -> dict:job = requests.post(f"{API}/v1/jobs", headers={**H, "Idempotency-Key": f"rag-{url}"[:128]},json={"source": {"url": url}, "mode": "captions_only"}).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"])return requests.get(f"{API}/v1/transcripts/{job['result_id']}", headers=H).json()def chunks(t: dict, seconds: float = 60.0):"""Group caption segments into windows of about `seconds`, never splitting a segment."""url = t["source"]["canonical_url"]buf, start = [], Nonefor seg in t["segments"]:if start is None:start = seg["start"]buf.append(seg["text"])if seg["end"] - start >= seconds:yield {"text": " ".join(buf), "start": start, "url": f"{url}&t={int(start)}s" if "youtube" in url else url}buf, start = [], Noneif buf:yield {"text": " ".join(buf), "start": start, "url": url}t = transcript("https://www.youtube.com/watch?v=dQw4w9WgXcQ")for c in chunks(t):print(c["start"], c["url"], c["text"][:80]) # embed c["text"], store start and url as metadata
بہت سی ویڈیوز#
- ویڈیو دریافت کے ذریعے ویڈیوز تلاش کریں: YouTube سرچ، چینل، پلے لسٹ یا TikTok پروفائل۔
- انہیں ایک بیچ کے طور پر جمع کریں اور ایک ویب ہک کو بتانے دیں کہ ہر کام کب ختم ہوا، پولنگ کے بجائے۔
- ٹرانسکرپٹ کو دوبارہ پڑھنا اور دوبارہ ایکسپورٹ کرنا مفت ہے، اور جو لنک آپ پہلے ٹرانسکرائب کر چکے ہوں اسے دوبارہ جمع کرانے پر محفوظ شدہ نتیجہ واپس ملتا ہے، اس لیے ingest دوبارہ چلانے پر دوبارہ خرچ نہیں ہوتا۔
وہ ایجنٹس جو ضرورت پر حاصل کرتے ہیں#
ہر پائپ لائن کو انڈیکس کی ضرورت نہیں۔ Transcript Dock MCP سرور سے جڑا ایجنٹ جب صارف کسی ویڈیو کا ذکر کرے تو get_video_transcript کال کر سکتا ہے اور متن براہ راست اپنے context میں پڑھ سکتا ہے۔ فریم ورکس کے لیے LangChain اور n8n دیکھیں۔