گام به گام: ساخت یک عامل تحقیق YouTube با کد Claude
اگر تا به حال بعد از ظهری را صرف گشت و گذار بیهدف در YouTube کردهاید و در نهایت فراموش کردهاید که کدام ویدیوها ارزش ذخیره کردن داشتند، تنها نیستید. حال، یک دستیار خستگیناپذیر را تصور کنید که میتواند بهترین ویدیوها را پیدا کند، خلاصهها را استخراج کند، نقل قولهای کلیدی را بیرون بکشد، تایماستمپ بینشها را مشخص کند و منابع را در صورت نیاز – به سرعت – برگرداند. این دقیقاً همان کاری است که یک عامل تحقیق YouTube میتواند انجام دهد. در این راهنمای گام به گام، ما یک عامل تحقیق YouTube کاربردی با کد Claude میسازیم که برای سازندگان، تحلیلگران، دانشجویان و یادگیرندگان وسواسی که سیگنال را به نویز ترجیح میدهند، طراحی شده است.
ما یک مسیر عملی و مستقیم را در پیش خواهیم گرفت: معماری، کد، دستورالعملها و محافظها. در طول مسیر، انتخابهای عمدی خواهیم داشت که میتوانید بعداً آنها را تغییر دهید. در پایان، شما یک عامل کارآمد خواهید داشت که میتواند در YouTube جستجو کند، رونوشتها را جمعآوری کند، در بین چندین ویدیو استدلال کند و خلاصههای تحقیق تمیزی تولید کند.
آنچه میسازیم (و چرا مهم است)
- هدف: یک عامل تحقیق YouTube که میتواند:
- جستجو در YouTube بر اساس پرس و جو
- رتبهبندی نتایج بر اساس ارتباط/تعامل
- واکشی رونوشتها (زیرنویسهای خودکار یا شخص ثالث)
- تکهتکه کردن و جاسازی محتوا برای بازیابی
- استفاده از کد Claude برای ترکیب بینشهای چند ویدیویی
- خروجی یادداشتهای ساختاریافته: خلاصه، ادعاها، تایماستمپها، نقل قولها و استنادها
- کلمه کلیدی اصلی: "ساخت یک عامل تحقیق YouTube با کد Claude"
- فرمت: آموزش گام به گام با کد و دستورالعملهای قابل اجرا
- خروجیها: خلاصه تحقیق Markdown + JSON برای استفاده برنامهنویسی
چرا مهم است: YouTube بزرگترین پایگاه دانش عمومی از گفتگوها، درسها، دموها و بحثها است. اما پر از نویز است. ساخت یک عامل تحقیق YouTube با کد Claude به شما یک مزیت میدهد: شما میتوانید بینشها را در دهها ویدیو در عرض چند دقیقه جمعآوری کنید، نه چند ساعت.
معماری در یک نگاه
ما نسخه اول را ساده و قوی نگه خواهیم داشت.
- ورودیها: یک پرس و جوی تحقیق (به عنوان مثال، "معماریهای عامل LLM 2025")، محدودیتهای اختیاری (محدوده تاریخ، کانال، مدت زمان)
- جستجوی YouTube: YouTube Data API v3 (یا SerpAPI fallback)
- رونوشتها: YouTube Transcript API؛ در صورت عدم دسترسی، به ASR (به عنوان مثال، Whisper) برمیگردد
- تکهتکه کردن: تقسیمبندی آگاه از جمله (تقریباً 800-1200 توکن)
- جاسازیها: استفاده از یک مدل جاسازی محلی یا میزبانی شده (به عنوان مثال،
text-embedding-3-large، nomic-embed-text، یا bge-large)
- فروشگاه برداری:
FAISS محلی برای سرعت؛ میتواند به Pinecone، Weaviate، یا Qdrant تغییر کند
- استدلال: کد Claude برای سازماندهی، استفاده از ابزار، ترکیب و اجرای کد در داخل یک حلقه کنترل شده
- خروجیها: گزارش Markdown + فهرست JSON با استنادها، تایماستمپها و امتیازها
جریان داده: پرس و جو → جستجو → واکشی فراداده → رونوشت → تکهتکه کردن → جاسازی → بازیابی K برتر → ترکیب کد Claude → گزارش.
پیشنیازها و تنظیمات
- کلیدهای API:
YOUTUBE_API_KEY، ANTHROPIC_API_KEY (برای کد Claude)
- اختیاری:
OPENAI_API_KEY یا جاسازیهای محلی
google-api-python-client، youtube-transcript-api
faiss-cpu، numpy، pandas، tiktoken (یا sentencepiece)
requests، pydantic، tenacity
pip install google-api-python-client youtube-transcript-api faiss-cpu numpy pandas requests pydantic tenacity anthropic tiktoken
متغیرهای محیطی:
export YOUTUBE_API_KEY=YOUR_YT_KEY
export ANTHROPIC_API_KEY=YOUR_ANTHROPIC_KEY
مرحله 1: جستجوی YouTube با فیلترها
ما در YouTube جستجو خواهیم کرد و فرادادههای ساختاریافته را برمیگردانیم: عنوان، کانال، تاریخ انتشار، مدت زمان، بازدیدها (در صورت وجود) و videoId.
# file: yt_search.py
from googleapiclient.discovery import build
import os
YOUTUBE_API_KEY = os.environ — channel, date\n\n"
"---\n"
"JSON schema: {\"claims\":[{\"claim\":str,\"support\":[{\"video_id\":str,\"start\":float,\"end\":float}]}]}\n"
)
def call_claude(goal: str, passages: list[dict]):
passages_str = "\n\n".join(
f"[rank {p['rank']} | score {p['score']:.3f}] (vID={p.get('video_id','?')}, {p.get('start',0):.1f}-{p.get('end',0):.1f})\n{p['text']}"
for p in passages
)
msg = client.messages.create(
model="claude-3-5-sonnet-20240620",
max_tokens=1800,
temperature=0.2,
system=SYSTEM_PROMPT,
messages=[
{"role": "user", "content": USER_TEMPLATE.format(goal=goal, passages=passages_str)}
])
return msg.content[0].text
نکات مربوط به prompt هنگام ساخت یک عامل تحقیق YouTube با کد Claude:
- درخواست خروجیهای ساختاریافته در هر دو قالب قابل خواندن توسط انسان و قابل خواندن توسط ماشین
- اجرای استنادهای دارای تایماستمپ
- تشویق به افشای عدم قطعیتها و تناقضات
مرحله 6: سر هم بندی همه چیز
بیایید پرس و جو → جستجو → رونوشتها → تکهها → جاسازیها → بازیابی → ترکیب را به هم متصل کنیم.
# file: run_agent.py
from yt_search import search_youtube
from transcripts import fetch_transcript
from chunking import transcript_to_docs
from embeddings import VectorStore
from orchestrator import call_claude
from datetime import datetime
def build_corpus(query: str, max_videos=8):
results = search_youtube(query, max_results=max_videos)
corpus_docs = []
for r in results:
tx = fetch_transcript(r["video_id"]) or []
if not tx:
continue
docs = transcript_to_docs(tx)
for d in docs:
d.update({
"video_id": r["video_id"],
"title": r["title"],
"channel": r["channel"],
"url": r["url"],
})
corpus_docs.extend(docs)
return corpus_docs
def research(query: str, k=12):
corpus = build_corpus(query)
if not corpus:
return "No transcripts available."
vs = VectorStore
vs.add(corpus)
passages = vs.search(query, k=k)
md = call_claude(query, passages)
timestamp = datetime.utcnow.isoformat
return f"<!-- generated {timestamp} UTC -->\n\n" + md
if __name__ == "__main__":
print(research("LLM agents for YouTube research"))
این نسخه پایه از یک عامل تحقیق YouTube با کد Claude، بینشهای چند ویدیویی را با استنادها جستجو، بازیابی و ترکیب میکند. جاسازیها را ارتقا دهید و برای آمادهسازی آن برای تولید، کش را اضافه کنید.
هفت ارتقاء برای عالی کردن آن
- جاسازیهای بهتر و جستجوی ترکیبی
- جاسازیهای با کیفیت بالا را جایگزین کنید و جستجوی کلمات کلیدی BM25 را اضافه کنید. ترکیبی، فراخوانی بیشتری در اصطلاحات خاص و دقت بهتری در موضوعات انتزاعی میدهد.
- گسترش ابزارها برای فراداده غنیتر
- نظرات، نسبت لایک/دیسلایک و اعتبار کانال را بیرون بکشید. یک رتبهبند (cross-encoder) برای 100 کاندید برتر اضافه کنید.
- برنامهریزی تحقیق چند مرحلهای
- از کد Claude برای پیشنهاد یک برنامه تحقیق استفاده کنید: سوالات فرعی، فرضیهها و بررسیهای پوشش. به صورت تکراری اجرا کنید تا آستانههای پوشش برآورده شوند.
- ردیابی شواهد و شواهد متقابل
- برای هر ادعا، قطعههای پشتیبانی و متناقض را ثبت کنید. هر دو را در گزارشها ارائه دهید. امتیازهای اطمینان را اضافه کنید.
- استراتژیهای ویدیویی طولانی
- از تشخیص صحنه از طریق زیرنویسها یا زمانبندی کلمات Whisper استفاده کنید. قبل از ترکیب جهانی، هر بخش را خلاصه کنید تا از رقیق شدن زمینه جلوگیری شود.
- رونوشتها، جاسازیها و گزارشها را به ازای هر پرس و جو ذخیره کنید. هنگام تغییر فیلترها توسط کاربران، دوباره استفاده کنید. حذف تکراری بر اساس شناسه ویدیو را اضافه کنید.
- Markdown، PDF و JSON را صادر کنید. تحویل از طریق ایمیل یا Slack. تایماستمپها را به صورت پیوندهای قابل کلیک
?t=mmss رندر کنید.
دستورالعملهایی که میتوانید دوباره استفاده کنید
از این الگوها هنگام ساخت یک عامل تحقیق YouTube با کد Claude استفاده کنید.
System: شما یک عامل تحقیق دقیق هستید. در بین چندین رونوشت YouTube ترکیب کنید. با [vID @ mm:ss] به صورت درون خطی استناد کنید و یک بخش منابع با URLها درج کنید. هم یک خلاصه Markdown و هم یک بار JSON از ادعاها با پشتیبانی دارای تایماستمپ برگردانید.
User: هدف تحقیق: {topic}
Constraints: focus on {audience or scope}; prefer sources within {date range}; include disagreements.
Candidate passages (ranked):
{retrieved_passages}
Output: Summary → Key Insights (bullets) → Notable Quotes (with timestamps) → Contradictions & Gaps → Sources. Then JSON {"claims": ...}
محافظها و اخلاقیات
- احترام به حقوق سازنده: به ویدیوهای اصلی پیوند دهید و از انتشار رونوشتهای بزرگ کلمه به کلمه خودداری کنید.
- شفاف باشید: نشان دهید که ادعاها از کجا میآیند با استفاده از تایماستمپها و شناسههای ویدیو.
- از خلاصهسازی بیش از حد خودداری کنید: تفاوتهای ظریف را حفظ کنید. وقتی زیرنویسها به طور خودکار تولید میشوند و احتمالاً دارای نویز هستند، علامت بزنید.
- با موضوعات حساس با دقت برخورد کنید: عدم قطعیت را برجسته کنید و به دنبال منابع متنوع باشید.
عیبیابی: مسائل رایج و رفع آنها
- به Whisper برگردید. زبانهای مختلف را امتحان کنید. بررسی کنید که آیا ویدیو در منطقه مسدود شده است.
- جاسازیها را ارتقا دهید. BM25 را اضافه کنید. همپوشانی تکهها را افزایش دهید. پارامتر Top-K را تنظیم کنید.
- اجرای طرحواره استناد سختگیرانه. ادعاهای پشتیبانی نشده را جریمه کنید. وجود تایماستمپهای دقیق در تکههای بازیابی شده را الزامی کنید.
- به شدت کش کنید.
max_results را کاهش دهید. درخواستها را دستهای کنید. با tenacity بازگشت به عقب را اضافه کنید.
- هر بخش را خلاصه کنید. حداکثر توکنها را محدود کنید. از دستورالعملهای برنامهریزی با طرح کلی صریح استفاده کنید.
اندازهگیری کیفیت
- دقت @K از تکههای بازیابی شده در مقابل یک مجموعه برچسبگذاری شده
- نرخ وفاداری: نسبت ادعاها با پشتیبانی قابل تأیید دارای تایماستمپ
- پوشش: تعداد ویدیوهای مرتبط منحصر به فرد استناد شده
- تأخیر: زمان از پرس و جو تا گزارش
مثال: تحقیق درباره "پایگاههای داده برداری توضیح داده شده"
- پرس و جو: "پایگاههای داده برداری برای توسعه دهندگان 2025 توضیح داده شده"
- فیلترها: ویدیوها بعد از سال 2023، مدت زمان 6-30 دقیقه
- نتیجه: عامل به 6 ویدیو استناد میکند، نقاط قوت و ضعف HNSW در مقابل IVF-PQ را برجسته میکند، در مورد هزینه/فراخوان بحث میکند و به معیارها پیوند میدهد. بخش تناقضات ادعاهای فروشنده را در مقابل نتایج منبع باز مقایسه میکند.
به هر حال: خودکارسازی این در داخل گردش کار شما
اگر در اسناد و کد کار میکنید، ارزشش را دارد که آخرین مایل را خودکار کنید. یک CLI کوچک میتواند پرس و جوهای شبانه را اجرا کند و خلاصههای Markdown را در پایگاه دانش شما قرار دهد. همچنین میتوانید آن را به الگوهای مسئله برای تحقیق اسپرینت متصل کنید.
ارزش ذکر دارد: اگر گردش کار شما از قبل در یک نوار کناری مرورگر یا دستیار هوش مصنوعی وجود دارد، ابزارهایی مانند Sider.AI میتوانند حلقه تحقیق را ساده کنند—یک موضوع را انتخاب کنید، یک جستجو را اجرا کنید، رونوشتها را ضبط کنید و یک خلاصه مبتنی بر Claude را درست در جایی که کار میکنید پیشنویس کنید. این میتواند در صرفهجویی در جابجایی زمینه کمک کند و ساخت یک عامل تحقیق YouTube با کد Claude را حتی برای تیمها عملیتر کند. نکات کلیدی
- ساخت یک عامل تحقیق YouTube با کد Claude یک راه اهرمی بالا برای تبدیل ویدیوها به خلاصههای عملی است.
- پشته حداقلی: YouTube API + رونوشتها + تکهتکه کردن + جاسازیها + FAISS + ترکیب Claude.
- مسیرهای ارتقاء: جستجوی ترکیبی، رتبهبندی مجدد، حلقههای برنامهریزی و ردیابی استناد سختگیرانه.
- ساده شروع کنید، وفاداری را اندازهگیری کنید و به سمت قابلیت اطمینان تکرار کنید.
مراحل بعدی
- پیادهسازی یک مدل جاسازی واقعی و بازیابی ترکیبی
- اضافه کردن یک مرحله رتبهبندی مجدد و معیارهای کیفیت
- ایجاد یک کار زمانبندی شده برای تازهسازی موضوعات به صورت هفتگی
- بستهبندی به عنوان یک CLI و یک رابط کاربری وب سبک وزن
سوالات متداول
Q1: چگونه شروع به ساخت یک عامل تحقیق YouTube با کد Claude کنم؟
با جستجوی YouTube شروع کنید، رونوشتها را واکشی کنید، محتوا را تکهتکه کنید، در یک فروشگاه برداری جاسازی کنید و از کد Claude برای ترکیب نتایج استفاده کنید. راهنمای بالا کد گام به گام برای سرهمبندی یک خط لوله کاری ارائه میدهد.
Q2: بهترین کتابخانهها برای یک عامل تحقیق YouTube کدامند؟
از YouTube Data API برای جستجو، youtube-transcript-api برای زیرنویسها، FAISS برای جستجوی برداری و Anthropic SDK برای فراخوانی کد Claude استفاده کنید. میتوانید جاسازیها را با OpenAI، Nomic یا BGE تعویض کنید.
Q3: چگونه استنادها و تایماستمپهای دقیق را تضمین کنم؟
تایماستمپهای شروع/پایان را در طول تکهتکه کردن نگه دارید و از کد Claude بخواهید که به [video_id @ mm:ss] استناد کند. قبل از انتشار، تأیید کنید که تایماستمپهای استناد شده در تکههای بازیابی شده وجود دارند.
Q4: آیا میتوانم از این عامل برای ویدیوهای خصوصی یا فهرست نشده استفاده کنم؟
بله، اگر به آن دسترسی داشته باشید و بتوانید رونوشتها را واکشی کنید یا ASR محلی را اجرا کنید (به عنوان مثال، Whisper). همیشه به مجوزها احترام بگذارید و از توزیع محتوای دارای حق چاپ خودداری کنید.
Q5: چگونه میتوانم این عامل تحقیق YouTube را برای تیمها مقیاسبندی کنم؟
کش، یک فروشگاه برداری مشترک، صفهای کار و اجراهای زمانبندی شده را اضافه کنید. با Slack یا یک ویکی ادغام کنید و یک دستیار مبتنی بر مرورگر مانند Sider.AI را برای سادهسازی گردش کارهای محقق در نظر بگیرید.