채널마다 규격이 다른 소셜 PNG를 한꺼번에 낼 때 원격 Mac·OpenClaw로 재현 가능한 계약(경로·키·이름·폴더)을 고정하는 실행서입니다. 환경 준비, API 키·게이트웨이, 프롬프트·쉘 템플릿, 재시도·명명, 폴더 트리 순으로 정리했습니다. 설치는 OpenClaw 설치 가이드(전 플랫폼), PNG 자동화는 Mac에서 OpenClaw로 PNG 처리 자동화와 함께 보세요.
목차
① 원격 Mac 환경 준비
캠페인마다 머신 상태가 달라지지 않게 아래를 먼저 고정합니다.
- 셸·경로: 배치 전용 사용자 하나, 설정은 절대 경로·
$HOME. iCloud 바탕화면 대신/Users/batch/jobs/등 고정 디렉터리. - OpenClaw: Docker 태그·릴리스를 팀과 동일하게. 시작 시 버전을
logs/env-snapshot.txt에 남깁니다. 설치 흐름은 설치 가이드와 맞춥니다. - 이미지·네트워크: 치수 검증은 기본
sips로 충분; 필요 시 ImageMagick·pngcheck+Brewfile고정. API·스토리지는 HEAD·소형 잡으로 스모크 테스트.
접속은 SSH/VNC 도움말, 노드는 MacPng 홈.
② API 키·게이트웨이·최소 권한
키 유출 시 피해 범위를 줄이려면 저장 위치·호출 경로·로그를 분리합니다.
- Git 금지:
.env는.gitignore. macOS Keychain 또는 잡 세션 전용export래퍼. - 게이트웨이: VPC·원격 Mac 앞단에 Caddy/nginx 등 얇은 프록시. 클라이언트는
https://gateway.internal/v1/...+단기 JWT만 알고, 마스터 키는 게이트웨이에만 둡니다. - 스코프·로그: 이미지 API 한정 키·월 한도. 터미널 노출 후 rotate. 액세스 로그에
Authorization금지; 잡 로그는logs/run-YYYYMMDD-HHMM.jsonl에 id·코드만.
스킬은 호스트 화이트리스트·페이로드 상한·임의 셸 비활성화를 함께 검토합니다.
③ 플랫폼별 픽셀 매트릭스(설정에 붙여 넣기)
스펙은 변하므로 아래를 시작용으로 CSV·JSON에 버전과 함께 두세요(PNG, sRGB).
| 플랫폼·용도 | 크기(px) | 메모 |
|---|---|---|
| Instagram 피드(정사각) | 1080 × 1080 | 기본; 중요 소재 중앙 |
| Instagram 스토리·릴 커버 | 1080 × 1920 | 9:16 세이프존 |
| LinkedIn·X·FB 링크 프리뷰 | 1200 × 627 | 1.91:1 |
| Pinterest 표준 핀 | 1000 × 1500 | 2:3 |
manifest.csv: platform,width,height,slug. 행 추가만으로 채널 확장.
④ 프롬프트·스크립트 템플릿 예시
LLM·이미지 API: 브리프와 픽셀 규격을 분리합니다. system 고정, user만 행별 치환.
SYSTEM (고정):
마케팅용 정지 이미지를 생성한다. 출력: PNG 1장, sRGB, 테두리·워터마크 없음.
지정된 width·height를 반드시 지킨다. 도구가 잘못된 치수를 반환하면 성공이라 말하지 말고 ERROR_DIMS만 반환한다.
USER (행별 변수):
캠페인: {{campaign_slug}}
비주얼 브리프(한 줄): {{brief_one_line}}
크기: {{width}}x{{height}} px
파일명 stem: {{campaign_slug}}__{{platform}}__{{width}}x{{height}}
쉘: 행마다 CLI·HTTP 스킬에 {"prompt":"...","out":"staging/..."} → sips로 치수 확인 → 맞으면 out/으로 이동. 이후 감시 폴더·PNG 이름 변경 가이드로 연결 가능.
⑤ 재시도·검증·명명 규칙
레이트 리밋·TLS·모델 거절·치수 오류는 흔합니다. 정책으로 흡수합니다.
- 재시도: 지수 백오프+지터(예: 2·4·8초, 상한 60초, 최대 5회). 429·5xx만 재시도; 정책 400은 스킵·로그.
- 치수 게이트: 쓰기 후
width·heightassert. 실패 시failed/dim-mismatch/+logs/errors.jsonl. - 명명:
{{campaign_slug}}__{{platform}}__{{width}}x{{height}}.png— 이중 밑줄·소문자·슬러그는 하이픈만. 재생성이 잦으면.meta.json에 해시·체크섬.
out/ 직접 덮어쓰기 금지. staging/ → 검증 → 원자적 이동.
⑥ 폴더 출력 규약
캠페인당 동일 트리로 역할을 분리합니다.
~/jobs/{{campaign_slug}}/
manifest.csv
inbox/ # 선택: 원본 PSD·중간 수출
staging/ # 모델 raw 출력, 일회성
out/ # 검증된 업로드 준비 PNG
failed/ # 치수 오류·정책 차단·손상 파일
logs/ # jsonl 실행 로그, env 스냅샷
archive/ # out+manifest 묶음 zip 납품용
종료 시 zip -r archive/{{campaign_slug}}-$(date +%Y%m%d).zip out manifest.csv logs/env-snapshot.txt로 인계 번들화. 큐로 스케일할 때는 매니페스트·명명만 유지합니다.
성패는 도구보다 경로·키·이름·폴더 계약에 달립니다. 기술 인사이트·도움말·홈을 참고한 뒤, 상시 배치는 Mac Mini M4 대여로 진행하세요.