Public : creative ops et designers qui livrent des PNG pour le web (captures, exports depuis outils « navigateur first ») et veulent une chaîne rejouable : le fichier tombe dans un dossier, un worker vérifie le profil ICC embarqué, renomme selon un gabarit, archive ou met en quarantaine. Ce guide suppose un Mac distant (Apple Silicon) comme nœud de batch stable. Base d’installation : guide d’installation OpenClaw (toutes plateformes). Pour le contexte ICC, sRGB/P3 et recompression sans surprise : PNG métadonnées, ICC/sRGB sur Mac distant.
Sommaire
OpenClaw / passerelle : installation minimale et permissions
Objectif : une surface minimale — Gateway OpenClaw + un worker shell ou une tâche skill qui consomme une file de chemins absolus. Sur le Mac distant, un seul compte macOS possède les répertoires et exécute launchd ou une session tmux longue durée.
Étapes :
- Installer la passerelle et les dépendances documentées (Node ou runtime indiqué par votre manifeste OpenClaw) en suivant le guide officiel multi-plateforme.
- Créer une arborescence explicite, par exemple
~/WebPngPipeline/inbox(export navigateur),staging,validated,failed,archive,logs. - Configurer le navigateur ou l’outil pour écrire uniquement dans
inbox(ou un sous-dossier projet) — évite les collisions avec le Bureau synchronisé. - Si macOS affiche des blocages : Accès disque complet pour Terminal / binaire worker ; dans les plist
launchd, utiliser des chemins absolus etEnvironmentVariablespourHOME.
Checklist permissions : propriétaire = utilisateur worker ; pas de dossiers world-writable ; brew install exiftool (lecture métadonnées) et ImageMagick ou sips disponibles pour contrôles / embed ; test : touch dans chaque répertoire puis job « no-op » depuis OpenClaw.
Configuration de la surveillance de dossiers
Les exports navigateur produisent souvent des fichiers en deux temps (fichier temporaire puis renommage). Le déclencheur doit donc attendre la fin d’écriture : debounce 1–3 s après le dernier événement et deux mesures de taille identiques espacées de 400–800 ms.
Paramètres concrets :
- Chemin surveillé : le vrai dossier « Téléchargements » du compte worker ou un sous-dossier dédié monté sur SSD local (pas de partage SMB comme inbox chaude).
- Filtre :
*.pnginsensible à la casse ; ignorer*.crdownload,*.tmp, fichiers cachés. - Charge utile file : chemin absolu, taille,
mtime,project_slugoptionnel (nom du sous-dossier parent). - Orchestration :
fswatch→ script qui append JSONL danslogs/queue.jsonlconsommé par OpenClaw, ouWatchPaths+ wrapper qui déduplique par inode.
Pour aligner surveillance, renommage et logs avec d’autres playbooks PNG, croisez avec le tutoriel pipeline design : watch folder et renommage PNG — mêmes principes de file et d’idempotence.
Règles de validation ICC / profil colorimétrique
La livraison web exige en général un sRGB prévisible ; certaines marques autorisent Display P3 pour des captures retina spécifiques. Le pipeline doit encoder cette politique en liste blanche de descriptions ICC ou de noms de profil, pas en jugement visuel.
Étapes de contrôle :
- Copier le fichier de
inboxversstaging(oumvatomique) avant toute mutation. - Lire le profil embarqué, par exemple
exiftool -s -ICC_Profile:ProfileDescriptionoumagick identify -verbose fichier.png | grep -i icc. - Si aucun profil n’est présent : décision produit — soit échec (forcer un re-export avec embed), soit embed contrôlé via
sips -e profile /chemin/sRGB.iccpuis relecture. - Si le profil est hors liste (ex. générique « RGB » ambigu) : déplacer vers
failed/avec sidecar JSONreason: icc_not_allowed. - Si OK : passage à l’étape renommage ; conserver une trace
icc_profile_as_founddans le journal du job.
Exemple (inspection rapide) :
exiftool -s -ICC_Profile:ProfileDescription -ICC_Profile:ColorSpaceData "/chemin/staging/asset.png"
Évitez de enchaîner optimisers qui stripent l’ICC avant validation — ordre recommandé : valider ICC → renommer → archive → compression sans perte si charte autorisée (voir l’article ICC cité en tête d’article).
Gabarit de nommage et échec / retry
Un gabarit réduit les collisions DAM et facilite les greps dans les logs. Exemple : {projet}__{variant}__{width}x{height}__{yyyymmdd}.png, où variant provient du sous-dossier ou d’un tag dans un petit manifeste YAML par campagne.
Instance de flux :
- Fichier déposé :
Capture d’écran 2026-04-08.pngdansinbox/projet-alpha/. - Après stabilisation : lecture dimensions via
sips -g pixelWidth -g pixelHeightou ImageMagick. - Si ICC valide :
mvversvalidated/projet-alpha__hero__1440x900__20260408.pngpuis copie miroir dansarchive/2026/04/. - Si erreur transitoire (disque occupé, verrou lecteur) : réessayer 3 fois avec backoff 5 s / 20 s / 60 s ; persister le compteur dans un sidecar JSON.
- Si erreur de données (PNG corrompu, ICC interdit) :
failed/sans retry automatique ; appendfailed.jsonlpour triage humain.
Appendez une ligne JSON par job dans logs/jobs-AAAAMMJJ.jsonl (ts, path_in, path_out, icc, exit_stage) pour la même traçabilité que sur vos autres pipelines watch / retry.
FAQ : erreurs fréquentes
Q : « Operation not permitted » lors de la lecture du PNG.
A : Accès disque complet pour le processus réel (pas seulement l’app « Terminal » si le worker est un autre binaire) ; chemins absolus dans launchd.
Q : Le job voit un PNG valide mais ICC « absent » alors que le navigateur est en P3.
A : L’export peut être sans chunk iCCP ; tranchez par politique (embed sRGB obligatoire vs exception documentée). Ne pas confondre rendu écran et fichier embarqué.
Q : Double déclenchement → renommage qui échoue (fichier déjà déplacé).
A : Verrou par inode ou fichier .lock côté staging ; idempotence : si la cible existe déjà, comparer taille et hachage avant d’écraser.
Q : exiftool retourne des avertissements PNG sans bloquer.
A : Traiter les warnings comme échec doux ou dur selon la charte qualité ; journaliser la sortie complète dans le sidecar d’échec.
Checklist reproductible
- Gateway installé ; worker = un utilisateur ; répertoires créés et testés en écriture.
- Navigateur pointé vers
inbox; debounce + taille stable actifs. - Liste blanche ICC versionnée ; chemin vers profil sRGB de référence pour embed éventuel.
- Gabarit de nom + règles de collision documentées ; archive quotidienne ou par release.
- Retry uniquement sur erreurs transitoires ;
failed/pour données ; logs JSONL rotatifs.
Automatiser sans enfermer votre équipe dans un compte obligatoire
Déployez ce pipeline sur un nœud Apple Silicon qui reste éveillé pendant vos rafales d’export. Les pages achat / location, tarifs & nœuds et l’aide SSH/VNC sont consultables sans connexion. Pour prolonger le sujet (tokens PNG, QA batch, filigrane Figma), ouvrez le blog design & automatisation : guides OpenClaw, checklists ICC et workflows à forte charge.