ink-wash-restyle — Carnet de voyage à l'encre de Chine (version v16 stable)
Repeignez n'importe quelle photo en une illustration de carnet de voyage au pinceau et à l'encre :
- Noir et blanc à l'encre : cinq nuances d'encre + grands espaces vides (priorité à l'encre)
- Touches de couleur retenues (environ 20 %) : uniquement au centre visuel, avec des couleurs traditionnelles chinoises, sans voler la vedette à l'encre
- Étiquette de voyage : texte « description de la scène · lieu » superposé sur l'image + sceau de cinabre fixe, comme un carnet de voyage
Conserve : catégorie du sujet, relations spatiales, identité des personnages (sexe/âge/apparence clé). Remplace : les matières réalistes par des traits d'encre, la lumière et les ombres par des lavis et des blancs, les couleurs réalistes par des couleurs locales traditionnelles chinoises.
Quand déclencher
L'utilisateur télécharge ou cite une photo en exprimant une intention comme « encre de Chine / peinture chinoise / lavis / style sumi-e / carnet de voyage / ink wash / shuimo / sumi-e ». Cette compétence ne fait que le style encre de Chine, pas d'autres styles.
Contrat d'entrée
- Obligatoire : 1 photo (chemin local, URL ou image téléchargée)
- Optionnel : lieu (ex : « rue de Chengdu ») – utilisé pour l'étiquette de voyage ; par défaut, seulement la description de la scène ou « Notes de voyage »
Règles de style principales (6 règles inflexibles)
🎨 1. Priorité absolue à l'encre
Le noir et blanc à l'encre est le protagoniste, la couleur est un simple ornement. Trop de couleur ou des couleurs trop vives ruinent l'effet encre (leçon du demo-016). Donc :
- Proportion de couleur 20 % : uniquement au centre visuel, environ 20 % de l'image
- Noir et blanc + couleur directe : tonalité noir et blanc + un point de couleur direct (pas de mélange multiple, pas de dégradé, pas de grande zone de lavis)
- Retenue : mieux vaut moins de couleur que trop ; les couleurs doivent être juste suggérées, comme dans la peinture lettrée traditionnelle « chérir la couleur comme l'or »
- Priorité à l'encre : les cinq couches, les blancs et les traits doivent dominer la présence des couleurs
🎨 2. Cinq couches d'encre + blancs
- Les cinq couches d'encre doivent être distinctes : brûlée / foncée / lourde / claire / légère, pas de gris uniforme
- Blancs ≥ 50 % : la surface blanche totale de l'image ≥ 50 %
- 🚨 Règle cruciale sur la taille du sujet : le personnage/le sujet doit garder une taille normale (proche de celle de l'image originale), interdiction de réduire le sujet pour augmenter les blancs. Les blancs sont « le vide dans le fond et les bords », pas « la petitesse du sujet ». Le personnage doit être grand, complet, et occuper confortablement la position principale de l'image
- Économie d'encre : une seule zone d'encre concentrée sur toute l'image (sur le sujet), la zone dense doit être petite
- Contraste densité/vide : sujet pleinement représenté, fond aéré ; le vide est dans le fond, pas dans le sujet
🚨 3. Verrouillage de l'identité des personnages (leçon sur les dérives de genre)
- Interdiction absolue des termes génériques :
a person/a figure/someone/a lone traveler/a small figure - Doit être explicitement écrit : sexe + tranche d'âge + couleur et coiffure + vêtements + accessoires + posture
- Style libre : lignes fluides des vêtements, visage en blanc ou esquissé en quelques traits
- Interdiction des verbes comme drip/melt/flow (transformeraient le personnage en une coulure liquide)
✍️ 4. Trois éléments de la peinture libre (Xieyi)
- L'intention avant le trait : les objets ne sont qu'à 70 % complets, la forme s'estompe avant d'être achevée
- Coup de pinceau calligraphique : pression, arrêt, volée (fei bai), pinceau sec
- Hasard de l'encre : lavis humide, encre brisée, encre versée
- Simplifier en éliminant : on supprime les détails du fond (étagères, véhicules, enseignes, paniers, personnes superflues), le sujet lui-même doit rester complet et de taille normale – on ne supprime que l'environnement, pas le sujet
🎨 5. Répartition automatique des touches de couleur (20 %)
- Qui est le centre visuel ? : le sujet le plus grand / le plus lumineux / le plus en avant / le plus distinctif de la composition
- Quelle couleur utiliser ? : teinte naturelle du sujet → couleur traditionnelle chinoise (vermillon / carmin / indigo / vert minéral / jaune rotin / ocre brun)
- Proportion 20 % : uniquement sur le centre visuel, environ 20 % de l'image
- Le reste 100 % noir et blanc à l'encre
📝 6. Règle inflexible de l'étiquette de voyage (version finale v16)
Chaque image finale doit porter une étiquette de voyage. Forme = style classique d'inscription (tiku) : caractères à l'encre + sceau de cinabre directement superposés sur l'image, sans aucune « carte / fond / cadre » (le format carte a été jugé dégradant pour l'esthétique de l'encre par les utilisateurs).
- Contenu de l'étiquette : description de la scène + lieu (ex : « étal de melons en été · rue de Chengdu » ; si le lieu est absent, seulement la description de la scène)
- Méthode de superposition : interdiction de faire générer le texte directement par le modèle image-à-image (produit des caractères illisibles) ; doit utiliser
scripts/tag.py(version v6) pour superposer après génération - Style modélisé (apparence uniforme, ne change pas selon l'image) :
- Position : verticale en haut à droite (version v17 révisée) – position classique des inscriptions traditionnelles
- Texte principal : police Songti (Song Dynasty, horizontal fin / vertical épais), couleur encre foncée (#1E1E1E) opaque, chaque caractère en colonne de haut en bas
- Halo beige : chaque caractère a un contour beige (#F5F0E6) semi-transparent de 4 px (alpha 175), pour rester lisible même sur fond d'encre foncé
- Sceau de cinabre = véritable sceau généré par IA : vermillon rouge, sceau gravé, texte blanc vertical, coups de couteau, taches d'encre, bords irréguliers. Généré une fois par un modèle IA image-à-image + détouré avec
scripts/seal-bake.pyen fond transparent, stocké comme asset fixe dansassets/seal-la.png, collé sur chaque image (les polices PIL ne peuvent pas reproduire le rendu d'un véritable sceau ; un asset IA est nécessaire). Toutes les images utilisent le même asset de sceau, ne pas modifier. Le sceau est placé juste en dessous de la colonne de texte (aligné horizontalement au centre) - Forme globale : caractères à l'encre + sceau rouge intégrés dans l'image, sans casser l'effet du pinceau
- Ordre des étapes : génération par le modèle image-à-image → ajout de l'étiquette (tag.py v7) → montage comparatif (image finale avec étiquette en bas)
Flux de travail
Étape 1 — Analyse de l'entrée
Vérifier que l'image est accessible ; demander/enregistrer le lieu (si l'utilisateur ne le mentionne pas, ne pas écrire).
Étape 2 — Compréhension de l'image (incluant le schéma de couleurs + décision de l'étiquette)
Lire l'image, extraire (obligatoire) :
- Identité du personnage : sexe + tranche d'âge + couleur et coiffure + vêtements + accessoires + posture (à inclure dans le prompt, pas de termes génériques)
- Sujet : objet principal / scène
- 🎨 Détermination du centre visuel
{focus}: qu'est-ce qui attire le regard ? - 🎨 Schéma de couleurs
{color_scheme}: teinte naturelle du centre visuel → couleur traditionnelle chinoise - 📝 Texte de l'étiquette
{tag_text}: description de la scène (3–8 caractères) + lieu (optionnel), ex : « sourire sous la tonnelle de melons · vieux marché » - Composition / lumière / ambiance
Étape 3 — Construction du prompt
Lire le modèle styles/ink-wash.md, remplir les variables.
Étape 4 — Appel à la capacité image-à-image de la plateforme hôte
mode : image-to-image (plateforme hôte, suit l'image originale)
input_image : image originale
prompt : prompt complet (incluant LOCKED APPEARANCE + COLOR ACCENT 20% + cinq couches d'encre + blancs ≥50% + règle taille du sujet + XIEYI)
fidelity : medium
aspect : suit l'image originale
⚠️ Doit explicitement passer output_dir vers <workspace>/outputs/photo-restyle/<YYYYMMDD-HHMM>/ ; ne pas utiliser le répertoire par défaut.
Étape 5 — Livraison (d'abord ajouter l'étiquette, puis assembler)
scripts/tag.pysuperpose l'étiquette de voyage sur l'image à l'encre →<nom_image_originale>-inkwash-tagged.pngscripts/compare.pyassemble un montage vertical : image originale en haut / image finale avec étiquette en bas (largeur par défaut 1600, pour garantir la lisibilité de l'étiquette) →compare-<nom_image_originale>-inkwash.png- Sortie principale = montage vertical (image finale avec étiquette en bas) ; l'image étiquetée seule et l'image pure à l'encre ne sont que des pièces jointes
- Mentionner le nom du style « carnet de voyage à l'encre de Chine »
Contraintes strictes (non contournables)
- ❌ Interdiction de sortie purement noir et blanc – la couleur est obligatoire (environ 20 %)
- ❌ Interdiction de couleur > 20 % (couleur trop présente = sortie erronée)
- ❌ Interdiction de couleur dans le fond / les bords (seulement sur le centre visuel)
- ❌ Interdiction des couleurs modernes saturées / violet / fluo / dégradé arc-en-ciel (seulement des couleurs traditionnelles chinoises, en touches directes)
- ❌ Interdiction de faire générer le texte de l'étiquette par le modèle image-à-image (produit du charabia) – doit être superposé avec
scripts/tag.py - ❌ Avec personnage, interdiction des termes génériques ; le sexe / l'âge / l'apparence clé doivent être verrouillés
- ❌ Interdiction de réduire le sujet pour augmenter les blancs – le sujet garde sa taille normale
- ✅ Mentionner le nom du style « carnet de voyage à l'encre de Chine »
- ✅ La sortie principale doit être un montage vertical (image originale en haut / image finale avec étiquette en bas) ; l'image étiquetée seule et l'image pure à l'encre ne sont que des pièces jointes
- ✅ Les sorties sont placées dans un répertoire visible (ex :
<workspace>/outputs/photo-restyle/), pas dans un répertoire caché de la plateforme
Gestion des erreurs
| Situation | Action |
|---|---|
| Pas d'image disponible | Demander à l'utilisateur de télécharger une photo |
| Sortie purement noir et blanc / couleur trop pâle | Vérifier le bloc COLOR ACCENT, insister sur « couleur REQUISE sur {focus}, environ 20% » |
| Couleur débordante / trop présente | Insister sur « couleur seulement sur {focus}, environ 20% de l'image, restez sobre », ou réduire la description de {color_scheme} |
| Couleur trop vive / moderne | N'écrire que les noms des couleurs traditionnelles, insister sur la touche semi-transparente directe |
| Dérive du sexe / âge du personnage | Compléter LOCKED APPEARANCE et relancer |
| Sujet réduit / blancs mangent le sujet | Insister sur SUBJECT SCALE : personnage grand, vide seulement dans le fond |
| Étiquette illisible / absente | Utiliser scripts/tag.py pour re-superposer ; ne pas relancer le modèle image-à-image |
| Échec du montage comparatif / étiquette illisible dans le montage | Vérifier scripts/compare.py (largeur par défaut 1600), ou livrer les deux images séparément |
Emplacement des sorties
<workspace>/outputs/photo-restyle/<YYYYMMDD-HHMM>/
├── <nom_image_originale>-inkwash.png # Pièce jointe : image à l'encre (sans étiquette)
├── <nom_image_originale>-inkwash-tagged.png # Pièce jointe : image finale avec étiquette de voyage
└── compare-<nom_image_originale>-inkwash.png # Sortie principale : montage vertical (original en haut / image étiquetée en bas)
Structure du répertoire de la compétence
<répertoire_skills_plateforme>/ink-wash-restyle/ (exemple avec WorkBuddy : ~/.workbuddy/skills/ink-wash-restyle/)
├── SKILL.md # Ce fichier (règles d'entrée)
├── styles/ink-wash.md # Modèle de prompt (inclut LOCKED APPEARANCE / COLOR ACCENT / SUBJECT SCALE / XIEYI / mots négatifs)
├── scripts/
│ ├── tag.py # Superposition de l'étiquette (v6 : caractères Songti + halo + collage de l'asset de sceau)
│ ├── compare.py # Montage vertical (largeur par défaut 1600)
│ ├── seal-bake.py # Outil de détourage du sceau (asset généré par IA → fond transparent)
│ └── prototype_seal.py # Outil de comparaison de styles de sceau (historique)
├── assets/
│ └── seal-la.png # Asset fixe du sceau de cinabre (fond transparent, généré par IA)
└── examples/README.md # Documentation des exemples
Historique des versions
- v1–v5 : approche purement noir et blanc
- v6 (annulé) : carmin fixe sur le visage
- v7 : montage comparatif par défaut
- v8 : fond noir et blanc + touches de couleur (centre visuel, proportion automatique 15–35%)
- v9 : couleur compressée à ≤15% + règle inflexible de l'étiquette de voyage
- v9.1 : sortie principale = montage vertical obligatoire
- v10 : étiquette sur fond « carte blanc cassé » (finalement rejeté)
- v11 : couleur 20% ; sceau fixé ; étiquette « ficelle de papier de riz » (finalement rejeté)
- v12 : étiquette sans carte (pure inscription) + blancs 55%
- v13 : ajout de la règle sur la taille du sujet (blancs ≠ réduire le sujet), blancs ramenés à 50%
- v14 : sceau vertical + police Songti (solution typographique, finalement rejeté)
- v15 : compare width par défaut 1600 (étiquette encore lisible après redimensionnement)
- v16 (version stable actuelle) : sceau changé pour un véritable sceau de gravure généré par IA (
assets/seal-la.png), tag.py v6 en mode collage d'asset ; toutes les règles sont stabilisées comme dans ce fichier - v17 : l'utilisateur demande « tout garder, mais mettre l'étiquette et l'inscription en haut à droite en vertical » → tag.py v7 : position passe de bas gauche à haut droite, texte principal vertical (haut→bas), sceau collé juste en dessous de la colonne (centré horizontalement)
- v17 correction des traits (styles/ink-wash.md mis à jour) : restauration du trait libre à l'encre type « petite ville aux tuiles rouges / banquet d'automne aux crabes » — ① rajout du bloc CLEANLINESS v19 (propre, net, distinct, pas sale) ② éléments XIEYI contextualisés : fond (montagnes lointaines/ciel/grandes zones) avec lavis humide (wet-on-wet ink wash, encre qui pénètre le papier), premier plan (feuilles/tuiles/détails) avec pinceau sec volant (fei bai). Vérification : demo-058 Lanzarote, demo-059 village blanc tour ocre produisent tous deux le style « tuiles rouges » de manière stable