Какую проблему решает
Коучи и преподаватели каждый день отвечают на одни и те же вопросы в комментариях и личных сообщениях, хотя уже разбирали их в видео. Аудитория не может найти нужный ролик, а автор не может масштабировать личные ответы. Чат-бот канала отвечает голосом автора и возвращает зрителей к исходному контенту.
Что включить в первую версию
- Ответы только на основе собственных видео автора
- Ссылки на точное видео и таймкод
- Автоматическое обновление при выходе новых видео
- Бесплатный тариф с лимитом вопросов и платный тариф для участников
- Встраиваемый виджет для сайта или сообщества автора
Как создать: пошагово
- 01
Загрузите канал
Получите список видео канала или отобранного плейлиста и отправьте все ID в /batch с format.paragraphs и format.timestamp.
- 02
Разбейте и создайте эмбеддинги
Сохраните каждый абзац с названием видео, URL и временем начала и создайте эмбеддинги в векторной базе данных.
- 03
Извлекайте и отвечайте
Для каждого вопроса извлекайте самые релевантные абзацы и просите LLM ответить только на их основе, указывая видео и таймкод.
- 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Как на этом заработать
Берите с автора ежемесячную плату за размещённого чат-бота или делите выручку от платного тарифа, который он продаёт своей аудитории. Закрытые сообщества и продавцы курсов могут включить его как премиальный бонус.
Каких ошибок избегать
- Позволять модели отвечать из общих знаний: ограничьте её извлечёнными фрагментами расшифровок, чтобы она звучала как автор.
- Использовать фрагменты фиксированного размера, которые режут предложения пополам: группировка по абзацам сохраняет контекст.
- Запускать без согласия автора: делайте продукт вместе с автором — это его голос и его контент.
Вопросы об этой идее
Можно ли обучить чат-бота на YouTube-канале?
Да. Вместо обучения модели вы извлекаете релевантные фрагменты расшифровок, и LLM отвечает на их основе. Это называется генерацией с дополнением извлечёнными данными (RAG).
Как заставить чат-бота ссылаться на источники?
Сохраняйте URL видео и время начала с каждым фрагментом расшифровки и попросите модель включать их в каждый ответ.
Сколько стоит проиндексировать весь канал?
Видео с родными субтитрами стоят 1 кредит каждое. Канал из 300 видео обойдётся примерно в 300 кредитов за первичную индексацию, а дальше — только новые загрузки.