AI-powered platform for intelligent educational video content processing
LEAP — это multi-tenant платформа с полным REST API для автоматизации end-to-end обработки образовательного видеоконтента — от загрузки до публикации с AI-транскрибацией, интеллектуальным структурированием и профессиональным оформлением.
Версия: v0.9.6.6 (May 2026) · Статус: In Active Development • Beta
Tech: Python 3.14 • FastAPI • Pydantic V2 • PostgreSQL • Redis • Celery • AI (Whisper, DeepSeek) • yt-dlp • ruff & ty
Структура репозитория: исходный код API — в backend/ (uv, make, тесты, Celery). В корне — docker-compose.yml и Makefile только для Docker; веб-клиент планируется в frontend/ со своими командами (pnpm / npm).
🏫 Университеты и образовательные платформы
- Автоматическая публикация тысяч лекций с минимальными усилиями
- AI-структурирование контента для удобной навигации
- Multi-tenant изоляция для разных факультетов/кафедр
🎓 Онлайн-школы и EdTech
- Быстрый
time-to-marketдля образовательного контента - Профессиональное оформление с таймкодами и субтитрами
- Scheduled automation для регулярных публикаций
🎬 Контент-команды
- Batch processing для массовой обработки архивов
- Template-based автоматизация для разных типов контента
- API-first подход для интеграции в существующие системы
👨💼 Enterprise
Multi-tenancyдля изоляции клиентов/проектовRBACи квоты для контроля доступаAudit logsиusage tracking
Платформа автоматизирует полный цикл обработки видео от загрузки до публикации:
📥 Видео-контент → ✂️ FFmpeg → 🤖 AI (Whisper+DeepSeek) → 📝 Метаданные → 📤 Публикация
Обработка Транскрипция+Темы Таймкоды На платформы
↓ ↓ ↓ ↓
Тишина Структура контента Описание+Субтитры Multi-platform
удалена с таймкодами Template-based Auto-retry
Источники данных:
- Синхронизация с
Zoom APIчерезOAuth 2.0 - yt-dlp — загрузка по ссылке с YouTube, VK, Rutube и 1000+ сайтов (видео, плейлисты, аудио)
- Яндекс Диск — загрузка по публичной ссылке или через OAuth API
- Загрузка локальных файлов
- 🚧 В разработке: Google Drive
Добавление видео:
POST /add-url— одно видео по ссылке (yt-dlp, auto-detect платформы)POST /add-playlist— плейлист/канал целиком- Яндекс Диск (публичная ссылка) —
POST /api/v1/sources(YANDEX_DISK+public_url) и sync InputSourcesync — для периодической синхронизации (Zoom, Yandex Disk OAuth)
Что происходит:
- Система забирает записи из различных источников
- Создает записи в БД с метаданными
- Скачивает видео в
user-isolated storage - Поддержка
multi-sourceдля одного пользователя - Source-agnostic pipeline: download → process → upload работает одинаково для всех типов
FFmpeg Processing:
- Детекция и удаление тишины
- Обрезка пустого начала и конца
- Извлечение аудиодорожки для транскрибации
Celery Chains для параллелизма:
- Orchestrator запускает chain задач (
download→trim→transcribe→topics→subs→upload) - Каждый шаг выполняется на свободном worker (~0.08s
overhead) - Динамическое распределение между recordings
Результат:
- Чистое видео без технических пауз
- Оптимизированная длительность
- Готовый аудио-файл
Транскрибация (Fireworks AI):
whisper-v3-turboдля точной транскрибации- Поддержка больших файлов (Аудио до гб)
Automatic chunkingиretry
Извлечение структуры (DeepSeek):
- Определение основных и детализированных тем
- Автоматическая генерация таймкодов (
HH:MM:SS) - Обнаружение перерывов и пауз
Субтитры:
- Генерация
SRTиVTTфайлов - Поддержка
multipleязыков
Автоматическая генерация:
- Структурированное описание с таймкодами
- Заголовок на основе шаблона
- Подбор миниатюр (
thumbnails) - Применение
user configиtemplates
Template-Based:
Matching rulesдля автоматического применения- Пресеты для разных типов контента
- Настройка через
APIилиconfigфайлы
YouTube:
- Загрузка видео через
YouTube Data API v3 - Автоматическая загрузка субтитров
- Добавление в плейлисты
- Настройка privacy и категории
VK:
- Загрузка в сообщества
- Добавление в альбомы
- Настройка видимости
Яндекс Диск:
- Загрузка через OAuth API
- Template-driven folder paths (e.g.
/Video/{course_name}/{date}) - Автоматическое создание папок
- Overwrite mode
🚧 В разработке:
- Rutube — российская видеоплатформа
- Local Export — полный пакет (видео + субтитры + метаданные)
Multi-Platform:
- Параллельная загрузка на несколько платформ
- Tracking статусов для каждой платформы
Template-drivenнастройка для каждой платформы
⚡ Comprehensive REST API
- Полноценный
CRUDдля всех сущностей JWTаутентификация +RBACOpenAPIдокументация (Swagger,ReDoc)- Асинхронная архитектура на
FastAPI
👥 Multi-Tenancy из коробки
- Полная изоляция данных пользователей
- Шифрование credentials (
Fernet) - User-isolated file storage
- Квоты, rate limiting и user statistics
🔐 Production Security
OAuth 2.0интеграция (YouTube, VK, Zoom, Yandex Disk)- Automatic token refresh с декораторами
CSRFprotection черезRedis- Encrypted credentials в БД
- Graceful error handling для credential/token errors
🤖 Smart Automation
Celery Beatscheduling- Declarative job configuration
- Automatic sync + process + upload
- Dry-run mode для preview
📊 AI-Powered Processing
Fireworks AI(whisper-v3-turbo) для транскрибацииDeepSeekдля извлечения тем- Автоматическая генерация таймкодов
- Генерация субтитров (
SRT,VTT)
90%+ экономия времени
- Полная автоматизация: от синхронизации до публикации
Batch processingдля массовой обработкиConcurrent executionс оптимизацией ресурсовScheduled automation— публикация в фоне
Масштабируемость
Multi-tenantархитектура для тысяч пользователейHorizontal scalingчерезCelery workersсchainsAsync-firstдля высокой пропускной способностиDB optimization(eager loading,bulk operations)
Smart Content Processing
Fireworks AI(whisper-v3-turbo) — точная транскрибацияDeepSeek— интеллектуальное извлечение тем- Автоматические таймкоды для навигации
- Генерация субтитров (
SRT,VTT)
Video Enhancement
FFmpeg— удаление тишины и паузAutomatic trimmingначала/концаAudio extractionдляAI processingQuality optimization
Security & Compliance
OAuth 2.0+JWTauthenticationFernetencryption для credentialsRBACдля управления доступом- Audit logs и usage tracking
Core Framework
Python 3.11+ • FastAPI (async) • SQLAlchemy 2.0 (async ORM)
PostgreSQL 12+ • Redis • Celery + Beat • Alembic
AI & ML
Fireworks AI (whisper-v3-turbo) • DeepSeek API
FFmpeg • Pydantic V2
External Integrations
Zoom API (OAuth 2.0) • YouTube Data API v3 • VK API
yt-dlp (1000+ sites) • Yandex Disk REST API
🚧 Google Drive API
Security Stack
JWT Authentication • OAuth 2.0 • Fernet Encryption
PBKDF2 Hashing • RBAC • CSRF Protection
DevOps & Tools
Docker & Docker Compose • UV (package manager)
Ruff (linter) • ty (type checker) • Flower (monitoring) • Make
- Repository Pattern — изоляция доступа к данным
- Factory Pattern — создание сервисов с credentials
- Service Context — централизованный контекст выполнения
- Config-Driven — template-based автоматизация
- Async-First — полностью асинхронная архитектура
3-Level Data Isolation
Database: user_id filtering + indexes
Service: ServiceContext + ConfigHelper
File System: storage/users/user_{slug}/ isolation (ID-based naming)
Authentication & Authorization
JWT(access + refresh) •OAuth 2.0•RBACFernetencryption •PBKDF2hashingCSRFprotection viaRedis
Resource Management
- Rate limiting (60/min, 1000/hr)
- Storage & processing quotas
- Concurrent task limits
- Usage tracking & audit logs
api/ ← FastAPI endpoints, JWT auth, validation
database/ ← SQLAlchemy models, Alembic migrations
file_storage/ ← Storage abstraction (paths, backends: LOCAL/S3)
video_download_module/ ← BaseDownloader + factory (Zoom, yt-dlp, Yandex Disk)
video_processing_module/← FFmpeg (silence removal, audio extraction)
transcription_module/ ← AI transcription coordination
video_upload_module/ ← Multi-platform upload (YouTube, VK, Yandex Disk)
yandex_disk_module/ ← Yandex Disk REST API client
api/services/ ← Business logic layer
api/repositories/ ← Data access layer (Repository pattern)
api/tasks/ ← Celery background tasks
storage/ ← User media files (ID-based structure)
Design Patterns:
- Repository — data access isolation
- Factory — service creation with credentials
- Service Context — unified execution context
- Config-Driven — template-based automation
📖 Детали: TECHNICAL.md • ADR_OVERVIEW.md
Status Flow:
INITIALIZED → DOWNLOADING → DOWNLOADED →
PROCESSING → PROCESSED → UPLOADING → READY
Status Details:
PROCESSING— любая стадия обработки (transcribe, topics, subtitles) в процессеPROCESSED— все стадии завершены, готово к загрузкеUPLOADING— загрузка на платформы (YouTube/VK/Yandex Disk) в процессеREADY— все загрузки завершены
Special Statuses:
SKIPPED— пропущено (config-driven)EXPIRED— устарело (TTL exceeded)
📋 Навигация: INDEX.md - полный список документов
| Документ | Описание |
|---|---|
| 📖 TECHNICAL.md | Complete technical reference (API, modules, security) |
| 🚀 DEPLOYMENT.md | Production deployment guide |
| 🗄️ DATABASE_DESIGN.md | Database schema & migrations |
| 🗺️ tests/ROADMAP.md | Testing roadmap & plans |
| 📋 PLAN.md | Thesis plan & milestones |
| 📜 CHANGELOG.md | Complete version history |
| 🎬 YT_DLP_GUIDE.md | yt-dlp video ingestion guide |
| 💿 YANDEX_DISK_GUIDE.md | Yandex Disk integration guide |
Ниже — краткие пользовательские изменения по веткам v0.9.6.x. Полная история, даты и списки файлов — CHANGELOG.md.
Новое в v0.9.6.6:
- Больше форматов на входе — в
whitelistвключены распространённые контейнеры (в т.ч.WebM/MKVи др. по релизу); один список дляAPI, загрузки из источников иЯндекс.Диска. - Сильнее валидация — проверка целостности файла после скачивания: не «HTML вместо видео», согласование расширения с реальным типом контейнера (
magic bytes/sniff). - Понятные имена на диске — сохранение как
source.<расширение>по типу источника, без «всегда .mp4».
Новое в v0.9.6.5:
Jinja2metadata — заголовки/описания/пути Yandex только как шаблоныJinja2- Preview без сохранения —
POST .../templates/render-preview,POST .../presets/render-preview - Строгий конфиг перед run — привязанный шаблон должен существовать; проверка пресетов и согласованности auto-upload (404 как у «нет шаблона»)
- Видео — устойчивее обрезка по границам звука (ведущая тишина, невалидное окно trim)
Новое в v0.9.6.4:
- Cookies для yt-dlp —
YTDLP_COOKIES_FILE/YTDLP_COOKIES_FROM_BROWSER(обход блокировок YouTube и стабильный доступ) - Английский на всём пайплайне —
language: enв конфиге: ASR → темы → LLM → субтитры
Новое в v0.9.6.3:
- Вопросы для самопроверки — DeepSeek генерирует 3–4 вопроса, переменная
{questions}в шаблонах - Экспорт записей —
POST /recordings/export(JSON, CSV, XLSX) с фильтрами - Ограничения платформ — автообрезка title/description до лимитов YouTube (100) и VK (128)
- Улучшения topic extraction — Granularity enum, questions_count, usage metadata
Новое в v0.9.6:
📝 Templates & Transcription
- transcription_vocabulary — доп. термины для распознавания (Fireworks/Whisper)
- granularity — short/medium/long для извлечения тем (DeepSeek)
- {summary} — переменная в шаблонах описания
- Промпты транскрайбера в
fireworks_module/prompts.py, единый русский язык - topics.json → extracted.json — топики и summary в одном файле
🔒 Uniqueness & Logging
- Entity uniqueness constraints (templates, presets, automations, credentials)
- Structured logging: loguru contextualize, SUCCESS уровень, JSON sink
- Pipeline timing:
stage_timingstable, pipeline_started_at/completed_at
📥 Multi-Source Video Ingestion (v0.9.5)
- yt-dlp — добавление видео по ссылке с YouTube, VK, Rutube и 1000+ сайтов
- Плейлисты — импорт целых плейлистов/каналов одной командой
- Яндекс Диск — загрузка по публичной ссылке и через OAuth API
- Аудио (MP3) — скачивание аудио-дорожки для транскрибации
- Direct API —
POST /add-url,/add-playlistбез InputSource; Яндекс Диск — через InputSource + sync - Зачем: Загрузка из любых источников, data transfer между платформами
📤 Yandex Disk Upload
- Выгрузка обработанных видео на Яндекс Диск через OAuth API
- Template-driven folder paths (e.g.
/Video/{course_name}/{date}) - Автоматическое создание папок, кастомные имена файлов
- Зачем: Data transfer из Zoom/YouTube на Яндекс Диск
🏗️ Source-Agnostic Architecture
BaseDownloaderABC — единый интерфейс для всех источниковcreate_downloader()factory — dispatch поSourceType- Pipeline download → process → upload работает одинаково для всех типов
- Удалена hardcoded Zoom-логика из generic endpoints
- Зачем: Clean architecture, легко добавлять новые источники
Ключевые возможности (ранее):
🔐 Multi-tenancy & Data Isolation
- Полная изоляция данных между пользователями на всех уровнях
- Зачем: Безопасность данных, соответствие GDPR
🤖 Template-driven Автоматизация
Celery Beatscheduling + declarative configuration- Автоматический цикл: sync → process → upload
- Зачем: Экономия времени, масштабирование без увеличения команды
⚡ Параллельное Выполнение Задач
Celery Chains— параллелизм задач с минимальным overhead (0.08s)- Обрезка видео ускорена в 6x раз (audio-first подход)
- Зачем: Быстрая обработка = довольные пользователи
☁️ S3 Storage Support
S3-ready storage abstraction layer—LOCAL/S3переключение одной строкойID-based naming— никакой кириллицы в путях- Зачем: Неограниченное хранилище, легкое масштабирование
Business Source License 1.1
Проект распространяется под лицензией Business Source License 1.1. См. файл LICENSE для полной информации.
Телеграм: Gordey Zuev Почта gordey.zuev@gmail.com
Status: In Active Development • Beta