ContentZavod — SaaS «контент-завод»: от трендов и анализа канала до готовых постов и Reels с публикацией в Telegram, Instagram и YouTube. Продакшен: anapan8n.ru.
1. Обзор
Пользователь создаёт нишу (проект): описание, визуальный стиль, привязки к соцсетям. Запускает задачу (job) вручную или через автозадачу по расписанию. Система собирает тренды, генерирует сценарий/пост (DeepSeek), при необходимости озвучивает и собирает видео (Polza, FFmpeg), затем публикует или отправляет на модерацию в Telegram-бот.
| Роль | Описание |
|---|---|
| Пользователь | Ниши, задачи, автозадачи, привязка IG/TG/YouTube, оплата тарифа |
| Администратор | Панель /admin: пользователи, тарифы, бан, удаление; без лимита задач |
| Telegram-бот | Модерация публикации, превью, замена картинки, статистика, привязка аккаунта |
2. Возможности
Типы контента
- text_post Текстовый пост для Telegram (caption.txt)
- image_post Картинка 9:16 + подпись (YandexART через Polza)
- video Видео по сценарию без озвучки
- video_voice Видео с озвучкой (TTS + клипы + монтаж → final.mp4)
Интеллектуальный Telegram
- Тема и стиль из реальных постов канала (парсинг t.me/s, анализ профиля)
- Опционально — внешние тренды (YouTube Shorts, Apify TikTok/Instagram)
- Доля постов с картинкой (0–3 из 3), уровень эмодзи, защита от повторов тем
- Модерация в боте перед публикацией (Опубликовать / Отклонить / картинка)
Прочее
- Серии постов/роликов по одному тренду (
series_count) - Ниша Wildberries — сценарий по ссылке на товар
- Instagram Reels + статистика, YouTube Shorts (OAuth)
- Регистрация, восстановление пароля (SMTP), тарифы, СБП (ЮKassa)
3. Архитектура
┌─────────────┐ ┌──────────────────────────────────────────┐
│ Браузер │────▶│ FastAPI (uvicorn) │
│ SPA + API │ │ • REST /api/* • Jinja /, /readme │
└─────────────┘ │ • Scheduler (автозадачи) │
│ • TG Bot long poll │
└───────┬────────────────────────────────────┘
│
┌───────────────────┼───────────────────┐
▼ ▼ ▼
SQLite DB /data/jobs/* Внешние API
(users, jobs, артефакты задач DeepSeek, Polza,
projects…) Apify, Meta, Google, TG
Стек: Python 3.12, FastAPI, SQLAlchemy, SQLite, Jinja2, vanilla JS (кабинет), FFmpeg, Docker, nginx.
4. Пайплайн задач
Оркестрация: app/services/pipeline.py → run_job().
| Этап | Текст/картинка | Видео |
|---|---|---|
| trends | YouTube + Apify (если включено) | то же |
| script | DeepSeek → script.json, caption.txt | сценарий + сегменты |
| media | image_post → Polza image | TTS → клипы Polza → assemble |
| publish | TG / IG / YT или модерация в боте | то же |
Артефакты задачи: {DATA_DIR}/jobs/{job_id}/ — script.json, caption.txt, voice.mp3, clips/, final.mp4, post_image.png и др.
Антидубли: topic_memory.py — отпечатки темы и текста; список исключений при генерации;
запоминание при отклонении, пропуске и публикации.
5. Telegram
- Пользователь добавляет платформенного бота админом канала; токен канала не нужен
telegram_channel_fetch.py— загрузка постов через t.me/s (с HTTP-прокси при блокировке)telegram_channel_style.py— профиль стиля, темы, идеи для следующих постовpublish_approval.py— очередь модерации, approve/reject, замена изображения в боте
6. Автозадачи
scheduler.py периодически запускает включённые автозадачи с учётом
videos_per_day (лимит постов/роликов в сутки на одну автозадачу) и месячной квоты пользователя.
Поля интеллектуального режима: telegram_intelligent, tg_image_posts_per_3,
tg_use_trends, tg_emoji_level.
7. Тарифы и доступ
app/services/billing.py — планы free / trial / pro / enterprise, квота задач в месяц, статусы подписки.
- Администраторы: без лимита задач, полный доступ
- Бан:
banned_until+is_active(user_admin.py) - Оплата: ЮKassa (СБП) —
sbp_payment.py
8. Админка
Вкладка «Админка» в кабинете (только is_admin):
- Дашборд, список пользователей, карточка пользователя
- Редактирование тарифа, квоты, пробного периода, заметок
- Бан на N дней, снятие бана, удаление пользователя со всеми данными
- API:
/api/admin/*
9. API (кратко)
Авторизация: cookie cz_user (случайный id сессии) после POST /api/auth/login, register или POST /api/auth/telegram (виджет Telegram Login); сессия в БД. POST /api/auth/logout-all — выход на всех устройствах. Для виджета: TELEGRAM_BOT_TOKEN, TELEGRAM_BOT_USERNAME, в BotFather /setdomain.
| Группа | Префикс | Примеры |
|---|---|---|
| Auth | /api/auth | login, register, me, forgot-password |
| Projects & Jobs | /api | projects, jobs, settings |
| Autotasks | /api/autotasks | CRUD, run |
| Telegram | /api/telegram | channels, publish, bot link |
/api/instagram | OAuth, publish, stats | |
| YouTube | /api/youtube | channels, publish |
| Admin | /api/admin | users, ban, delete, dashboard |
| Media | /api/jobs/{id}/files/... | final.mp4, caption.txt |
10. Конфигурация
Переменные окружения — см. .env.example. Ключевые группы:
- AI: DEEPSEEK_API_KEY, POLZA_API_KEY, модели видео/картинки/TTS
- Тренды: YOUTUBE_API_KEY, APIFY_API_TOKEN
- Безопасность: SECRET_KEY, ADMIN_PASSWORD (legacy-вход в админку)
- Публикация: META_APP_*, GOOGLE_OAUTH_*, TELEGRAM_BOT_TOKEN
- Почта и оплата: SMTP_*, YOOKASSA_*
- Инфра: PUBLIC_BASE_URL, DATABASE_URL, DATA_DIR, TELEGRAM_PROXY_URL
11. Развёртывание
Локально
python3 -m venv .venv && source .venv/bin/activate pip install -r requirements.txt cp .env.example .env uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
Docker
docker compose up -d --build
БД и jobs монтируются в ./data (в compose: /data).
VPS
./deploy/deploy.sh root@YOUR_HOST
Скрипт: rsync, сохранение SECRET_KEY на сервере, docker compose, nginx + Let's Encrypt (deploy/setup-ssl.sh).
12. Структура репозитория
app/
main.py # FastAPI, lifespan, scheduler, bot
models.py # SQLAlchemy модели
database.py # SQLite, миграции колонок
auth.py # Сессии, cookies, права
routers/ # API и web-страницы
services/ # Бизнес-логика
pipeline.py # Завод задач
deepseek.py # Сценарии
telegram_intelligent.py
topic_memory.py
publish_approval.py
scheduler.py
telegram_bot/ # Long poll, handlers
static/ # app.js, app.css, docs.css
templates/ # index.html, readme, leancanvas
deploy/ # deploy.sh, nginx, ssl
data/ # БД и jobs (не в git)
Версия приложения: 1.6.0 · Документация на /readme · Lean Canvas