CommunityImagegithub.com

Collage

Transformez un thème, un briefing ou un passage de texte en une œuvre d'art collage finie. Utilisez cette compétence lorsque l'utilisateur demande un collage artistique, une affiche collage, une composition en papier découpé, un style médias mixtes / papier collé / photomontage / décollage, ou souhaite des images visuelles dérivées d'un texte.

Qu'est-ce que Collage ?

Cette compétence transforme un thème, un briefing ou un extrait de texte en une œuvre d'art collage entièrement rendue, et non en une simple description. Elle guide l'utilisateur de bout en bout : lecture du texte, extraction des concepts clés, recherche d'images sources, découpage sémantique des motifs, composition et rendu final. L'approche se distingue par son exigence de découpage basé sur le contenu : chaque image doit être taillée selon la forme de l'objet qu'elle représente, et non laissée rectangulaire. La compétence prend en charge six stratégies artistiques historiques (cubisme, dada, surréalisme, pop art, décollage, éditorial) et utilise des scripts Python déterministes pour la recherche d'images (Wikimedia Commons), le découpage et le rendu, garantissant une reproductibilité et une attribution correcte des licences. Elle fonctionne hors ligne pour les assets procéduraux et nécessite Python, Pillow et NumPy.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Ewen2015/collage/tree/HEAD

Installed? Explore more Image skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Collage ?

Vous recevez un sujet ou un corps de texte. Votre travail consiste à produire une œuvre d'art collage, et non une description de celle-ci. Travaillez de bout en bout : lire → extraire → trouver des images → composer → rendre → vérifier → expliquer.

Cette compétence est un dossier, pas un seul fichier

Une installation n'est complète que si SKILL.md, references/, scripts/, requirements.txt, install.sh, install.ps1 et scripts/check_setup.py sont tous présents dans le même répertoire. Si l'un d'eux manque, réinstallez l'ensemble du paquet au lieu de copier SKILL.md seul.

Étape 0 — Vérifier l'installation (à faire une fois)

python3 scripts/check_setup.py

Cela vérifie la version de Python, chaque fichier fourni, Pillow, NumPy, la résolution des polices, un test de rendu et un test de découpage de contenu. Si quelque chose manque :

bash install.sh          # macOS / Linux : installe requirements.txt, puis relance la vérification
# Windows : powershell -ExecutionPolicy Bypass -File install.ps1

Les installateurs ont besoin d'une connexion réseau uniquement pour les paquets Python ; toutes les autres parties de la compétence fonctionnent hors ligne.

L'idée directrice vient du matériel de référence dans references/ : le collage est un assemblage de matériaux qui ont déjà une histoire (Rise Art, Artsy), et sa logique visuelle est 断裂 / 重组 / 融合 — fracture, réassemblage, fusion (UISDC). Ainsi, le livrable doit ressembler à du papier découpé collé puis re-scanné, et doit porter une idée formée par la réunion de deux choses dissemblables.

Ne demandez pas à l'utilisateur de prendre des décisions artistiques

Déduisez tout ce qui peut l'être : stratégie, palette, format, titre, motifs. Ne demandez que si le briefing est un seul mot ambigu sans contexte, ou si les propres assets de l'utilisateur sont clairement nécessaires. Par défaut, utilisez une affiche de 1200×1500 pixels, l'une des six stratégies ci-dessous, et une recherche d'images autonome.

Étape 1 — Lire et extraire (c'est l'étape créative ; c'est vous qui la faites)

Lisez le thème ou le passage de l'utilisateur et écrivez un petit fichier JSON de concept. Ne vous contentez pas de lister les noms du texte. Faites ceci :

  1. Identifiez la tension ou le mouvement dans le texte (ce qui change, ce qui s'oppose, ce qui revient, ce qui est perdu). Un collage a besoin de deux choses dissemblables.
  2. Écrivez une phrase d'appariement : "X rencontre Y, ce qui suggère Z." C'est l'argument de l'œuvre. Si vous ne pouvez pas l'écrire, vous n'avez pas compris le texte.
  3. Extrayez 2 à 4 motifs visuels qui peuvent porter cet argument. Pour chacun, écrivez une requête de recherche d'image concrète (l'anglais fonctionne le mieux sur Commons) et un why expliquant ce qu'il apporte. Préférez les objets et textures photographiables aux noms abstraits. "mémoire" n'est pas un motif ; "un ticket de caisse fané", "une vague qui se brise", "une skyline nocturne" le sont.
  4. Choisissez une stratégie dans references/movements.md qui correspond au registre émotionnel, et une palette de 2 à 4 couleurs.
  5. Choisissez un titre (une courte phrase découpée dans un magazine, dans la langue de l'utilisateur ou en anglais) et éventuellement un sous-titre (une petite ligne monochrome).

Écrivez-le dans <job>/concept.json :

{
  "theme": "潮汐与城市",
  "headline": "TIDE / CITY",
  "kicker": "A NOTE ON DISTANCE",
  "statement": "La marée qui revient rencontre la ville endormie, suggérant un souvenir qui ne cesse de revenir.",
  "strategy": "surrealism",
  "palette": ["#16283a", "#d94f36", "#4a86a8", "#f0c94b"],
  "motifs": [
    {"id": "tide", "query": "breaking ocean wave water", "role": "hero",
     "why": "la marée qui revient, la chose qui ne cesse de revenir"},
    {"id": "city", "query": "city skyline night silhouette", "role": "ground",
     "why": "la ville endormie, la chose fixe"},
    {"id": "moon", "query": "moon crater lunar surface", "role": "satellite",
     "why": "le témoin lointain, un objet impossible dans l'arche"}
  ]
}

strategy est l'un de cubism, dada, surrealism, pop, decollage, editorial. role est hero (un seul), ground ou satellite. Schéma complet : references/concept-schema.md.

Lorsque l'utilisateur fournit ses propres images, sautez l'étape 2 et écrivez un manifeste SOURCES.json pointant vers ces fichiers, avec license: "user-provided".

Étape 2 — Trouver des images sources de manière autonome

python3 scripts/source_assets.py --concept <job>/concept.json \
    --out-dir <job>/assets --per-motif 1

Ceci recherche sur Wikimedia Commons, ne conserve que les résultats CC BY / BY-SA / CC0 / domaine public, ignore les fichiers avec des avertissements de droits de la personnalité, télécharge les vignettes et écrit <job>/assets/SOURCES.json avec l'auteur, la licence et la page source pour chaque image. Ne sautez pas ce manifeste — l'œuvre finie doit être attribuable. Utilisez --query-only "..." pour sonder un terme de recherche lorsqu'un motif donne de mauvais résultats, puis modifiez le concept et relancez.

Règles pour les bonnes requêtes : noms concrets, pas d'adjectifs esthétiques ("beau", "vintage"), 2 à 4 mots, évitez les requêtes qui ramènent des personnes. Si une image téléchargée s'avère être un portrait ou un diagramme, remplacez-la — vérifiez le résultat rendu à l'étape 5 plutôt que de vous fier au nom de fichier.

Si l'environnement n'a pas de réseau, dites-le et continuez avec les sources de papier procédurales (photo, newsprint, grid, wood, halftone), qui ne nécessitent aucun téléchargement. Le rendu se dégrade gracieusement lorsqu'un chemin d'asset est manquant.

Étape 3 — Découper les images selon leur contenu visible

Ce n'est pas optionnel. Un collage fini ne doit pas être un empilement de photographies rectangulaires entières avec des bords déchirés décoratifs. Regardez chaque image source et découpez la chose qui porte du sens : une silhouette, une main, un clavier, une bouche, une planche de pont, une diagonale sombre, un champ de bleu, une rangée de sièges, un tableau noir, un passage dans l'herbe. Recombinez ces fragments en forme d'image de sorte que la couture devienne un argument. Le guide pour débutants de Lydia Rink renforce la version physique : un scalpel/cutter est pour la découpe de précision autour des éléments ; disposez librement avant de coller ; laissez de l'espace négatif ; variez l'échelle ; utilisez des couches pour créer de la profondeur.

scripts/visual_cutout.py est un scalpel numérique délibérément petit. Il n'utilise que Pillow et NumPy. Le mode principal est shape : regardez la photographie source et décrivez l'objet visible ou la région structurelle avec un polygone normalisé. Un deuxième mode silhouette supprime un fond/bordure plain par distance de couleur. Il n'y a pas de dépendance lourde de segmentation d'image. Le compilateur écrit également cuts/contact-sheet.jpg ; inspectez-le avant de composer et ajustez le polygone si la découpe rate le sujet.

Le compilateur exécute les découpes et lie les PNG transparents résultants à la recette avec mask: "alpha" :

python3 scripts/theme_to_recipe.py --concept <job>/concept.json \
    --assets <job>/assets --recipe <job>/recipe.json \
    --cutouts <job>/cuts --seed 11 --format poster

Décrivez les découpes dans le concept sur chaque motif (cut) ou dans une map cuts indexée par l'id du motif. Un motif peut fournir une instruction ou une liste d'instructions, ce qui produit plusieurs fragments à partir d'une seule photographie :

"cut": [
  {"mode": "shape", "shape": "0.00,0.00;1.00,0.00;1.00,0.46;0.00,1.00"},
  {"mode": "shape", "shape": "0.00,0.79;0.34,0.60;1.00,0.73;1.00,1.00;0.00,1.00"}
]

Utilisez shape pour le contour sémantique que vous voyez dans la photographie ; les coordonnées sont normalisées x,y;x,y;.... Utilisez silhouette uniquement lorsque l'objet repose sur un fond uni de type papier. Gardez un ou deux morceaux de papier géométriques/déchirés comme contrepoint, mais les photographies trouvées doivent d'abord être découpées par contenu. Voir references/composition.md pour la méthode de découpe et references/materials.md pour les sources et masques alpha.

Étape 4 — Rendu

python3 scripts/collage.py --recipe <job>/recipe.json --out <job>/final.png

Le rendu applique la fibre de papier, le tramage tramé, les bords déchirés, le repérage d'impression, les ombres portées, le ruban adhésif, les marques de crayon, le grain et un lavis chaud unifiant. Il est déterministe : même recette plus même graine donne la même image. Rendez deux ou trois graines et choisissez la meilleure — les bords déchirés et les champs de facettes varient.

Étape 5 — Vérifier, puis expliquer

Regardez toujours l'image que vous avez produite (ouvrez-la ou générez une planche contact) avant de livrer. Vérifiez les anti-patrons dans references/composition.md : trop de couleurs, ombre sur chaque couche, tout à 0°, bords entièrement déchirés, typographie plus petite que les chutes, et surtout une photographie qui se lit encore comme une fenêtre rectangulaire entière au lieu d'une forme découpée dans son propre contenu. Si la découpe sémantique n'est pas lisible à la taille d'une vignette, revenez à l'étape 3. Si elle échoue, ajustez la recette ou la stratégie et relancez le rendu.

Livrez ensuite le PNG ainsi qu'une brève explication de la phrase d'appariement, de la stratégie et des raisons pour lesquelles ces motifs ont été choisis. Incluez les lignes de crédit de SOURCES.json ; reproduisez les termes de licence lorsque requis (CC BY-SA peut exiger que l'œuvre combinée soit partagée à l'identique). Indiquez à l'utilisateur recipe-rationale.md pour le journal des décisions complet.

Référence rapide

ActionCommande
Vérifier l'installationpython3 scripts/check_setup.py
Installer les dépendances Pythonbash install.sh
Voir tous les styles intégréspython3 scripts/collage.py --list
Rendre un préréglagepython3 scripts/collage.py --preset dada-montage --out out.png
Sauvegarder un préréglage comme recette modifiablepython3 scripts/collage.py --preset cubist-grid --out x.png --dump x.json
Écrire une recette à la mainpython3 scripts/collage.py --recipe x.json --out x.png
Découper un contour observé à la mainpython3 scripts/visual_cutout.py --input photo.jpg --out cut.png --mode shape --shape "0,.1;1,0;.9,1;0,.9" --contact-sheet sheet.jpg
Supprimer un fond unipython3 scripts/visual_cutout.py --input object.jpg --out cut.png --mode silhouette
Sonder une recherche d'imagepython3 scripts/source_assets.py --query-only "moon crater"
Tester un concept hors lignepython3 scripts/source_assets.py --concept c.json --out-dir a --offline

Fichiers dans cette compétence

requirements.txt déclare Pillow et NumPy. install.sh (macOS/Linux) et install.ps1 (Windows) les installent et exécutent scripts/check_setup.py. scripts/check_setup.py vérifie chaque fichier fourni, la version de Python, la résolution des polices, un test de rendu et un test de découpe. scripts/collage.py est le rendu (Pillow + NumPy, sans réseau). scripts/visual_cutout.py découpe des polygones observés à la main et des silhouettes simples sur fond uni (Pillow + NumPy, sans réseau). scripts/source_assets.py est le moteur de recherche/téléchargement Commons (stdlib uniquement). scripts/theme_to_recipe.py compile un concept en recette et exécute les commandes de découpe de contenu légères. references/movements.md est la carte de décision historico-artistique avec sources. references/materials.md documente les stocks de papier, sources, bords et mélanges. references/composition.md documente les systèmes de mise en page et les anti-patrons. references/prompts.md donne des modèles de prompt pour lorsqu'un modèle texte-à-image est plus adapté que le rendu. references/concept-schema.md est le contrat JSON du concept. assets/ est l'emplacement optionnel pour les images sources fournies par l'utilisateur.

Un exemple historique complet (thème → concept → assets sourcés → recette → justification → PNG final) se trouve dans le répertoire examples/demo/ du dépôt ; il montre le pipeline antérieur de chutes rectangulaires et est conservé comme exemple de rendu, et non comme le flux de travail actuel de découpe de contenu. Le dépôt lui-même est le paquet installable : SKILL.md, references/, scripts/, les installateurs et assets/ se trouvent à la racine. dist/collage.skill est un ZIP de ces fichiers exactement, avec les mêmes chemins à la racine de l'archive.

Skills associés