Files

109 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# content-pipeline
Оркестратор контентного конвейера + CMS-слой для управления публикациями.
**Не CMS как таковая, а развитие editor-pro + GEO через более глубкую интеграцию.**
## Что это
Гибрид двух слоёв в едином UI:
```
┌─────────────────────────────────────────┐
│ UI-панель (один экран) │
├─────────────────────────────────────────┤
│ 1. Pipeline-оркестратор │ ← управление конвейером
│ (editor-pro → GEO → публикация) │ запуск, статус, ретрай
│ │
│ 2. CMS-слой │ ← удобная правка
│ (список статей / редактор / │ BlockNote + превью
│ превью / публикации) │
├─────────────────────────────────────────┤
│ FastAPI-оркестратор на 9876 │
│ (уже есть для SEO-проектов) │
└─────────────────────────────────────────┘
```
## Архитектура
### Единая модель данных (`src/types.ts`)
Один объект «статья» используют оба слоя:
- `slug`, `title`, `body` — базовые поля
- `utm` — UTM-теги для персонализации hero
- `geo` — GEO-мета (сущности, ключевые запросы)
- `status` — draft / in-review / published / archived
- `editorProTaskId` — связь с editor-pro
Валидация и slugify — единые для обоих слоёв (никакого дублирования).
### Pipeline-оркестратор (`src/pipeline.ts`)
Шаги: `generate` (editor-pro) → `optimize` (GEO) → `publish`.
- Запуск конвейера для списка статей
- Статусы шагов (pending/running/success/failed)
- Ретрай до 3 раз при ошибке (экспоненциальный backoff)
- Делегирует тяжёлую работу шагам (не выполняет сам)
### Хранилище (`src/store.ts`)
Единый источник данных для обоих слоёв:
- CRUD статей
- Фильтрация по статусу (для CMS)
- Поиск по заголовку/тексту
- В MVP — in-memory Map; в прода — SQLite/Postgres (тот же интерфейс)
## Почему не форк CMS
Готовые CMS (AstroAdmin, astro-cms, EmDash) — CRUD для контента, не pipeline-оркестратор.
Они не знают про editor-pro, GEO, UTM-теги. Им пришлось бы писать слой адаптации —
свой слой проще и точнее.
## Roadmap
### MVP (базовый конвейер)
- [ ] FastAPI-оркестратор (9876) — запуск pipeline
- [ ] SQLite-репозиторий вместо in-memory
- [ ] Блок-редактор (BlockNote/TipTap) для CMS-слоя
- [ ] Превью через iframe dev-сервера
- [ ] Привязка к deploy-пайплайну (rsync на хостинг)
- [ ] Статусы pipeline в UI (отслеживание задач)
### Расширение типов контента (отдельные направления)
Каждый тип — **отдельное направление**, которое нужно глубоко прорабатывать
и тестировать для качества. Не делать всё сразу — получится хрупкий конвейер,
тормозящий на a2000 (12GB GPU).
Приоритет: **подкасты → видео**.
#### Текст (уже работает)
- editor-pro → GEO → публикация
- низкая сложность
#### Подкасты (средняя сложность)
- ACE-Step 1.5 для музыки (~34s batch), Silero TTS для голоса
- GEO через транскрипт + метаданные
- GPU-нагрузка на a2000: одна операция за раз (не параллельно)
#### Видео (высокая сложность)
- генерация или сборка из стоков/скринов
- storage больших файлов (артефакты pipeline, не в статье)
- GEO: описание + теги + таймкоды (менее зрелый тренд)
Общие требования для мультимедиа:
- фоновые задачи с очередью (текст за секунды, видео/подкаст за минуты/часы)
- отдельный storage для аудио/видео артефактов
- разная логика GEO по сравнению с текстом
## License
Приватный. Концепт: развитие editor-pro + GEO.