CommunityImagengithub.com

Ewen2015/collage

Convierte un tema, un resumen o un pasaje de texto en una obra de collage terminada. Úsalo cuando el usuario solicite arte de collage, un póster collage, una composición de papel recortado, estilo mixto / papier collé / fotomontaje / décollage, o quiera imágenes visuales derivadas de un texto.

¿Qué es collage?

Esta habilidad permite a un agente de IA transformar cualquier texto o tema en una obra de collage artística completa, siguiendo un flujo de trabajo de extremo a extremo: lectura, extracción conceptual, búsqueda de imágenes, composición, renderizado, verificación y explicación. Está diseñada para agentes como Claude Code, Cursor o Codex que operan en entornos de línea de comandos. El agente analiza el texto para identificar una tensión o movimiento subyacente, formula una oración de emparejamiento que sintetiza el argumento visual y extrae de 2 a 4 motivos visuales concretos. Luego busca imágenes de dominio público en Wikimedia Commons, recorta las imágenes según su contenido visible (no como rectángulos enteros) usando un pequeño "bisturí digital" basado en Pillow y NumPy, y las compone en un póster de 1200×1500 píxeles aplicando efectos como fibra de papel, semitonos, bordes rasgados y sombras. El resultado final incluye un archivo PNG atribuible con las licencias de las imágenes fuente y una breve explicación de las decisiones artísticas. La habilidad funciona sin conexión a internet después de la instalación inicial y es determinista: misma receta y misma semilla producen la misma imagen.

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

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace collage?

Se te da un tema o un cuerpo de texto. Tu trabajo es producir una obra de collage, no una descripción de una. Trabaja de principio a fin: lee → extrae → encuentra imágenes → compón → renderiza → verifica → explica.

Esta habilidad es una carpeta, no un solo archivo

Una instalación solo está completa si SKILL.md, references/, scripts/, requirements.txt, install.sh, install.ps1 y scripts/check_setup.py están todos presentes en el mismo directorio. Si falta alguno, reinstala el paquete completo en lugar de copiar SKILL.md por sí solo.

Paso 0 — Verifica la instalación (haz esto una vez)

python3 scripts/check_setup.py

Esto verifica la versión de Python, cada archivo incluido, Pillow, NumPy, la resolución de fuentes, una prueba de humo del renderizador y una prueba de humo de recorte de contenido. Si falta algo:

bash install.sh          # macOS / Linux: instala requirements.txt, luego vuelve a ejecutar la verificación
# Windows: powershell -ExecutionPolicy Bypass -File install.ps1

Los instaladores necesitan conexión de red solo para los paquetes de Python; cualquier otra parte de la habilidad funciona sin conexión.

La idea rectora proviene del material de referencia en references/: el collage es un ensamblaje de materiales que ya tienen una historia (Rise Art, Artsy), y su lógica visual es 断裂 / 重组 / 融合 — fractura, reensamblaje, fusión (UISDC). Por lo tanto, el resultado final debe parecer papel recortado que fue pegado y reescaneado, y debe transmitir una idea formada al poner juntas dos cosas diferentes.

No le pidas al usuario que tome decisiones artísticas

Infiera todo lo que se pueda inferir: estrategia, paleta, formato, titular, motivos. Solo pregunta si el resumen es una sola palabra ambigua sin contexto, o si los propios activos del usuario son claramente necesarios. Por defecto, usa un póster de 1200×1500, una de las seis estrategias a continuación y obtención autónoma de imágenes.

Paso 1 — Lee y extrae (este es el paso creativo; lo haces tú)

Lee el tema o pasaje del usuario y escribe un pequeño JSON de concepto. No te limites a enumerar los sustantivos del texto. Haz lo siguiente:

  1. Identifica la tensión o movimiento en el texto (qué cambia, qué se opone, qué regresa, qué se pierde). Un collage necesita dos cosas diferentes.
  2. Escribe una oración de emparejamiento: "X se encuentra con Y, lo que sugiere Z." Este es el argumento de la obra. Si no puedes escribirla, no has entendido el texto.
  3. Extrae de 2 a 4 motivos visuales que puedan transmitir ese argumento. Para cada uno, escribe una consulta de búsqueda de imágenes concreta (el inglés funciona mejor en Commons) y un por qué explicando lo que aporta. Prefiere objetos y texturas fotografiables sobre sustantivos abstractos. "memoria" no es un motivo; "un ticket de entrada descolorido", "una ola rompiendo", "un horizonte nocturno" sí lo son.
  4. Elige una estrategia de references/movements.md que coincida con el registro emocional, y una paleta de 2 a 4 tintas.
  5. Elige un titular (una frase corta recortada de una revista, en el idioma del usuario o en inglés) y opcionalmente un subtítulo (una línea mono pequeña).

Escríbelo en <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 es uno de cubism, dada, surrealism, pop, decollage, editorial. role es hero (uno), ground o satellite. Esquema completo: references/concept-schema.md.

Cuando el usuario proporcione sus propias imágenes, omite el Paso 2 y escribe un manifiesto SOURCES.json que apunte a esos archivos, con license: "user-provided".

Paso 2 — Encuentra imágenes fuente de forma autónoma

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

Esto busca en Wikimedia Commons, conserva solo resultados con licencia CC BY / BY-SA / CC0 / dominio público, omite archivos con advertencias de derechos de imagen personal, descarga miniaturas y escribe <job>/assets/SOURCES.json con el autor, la licencia y la página de origen de cada imagen. No omitas este manifiesto — la obra terminada debe ser atribuible. Usa --query-only "..." para probar un término de búsqueda cuando un motivo devuelva malos resultados, luego edita el concepto y vuelve a ejecutar.

Reglas para buenas consultas: sustantivos concretos, sin adjetivos estéticos ("hermoso", "vintage"), de 2 a 4 palabras, evita consultas que devuelvan personas. Si una imagen descargada resulta ser un retrato o un diagrama, reemplázala; verifica el resultado renderizado en el Paso 5 en lugar de confiar en el nombre del archivo.

Si el entorno no tiene red, indícalo y continúa con las fuentes de papel procesal (photo, newsprint, grid, wood, halftone), que no necesitan descargas. El renderizador se degrada correctamente cuando falta una ruta de activo.

Paso 3 — Recorta las imágenes según su contenido visible

Esto no es opcional. Un collage terminado no debe ser una pila de fotografías rectangulares enteras con bordes rasgados decorativos. Mira cada imagen fuente y recorta la cosa que transmite significado: una silueta, una mano, un teclado, una boca, una tabla de puente, una diagonal oscura, un campo azul, una fila de asientos, una pizarra, un paso a través de la hierba. Recombina esos fragmentos con forma de imagen para que la costura se convierta en un argumento. La guía para principiantes de Lydia Rink refuerza la versión física de esto: un bisturí/cúter es para cortar con precisión alrededor de elementos; organiza sin apretar antes de pegar; deja espacio negativo; varía la escala; usa capas para crear profundidad.

scripts/visual_cutout.py es un bisturí digital deliberadamente pequeño. Usa solo Pillow y NumPy. El modo principal es shape: observa la fotografía fuente y describe el objeto visible o la región estructural con un polígono normalizado. Un segundo modo silhouette elimina un borde/fondo plano mediante distancia de color. No hay dependencia pesada de segmentación de imágenes. El compilador también escribe cuts/contact-sheet.jpg; inspecciónalo antes de componer y ajusta el polígono si el recorte no captura el sujeto.

El compilador ejecuta los recortes y vincula los PNG transparentes resultantes a la receta con 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

Describe los recortes en el concepto para cada motivo (cut) o en un mapa cuts indexado por id de motivo. Un motivo puede proporcionar una instrucción o una lista de instrucciones, lo que produce varios fragmentos a partir de una fotografía:

"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"}
]

Usa shape para el contorno semántico que puedas ver en la fotografía; las coordenadas están normalizadas x,y;x,y;.... Usa silhouette solo cuando el objeto se encuentre sobre un fondo simple parecido al papel. Mantén uno o dos recortes geométricos/rasgados de papel como contrapunto, pero las fotografías encontradas deben recortarse primero por contenido. Consulta references/composition.md para el método de recorte y references/materials.md para las fuentes y máscaras alpha.

Paso 4 — Renderiza

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

El renderizador aplica fibra de papel, tramado de semitonos, bordes rasgados, registro de impresión, sombras paralelas, cinta, marcas de lápiz, grano y un lavado cálido unificador. Es determinista: la misma receta más la misma semilla da la misma imagen. Renderiza dos o tres semillas y elige la mejor: los bordes rasgados y los campos de faceta varían.

Paso 5 — Verifica, luego explica

Siempre mira la imagen que produjiste (ábrela o genera una hoja de contactos) antes de entregarla. Verifica los anti-patrones en references/composition.md: demasiados colores, sombra en cada capa, todo a 0°, bordes completamente rasgados, texto más pequeño que los recortes, y especialmente una fotografía que aún se lea como una ventana rectangular completa en lugar de una forma recortada de su propio contenido. Si el corte semántico no es legible en tamaño de miniatura, vuelve al Paso 3. Si falla, ajusta la receta o la estrategia y vuelve a renderizar.

Luego entrega el PNG más una breve explicación de la oración de emparejamiento, la estrategia y por qué se eligieron esos motivos. Incluye las líneas de crédito de SOURCES.json; reproduce los términos de la licencia cuando sea necesario (CC BY-SA puede requerir que la obra combinada se comparta de la misma manera). Indica al usuario que consulte recipe-rationale.md para el registro completo de decisiones.

Referencia rápida

QuieresComando
Verificar la instalaciónpython3 scripts/check_setup.py
Instalar dependencias de Pythonbash install.sh
Ver todos los estilos integradospython3 scripts/collage.py --list
Renderizar un preajustepython3 scripts/collage.py --preset dada-montage --out out.png
Guardar un preajuste como receta editablepython3 scripts/collage.py --preset cubist-grid --out x.png --dump x.json
Escribir una receta a manopython3 scripts/collage.py --recipe x.json --out x.png
Recortar un contorno observado a manopython3 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
Eliminar un fondo simplepython3 scripts/visual_cutout.py --input object.jpg --out cut.png --mode silhouette
Probar una búsqueda de imágenespython3 scripts/source_assets.py --query-only "moon crater"
Probar un concepto sin conexiónpython3 scripts/source_assets.py --concept c.json --out-dir a --offline

Archivos en esta habilidad

requirements.txt declara Pillow y NumPy. install.sh (macOS/Linux) e install.ps1 (Windows) los instalan y ejecutan scripts/check_setup.py. scripts/check_setup.py verifica cada archivo incluido, la versión de Python, la resolución de fuentes, una prueba de humo del renderizador y una prueba de humo de recorte. scripts/collage.py es el renderizador (Pillow + NumPy, sin red). scripts/visual_cutout.py recorta polígonos observados a mano y siluetas de fondo simple (Pillow + NumPy, sin red). scripts/source_assets.py es el buscador/descargador de Commons (solo stdlib). scripts/theme_to_recipe.py compila un concepto en una receta y ejecuta los comandos de recorte de contenido ligero. references/movements.md es el mapa de decisión histórico-artístico con fuentes. references/materials.md documenta los tipos de papel, fuentes, bordes y mezclas. references/composition.md documenta los sistemas de diseño y los anti-patrones. references/prompts.md proporciona patrones de prompt para cuando un modelo de texto a imagen es más adecuado que el renderizador. references/concept-schema.md es el contrato JSON del concepto. assets/ es el lugar opcional para las imágenes fuente proporcionadas por el usuario.

Un ejemplo histórico trabajado (tema → concepto → activos obtenidos → receta → justificación → PNG final) vive en el directorio examples/demo/ del repositorio; muestra el pipeline anterior de recortes rectangulares y se mantiene como ejemplo del renderizador, no como el flujo de trabajo actual de recorte por contenido. El repositorio en sí es el paquete instalable: SKILL.md, references/, scripts/, los instaladores y assets/ se encuentran en la raíz. dist/collage.skill es un ZIP de exactamente esos archivos, con las mismas rutas en la raíz del archivo.

Skills relacionados