Какую проблему решает
Ручная расшифровка ограничивает исследования несколькими десятками видео, а самописные скрипты-парсеры ломаются и плохо воспроизводятся. Исследователям нужен надёжный способ собрать полные расшифровки для заданной выборки каналов и дат, сохранить их с метаданными и описать метод так, чтобы другие могли его повторить.
Что включить в первую версию
- Задокументированная выборка каналов и диапазон дат
- Полные расшифровки, сохранённые как исходный JSON с метаданными
- Источник субтитров для каждого видео (ручные, автоматические или AI)
- Экспорт в CSV или текст для R, Python, NVivo или ATLAS.ti
- Скрипт сбора, который можно перезапустить для воспроизведения
Как создать: пошагово
- 01
Определите выборку
Перечислите каналы и период исследования и зафиксируйте критерии включения для раздела о методах.
- 02
Получите списки видео
Вызовите /channels/resolve для каждого канала и отфильтруйте результаты по дате публикации.
- 03
Соберите расшифровки
Отправьте ID видео в /batch и сохраните полный JSON-ответ, включая язык и источник субтитров каждой расшифровки.
- 04
Подготовьте к анализу
Экспортируйте расшифровки в текст или CSV с ID видео, каналом, датой и таймкодами, затем анализируйте их с помощью тематических моделей, частотности ключевых слов или качественного кодирования.
Стартовый код
Эта идея построена на шаблоне «Рецепт 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?
Это зависит от качества звука, акцентов и темы. API сообщает, получена ли каждая расшифровка из ручных субтитров, автоматических субтитров или AI-распознавания речи, чтобы вы могли это учесть.
Сколько видео можно собрать за раз?
На тарифе Business один пакетный запрос принимает до 3 000 ID видео. Для более крупных исследований можно запустить несколько пакетов.