2026 MoneyPrinterTurbo
на арендованном Mac mini M4
uv · 9:16 · bare-metal
Разработчики и SMM-команды, которым нужен автоматический пайплайн вертикального видео, часто упираются в Windows-one-click, SaaS RecCloud или покупку железа. Этот технический разбор показывает, как задеплоить harry0703/MoneyPrinterTurbo v1.2.9 через uv на арендованном Mac mini M4, сравнивает аренду, покупку и SaaS, даёт пять шагов деплоя, три метрики и FAQ по ffmpeg, MoviePy 2.x и Edge TTS на Apple Silicon.
Содержание
01 · Стек v1.2.9 и MVC
MoneyPrinterTurbo — Python-проект с чётким MVC: контроллеры orchestration, сервисы для LLM/TTS/материалов, view через Streamlit WebUI и OpenAPI на FastAPI (main.py). Вход — keyword или topic; выход — MP4 в ./storage.
API: uvicorn/FastAPI → :8080 (/docs, /redoc)
Runtime: Python 3.11 (uv-managed)
Video mux: MoviePy 2.x + ffmpeg (ImageMagick больше не нужен для субтитров)
TTS default: Edge TTS (= «Azure TTS V1» в UI, без API key)
Тег v1.2.9 фиксирует переход на pyproject.toml + uv.lock. README явно рекомендует macOS/Linux путь: uv python install 3.11 && uv sync --frozen. Windows one-click bundle застрял на более старом снимке (v1.2.6 portable + update.bat) — для CI/CD и headless API это неприемлемый drift.
Форматы вывода, критичные для Shorts/Reels/TikTok:
- Portrait 9:16 — 1080×1920, H.264 через ffmpeg
- Landscape 16:9 — 1920×1080
- Batch — N вариантов на один prompt, ручной отбор лучшего
02 · Три системных ограничения
- Windows portable ≠ reproducible deploy. Антivirus, UAC, относительные пути ffmpeg и отсутствие lockfile делают nightly batch нестабильным. На арендованном macOS каждый прогон начинается с
uv sync --frozen— бит-в-бит окружение. - RecCloud SaaS снимает DevOps, но не data plane. Промпты и рендеры живут у вендора. Для команд с NDA или персональными данными в сценариях self-host на bare-metal — минимизация subprocessors.
- CapEx Mac mini при эпизодической нагрузке. M4 16 GB/512 GB ≈ 1299 € в EU; при 15 рабочих днях в год аренда ~22 €/день (MacDate HK-тариф, см. тарифы bare-metal) экономит >950 € hardware в первый год.
03 · Apple Silicon и I/O
| Подсистема | Роль в MPT | M4 16 GB | Узкое место |
|---|---|---|---|
| CPU (ARM64) | LLM — cloud; ffmpeg mux локально | 10-core (4P+6E) | Batch >5 parallel jobs |
| Unified Memory | MoviePy frames + Streamlit | 16 GB | Whisper large-v3 + batch |
| NVMe I/O | Temp clips, ./storage | Bare-metal direct | VM jitter (не MacDate) |
| VideoToolbox | H.264 encode assist | Hardware path | CPU fallback медленнее |
| Network | Pexels + LLM API | 1 Gbit/s dedicated | HF model download |
GPU не обязателен при cloud LLM + Edge TTS + Pexels. Локальный faster-whisper (subtitle_provider = whisper) грузит CPU; на M4 inference приемлем для single-clip, но large-v3 (~3 GB weights) требует 24 GB RAM и места в ./models/whisper-large-v3.
04 · TCO: аренда vs покупка vs SaaS
Сценарий: 160 vertical shorts/год, 45–90 сек, cloud LLM (gpt-4o-mini class ~$0.02–0.08/video), Edge TTS $0.
| Модель | Год 1 infra | Контроль data plane | API automation |
|---|---|---|---|
| Покупка M4 16 GB | ≈ 1299 € + ~149 € opex | Полный | main.py :8080 |
| MacDate посуточно | ≈ 22 € × 15 дн = 330 € | Bare-metal wipe | Да |
| MacDate помесячно | См. ценовое руководство | Tenant isolation | 7×24 |
| RecCloud SaaS | $0 entry, paid tiers | Vendor-hosted | Ограничено UI |
Break-even: <60 rental days/year → аренда; continuous pipeline → monthly или purchase. Детальный 24-month TCO для AI-workloads: Mac mini M4 гибкая аренда и TCO 24 месяца — та же логика для video batch.
05 · Пять шагов uv-деплоя
- Арендовать Mac mini M4 — 16 GB RAM (24 GB для whisper batch). SSH key auth, отдельный macOS user. VNC для WebUI preview: удалённый доступ macOS.
- Install uv + clone v1.2.9 — зафиксировать tag, не tracking main.
- config.toml —
pexels_api_keys[],llm_provider, provider API key; optional Azure speech_key для TTS V2. - uv sync --frozen — resolve strictly from uv.lock;
ulimit -n 10240перед batch (fix Errno 24). - Launch + smoke test 9:16 — Streamlit; один vertical clip; verify ./storage output; optional
uv run python main.pyдля API path.
# MoneyPrinterTurbo v1.2.9 — bare-metal Mac mini
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/harry0703/MoneyPrinterTurbo.git
cd MoneyPrinterTurbo && git checkout v1.2.9
uv python install 3.11
cp config.example.toml config.toml
# edit: pexels_api_keys, llm_provider, API keys
uv sync --frozen
ulimit -n 10240
uv run streamlit run ./webui/Main.py --browser.gatherUsageStats=False
# headless API:
uv run python main.py
Remote WebUI: export MPT_WEBUI_HOST=0.0.0.0 + SSH tunnel -L 8501:127.0.0.1:8501. Интеграция с OpenClaw для trigger-by-keyword: OpenClaw на арендованном Mac mini M4.
06 · Три метрики
- 78 235+ GitHub stars (harry0703/MoneyPrinterTurbo, June 2026) — высокая community velocity ⇒ обязательный pin v1.2.9 в production.
- 1080×1920 px — native vertical без post-crop; критично для алгоритмов Shorts (retention на первых 3 сек).
- 3–7 min/clip на M4 16 GB (cloud LLM + Edge subs + 5 pexels clips) — планируйте batch window, не interactive laptop thermal envelope. Локальные assets из
./resourceтребуют ручной проверки прав — MPT не валидирует copyright.
07 · Субтитры: edge vs whisper
subtitle_provider = "edge" — timestamps из Edge TTS, zero GPU, sub-second alignment setup; иногда drift на длинных предложениях.
subtitle_provider = "whisper" — faster-whisper local, word-level accuracy, +30–90 s/clip на CPU M4, модель large-v3 ~3 GB (или large-v3-turbo ~250 MB). HuggingFace download может упасть — manual mirror в README (Baidu/Quark) или offline copy в ./models/.
MoviePy 2.x рендерит subtitles через Pillow — ImageMagick dependency удалена с недавних версий. Если видите ImageMagick error — вы на stale branch; git checkout v1.2.9.
На уровне Darwin/XNU пайплайн выглядит так: Python spawn → MoviePy декодирует Pexels-MP4 через ffmpeg subprocess → AudioTrack → Edge TTS WAV → mux. Unified Memory на M4 позволяет держать Streamlit UI и один encode job без swap до ~14 GB footprint; второй parallel job на 16 GB — риск memory pressure и OOM kill от jetsam. Для agency batch: serial queue или bump to 24 GB M4 Pro rental.
Pexels rate limit: бесплатный tier ограничивает requests/hour — при 20 keywords prefetch materials или cache ./cache если включено в вашем fork. LLM rate limits ловите через exponential backoff в config или queue keywords по 5 штук за iteration.
08 · Headless API и batch-оркестрация
Production path без Streamlit: uv run python main.py поднимает FastAPI на :8080. Cron на том же Mac или SSH-trigger с Linux CI шлёт JSON с keyword → получает path к MP4 в ./storage. Render остаётся on-box; наружу уходят только LLM и Pexels — минимальный egress footprint compared to full SaaS.
| llm_provider | ~€/video | Script latency | Notes |
|---|---|---|---|
| openai | 0.02–0.06 | 2–5 s | Stable JSON output |
| deepseek | 0.01–0.03 | 3–8 s | Cost-efficient batch nights |
| ollama local | 0 API | 15–60 s | 16 GB caps model size; see OpenClaw + Ollama on rented Mac |
| gemini | 0.02–0.05 | 2–6 s | Policy volatility — pin API not OAuth |
Batch profile: 20 keywords × 9:16 на M4 16 GB, cloud LLM + Edge subs ≈ 60–120 min wall time. Перед ночным прогоном: ulimit -n 10240, caffeinate -dims, отдельный macOS user per client. Логируйте keyword, duration, estimated API spend — input для TCO vs RecCloud.
Docker-compose path из README работает, но на bare-metal Mac mini uv быстрее iter cycle и reliably проще wipe secrets при return node. VM добавляет I/O jitter на ffmpeg temp files — для frame-accurate subs нежелательно.
Сравнение с Windows VPS: дешёвый vCPU не компенсирует отсутствие VideoToolbox и native H.264 path. Antivirus scan temp MP4 добавляет 15–25 % к batch window. На MacDate bare-metal вы получаете deterministic encode time — важно для SLA «clip к 08:00» перед SMM-публикацией.
Security hardening на rented node: отключите auto-login, используйте firewall только для SSH/VNC с вашего IP, не храните API keys в git; config.toml в .gitignore. Перед return — APFS delete user home или documented wipe, rotate все keys issued during rental window.
08 · Почему bare-metal macOS, а не VPS или Docker-only
MoneyPrinterTurbo опирается на MoviePy 2.x и системный ffmpeg. На Apple Silicon bare-metal вы получаете VideoToolbox для H.264/H.265 и предсказуемый I/O на APFS — temp-файлы рендера не проходят через слой виртуализации. Типичный VPS на x86 без GPU даёт только software encode: одна 9:16 клип 60 s может занять 8–12 минут против 4–7 минут на Mac mini M4 при том же сценарии (cloud LLM + Edge TTS).
Унифицированная память M4 означает, что whisper large-v3 (~3 GB) и Streamlit WebUI делят один пул RAM. На 16 GB узле держите один активный Streamlit session; batch через API (uv run python main.py) стабильнее для ночных прогонов. При 24 GB можно параллелить два job queue с tmux windows — но не смешивайте whisper и массовый Pexels download в один процесс: оба бьют по disk I/O.
SSH-туннель для WebUI без публикации 8501 в интернет:
Для команд из 3–5 человек: один dedicated rental node, общий output/ через SFTP, API keys в macOS Keychain per-user account. После кампании — documented wipe на MacDate и rotation всех Pexels/LLM keys. Это дешевле второго физического Mac mini и безопаснее, чем sharing SaaS workspace с внешними редакторами.
Сравнение с Colab: notebook-сессия 12 h cap, нет persistent resource/songs, нельзя повесить cron на main.py. Colab — один demo clip; bare-metal rent — production pipeline на 3–12 месяцев.
09 · Отладка
- RuntimeError: No ffmpeg exe — brew install ffmpeg или
ffmpeg_pathв [app] секции config.toml. - OSError [Errno 24] —
ulimit -n 10240. - Streamlit blank page — Chrome/Edge; disable aggressive content blockers on localhost tunnel.
- LLM timeout — rate limits; switch provider или increase timeout in config.
- jetsam / memory pressure — reduce parallel jobs; upgrade to 24 GB rental tier; close Streamlit during API-only batch.
Post-deploy checklist for production: (1) git describe --tags == v1.2.9; (2) uv run python -c "import moviepy; print(moviepy.__version__)" confirms 2.x; (3) one 9:16 clip archived; (4) API keys rotation schedule documented; (5) wipe procedure linked in project ticket before Mac return date.
10 · Вердикт и аренда Mac
Windows one-click и RecCloud — valid для proof-of-concept. Они ломаются как long-term strategy, когда нужны: API automation (:8080), reproducible uv lockfile, tenant-isolated API keys, batch 9:16 без UI babysitting. Покупка Mac mini при сезонных кампаниях — immobilized CapEx с >75% idle time по типичным SMM-командам.
Арендованный bare-metal Mac mini M4 даёт: native ARM64 ffmpeg path, VideoToolbox encode, чистый Keychain для secrets, wipe-on-return без forensic residue на вашем daily driver. Три-пять дней аренды хватит на deploy + 20 test clips + TCO spreadsheet; дальше — monthly или purchase по цифрам. При minor releases сверяйте CHANGELOG перед повторным uv sync --frozen.
MacDate предоставляет dedicated Apple Silicon nodes; не аффилирован с harry0703 или RecCloud. Stand: 3 июня 2026, upstream tag v1.2.9. См. также заказ M4 узлов и аренда vs покупка Mac mini. RecCloud остаётся быстрым POC, но не заменяет self-host API automation на bare-metal macOS.