מדריך בנייה · מפתחי אפליקציות

איך לבנות מנוע חיפוש למה שנאמר בתוך סרטוני YouTube

החיפוש של YouTube מתאים כותרות, תיאורים ותגיות. הוא לא יכול לומר לכם איזה מתוך 400 פרקי פודקאסט מזכיר אורח, ספר או רעיון מסוים, או באיזו דקה זה קורה. מנוע חיפוש שמבוסס על תמלולים כן יכול, וזה אחד המוצרים השימושיים שהכי מהר לבנות על ה-API.

למי זה מתאים
רשתות פודקאסטים, פלטפורמות קורסים, קהילות מעריצים, ספריות וידאו פנימיות
זמן פיתוח
סוף שבוע
נקודות קצה של ה-API
/channels/resolve/batch/transcripts/{video_id}

הבעיה שזה פותר

ספריות וידאו גדולות כמעט בלתי ניתנות לחיפוש. מעריצים מגלגלים שעות של צילומים כדי למצוא רגע שהם זוכרים רק בחצי, סטודנטים צופים שוב בשיעורים שלמים כדי למצוא הסבר אחד, וחברות מאבדות ידע ארגוני שקבור בהרצאות מוקלטות. אינדוקס תמלולים עם חותמות זמן הופך כל ספרייה למשהו שאפשר לחפש בו כמו במסמך, עם תוצאות שקופצות ישר לרגע הנכון.

מה לכלול בגרסה הראשונה

  • חיפוש לפי ביטוי ומילת מפתח בכל הסרטונים בערוץ או בפלייליסט
  • תוצאות שמציגות את המשפט התואם עם קישור לחותמת הזמן המדויקת
  • חיפוש סמנטי, כך ש-"איך לתמחר את המוצר שלי" ימצא גם "קביעת התעריפים שלכם"
  • סינון לפי תאריך, סרטון ודובר
  • אינדוקס אוטומטי של העלאות חדשות

איך לבנות את זה, שלב אחר שלב

  1. 01

    אספו את רשימת הסרטונים

    קראו ל-/channels/resolve או ל-/playlists/resolve עם שם הערוץ או כתובת הפלייליסט כדי לקבל את כל מזהי הסרטונים והכותרות.

  2. 02

    שלפו תמלולים בכמויות

    שלחו את המזהים ל-/batch עם format.timestamp ו-format.paragraphs מופעלים. מנות גדולות רצות באופן אסינכרוני, אז בדקו את /batch/{batch_id} מדי פעם או השתמשו ב-webhook.

  3. 03

    אנדקסו את המקטעים

    שמרו כל פסקה עם מזהה הסרטון וזמן ההתחלה שלה. חיפוש טקסט מלא של Postgres מספיק לחיפוש לפי מילות מפתח; הוסיפו embeddings ב-pgvector או במסד נתונים וקטורי לחיפוש לפי משמעות.

  4. 04

    בנו את ממשק החיפוש

    החזירו את התוצאות המובילות עם הטקסט שסביבן וקישור בפורמט youtube.com/watch?v=ID&t=SECONDS, כך שמשתמשים יגיעו בדיוק לרגע הנכון.

  5. 05

    שמרו על עדכניות

    הריצו משימה מתוזמנת שממירה שוב את הערוץ, מוצאת מזהי סרטונים חדשים ומתמללת רק אותם.

קוד התחלתי

הרעיון הזה מבוסס על התבנית "מתכון 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

למה כדאי לבנות את זה

מכרו את זה לבעלי הספרייה ולא לצופים: רשתות פודקאסטים, פלטפורמות קורסים וחברות עם ארכיוני וידאו פנימיים ישלמו מנוי חודשי על חיפוש ששומר על מעורבות הקהל. בקהילות מעריצים עובד גם חיפוש ציבורי חינמי עם מסלול בתשלום להתראות או לגישת API.

טעויות שכדאי להימנע מהן

  • אינדוקס של תמלולים שלמים כמסמך אחד: בלי חותמות זמן ברמת הפסקה, תוצאות החיפוש הופכות לחסרות תועלת.
  • תמלול מחדש של כל הערוץ בכל עדכון, במקום לעקוב אחרי מזהי הסרטונים שכבר עיבדתם.
  • הסתמכות רק על התאמה מדויקת של מילות מפתח: שפה מדוברת היא מבולגנת, אז הוסיפו חיפוש סמנטי כבר בשלב מוקדם.

שאלות על הרעיון הזה

האם צריך מסד נתונים וקטורי כדי לחפש בתמלולי YouTube?

לא. חיפוש טקסט מלא של Postgres מטפל היטב בחיפוש לפי מילות מפתח ברוב הספריות. הוסיפו embeddings כשאתם רוצים תוצאות שתואמות משמעות ולא מילים מדויקות.

איך מקשרים תוצאת חיפוש לרגע המדויק בסרטון?

כל מקטע בתמלול כולל זמן התחלה בשניות. הוסיפו &t= ואחריו את המספר הזה לכתובת ה-YouTube.

אפשר לאנדקס סרטונים שאין להם כתוביות?

כן. הפעילו את allow_asr עם כתובת webhook, וה-API יתמלל את האודיו באמצעות זיהוי דיבור מבוסס AI כשאין כתוביות.

התחילו לבנות עוד היום

10 קרדיטים בחינם בכל חודש. לא צריך כרטיס אשראי.

איך לבנות מנוע חיפוש לסרטוני YouTube | YouTubeTranscript.dev