যে সমস্যার সমাধান করে
হাতে ট্রান্সক্রিপশন গবেষণাকে কয়েক ডজন ভিডিওতে সীমাবদ্ধ রাখে, আর তাৎক্ষণিক স্ক্র্যাপিং স্ক্রিপ্ট ভেঙে যায় এবং পুনরুৎপাদন কঠিন। গবেষকদের দরকার নির্ধারিত চ্যানেল ও তারিখের নমুনার জন্য সম্পূর্ণ ট্রান্সক্রিপ্ট সংগ্রহের নির্ভরযোগ্য উপায়, মেটাডেটাসহ সংরক্ষণ, এবং পদ্ধতি শেয়ার করা যাতে অন্যরা তা পুনরাবৃত্তি করতে পারে।
প্রথম ভার্সনে কী কী রাখবেন
- চ্যানেলের নথিভুক্ত নমুনা ও একটি তারিখের পরিসর
- মেটাডেটাসহ কাঁচা JSON হিসেবে সংরক্ষিত সম্পূর্ণ ট্রান্সক্রিপ্ট
- প্রতিটি ভিডিওর ক্যাপশনের উৎস লিপিবদ্ধ (ম্যানুয়াল, স্বয়ংক্রিয় বা AI)
- R, Python, NVivo বা ATLAS.ti-এর জন্য CSV বা টেক্সটে এক্সপোর্ট
- পুনরাবৃত্তির জন্য আবার চালানো যায় এমন সংগ্রহ স্ক্রিপ্ট
ধাপে ধাপে কীভাবে বানাবেন
- 01
নমুনা নির্ধারণ করুন
যে চ্যানেল ও সময়সীমা অধ্যয়ন করবেন তার তালিকা করুন, এবং পদ্ধতি অংশের জন্য অন্তর্ভুক্তির মানদণ্ড লিখে রাখুন।
- 02
ভিডিও তালিকা রিজলভ করুন
প্রতিটি চ্যানেলের জন্য /channels/resolve কল করুন এবং প্রকাশের তারিখ অনুযায়ী ফলাফল ফিল্টার করুন।
- 03
ট্রান্সক্রিপ্ট সংগ্রহ করুন
ভিডিও ID-গুলো /batch-এ পাঠান এবং প্রতিটি ট্রান্সক্রিপ্টের ভাষা ও ক্যাপশনের উৎসসহ পুরো JSON রেসপন্স সংরক্ষণ করুন।
- 04
বিশ্লেষণের জন্য প্রস্তুত করুন
ভিডিও ID, চ্যানেল, তারিখ ও টাইমস্ট্যাম্পসহ ট্রান্সক্রিপ্ট টেক্সট বা CSV হিসেবে এক্সপোর্ট করুন, তারপর টপিক মডেল, কিওয়ার্ড ফ্রিকোয়েন্সি বা গুণগত কোডিং দিয়ে বিশ্লেষণ করুন।
স্টার্টার কোড
এই আইডিয়াটি "রেসিপি 3: পুরো প্লেলিস্ট একসাথে নলেজ বেসে লোড করুন" প্যাটার্নের ওপর তৈরি। নিজের চ্যানেল, প্রম্পট ও স্টোরেজ বসিয়ে নিন।
import requests
API = "https://www.youtubetranscript.dev/api/v2"
HEADERS = {"Authorization": "Bearer yt_sk_live_YOUR_KEY"}
playlist = requests.post(f"{API}/playlists/resolve", headers=HEADERS,
json={"playlist_url": "https://www.youtube.com/playlist?list=PLAYLIST_ID",
"limit": 100}).json()
ids = [v["video_id"] for v in playlist["items"]]
batch = requests.post(f"{API}/batch", headers=HEADERS, json={
"video_ids": ids,
"format": {"timestamp": True, "paragraphs": True},
}).json()
# Large batches run async: poll GET /batch/{batch_id} until status is "completed"
for r in batch.get("results", []):
if r["status"] == "completed":
for p in r["data"]["transcript"].get("paragraphs") or []:
store(video_id=r["video_id"], start=p["start"], text=p["text"]) # your vector DBকেন বানানো মূল্যবান
গবেষকদের জন্য লাভ হলো হাতে ট্রান্সক্রিপশনের তুলনায় সামান্য খরচ ও সময়ে একটি পুনরুৎপাদনযোগ্য ডেটাসেট। টিমগুলো মিডিয়া মনিটরিং প্রতিষ্ঠান ও থিংক ট্যাংকের জন্য পেইড ডেটাসেট বা অ্যানালিটিক্স সার্ভিসও তৈরি করে।
যে ভুলগুলো এড়াবেন
- উল্লেখ না করে স্বয়ংক্রিয় ও মানুষের তৈরি ক্যাপশন মিশিয়ে ফেলা: নির্ভুলতা আলাদা হয় বলে ক্যাপশনের উৎস লিপিবদ্ধ করুন।
- কাঁচা রেসপন্স সংরক্ষণ না করা: মূল JSON রাখুন যাতে বিশ্লেষণ আবার চালানো যায়।
- নৈতিকতা পর্যালোচনা ও প্ল্যাটফর্মের শর্ত উপেক্ষা করা: ডেটাসেট প্রকাশের আগে আপনার প্রতিষ্ঠানের নিয়ম ও YouTube-এর শর্তাবলী দেখে নিন।
এই আইডিয়া নিয়ে প্রশ্ন
একাডেমিক গবেষণায় কি YouTube ট্রান্সক্রিপ্ট ব্যবহার করা যায়?
অনেক গবেষকই করেন। বিশেষ করে ডেটাসেট প্রকাশ্যে শেয়ার করার আগে আপনার প্রতিষ্ঠানের নৈতিকতা নিয়ম, YouTube-এর শর্তাবলী ও কপিরাইট আইন দেখে নিন।
YouTube-এর স্বয়ংক্রিয় ক্যাপশন কতটা নির্ভুল?
অডিওর মান, উচ্চারণ ও বিষয়ের ওপর নির্ভর করে তা বদলায়। প্রতিটি ট্রান্সক্রিপ্ট ম্যানুয়াল ক্যাপশন, স্বয়ংক্রিয় ক্যাপশন নাকি AI স্পিচ রিকগনিশন থেকে এসেছে তা API জানিয়ে দেয়, যাতে আপনি তা বিবেচনায় নিতে পারেন।
একসাথে কতগুলো ভিডিও সংগ্রহ করা যায়?
Business প্ল্যানে একটি ব্যাচ রিকোয়েস্টে সর্বোচ্চ 3,000টি ভিডিও ID দেওয়া যায়। বড় গবেষণায় একাধিক ব্যাচ চালানো যায়।