пайплайн
1 Транскрипт

YouTube URL → извлекаем субтитры через Supadata API (primary) или yt-dlp (fallback). Возвращается текст с тайм-кодами.

2 Бриф

Транскрипт идёт в Claude с системным промптом и 2 few-shot примерами. Результат — структурированный бриф: суть, идеи, факты, применение, черновик ТЗ.

3 Сохранение

Видео, сегменты, бриф и метрики (токены, стоимость, кэш) пишутся в локальный SQLite через Prisma. Файлы дублируются в ./output/.

описания контролов
ссылка
Полный URL YouTube-видео. Поддерживает youtube.com/watch?v=, youtu.be/, shorts, embed, live. Enter тоже запускает обработку.
Основная кнопка. Гоняет весь пайплайн: извлечение → бриф → БД. Занимает 5-15 секунд в зависимости от длины видео и модели.
На каком языке Claude напишет бриф. Транскрипт не переводится — это язык только финального отчёта.
sonnet-4.6 — баланс качество/цена (~$0.07 на часовое видео). opus-4.7 — максимум качества (~$0.12). haiku-4.5 — быстро и дёшево (~$0.02) для простых брифов.
markdown — человеко-читаемая проза с заголовками. json — структурированные поля со схемой (tldr, key_ideas[], software_brief и т.д.) — удобно парсить кодом.
backend
auto — умный порядок с fallback: если найден cookies.txt или выбран браузер, первым идёт yt-dlp (бесплатно); иначе — Supadata. При неудаче переключается на другой. Мы не можем заранее знать, сработает ли yt-dlp (YouTube рандомно блокирует), поэтому последовательность = «наиболее вероятно → запасной». supadata / ytdlp — строго один бэкенд, без fallback. Используй если хочешь принудительно.
Пропустить шаг брифа. Claude не вызывается, затрат на API нет — остаётся только транскрипт в БД и файлах.
обновить, даже если есть
По умолчанию «запустить» сначала ищет в БД: если видео и бриф с той же моделью/языком/форматом уже есть — возвращает из кэша за 0 токенов. Эта галочка форсит заново: переизвлечь транскрипт через Supadata/yt-dlp и перегенерить бриф через Claude. Нужно, если обновился сам ролик или ты поменял промпт.
Копирует текст брифа в буфер обмена (markdown-исходник, не rendered-HTML).
проверить (коннектор)
Smoke-тест API-ключа. Supadata — дёргает первое YouTube-видео (бесплатно). Anthropic — шлёт haiku-запрос на 10 токенов (~$0.00005).
история → открыть
Клик по строке подгружает ранее обработанное видео из БД (без повторного вызова Claude). Полезно, чтобы сравнить модели или форматы.
стоимость и кэш

Первый прогон новой модели/языка/формата пишет системный промпт в кэш Anthropic (примерно +25% к цене, одноразово). Повторные прогоны в том же формате читают из кэша по ~10% цены. Supadata тарифицируется отдельно на их стороне. Текущие расходы видны в строке под брифом и в колонке «total cost» в истории.

из БД
· · ·

Текст видео с тайм-кодами. В БД и .txt — полностью, на экране — первые 400 сегментов.

показано 400 из . полный текст:
из БД · 0 токенов
· $

Структурированная выжимка через Claude: суть, ключевые идеи, факты, применение, черновик ТЗ.

in out cache read cache write

Все обработанные видео из локальной БД. Клик — открыть без повторного вызова Claude.

Пока пусто.

активно
новостей в очереди
одобрено

Непрерывный захват YouTube live-эфира: режется на N-минутные чанки, локальный faster-whisper (CUDA) расшифровывает, Claude вытягивает новостные утверждения. Каждый item уходит в draft, пока ты не подтвердишь.

пайплайн стрима
1 Захват

yt-dlp получает HLS-поток, ffmpeg режет его на MP3-чанки по N минут (из настроек). Чанк попадает в БД со статусом pending.

2 Расшифровка

faster-whisper на CUDA (RTX 2060) — ~30 сек на 2-мин чанк. Статус меняется на transcribed, сохраняется текст + тайм-коды.

3 Новости

Claude с news-промптом извлекает утверждения (headline, quote, category, confidence, tags). Статус чанка → extracted.

4 Лента

Items попадают в раздел Новости со статусом draft. Язык — из общих настроек.

параметры стрима
URL
Любой YouTube live-эфир. Поддерживает 24/7-каналы, long-running streams, DVR-режим.
Как будет называться в атрибуции каждой новости: «Источник: <название>».
Добавляется в атрибуцию: «Источник: CNN, 2026-04-19, Anderson Cooper». Если не указан — только канал+дата.
Длина каждого чанка в минутах. 2-5 — баланс: меньше = быстрее news items, больше = лучше контекст для Claude.
small быстро, слабее на русском. medium сбалансирована. distil-large-v3 — как large-v3, но втрое быстрее и без OOM на 6 GB VRAM.
сводный бриф
Галочка включает возможность собрать один markdown-бриф по всем транскриптам стрима. Шаблон news — без ТЗ, full — с ТЗ.
Если включено вместе со «сводным брифом» — при нажатии автоматически генерится итоговый бриф по накопленным данным.
действия с запущенным стримом
Останавливает capture + обработку. Транскрипт текущего чанка дорабатывается, очередь drain'ится. Можно продолжить кнопкой «продолжить».
Полностью завершает мониторинг, стрим уходит в «историю стримов». Данные остаются. Если стоял флаг «авто на остановке» — генерит сводный бриф.
рестарт
На остановленном стриме — возобновить захват с того места, где прекратили. Индекс чанков продолжается (3, 4, 5…).
ред.
Править поля (интервал, whisper, настройки брифа). URL-смена требует пауза → продолжить. Остальное вступает в силу на следующем чанке.
бриф сейчас
Вручную собрать сводный бриф на текущий момент. Склеивает все расшифрованные чанки + прогоняет через Claude. Не останавливает capture.
Сносит стрим со всеми чанками, MP3-файлами, NewsItem, StreamBrief. Каскад. Необратимо.
стоимость

faster-whisper локально — $0 за расшифровку. Claude за news-extract — ~$0.01-0.02 на 2-минутный чанк на Sonnet 4.6, на час стрима — ~$0.30-0.60. Сводный бриф — ещё ~$0.05-0.15 за прогон в зависимости от длительности. Supadata не задействована для live — только yt-dlp. Статус ключей и их использование — в Настройках.

захват начнётся сразу; первый чанк — через мин изменения вступят в силу на следующем чанке. для смены URL — сначала «пауза», потом «продолжить»
активные потоки
·
Если стримы активны — скоро появятся.
сводные брифы

Остановленные мониторинги. Данные сохранены — можно открыть, перезапустить, удалить.

что такое news item

Каждая карточка в ленте — отдельное новостное утверждение, которое Claude извлёк из транскрипта одного чанка. Это НЕ пересказ — это попытка зафиксировать конкретный факт, цифру или заявление как публикуемую новость.

Headline
«Эксперт: Трамп отверг предложение НАТО...»
«Президент Дональд Трамп занимает максимально жёсткую позицию...»
Источник: Подробиці, 2026-04-19 14:23
politics · conf 0.82 · #Трамп #НАТО #США
поля записи
headline
Одна строка, publish-ready. Без кликбейта — конкретно что произошло. Формулируется Claude на целевом языке (из настроек).
quote
Прямая цитата из транскрипта. Если исходный язык эфира отличается от целевого — перевод по смыслу, числа/имена сохраняются.
category
Одна из: politics · business · tech · markets · macro · sports · culture · science · other.
confidence
0.0–1.0. Цвет индикатора: зелёный ≥0.80 (надёжно), серый 0.50-0.80, оранжевый <0.50 (спорно, проверяй).
offset_sec
Секунда от начала чанка, где прозвучало. Абсолютная метка в эфире = chunk.started_at + offset_sec.
attribution
Автосборка: «Источник: [канал], [дата/время][, ведущий]». Хранится как готовая строка.
tags
2-5 коротких тегов: компании, люди, страны, инструменты. Для поиска и фильтрации в будущем.
статусы и workflow
draft

По умолчанию при создании. Видна в ленте, но не «подтверждена». Фильтр draft показывает то, что ещё требует твоего внимания.

approved

Кнопка «✓ одобрить». Готова к публикации/экспорту. Обычно — экспорт в JSON/PDF для ручного рерайта.

rejected

Кнопка «✗ отклонить». Остаётся в БД, показывается приглушённой. Не попадёт в экспорт.

exported

Резерв на будущее — когда подключим публикаторы (Telegram, RSS). Пока не используется.

фильтры и экспорт

Селекторы стрим и статус применяются на сервере (GET /news-items?stream_id=X&status=Y). Кнопки JSON/PDF экспортируют текущую выборку с учётом фильтров через POST /export. JSON — raw dump со всеми полями. PDF — читаемый отчёт с Cyrillic-шрифтом и группировкой.

новост Очередь модерации пуста. Отклонённых новостей нет.
AI Editor

AI Editor

Рабочее место для редактирования news items и расшифровок с AI-assist.

← Выбери карточку слева

api-коннекторы

5 интеграций — 3 облачные (ключ API) и 2 локальные (установка на машину). Ключи пишутся в .env и сразу применяются без рестарта.

Облачные ключи лежат в .env в корне проекта.

videotext.db
output
всего на диске

Пресеты для форм + параметры обогащения новостей. Хранятся в БД (AppSetting).

модель Claude для видео используется в брифах одиночных видео и в news-extraction стримов
дефолт для формы вверху
формат брифа markdown для чтения, json для парсинга
backend auto подойдёт в 99% случаев
medium — сбалансировано, distil-large-v3 — точнее при той же скорости
интервал чанка, мин меньше = быстрее появление news items, больше = лучше контекст
шаблон сводного брифа news для новостных эфиров, full для подкастов/интервью
триггер срабатывает только если активен «сводный бриф»
обогащение новостей

При клике на news-item можно «развернуть» — сгенерировать расширенный текст и иллюстрацию. Картинки дедуплицируются по концепт-фразе: новость про нефть → один раз стягивается стоковое фото «нефтяного барреля», дальше переиспользуется для похожих сюжетов.

text-модель (OpenAI) используется и для expand, и для концепт-фразы картинки
источник картинок hybrid = реальное фото + light newsroom edit, максимум «редакционности»
модель для AI-генерации применяется при source=generate, и как fallback если Pexels упал
порог concept-dedup cosine similarity embeddings концепт-фраз. 0.88 = переиспользовать при явно близкой теме
картинки вообще выключи если нужен только text expand без картинок
дедупликация новостей

Семантическое сравнение headline через локальные embeddings. Дубликаты помечаются бейджем в модерации, можно скрывать одним чекбоксом. Поиск — только в пределах окна последних N часов. Никаких токенов Anthropic не тратится.

включить выключено = item попадает в модерацию без проверки
провайдер fastembed — нулевая настройка, всё остальное требует свой сервис
fastembed: paraphrase-multilingual-MiniLM-L12-v2 · ollama: nomic-embed-text
окно сравнения, часов 24ч — новость в том же сюжете; 168ч = неделя, для long-running тем
порог cosine sim 0.85 — «та же мысль другими словами» · 0.90+ — почти дословный повтор · 0.70 — агрессивно, риск ложных

Распознавание видео

Закинь ссылку или файл — спишем кредиты по длине видео и токенам ИИ. Движок подключим позже; пока считаем и списываем по тарифу.

YouTube, прямой эфир или загруженный файл. Длительность определится автоматически после подключения движка.
мин
Транскрипция · мин
Токены ИИ · ≈
Скидка тарифа %
Итого к списанию
✓ Видео отправлено в очередь распознавания

Очередь и история

Пока пусто. Отправь первое видео слева.

Подписка и баланс

Кредиты тратятся на распознавание и токены ИИ. Тариф даёт скидку и доступ к AI-News.

Баланс
Тариф
Распознано
Токенов ИИ
Потрачено
AI-News доступен на Pro и Business

Подключи ссылки на каналы и получай поток текстовых новостей из новых видео — автоматически.

Операций пока нет.