Один баннер нарисовать просто; боль начинается, когда нужно двадцать согласованных PNG под ленту Instagram, превью LinkedIn/X, вертикаль под сторис и высокий пин Pinterest. Ниже — не «идеология автоматизации», а воспроизводимая схема для OpenClaw на удалённом Mac: что поставить, как держать API-ключи и шлюз, готовые блоки промпта и обвязки в шелле, правила повторов и имён, и дерево папок, которое можно версионировать. Общий контекст установки — в руководстве по установке OpenClaw; идеи по ИИ и PNG — в статье автоматизация обработки PNG на Mac. После валидации размеров цепочку можно стыковать с мониторингом папки и переименованием.
Содержание
Подготовка среды на удалённом Mac
Воспроизводимость начинается с машины, которая не «плывёт» между запусками. На арендованном или выделенном Mac зафиксируйте базу до первого вызова OpenClaw:
- Пользователь и пути: заведите одного системного пользователя для пакетных задач (например
batch), фиксированный$HOMEи абсолютные пути в конфигах. Не кладите задания в Desktop с iCloud — используйте/Users/batch/jobs/или отдельный том, чтобы синхронизация не ломала атомарные переименования. - Версия OpenClaw: один и тот же тег Docker или номер релиза на всех окружениях. В начале каждой кампании допишите вывод
openclaw --versionи хеш образа вlogs/env-snapshot.txt, чтобы через месяц было ясно, чем именно собирали пакет. - Инструменты изображений: встроенного
sipsдостаточно, чтобы после экспорта прочитатьpixelWidthиpixelHeight. Если нужен аудит альфы и чанков PNG, добавьте ImageMagick илиpngcheckчерез Homebrew один раз и закрепитеBrewfileв репозитории пайплайна. - Сеть: проверьте, что Mac без интерактивного браузера достучится до API модели и до хранилища (S3, R2 и т. п.). Пятистрочный смоук: один
HEADк шлюзу и одна микрозадача на картинку — до запуска сотен строкmanifest.csv.
Если узел ещё настраиваете, шаги доступа описаны в разделе помощи (SSH/VNC); обзор узлов и сценариев — на главной MacPng.
API-ключи, шлюз и минимальные привилегии
Ключ как пароль — это минимум; нужно ещё ограничить ущерб, если скрипт утечёт или подрядчик скопирует каталог.
- Никогда в git:
.envв.gitignore. На macOS предпочтительноsecurity add-generic-passwordили короткий хелпер, который экспортирует переменные только на сессию задачи. - Шлюз вместо сырого ключа на ноутбуках: тонкий reverse proxy (Caddy или nginx) на удалённом Mac или в VPC с авторизацией, rate limit и allow-list IP. OpenClaw бьёт в
https://gateway.internal/v1/...с короткоживущим JWT, а не с мастер-ключом провайдера. - Ограниченные ключи: в консоли провайдера создайте ключ только на нужные image-endpoint’ы и с месячным потолком. После любого screen-share, где был виден терминал, — ротация.
- Логи: вырезайте заголовок
Authorizationиз access-логов. Пишите журнал задач вlogs/run-YYYYMMDD-HHMM.jsonlс request id, без полных тел запросов, где могли остаться секреты.
Те же правила применяйте к любому скиллу OpenClaw с доступом к файлам и HTTP: белый список хостов, лимит размера тела, запрет произвольного shell, пока скилл явно не ревьюнут.
Матрица размеров под платформы
Требования соцсетей меняются; таблица ниже — стартовый манифест, который вы версионируете в JSON или CSV. Ширина × высота в пикселях, PNG, sRGB.
| Платформа / размещение | Размер (px) | Заметки |
|---|---|---|
| Лента Instagram (квадрат) | 1080 × 1080 | Безопасный дефолт; важный контент ближе к центру под кроп |
| Сторис / обложка Reels | 1080 × 1920 | 9:16; запас сверху и снизу под UI |
| Превью ссылки LinkedIn / X / Facebook | 1200 × 627 | 1.91:1; текст слева, логотип справа внизу |
| Стандартный пин Pinterest | 1000 × 1500 | 2:3; высокий холст |
Храните как manifest.csv с колонками platform,width,height,slug. Цикл пакета читает по одной строке: добавление превью для YouTube — новая строка, а не перепись всего пайплайна.
Шаблоны промпта и скрипта
Путь через LLM-изображения: разделите «что нарисовать» и «как отдать файл». System-блок замораживаете; в user-блоке только подстановки.
SYSTEM (фиксированный):
Ты генерируешь маркетинговые статичные изображения. Формат: один PNG, sRGB, без рамки и водяного знака.
Строго соблюдай заданные ширину и высоту. Если инструмент вернул другие размеры — ответь ERROR_DIMS и не утверждай об успехе.
USER (на строку манифеста):
Кампания: {{campaign_slug}}
Бриф одной строкой: {{brief_one_line}}
Размер: {{width}}x{{height}} px
Базовое имя файла: {{campaign_slug}}__{{platform}}__{{width}}x{{height}}
Склеивание в шелле (логика): цикл читает manifest.csv, вызывает CLI OpenClaw или HTTP-скилл с телом {"prompt": "...", "out": "staging/..."}, затем выполняет sips -g pixelWidth -g pixelHeight на результате. Только при совпадении с ожидаемыми пикселями делайте mv в out/. Такой контур одинаков, если модель локальная или за API.
Повторы, проверка и именование
Пакеты падают по скучным причинам: лимиты, обрыв TLS, отказ модели, неверное соотношение сторон. Сделайте и сбой предсказуемым.
- Политика повторов: экспоненциальная задержка с джиттером: 2 с, 4 с, 8 с с потолком 60 с; не более 5 попыток на ассет. Коды 429 и 5xx — повторяемые; 400 с нарушением политики — нет: залогируйте и пропустите строку.
- Ворота по размерам: после каждой записи проверяйте
width == ожидаемое && height == ожидаемое. При расхождении переносите файл вfailed/dim-mismatch/и добавляйте строку вlogs/errors.jsonl. - Именование:
{{campaign_slug}}__{{platform}}__{{width}}x{{height}}.png— двойное подчёркивание отделяет уровни токенов; нижний регистр; внутри slug только дефисы. Без пробелов и локализованных символов, чтобы CI и CDN не ломались. - Идемпотентность: при частых перегенерациях храните хеш входа или краткую контрольную сумму в sidecar
.meta.json, чтобы понимать, устарел лиout/foo__ig__1080x1080.png.
out/ напрямую. Пишите в staging/, валидируйте, затем атомарно переносите в out/ — так в прод не уйдёт обрезанный PNG.
Соглашение по выходным папкам
Одно дерево на кампанию — общий язык для дизайна, PM и скриптов:
~/jobs/{{campaign_slug}}/
manifest.csv
inbox/ # исходники PSD/экспорта (по желанию)
staging/ # сырой вывод модели, можно чистить
out/ # проверенные PNG к загрузке
failed/ # ошибки размеров, политика, битые файлы
logs/ # jsonl прогонов, снимок среды
archive/ # zip: out/ + manifest для передачи
В конце дня команда zip -r archive/{{campaign_slug}}-$(date +%Y%m%d).zip out manifest.csv logs/env-snapshot.txt даёт аудиторам воспроизводимый архив. Когда одного Mac мало, те же manifest.csv и правила имён переносятся на воркер очереди — меняется только исполнитель.
Запускайте этот сценарий на выделенном M4
Стабильный macOS, предсказуемый egress и запас по CPU/RAM для тяжёлых пакетов — без привязки к вашему основному ноутбуку. Сначала технические идеи, затем выбор узла; доступ и SSH/VNC — в помощи.
Готовы закрепить пайплайн: оформите аренду удалённого Mac mini M4 под OpenClaw и пакетный вывод PNG — узел доступен круглосуточно, материалы по настройке открыты без входа в аккаунт. Дополнительные сценарии — в разделе блога и на странице тарифов.