MacPng のリモート Macで Figma から透かし付き PNG 納品を安定させる再現手順です。書き出しパス・監視・ImageMagick 一括・SHA256・版 tar・OpenClaw(Gateway/スキル)・JSONL・リトライをまとめます。インストール・書き出しチェックリスト・監視 HowTo と併読ください。
① 書き出しディレクトリ規約と権限
痛点:パス分散、書き込み途中の捕捉、所有者と SSH の不一致。対策は絶対パス 1 本に凍結し、LaunchAgent・ワーカー・対話ユーザーを同一 POSIX アカウントにそろえることです。
ツリー:inbox(監視のみ)→ staging(mv 後に合成)→ watermarked → archive/failed/logs(JSONL)。ルート 750、launchd はチルダなし絶対パス。brew install imagemagick。NW ボリュームはデバウンス延長。透過前提は 透過比較 と整合。
| 監視方式 | 向く現場 | 注意 |
|---|---|---|
fswatch |
イベント即時 | デバウンス+サイズ安定必須 |
launchd 定期 |
夜間バッチ | 冪等キーで二重処理防止 |
| OpenClaw 統合 | 台帳一元化 | allow-list、直シェル禁止 |
② 透かしパラメータ(位置・透明度・セーフゾーン)
視認性・控えめ・主役を侵さないを定数化。RGBA PNG を 2 倍持ち、SVG 直ラスタは非推奨。詳細は SVG→Retina マトリクス。
| 項目 | 目安 | メモ |
|---|---|---|
| 重力 | SouthEast/SouthWest |
長尺は下辺セーフ帯 |
| インセット | 24〜48px(1×) |
ワイドは % 併用 |
| 不透明度 | 30〜45% 視覚 |
-dissolve、明暗で確認 |
| セーフゾーン | 顔・UI 外 | 角変更や二段ゲート |
合成テンプレ(v7):
MARK="$HOME/FigmaDelivery/assets/mark_rgba.png"
IN="$1"
OUT="$2"
magick "$IN" "$MARK" -gravity SouthEast -geometry +32+32 \
-compose dissolve -define compose:args=35 -composite "$OUT"
staging の *.png をループし JSONL に stage=composite。無損再圧縮は別段で メタ/再圧縮 と順序固定。
③ チェックサム一覧と版アーカイブ
SHA256 でバイト証跡を残し PNG QA と連鎖。行に相対パス・ハッシュ・サイズ・UTC mtime・任意キー。ジョブに job_id・pipeline_version・透かし素材ハッシュ。合格後のみ manifest.jsonl 追記。
(cd "$WATERMARKED_DIR" && find . -name '*.png' -print0 | \
sort -z | xargs -0 shasum -a 256) > "$ARCHIVE_DIR/manifest-${JOB_ID}.sha256"
archive/drop_YYYYMMDDThhmmssZ_${GIT_SHORT:-local}.tar.gz に watermarked/ とマニフェストを同梱。スキーマは CLI チェーン と統一。
④ OpenClaw トリガーとログ回収
Gateway/スキルは単一入口の終了コードを信頼。監視→キュー、figma_png_watermark.run に JSON(inbox・mark・campaign、allow-list)、夜間 launchd が典型。スキル進化・知識ベース 参照。
JSONL 各行:ts・job_id・stage(move|composite|sha256|archive)・path・exit・ms。忙碌は 5→20→60 秒バックオフ、破損は failed/。語彙は PNG セット監視 と共有。
⑤ よくある失敗 FAQ
色味ずれ → sRGB でそろえる。色彩チェックリスト。
二重透かし → inbox→staging の mv か inode キャッシュ。job_id で追跡。
空 tar → 相対パス誤り。stage=archive で ls ログ。
4K が重い → 並列上限。4K バッチ の分割考え方。
IPTC 続き → ピクセル後に IPTC 手順。
結論:リモート Mac に固定パスと ImageMagick、マニフェスト・tar・JSONL を揃えれば最終性をハッシュで説明できます。語彙は他パイプラインと共有を。