Настройка сервера Ubuntu 24.04 с Docker, Nginx, Dockge, uptime-kuma
Опубликовано в Linux 09 05 2025
3 min на чтение
Опубликовано в Automation 01 07 2026
6 min на чтение

Одна кнопка — и короткое видео автоматически генерируется AI, загружается и публикуется на TikTok, YouTube Shorts, Instagram, Facebook и Threads. В этом посте покажу полный пайплайн, собранный на четырёх открытых инструментах.

Короткие видео — это основной формат для роста аудитории в 2025 году. Но ручное создание контента требует много времени: написание сценариев, монтаж, публикация на каждой платформе отдельно.
Автоматизация решает эту проблему. Один workflow в n8n выполняет весь цикл:
Весь процесс работает без участия человека.
n8n — платформа для автоматизации workflows с визуальным конструктором. Поддерживает 400+ интеграций, нативные AI-возможности (LangChain, Gemini, OpenAI) и написание кода на JavaScript/Python.
Ключевые преимущества для нашего пайплайна:
MoneyPrinterTurbo — открытый инструмент для генерации коротких видео. Даёшь тему или ключевое слово — получаешь готовое видео с озвучкой, субтитрами и фоновой музыкой.
Возможности:
Деплой через Docker:
git clone https://github.com/harry0703/MoneyPrinterTurbo
cd MoneyPrinterTurbo
docker compose up -d
Web-интерфейс доступен на http://localhost:8080, API — на http://localhost:8080/api/v1.
Baserow — open-source альтернатива Airtable. Self-hosted, с REST API и вебхуками. Используется для хранения всех данных пайплайна: тем, сценариев, URL видео, статусов публикации.
Поля таблицы:
topic — тема видеоscript_text — сгенерированный сценарийvideo_prompt — промпт для MoneyPrinterTurbosearch_tags — теги для поиска видеоshorts_tags — хэштеги для постовtask_id — ID задачи в MoneyPrinterTurbovideo_url — путь к готовому видеоpostiz_id / postiz_path — ID и путь в Postizstatus — статус (approved → processing → done → publish)publish_links — ссылки на опубликованные постыPostiz — открытый инструмент для планирования и публикации контента на 30+ платформах. Self-hosted, с API для интеграции.
Поддерживаемые платформы для Shorts:
Workflow в n8n выполняет следующую последовательность:
┌─────────────────────────────────────────────────────────────┐
│ 1. Триггер (cron каждые N часов или ручной запуск) │
└──────────────────────────┬──────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 2. Генерация темы (JavaScript) │
│ - Случайная тема из предопределённого списка │
│ - Стиль хука, CTA, теги │
└──────────────────────────┬──────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 3. AI генерация сценария (Google Gemini) │
│ - title, fomo_text, video_prompt, shorts_tags │
│ - JSON-формат для парсинга │
└──────────────────────────┬──────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 4. Сохранение в Baserow (status: approved) │
└──────────────────────────┬──────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 5. Создание видео (MoneyPrinterTurbo API) │
│ - POST /api/v1/videos с промптом и настройками │
│ - aspect: 9:16, голос: Fenrir-Male, субтитры: вкл │
└──────────────────────────┬──────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 6. Ожидание готовности (polling каждые 2 минуты) │
│ - GET /api/v1/tasks/{task_id} │
│ - Проверка progress === 100 │
└──────────────────────────┬──────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 7. Загрузка видео в Postiz │
│ - uploadFile с binary data │
│ - Сохранение postiz_id и postiz_path в Baserow │
└──────────────────────────┬──────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 8. Публикация на 5 платформ │
│ - Фильтрация по identifier: tiktok, youtube, facebook, │
│ instagram, threads │
│ - Schedule on [Platform] с настройками │
└──────────────────────────┬──────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 9. Уведомление в Telegram │
│ - Список опубликованных ссылок │
│ - Статус: published │
└─────────────────────────────────────────────────────────────┘
Создайте docker-compose.yml со всеми сервисами:
services:
n8n:
image: n8nio/n8n:latest
restart: unless-stopped
ports:
- "5678:5678"
volumes:
- n8n_data:/home/node/.n8n
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=your_password
- GENERIC_TIMEZONE=Europe/Moscow
- TZ=Europe/Moscow
moneyprinter:
image: harry0703/moneyprinterturbo:latest
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- mp_config:/app/config
- mp_videos:/app/output
postiz:
image: gitroomhq/postiz-app:latest
restart: unless-stopped
ports:
- "5000:5000"
environment:
- DATABASE_URL=postgres://postiz:postiz@postgres:5432/postiz
depends_on:
- postgres
postgres:
image: postgres:15
restart: unless-stopped
environment:
- POSTGRES_DB=postiz
- POSTGRES_USER=postiz
- POSTGRES_PASSWORD=postiz
volumes:
- pg_data:/var/lib/postgresql/data
volumes:
n8n_data:
mp_config:
mp_videos:
baserow_data:
pg_data:
Запуск:
docker compose up -d
Создайте базу данных и таблицу со следующими полями:
| Поле | Тип | Описание |
|---|---|---|
| topic | Text | Тема видео |
| script_text | Long text | Сценарий для озвучки |
| video_prompt | Text | Промпт для MoneyPrinterTurbo |
| search_tags | Text | Теги через запятую |
| shorts_tags | Text | Хэштеги через запятую |
| task_id | Text | ID задачи в MoneyPrinterTurbo |
| video_url | Text | Путь к видео |
| postiz_id | Text | ID файла в Postiz |
| postiz_path | Text | Путь к файлу в Postiz |
| status | Text | Статус: approved/processing/done/publish |
| publish_links | Long text | Ссылки на опубликованные посты |
| created_at | Created | Дата создания |
http://localhost:5678http://localhost:5000В n8n настройте параметры:
Schedule Trigger:
Code in JavaScript:
HTTP Request (MoneyPrinterTurbo):
http://moneyprinter:8080/api/v1/videosvideo_aspect: "9:16" для Shortsvoice_name: выберите голосvideo_language: "ru" для русскогоvideo_source: "pexels" или "pixabay"Postiz nodes:
JavaScript-узел выбирает случайную тему из предопределённого списка:
const topics = [
"5 инструментов для автоматизации бизнеса",
"Почему open-source побеждает",
"Автоматизация соцсетей: полный гайд",
// ... ваши темы
];
const hook_styles = [
"жёсткий", "провокационный", "спокойно-давящий",
"агрессивный", "мотивирующий", "ироничный"
];
const pick = (arr) => arr[Math.floor(Math.random() * arr.length)];
return [{
json: {
topic: pick(topics),
hook_style: pick(hook_styles),
search_tags: "viral, trending, tech, automation"
}
}];
AI получает инструкцию генерировать JSON с полями:
title — цепляющий заголовокfomo_text — сценарий для озвучки (40-60 секунд)video_prompt — промпт на английском для MoneyPrinterTurboshorts_tags — 5 тегов транслитомПравила генерации:
MoneyPrinterTurbo создаёт видео с параметрами:
{
"video_aspect": "9:16",
"video_concat_mode": "random",
"video_clip_duration": 5,
"match_materials_to_script": true,
"video_count": 1,
"video_source": "pexels",
"video_language": "ru",
"voice_name": "gemini:Fenrir-Male",
"voice_rate": 1.1,
"subtitle_enabled": true,
"subtitle_position": "custom",
"custom_position": 85.0,
"font_size": 50
}
Postiz получает видео и публикует на каждой платформе с уникальными настройками:
TikTok:
PUBLIC_TO_EVERYONEtrueUPLOADYouTube:
publicInstagram:
post или storyFacebook:
postThreads:
При частом использовании API могут быть ограничения:
n8n имеет встроенную обработку ошибок:
retryOnFail: true — повторные попыткиmaxTries: 5 — максимальное количество попытокwaitBetweenTries: 5000 — пауза между попыткамиОтслеживайте прогресс через Baserow:
approved — сценарий сгенерированprocessing — видео создаётсяdone — видео готовоpublish — опубликовано на всех платформахПоддержать проект или купить мне кофе можно тут. Без него я начинаю путать терминал с телепортом. 🚀☕️