2026 OpenClaw 실전: 원격 Mac에서 디자인 수출 디렉터리를 감시해 PNG EXIF 방향을 보정하고 무손실 회전까지 재현하는 단계

대상 독자: PNG가 뷰어마다 가로·세로가 다르게 보이는 디자인 옵스·자동화 담당자. 원인은 EXIF Orientation(PNG eXIf 등)이 남아 있는데, 일부 앱만 태그를 적용하고 다른 파이프라인은 원시 픽셀만 읽기 때문인 경우가 많습니다. 원격 Mac·OpenClaw로 inbox 감시 → 태그 읽기 → 필요 시 무손실 회전 → 메타 정규화 → 날짜별 out·JSONL을 고정하면 재현됩니다. 함께 읽기: 설치 가이드, 감시·재시도·로그, CLI 파이프라인 템플릿.

목차

크롤·온콜용 확장 읽기 목록입니다.

OpenClaw·게이트웨이 최소 배포

게이트웨이127.0.0.1·/health만 열고, 토큰은 mode 600 환경 파일에 둡니다. 설치 가이드 후 GUI·SSH 비대화형 셸 모두에서 curl …/healthmagick·exiftool 경로를 확인하세요(비대화형은 PATH 누락이 흔함).

최소 체크리스트:

  • 프로세스 소유: 감시·OpenClaw·워커를 inbox/·out/와 동일 UID로 실행합니다.
  • TCC: 특정 폴더 읽기가 막히면 워커 바이너리(또는 터미널)를 시스템 설정 → 개인 정보 보호 및 보안 → 전체 디스크 접근에 추가합니다.
  • 방화벽: 게이트웨이 WAN 노출 금지, 필요 시 SSH 포트 포워딩.

inbox는 로컬 SSD 전용 경로로 두세요(iCloud·SMB는 동기·반쓰기로 오판 위험).

감시가 실제 호출하는 것과 동일한 환경에서 which magick exiftool, magick -version, exiftool -ver로 의존성 스모크 테스트를 하세요.

폴더 감시 전략

수출은 ~/png_jobs/design_export/inbox로컬 SSD 한 곳으로 고정하고 inbox·work·out·failed·logs로 나눕니다(다중 PNG 감시). Figma 연속 수출에는 ICC 감시 파이프와 같은 quiet window 패턴을 쓰면 안전합니다.

현장에서 통하는 규칙:

  1. 확장자는 *.png만; .DS_Store, *.tmp, *.crdownload는 무시합니다.
  2. 크기 안정: 500ms 간격으로 stat을 두 번 찍어 동일할 때만 큐에 넣습니다.
  3. 디바운스: fswatch는 1~3초 묶기, launchd WatchPaths는 짧은 sleep 뒤 워커 호출.
  4. 버스트: 파일이 연속으로 떨어지면 30~60초간 새 PNG가 없을 때까지 기다린 뒤 정렬된 순서로 비웁니다.
  5. single-flight: 동시에 두 워커가 같은 파일을 잡지 않도록 프로세스는 하나만 둡니다.

brew install fswatch 후 inbox를 지정하고, 내부 sleep으로 이벤트를 묶은 뒤 OpenClaw 스킬과 동일한 워커를 호출합니다.

INBOX=~/png_jobs/design_export/inbox
fswatch -o "$INBOX" | while read -r; do
  sleep 2
  /usr/local/bin/your_png_exif_rotate_worker.zsh
done

launchd 대안: WatchPaths로 inbox를 지정하고, plist 안에 EnvironmentVariablesPATH·토큰을 넣거나 래퍼에서 openclaw.envsource하세요. 저장소에 plist 경로를 적어 두면 다른 운영자가 diff로 추적할 수 있습니다.

EXIF Orientation 처리 흐름

Orientation 1~8은 회전·미러 힌트입니다. 뷰어는 태그를 적용하지만 CI·일부 파이프라인은 눕힌 픽셀만 읽으므로, 자동화는 태그를 먼저 읽고 통과·회전·격리를 고릅니다.

숫자로 읽기:

exiftool -n -Orientation -s3 "$PNG"

비었거나 1이면 통상 회전 생략(스펙 픽셀 수는 문서와 교차 확인). 3·6·8은 흔한 회전, 2·4·5·7미러 포함이라 브랜드 에셋은 격리·전용 스크립트 권장.

태그 조치 메모
없음·1 회전 생략 UI PNG는 EXIF 없음 흔함
3·6·8 magick -auto-orient+정규화 태그 무시 소비자 대비
2·4·5·7 격리·전용 스크립트 미러 오탐 주의

회전 후 exiftool … -Orientation=1 또는 런북대로 스트립해 이중 적용을 막습니다.

배치 무손실 회전·명명·아카이브

무손실은 리샘플 없이 디코드 내용 보존을 뜻하며, PNG 바이트 크기는 재압축으로 달라질 수 있습니다. 바이트 동일 납품은 골든 세트·픽셀/해시 정책으로 증명하세요(메타·무손실 재압축).

magick "$IN" -auto-orient "$OUT"
exiftool -overwrite_original -Orientation=1 "$OUT"
inbox=~/png_jobs/design_export/inbox
out_root=~/png_jobs/design_export/out/$(date +%F)
mkdir -p "$out_root"
for f in "$inbox"/*.png; do
  [ -f "$f" ] || continue
  ori=$(exiftool -n -Orientation -s3 "$f" 2>/dev/null || echo "")
  [[ -z "$ori" || "$ori" == "1" ]] && cp -p "$f" "$out_root/$(basename "$f")" && continue
  base=$(basename "$f" .png)
  magick "$f" -auto-orient "$out_root/${base}_rot_v01.png"
  exiftool -overwrite_original -Orientation=1 "$out_root/${base}_rot_v01.png"
done

명명은 자동 명명·검증과 맞추고, 픽셀 변경 시에만 _rot_v01 등. JSONL에 sha256_before·sha256_after·orientation_in·ms를 한 줄씩. 선택: ICC 파이프로 프로필 유실 시 quarantine/.

자주 나는 오류 FAQ

Preview에서는 열리는데 exiftool이 “Unknown file type”입니다.

0바이트·잘못된 확장자·볼륨 읽기 차단을 의심하세요. xxd -l 889 50 4E 47 확인, 감시와 동일 UID로 실행.

-auto-orient 후에도 옆으로 보입니다.

사이드카만 적용되거나 EXIF가 원인이 아닐 수 있습니다. 태그·담당 확인 없이 추가 회전하지 마세요.

스킬에서 게이트웨이 401입니다.

토큰·launchd env 미로드. plist EnvironmentVariables 또는 래퍼에서 openclaw.env source.

magick 후 용량이 변했습니다.

재압축으로 흔함. 디코드·해시 기준 합격 정의를 문서에 두세요.

inbox “Operation not permitted”.

TCC·소유권 불일치. ls -leO, 워커 UID 정렬, 필요 시 전체 디스크 접근.

Figma에서 PNG가 연속 수출될 때 한 배치로 묶으려면?

30~60초 quiet window 뒤 정렬된 순서로 inbox를 비우고, manifest.jsonl 또는 JSONL에 파일당 한 줄을 남기세요. 동일 패턴은 감시·로그 아카이브 HowTo와 맞추면 됩니다.

정리: EXIF를 먼저 읽고, 로컬 SSD inbox에서 디바운스·크기 안정 후 필요 시 magick -auto-orient·Orientation=1(또는 스트립). 날짜 out/·JSONL로 감사하면 동일 OpenClaw 스킬을 프로젝트마다 재사용합니다.

소재 자동화를 노트북에 묶지 않으려면 Apple Silicon 원격 Mac이 운영 부담 대비 효율이 좋습니다. 로그인 없이 구매·대여, 요금·노드, SSH·VNC 가이드로 워커를 붙이고 본 루프를 반복 배포하세요. 기술 인사이트에서 파이프라인을 이어 읽을 수 있습니다.

공개 페이지만 — 로그인 불필요

원격 Mac에서 PNG EXIF·무손실 회전 파이프라인 돌리기

구매·대여 요금·노드 보기 SSH·VNC 가이드

관련: 설치, 감시·로그, ICC·무손실.

OpenClaw·원격 Mac 2026 EXIF 감시·무손실 회전
지금 대여