Микросервисная система управления контентом для социальных сетей
Автоматизация публикаций • Интеграция с Kaiten • Google Calendar • Telegram Bot • VK API
SMM (Simple Media Manager) — это комплексная система для управления контентом в социальных сетях, построенная на микросервисной архитектуре. Проект объединяет работу с таск-менеджером Kaiten, Google Calendar и платформами Telegram и VKontakte в единую экосистему для SMM-специалистов.
- 🎯 Управление задачами — интеграция с Kaiten для отслеживания карточек контента
- 📅 Планирование публикаций — синхронизация с Google Calendar для расписания постов
- 🤖 Telegram Bot — удобный интерфейс для создания и управления контентом
- 📢 VK Publishing — автоматическая публикация постов в группы ВКонтакте
- 🧠 AI-генерация — интеграция с AI для помощи в создании контента
- 👥 Ролевая система — разделение на копирайтеров, редакторов и администраторов
- 📊 Статистика — отслеживание выполненных задач по периодам
Проект состоит из 4 микросервисов, взаимодействующих через REST API:
┌──────────────────────────────────────────────────────────────────┐
│ SMM System │
├──────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Calendar API │◄───│ Brain API │◄──►│ Executors │ │
│ │ (Port 8001) │ │ (Port 8000) │ │ (Port 8003) │ │
│ └───────┬───────┘ └──────────────┘ └───────┬──────┘ │
│ │ │ │
│ │ ┌──────────────┐ │ │
│ └───────────►│ PostgreSQL │◄───────────┘ │
│ │ (Port 5432) │ │
│ └──────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ Внешние сервисы │
├─────────────────────────────────────────┤
📋 Kaiten API 📅 Google Calendar
💬 Telegram 📢 VKontakte
└─────────────────────────────────────────┘
Центральный сервис управления данными и бизнес-логикой:
- Управление карточками — CRUD операции для контент-задач
- Пользователи и роли — система авторизации и прав доступа
- Интеграция Kaiten — синхронизация с таск-менеджером
- Планировщик задач — автоматическое выполнение по расписанию
- AI эндпоинты — генерация контента с помощью AI
- Сцены — управление состояниями пользователей бота
Сервис работы с Google Calendar:
- Создание событий — планирование публикаций в календаре
- Управление расписанием — CRUD операции для событий
- Проверка доступности — контроль пересечений в расписании
- Синхронизация — связь календаря с карточками контента
Сервис публикации и взаимодействия с платформами:
- Telegram Bot — интерактивный бот на aiogram 3.x
- VK Publisher — автопубликация в сообщества ВКонтакте
- Telegram Userbot — расширенные возможности через Pyrogram
- Сценарии создания — пошаговое создание контента через бота
SMM-Simple-Media-Manager/
├── 🧠 brain-api/ # Центральный API сервис
│ ├── database/ # Модели и подключение к БД
│ ├── models/ # SQLAlchemy модели
│ │ ├── Card.py # Модель карточки контента
│ │ ├── User.py # Модель пользователя
│ │ ├── Scene.py # Модель сцены бота
│ │ └── ScheduledTask.py # Отложенные задачи
│ ├── routers/ # API эндпоинты
│ │ ├── card.py # Управление карточками
│ │ ├── user.py # Управление пользователями
│ │ ├── ai.py # AI генерация
│ │ ├── kaiten.py # Интеграция Kaiten
│ │ └── scene.py # Сцены бота
│ └── modules/ # Бизнес-логика
│
├── 📅 calendar-api/ # Сервис календаря
│ ├── routers/ # API эндпоинты
│ └── modules/ # Логика Google Calendar
│
├── ⚡ executors/ # Сервис публикации
│ ├── tg/ # Telegram бот
│ │ ├── handlers/ # Обработчики команд
│ │ ├── scenes/ # Сценарии создания контента
│ │ └── oms/ # One Message System
│ ├── vk/ # VK публикация
│ └── modules/ # Общие модули
│
├── 🔧 global_modules/ # Общие модули для всех сервисов
│ ├── kaiten_client/ # Клиент Kaiten API
│ ├── classes/ # Общие классы и Enum
│ └── middlewares/ # Middleware компоненты
│
├── 📄 json/ # JSON конфигурации
├── 📝 logs/ # Логи приложения
├── 🔐 sessions/ # Сессии Telegram
└── 📜 scripts/ # Вспомогательные скрипты
- Docker & Docker Compose
- Python 3.11+ (для локальной разработки)
- Токены и ключи для внешних сервисов
git clone https://github.com/Rimuwu/SMM-Simple-Media-Manager.git
cd SMM-Simple-Media-ManagerСоздайте директорию для безопасного хранения токенов:
# Создайте директорию и файл с Vault токеном
mkdir -p secrets
echo "myroot" > secrets/vault_token.txt
chmod 600 secrets/vault_token.txt
⚠️ Важно: Файлы вsecrets/не должны попадать в git (уже в.gitignore)
Подготовьте файл .env с вашими переменными (см. .env.here для примера) и импортируйте их:
# Импорт переменных из .env в Vault
export VAULT_ADDR=http://127.0.0.1:8200
export VAULT_TOKEN=myroot
python scripts/import_env_to_vault.pyПосле импорта файл .env можно удалить - все переменные хранятся в Vault
📋 Описание переменных окружения (для импорта в Vault)
Создайте файл .env со следующими переменными:
# ═══════════════════════════════════════════════════
# 🗄️ Database Configuration (PostgreSQL)
# ═══════════════════════════════════════════════════
POSTGRES_DB=smm_db
POSTGRES_USER=smm_user
POSTGRES_PASSWORD=your_secure_password
# ═══════════════════════════════════════════════════
# 🤖 Telegram Bot Configuration
# ═══════════════════════════════════════════════════
TG_BOT_TOKEN= # Токен от @BotFather
ADMIN_ID= # Telegram ID администратора
# ═══════════════════════════════════════════════════
# 📢 VKontakte Configuration
# ═══════════════════════════════════════════════════
VK_GROUP_ID= # ID сообщества
VK_ACCESS_TOKEN= # Токен сообщества
VK_USER_TOKEN= # Токен пользователя (для загрузки фото)
# ═══════════════════════════════════════════════════
# 📅 Google Calendar Configuration
# ═══════════════════════════════════════════════════
GOOGLE_SERVICE_ACCOUNT_JSON= # JSON Service Account (в одну строку)
GOOGLE_CALENDAR_ID= # ID календаря
# ═══════════════════════════════════════════════════
# 📋 Kaiten Configuration
# ═══════════════════════════════════════════════════
KAITEN_DOMAIN= # Домен Kaiten
KAITEN_TOKEN= # API токен Kaiten
# ═══════════════════════════════════════════════════
# ⚙️ General Settings
# ═══════════════════════════════════════════════════
DEBUG=false # Режим отладки🔐 Безопасность: Все переменные импортируются в HashiCorp Vault и автоматически загружаются при старте сервисов. Файл
.envможно удалить после импорта.
docker-compose up -dЧто происходит при запуске:
- Vault запускается и ждет подключения
- Каждый сервис при старте подключается к Vault
- Загружаются переменные окружения из Vault
- Сервисы запускаются с актуальными конфигурациями
После запуска сервисы будут доступны:
- Brain API: http://localhost:8000
- Calendar API: http://localhost:8001
- Executors API: http://localhost:8003
- Vault UI: http://localhost:8200
# Проверка Brain API
curl http://localhost:8000/
# Проверка Vault
curl http://localhost:8200/v1/sys/health
# Просмотр логов
docker-compose logs -f
# Проверка переменных в Vault (опционально)
export VAULT_ADDR=http://127.0.0.1:8200
export VAULT_TOKEN=myroot
vault kv get secret/smm- Получите API токен на developers.kaiten.ru
- Укажите
KAITEN_DOMAINиKAITEN_TOKENв.env - Синхронизация настроек происходит автоматически при старте
Подробная инструкция в calendar-api/README.md:
- Создайте Service Account в Google Cloud Console
- Включите Google Calendar API
- Создайте и настройте календарь
- Добавьте JSON ключ в переменную
GOOGLE_SERVICE_ACCOUNT_JSON
- Создайте бота через @BotFather
- Укажите токен в
TG_BOT_TOKEN - Для userbot функций: получите API ID/Hash на my.telegram.org
- Создайте сообщество или используйте существующее
- Получите токен сообщества в настройках API
- Для загрузки фото: получите токен пользователя через OAuth
После запуска доступна Swagger документация:
- Brain API: http://localhost:8000/docs
- Calendar API: http://localhost:8001/docs
- Executors API: http://localhost:8003/docs
| Метод | Эндпоинт | Описание |
|---|---|---|
POST |
/card/create |
Создание карточки контента |
GET |
/card/{id} |
Получение карточки |
POST |
/card/update |
Обновление карточки |
GET |
/user/list |
Список пользователей |
POST |
/ai/send |
AI генерация контента |
# Установка зависимостей
pip install -r requirements.txt
# Запуск Brain API
cd brain-api && python main.py
# Запуск Calendar API (в другом терминале)
cd calendar-api && python main.py
# Запуск Executors (в другом терминале)
cd executors && python main.py| Компонент | Технология |
|---|---|
| Backend | FastAPI, Pydantic |
| Database | PostgreSQL, SQLAlchemy 2.0 |
| Telegram | aiogram 3.x, Pyrogram |
| VK | vk_api |
| Calendar | Google Calendar API |
| AI | g4f |
| Containerization | Docker, Docker Compose |
Этот проект распространяется под лицензией MIT. Подробности в файле LICENSE.
Rimuwu
- GitHub: @Rimuwu
⭐ Если проект оказался полезным, поставьте звёздочку!