브랜드·제품 팀은 여전히 아이폰 레퍼런스, 내부 촬영, 잘못된 수출 프리셋으로 HEIC 드롭을 받습니다. 원격 Mac에서는 노트북 팬을 켜지 않고 OpenClaw가 공유 수출 inbox를 감시하고, 네이티브 sips로 일괄 PNG를 만들며 합의된 ICC를 넣고, CDN 적재 전 바이트 상한 알림을 낼 수 있습니다. 동일 폴더·동일 프로브로 내일 다른 호스트에서도 재현하는 런북입니다. 설치 경로는 OpenClaw 전 플랫폼 설치 가이드를, 감시·JSONL·재시도 패턴은 PNG 폴더 감시·재시도·로그 아카이브 HowTo와 맞추세요.
목차
무인 HEIC 폴더가 깨지는 이유
- 반쯤 쓴 파일: 앱이 버퍼를 늦게 플러시하면 감시가 미완성 HEIC를 큐에 넣어
sips가 비정상 종료합니다. - 색 어긋남: 목적 ICC 없이 P3·sRGB를 뷰어마다 다르게 읽어 웹 PNG와 톤이 엇갈립니다.
- 용량 폭증: 한 장이 수 MB PNG가 되면 지연 로딩 예산을 깨므로 사후 슬랙 대신 임계 알림이 필요합니다.
macOS 변환 수단 결정
| 방식 | 강점 | 트레이드오프 |
|---|---|---|
| sips(CLI·스크립트) | 내장, Apple Silicon에서 빠름; OpenClaw 태스크로 감싸기 쉬움; -m ICC 지정과 궁합. |
ImageMagick보다 노브가 적음; 이색 HEIC 확장은 수동 QA. |
| Automator·폴더 작업 | 1인 디자이너에게 코드 부담 적음; 시스템 설정에서 보임. | 버전·로그·재현에 약함; 멀티 테넌트 원격 호스트엔 부적합. |
| 서드파티 GUI 배치 | 가끔 돌릴 때 미리보기 친화적. | 자동화 계약이 약함; 게이트웹훅·CI 게이트와 연쇄 어려움. |
디렉터리·권한·감시 계약
워커 사용자 단일 POSIX 트리로 고정하세요. 예: ~/HeicPipeline/ 아래 inbox, staging, png_out, failed, logs. 감시는 inbox/**/*.heic(대소문자 무시)만, 숨김 파일 제외, .tmp·~$ 접두 무시.
감시 계약: 1~3초 디바운스 후 stat 두 번(400~800ms 간격) 크기 동일일 때만 staging으로 옮기고 작업 레코드를 큐에 넣습니다. OpenClaw는 SSH 검증과 동일 환경 변수로 변환합니다.
sips·ICC·검증
스테이징된 HEIC마다 PNG로 래스터화한 뒤, 로그 가독을 위해 두 단계로 ICC를 지정합니다.
# 1) HEIC → PNG
sips -s format png "$SRC" --out "$DST"
# 2) 조직 표준 프로파일(예: sRGB)
sips -m "/System/Library/ColorSync/Profiles/sRGB Profile.icc" "$DST"
# 3) 삽입 프로파일 확인
sips -g profile "$DST"
커스텀 ICC는 ~/HeicPipeline/profiles/에 두고 LaunchAgent plist에는 ~ 대신 HOME을 명시해 절대 경로로 참조하세요.
사후 검증: sips -g pixelWidth -g pixelHeight·선택 exiftool -icc_profile:all. 색 공간은 Mac PNG 색 관리 sRGB·Display P3와 대조하세요.
용량 임계·알림·재시도
변환 성공 후 출력 크기를 읽습니다(macOS stat -f%z). MAX_BYTES는 퍼프 예산에서 도출—모바일 히어로는 너비 상한 합의 후 보통 250KB~900KB대가 많습니다. 구조화 JSONL 한 줄: ts, path, bytes, threshold, severity(info|warn|block).
재시도: “cannot extract image” 류는 네트워크 볼륨에서 일시적일 수 있어 5·20·60초 백오프 최대 3회. 영구 실패는 failed/+stderr JSON. logs/jobs-YYYYMMDD.jsonl은 일 단위 로테이션.
- 가드레일: NFS·SMB에서는 디바운스 ≥1초로 중복 작업을 종종 40~60% 감소.
- 처리량: 로컬 SSD·캐시된 ICC면 M 시리즈는 분당 수십 장 안정적.
- 알림:
warn은 60초 이내 웹훅 권장.
OpenClaw 게이트웨이 헬스
게이트웨이는 다른 의존성과 같이 취급하세요. 워커와 동일 네임스페이스에서 프로브합니다. launchd로 5분마다 또는 오케스트레이터에서 호출하는 셸 가드 예시:
curl -fsS "http://127.0.0.1:${OPENCLAW_GATEWAY_PORT}/health"(배포 문서의 실제 경로로 교체).- HTTP 200과
"status":"ok"류 페이로드 기대; TLS 지문이 바뀌었는데 프로브만 고정이면 실패로 닫습니다. - 실패 시 JSONL 인시던트 한 줄을 append하고 HEIC 작업 dequeue를 멈추며, 필요 시 OpenClaw 온콜 웹훅으로 “반쯤 온라인” 변환을 막습니다.
- 복구 후 백로그를 비우기 전
staging의 캐너리 HEIC 한 장을 재생합니다.
헬스 실패는 스로틀·발열과 겹칠 수 있어, 여유 있는 원격 Mac이 배치 스파이크에 유리합니다.
FAQ: 색 편차·알파
Q: Photos의 HEIC보다 PNG가 더 초록빛입니다.
A: Photos는 색 관리가 잘 되고 많은 브라우저는 sRGB를 가정합니다. sips -m으로 납품 ICC를 박고 관리 앱에서 미리보기한 뒤 디자인 도구 수출 프리셋을 맞추세요. 위 색 관리 체크리스트와 대조합니다.
Q: 오버레이 투명이 사라졌습니다.
A: 원본·출력 모두 sips -g hasAlpha로 확인하세요. 촬영 모드에 따라 알파가 평탄화되면 조용히 불투명 PNG를 보내지 말고 격리합니다.
Q: 헬스는 녹색인데 작업이 멈춥니다.
A: 디스크 여유, 감시 백로그, staging 배타 락을 확인하세요. HTTP 프로브만 녹색인데 락이 남은 경우가 흔합니다.
HEIC 정규화를 원격 Mac에 두면 노트북 부담을 줄이고 OpenClaw·sips·ICC·알림 훅을 한 호스트에 고정할 수 있습니다.