מדריך בנייה · חוקרים

איך לבנות ארכיון ישיבות ציבוריות מ-YouTube שאפשר לחפש בו

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

למי זה מתאים
חוקרי שלטון מקומי, עיתונאים מקומיים, אנליסטים של מדיניות
זמן פיתוח
1–2 שבועות
נקודות קצה של ה-API
/playlists/resolveasr_options.speakerLabels/batch

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

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

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

  • קליטה אוטומטית של כל ישיבה מהערוץ של הגוף
  • תיוג דוברים כדי שאפשר יהיה לחפש לפי נבחר ציבור
  • חיפוש לפי נושא ומילות מפתח בשנים של ישיבות
  • התראות כשנושא או כתובת עולים לדיון
  • קישורים לשיתוף לרגע המדויק בהקלטה

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

  1. 01

    אספו את סרטוני הישיבות

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

  2. 02

    תמללו עם דוברים

    השתמשו ב-ASR עם speakerLabels מופעל, וב-speakerId עם שמות ידועים, כך שכל קטע ישויך לדובר. הישיבות ארוכות, אז השתמשו בנקודת הקצה להערכת עלות כדי לראות את העלות מראש.

  3. 03

    אנדקסו לפי ישיבה ודובר

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

  4. 04

    הוסיפו התראות

    אפשרו למשתמשים לשמור חיפושים, כמו שם רחוב או נושא מדיניות, ושלחו להם מייל כשהוא עולה בישיבה חדשה.

קוד התחלתי

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

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

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

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

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

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

אפשר לתמלל ישיבות מועצת עיר מ-YouTube?

כן. השתמשו בכתוביות כשהן קיימות, או בזיהוי דיבור מבוסס AI עם תיוג דוברים לקבלת תמלולים קריאים יותר של ישיבות ארוכות.

איך מזהים מי מדבר?

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

כמה עולה לתמלל ישיבה של שלוש שעות?

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

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

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

איך לבנות ארכיון ישיבות ציבוריות שאפשר לחפש בו | YouTubeTranscript.dev