Какую проблему решает
Фактчекеры могут искать по текстовым платформам, но видео в основном остаётся непрозрачным. Утверждения повторяются в чуть разных формулировках на десятках каналов, и чтобы задокументировать их распространение, приходится смотреть часы записей. Исследователям нужны расшифровки с поиском, семантическое сопоставление пересказов и проверяемая запись каждого случая.
Что включить в первую версию
- Мониторинг заданного набора каналов
- Семантический поиск пересказов утверждения, а не только точной формулировки
- Хронология первого появления и распространения
- Цитаты со ссылками на таймкоды для проверки
- Экспорт доказательств для отчётов и публикаций
Как создать: пошагово
- 01
Соберите расшифровки
Получите списки видео нужных каналов и пакетно обработайте видео за ваш период. Если исследование продолжается, следите за новыми загрузками.
- 02
Создайте эмбеддинги сегментов
Создайте эмбеддинги для каждого абзаца расшифровки, чтобы находить высказывания с похожим смыслом.
- 03
Ищите утверждение
Создайте эмбеддинги для нескольких формулировок утверждения, найдите похожие фрагменты и попросите проверяющего или LLM подтвердить, какие из них действительно содержат это утверждение.
- 04
Постройте хронологию
Упорядочьте подтверждённые совпадения по дате публикации и экспортируйте их с каналом, цитатой и ссылкой на таймкод.
Стартовый код
Эта идея построена на шаблоне «Рецепт 2: следите за каналами и получайте уведомления о новых видео». Подставьте свои каналы, промпты и хранилище.
import requests
API = "https://www.youtubetranscript.dev/api/v2"
HEADERS = {"Authorization": "Bearer yt_sk_live_YOUR_KEY"}
WATCHLIST = ["@somechannel", "@anotherchannel"]
KEYWORDS = ["your brand", "competitor"]
seen = set() # persist this in a database in production
for handle in WATCHLIST:
latest = requests.post(f"{API}/channels/resolve", headers=HEADERS,
json={"handle": handle, "limit": 10}).json()
for video in latest["items"]:
if video["video_id"] in seen:
continue
seen.add(video["video_id"])
t = requests.post(f"{API}/transcribe", headers=HEADERS,
json={"video": video["video_id"]}).json()
text = t.get("data", {}).get("transcript", {}).get("text", "").lower()
hits = [k for k in KEYWORDS if k in text]
if hits:
print(f"ALERT {video['title']}: {hits}")Почему это стоит создать
Фактчекинговые организации и исследовательские группы получают скорость и проверяемые доказательства. Команды доверия и безопасности и компании медиамониторинга будут платить за инструменты, охватывающие видео.
Каких ошибок избегать
- Считать автоматические совпадения выводами: перед публикацией всегда давайте человеку их подтвердить.
- Искать только точные фразы: утверждения мутируют, поэтому используйте семантический поиск по нескольким формулировкам.
- Терять происхождение данных: храните ID видео, таймкод и дату получения для каждой цитаты.
Вопросы об этой идее
Как фактчекеры ищут по видео на YouTube?
Расшифровывая видео и выполняя поиск по тексту. Семантический поиск находит пересказы, которые пропустил бы поиск по ключевым словам.
Можно ли доказать, когда утверждение впервые прозвучало на YouTube?
Вы можете задокументировать самое раннее появление на отслеживаемых каналах с датой публикации и таймкодом. Полнота картины зависит от охвата.
А как быть с видео без субтитров?
Включите AI-распознавание речи, чтобы видео без субтитров тоже расшифровывались и были доступны для поиска.