Was macht collage?
Dir wird ein Thema oder ein Textabschnitt gegeben. Deine Aufgabe ist es, ein Collage-Kunstwerk zu erstellen, keine Beschreibung eines solchen. Arbeite von Anfang bis Ende: lesen → extrahieren → Bilder finden → komponieren → rendern → verifizieren → erklären.
Diese Fähigkeit ist ein Ordner, keine einzelne Datei
Eine Installation ist nur vollständig, wenn SKILL.md, references/, scripts/, requirements.txt, install.sh, install.ps1 und scripts/check_setup.py alle im selben Verzeichnis vorhanden sind. Wenn eine dieser Dateien fehlt, installiere das gesamte Paket neu, anstatt SKILL.md allein zu kopieren.
Schritt 0 — Installationsprüfung (einmalig durchführen)
python3 scripts/check_setup.py
Dieses Skript überprüft die Python-Version, jede gebündelte Datei, Pillow, NumPy, Schriftartenauflösung, einen Renderer-Smoke-Test und einen Content-Cut-Smoke-Test. Falls etwas fehlt:
bash install.sh # macOS / Linux: installiert requirements.txt, führt dann die Prüfung erneut aus
# Windows: powershell -ExecutionPolicy Bypass -File install.ps1
Die Installationsprogramme benötigen nur für die Python-Pakete eine Netzwerkverbindung; jeder andere Teil der Fähigkeit funktioniert offline.
Die Leitidee stammt aus dem Referenzmaterial in references/: Collage ist eine Ansammlung von Materialien, die bereits eine Geschichte haben (Rise Art, Artsy), und ihre visuelle Logik ist 断裂 / 重组 / 融合 — Bruch, Wiederzusammenfügung, Verschmelzung (UISDC). Das Ergebnis muss also wie ausgeschnittenes Papier aussehen, das geklebt und erneut gescannt wurde, und es muss eine Idee transportieren, die durch das Zusammenbringen zweier ungleicher Dinge entsteht.
Bitte den Benutzer nicht um künstlerische Entscheidungen
Leite alles ab, was abgeleitet werden kann: Strategie, Farbpalette, Format, Schlagzeile, Motive. Frage nur, wenn die Aufgabenstellung ein einzelnes mehrdeutiges Wort ohne Kontext ist oder wenn die eigenen Bilder des Benutzers eindeutig erforderlich sind. Standardmäßig ein Poster im Format 1200×1500, eine der sechs untenstehenden Strategien und eine autonome Bildersuche.
Schritt 1 — Lesen und extrahieren (dies ist der kreative Schritt; du führst ihn aus)
Lies das Thema oder den Text des Benutzers und schreibe ein kleines Konzept-JSON. Liste nicht einfach Substantive aus dem Text auf. Gehe wie folgt vor:
- Identifiziere die Spannung oder Bewegung im Text (was sich ändert, was gegensätzlich ist, was zurückkehrt, was verloren geht). Eine Collage braucht zwei ungleiche Dinge.
- Schreibe einen Paarungssatz: „X trifft auf Y, was auf Z hindeutet.“ Dies ist das Argument des Werks. Wenn du ihn nicht schreiben kannst, hast du den Text nicht verstanden.
- Extrahiere 2–4 visuelle Motive, die dieses Argument tragen können. Schreibe für jedes eine konkrete Bildersuchanfrage (Englisch funktioniert auf Commons am besten) und ein
why, das erklärt, was es beiträgt. Bevorzuge fotografierbare Objekte und Texturen gegenüber abstrakten Substantiven. „Erinnerung“ ist kein Motiv; „ein verblasster Fahrkartenabschnitt“, „eine brechende Welle“, „eine nächtliche Skyline“ sind es. - Wähle eine Strategie aus
references/movements.md, die zur emotionalen Stimmung passt, und eine Farbpalette von 2–4 Farben. - Wähle eine Schlagzeile (eine kurze, aus einer Zeitschrift ausgeschnittene Phrase, in der Sprache des Benutzers oder auf Englisch) und optional einen Vorspann (eine kleine einzeilige Zeile).
Schreibe es in <job>/concept.json:
{
"theme": "潮汐与城市",
"headline": "TIDE / CITY",
"kicker": "A NOTE ON DISTANCE",
"statement": "The returning tide meets the sleeping city, suggesting a memory that keeps coming back.",
"strategy": "surrealism",
"palette": ["#16283a", "#d94f36", "#4a86a8", "#f0c94b"],
"motifs": [
{"id": "tide", "query": "breaking ocean wave water", "role": "hero",
"why": "the returning tide, the thing that keeps coming back"},
{"id": "city", "query": "city skyline night silhouette", "role": "ground",
"why": "the sleeping city, the fixed thing"},
{"id": "moon", "query": "moon crater lunar surface", "role": "satellite",
"why": "the distant witness, one impossible object inside the arch"}
]
}
strategy ist einer von cubism, dada, surrealism, pop, decollage, editorial. role ist hero (einer), ground oder satellite. Vollständiges Schema: references/concept-schema.md.
Wenn der Benutzer eigene Bilder bereitstellt, überspringe Schritt 2 und schreibe ein SOURCES.json-Manifest, das auf diese Dateien verweist, mit license: "user-provided".
Schritt 2 — Quellbilder autonom finden
python3 scripts/source_assets.py --concept <job>/concept.json \
--out-dir <job>/assets --per-motif 1
Dieses Skript durchsucht Wikimedia Commons, behält nur CC BY / BY-SA / CC0 / Public-Domain-Ergebnisse, überspringt Dateien mit Persönlichkeitsrechtswarnungen, lädt Miniaturansichten herunter und schreibt <job>/assets/SOURCES.json mit Autor, Lizenz und Quellseite für jedes Bild. Überspringe dieses Manifest nicht – das fertige Werk muss attributierbar sein. Verwende --query-only "...", um einen Suchbegriff zu testen, wenn ein Motiv schlechte Ergebnisse liefert, bearbeite dann das Konzept und führe es erneut aus.
Regeln für gute Suchanfragen: konkrete Substantive, keine ästhetischen Adjektive („schön“, „vintage“), 2–4 Wörter, vermeide Suchanfragen, die Personen zurückgeben. Wenn sich ein heruntergeladenes Bild als Porträt oder Diagramm entpuppt, ersetze es – überprüfe das gerenderte Ergebnis in Schritt 5 anstatt dem Dateinamen zu vertrauen.
Wenn die Umgebung kein Netzwerk hat, teile dies mit und fahre mit den prozeduralen Papierquellen (photo, newsprint, grid, wood, halftone) fort, die keine Downloads benötigen. Der Renderer degradiert anmutig, wenn ein Asset-Pfad fehlt.
Schritt 3 — Schneide die Bilder entsprechend ihrem sichtbaren Inhalt zu
Dies ist nicht optional. Eine fertige Collage darf kein Stapel ganzer rechteckiger Fotografien mit dekorativen ausgefransten Kanten sein. Betrachte jedes Quellbild und schneide das aus, was Bedeutung trägt: eine Silhouette, eine Hand, eine Tastatur, ein Mund, eine Brückenplanke, eine dunkle Diagonale, ein blaues Feld, eine Sitzreihe, eine Tafel, ein Durchgang durch Gras. Füge diese bildförmigen Fragmente wieder zusammen, sodass die Naht zu einem Argument wird. Lydia Rinks Anfängerleitfaden unterstreicht die physische Version davon: Ein Skalpell/Cuttermesser dient zum präzisen Ausschneiden von Elementen; lose anordnen vor dem Kleben; Negativraum lassen; Maßstab variieren; Schichten für Tiefe nutzen.
scripts/visual_cutout.py ist ein bewusst kleines digitales Skalpell. Es verwendet nur Pillow und NumPy. Der Hauptmodus ist shape: Betrachte das Quellfoto und beschreibe das sichtbare Objekt oder den strukturellen Bereich mit einem normalisierten Polygon. Ein zweiter Modus silhouette entfernt einen einfarbigen Rand/Hintergrund durch Farbdistanz. Es gibt keine schwergewichtige Bildsegmentierungs-Abhängigkeit. Der Compiler schreibt auch cuts/contact-sheet.jpg; überprüfe es vor dem Komponieren und passe das Polygon an, wenn der Ausschnitt das Motiv verfehlt.
Der Compiler führt die Schnitte aus und bindet die resultierenden transparenten PNGs mit mask: "alpha" an das Rezept:
python3 scripts/theme_to_recipe.py --concept <job>/concept.json \
--assets <job>/assets --recipe <job>/recipe.json \
--cutouts <job>/cuts --seed 11 --format poster
Beschreibe Schnitte im Konzept für jedes Motiv (cut) oder in einer cuts-Map, die nach Motiv-ID indiziert ist. Ein Motiv kann eine Anweisung oder eine Liste von Anweisungen liefern, was mehrere Fragmente aus einem Foto erzeugt:
"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"}
]
Verwende shape für die semantische Kontur, die du im Foto siehst; Koordinaten sind normalisiert x,y;x,y;.... Verwende silhouette nur, wenn das Objekt auf einem einfarbigen, papierähnlichen Hintergrund sitzt. Behalte ein oder zwei geometrische/gerissene Papierschnipsel als Kontrapunkt, aber die gefundenen Fotos müssen zuerst nach Inhalt geschnitten werden. Siehe references/composition.md für die Schnittmethode und references/materials.md für alpha-Quellen und Masken.
Schritt 4 — Rendern
python3 scripts/collage.py --recipe <job>/recipe.json --out <job>/final.png
Der Renderer wendet Papierfaser, Rasterung, ausgefranste Kanten, Druckregistrierung, Schlagschatten, Klebeband, Bleistiftmarkierungen, Korn und eine vereinheitlichende warme Waschung an. Er ist deterministisch: Gleiches Rezept plus gleicher Seed ergibt das gleiche Bild. Rendere zwei oder drei Seeds und wähle das beste aus – ausgefranste Kanten und Facettenfelder variieren.
Schritt 5 — Verifizieren, dann erklären
Betrachte immer das Bild, das du erstellt hast (öffne es oder generiere ein Kontaktblatt), bevor du es auslieferst. Überprüfe die Anti-Patterns in references/composition.md: zu viele Farben, Schatten auf jeder Ebene, alles bei 0°, nur ausgefranste Kanten, Schrift kleiner als die Schnipsel, und insbesondere ein Foto, das immer noch als ganzes rechteckiges Fenster statt als eine aus seinem eigenen Inhalt geschnittene Form lesbar ist. Wenn der semantische Schnitt in Miniaturansichtsgröße nicht lesbar ist, kehre zu Schritt 3 zurück. Wenn dies fehlschlägt, passe das Rezept oder die Strategie an und rendere neu.
Liefere dann das PNG zusammen mit einer kurzen Erklärung des Paarungssatzes, der Strategie und warum diese Motive gewählt wurden. Füge die Zeilenangaben aus SOURCES.json bei; gib die Lizenzbedingungen wieder, wo erforderlich (CC BY-SA kann erfordern, dass das kombinierte Werk unter gleichen Bedingungen geteilt wird). Verweise den Benutzer auf recipe-rationale.md für das vollständige Entscheidungsprotokoll.
Kurzreferenz
| Ziel | Befehl |
|---|---|
| Installation überprüfen | python3 scripts/check_setup.py |
| Python-Abhängigkeiten installieren | bash install.sh |
| Alle integrierten Stile anzeigen | python3 scripts/collage.py --list |
| Voreinstellung rendern | python3 scripts/collage.py --preset dada-montage --out out.png |
| Voreinstellung als bearbeitbares Rezept speichern | python3 scripts/collage.py --preset cubist-grid --out x.png --dump x.json |
| Rezept von Hand schreiben | python3 scripts/collage.py --recipe x.json --out x.png |
| Eine manuell beobachtete Kontur ausschneiden | python3 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 |
| Einfarbigen Hintergrund entfernen | python3 scripts/visual_cutout.py --input object.jpg --out cut.png --mode silhouette |
| Bildersuche testen | python3 scripts/source_assets.py --query-only "moon crater" |
| Konzept offline testen | python3 scripts/source_assets.py --concept c.json --out-dir a --offline |
Dateien in dieser Fähigkeit
requirements.txt deklariert Pillow und NumPy. install.sh (macOS/Linux) und install.ps1 (Windows) installieren diese und führen scripts/check_setup.py aus. scripts/check_setup.py überprüft jede gebündelte Datei, die Python-Version, Schriftartenauflösung, einen Renderer-Smoke-Test und einen Cutout-Smoke-Test. scripts/collage.py ist der Renderer (Pillow + NumPy, kein Netzwerk). scripts/visual_cutout.py schneidet manuell beobachtete Polygone und einfache, einfarbige Hintergrundsilhouetten aus (Pillow + NumPy, kein Netzwerk). scripts/source_assets.py ist die Commons-Suche/Download (nur stdlib). scripts/theme_to_recipe.py kompiliert ein Konzept in ein Rezept und führt die leichtgewichtigen Inhaltsausschnitt-Befehle aus. references/movements.md ist die kunsthistorische Entscheidungskarte mit Quellen. references/materials.md dokumentiert Papiersorten, Quellen, Kanten und Mischungen. references/composition.md dokumentiert Layoutsysteme und Anti-Patterns. references/prompts.md gibt Eingabeaufforderungsmuster für Fälle, in denen ein Text-zu-Bild-Modell besser geeignet ist als der Renderer. references/concept-schema.md ist der Konzept-JSON-Vertrag. assets/ ist der optionale Ort für vom Benutzer bereitgestellte Quellbilder.
Ein historisches vollständiges Beispiel (Thema → Konzept → bezogene Assets → Rezept → Begründung → finales PNG) befindet sich im examples/demo/-Verzeichnis des Repositorys; es zeigt die frühere Pipeline mit rechteckigen Schnipseln und wird als Renderer-Beispiel aufbewahrt, nicht als aktueller Workflow mit Inhaltsausschnitten. Das Repository selbst ist das installierbare Paket: SKILL.md, references/, scripts/, die Installationsprogramme und assets/ befinden sich im Stammverzeichnis. dist/collage.skill ist ein ZIP-Archiv genau dieser Dateien mit denselben Pfaden im Archivstamm.