CommunityImagemgithub.com

Collage

Transforme um tema, resumo ou trecho de texto em uma obra de colagem finalizada.

O que é Collage?

Esta skill capacita um agente de IA a criar colagens artísticas completas usando a técnica de 'papel cortado', realizando todo o processo de forma autônoma: leitura e extração de conceitos de um texto, busca de imagens no Wikimedia Commons, corte de silhuetas precisas com base no conteúdo visível e composição final. Ela se baseia nos princípios artísticos de fratura, remontagem e fusão, exigindo que o resultado pareça realmente ter sido recortado e colado. A skill suporta geração offline usando texturas procedurais quando não há internet e oferece estratégias visuais como cubismo, dadaísmo e surrealismo, guiadas por um arquivo de conceito JSON. O resultado final é uma imagem PNG pronta para uso, acompanhada de explicações criativas e créditos de atribuição.

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

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Colagem (Collage)

Você recebe um tópico ou um corpo de texto. Seu trabalho é produzir uma obra de colagem, e não uma descrição de uma. Trabalhe de ponta a ponta: leia → extraia → encontre imagens → componha → renderize → verifique → explique.

Esta skill é uma pasta, não um arquivo único

Uma instalação só está completa se SKILL.md, references/, scripts/, requirements.txt, install.sh, install.ps1 e scripts/check_setup.py estiverem todos presentes no mesmo diretório. Se algum deles estiver faltando, reinstale o pacote inteiro em vez de copiar apenas SKILL.md.

Etapa 0 — Verifique a instalação (faça isso uma vez)

python3 scripts/check_setup.py

Isso verifica a versão do Python, todos os arquivos incluídos, Pillow, NumPy, resolução de fontes, um teste de fumaça do renderizador e um teste de fumaça do corte de conteúdo. Se algo estiver faltando:

bash install.sh          # macOS / Linux: instala requirements.txt e depois reexecuta a verificação
# Windows: powershell -ExecutionPolicy Bypass -File install.ps1

Os instaladores precisam de conexão de rede apenas para os pacotes Python; todas as outras partes da skill funcionam offline.

A ideia central vem do material de referência em references/: colagem é um conjunto de materiais que já têm uma história (Rise Art, Artsy), e sua lógica visual é 断裂 / 重组 / 融合 — fratura, remontagem, fusão (UISDC). Portanto, o resultado deve parecer papel cortado que foi colado e escaneado novamente, e deve carregar uma ideia formada pela junção de duas coisas diferentes.

Não peça ao usuário para tomar decisões artísticas

Inferir tudo o que pode ser inferido: estratégia, paleta, formato, manchete, motivos. Pergunte apenas se o resumo for uma única palavra ambígua sem contexto, ou se os próprios ativos do usuário forem claramente necessários. Use como padrão um pôster de 1200×1500, uma das seis estratégias abaixo e a busca autônoma de imagens.

Etapa 1 — Leia e extraia (este é o passo criativo; você o executa)

Leia o tema ou trecho do usuário e escreva um pequeno JSON de conceito. Não liste apenas substantivos do texto. Faça o seguinte:

  1. Identifique a tensão ou movimento no texto (o que muda, o que se opõe, o que retorna, o que se perde). Uma colagem precisa de duas coisas diferentes.
  2. Escreva uma frase de emparelhamento: "X encontra Y, o que sugere Z." Este é o argumento da obra. Se não conseguir escrevê-lo, você não entendeu o texto.
  3. Extraia 2–4 motivos visuais que possam transmitir esse argumento. Para cada um, escreva uma consulta de pesquisa de imagem concreta (o inglês funciona melhor no Commons) e um porquê explicando o que ele contribui. Prefira objetos e texturas fotografáveis a substantivos abstratos. "memória" não é um motivo; "um canhoto de bilhete desbotado", "uma onda quebrando", "um horizonte noturno" são.
  4. Escolha uma estratégia de references/movements.md que corresponda ao registro emocional, e uma paleta de 2–4 tintas.
  5. Escolha um título (uma frase curta, como cortada de uma revista, no idioma do usuário ou em inglês) e, opcionalmente, um subtítulo (uma pequena linha monoespaçada).

Escreva em <job>/concept.json:

{
  "theme": "Mareas e Cidade",
  "headline": "MARÉ / CIDADE",
  "kicker": "UMA NOTA SOBRE DISTÂNCIA",
  "statement": "A maré que retorna encontra a cidade adormecida, sugerindo uma memória que insiste em voltar.",
  "strategy": "surrealism",
  "palette": ["#16283a", "#d94f36", "#4a86a8", "#f0c94b"],
  "motifs": [
    {"id": "maré", "query": "onda do mar quebrando água", "role": "hero",
     "why": "a maré que retorna, a coisa que insiste em voltar"},
    {"id": "cidade", "query": "skyline da cidade silhueta noturna", "role": "ground",
     "why": "a cidade adormecida, a coisa fixa"},
    {"id": "lua", "query": "lua cratera superfície lunar", "role": "satellite",
     "why": "a testemunha distante, um objeto impossível dentro do arco"}
  ]
}

strategy é um de cubism, dada, surrealism, pop, decollage, editorial. role é hero (um), ground, ou satellite. Esquema completo: references/concept-schema.md.

Quando o usuário fornecer suas próprias imagens, pule a Etapa 2 e escreva um manifesto SOURCES.json apontando para esses arquivos, com license: "user-provided".

Etapa 2 — Encontre imagens de origem autonomamente

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

Isso pesquisa o Wikimedia Commons, mantém apenas resultados CC BY / BY-SA / CC0 / domínio público, ignora arquivos com avisos de direitos de personalidade, baixa miniaturas e escreve <job>/assets/SOURCES.json com autor, licença e página de origem para cada imagem. Não pule este manifesto — a obra finalizada deve ser atribuível. Use --query-only "..." para testar um termo de pesquisa quando um motivo retornar resultados ruins e, em seguida, edite o conceito e execute novamente.

Regras para boas consultas: substantivos concretos, sem adjetivos estéticos ("belo", "vintage"), 2–4 palavras, evite consultas que retornem pessoas. Se uma imagem baixada for um retrato ou diagrama, substitua-a — verifique o resultado renderizado na Etapa 5 em vez de confiar no nome do arquivo.

Se o ambiente não tiver rede, informe isso e continue com as fontes de papel processuais (photo, newsprint, grid, wood, halftone), que não precisam de baixar dados. O renderizador degrada graciosamente quando um caminho de ativo está faltando.

Etapa 3 — Corte as imagens de acordo com seu conteúdo visível

Isso não é opcional. Uma colagem finalizada não deve ser uma pilha de fotografias retangulares inteiras com bordas rasgadas decorativas. Observe cada imagem de origem e corte a coisa que carrega significado: uma silhueta, uma mão, um teclado, uma boca, uma prancha de ponte, uma diagonal escura, um campo azul, uma fileira de assentos, um quadro negro, uma passagem pela grama. Recombine esses fragmentos em forma de imagem para que a costura se torne um argumento. O guia para iniciantes de Lydia Rink reforça a versão física disso: um bisturi/estilete é para cortar com precisão ao redor de elementos; arranje solto antes de colar; deixe espaço negativo; varie a escala; use camadas para criar profundidade.

scripts/visual_cutout.py é um bisturi digital propositalmente pequeno. Ele usa apenas Pillow e NumPy. O modo principal é shape: observe a fotografia de origem e descreva o objeto visível ou a região estrutural com um polígono normalizado. Um segundo modo silhouette remove uma borda/fundo simples por distância de cor. Não há dependência pesada de segmentação de imagem. O compilador também escreve cuts/contact-sheet.jpg; inspecione-o antes de compor e ajuste o polígono se o corte perder o assunto.

O compilador executa os cortes e vincula os PNGs transparentes resultantes à receita com 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

Descreva os cortes no conceito em cada motivo (cut) ou em um mapa cuts indexado pelo id do motivo. Um motivo pode fornecer uma instrução ou uma lista de instruções, o que produz vários fragmentos de uma fotografia:

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

Use shape para o contorno semântico que você vê na fotografia; as coordenadas são normalizadas x,y;x,y;.... Use silhouette apenas quando o objeto estiver sobre um fundo simples, como papel. Mantenha um ou dois recortes de papel geométricos/rasgados como contraponto, mas as fotografias encontradas devem ser cortadas pelo conteúdo primeiro. Consulte references/composition.md para o método de corte e references/materials.md para fontes e máscaras alpha.

Etapa 4 — Renderize

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

O renderizador aplica fibra de papel, retícula de meio-tom, bordas rasgadas, registro de impressão, sombras projetadas, fita adesiva, marcas de lápis, granulação e uma lavagem quente unificadora. Ele é determinístico: a mesma receita com a mesma semente gera a mesma imagem. Renderize duas ou três sementes e escolha a melhor — bordas rasgadas e campos de faceta variam.

Etapa 5 — Verifique e depois explique

Sempre olhe para a imagem que você produziu (abra-a ou gere uma folha de contato) antes de entregar. Verifique os antipadrões em references/composition.md: muitas cores, sombra em todas as camadas, tudo a 0°, bordas todas rasgadas, tipo menor que os recortes e, especialmente, uma fotografia ainda lida como uma janela retangular inteira em vez de uma forma cortada de seu próprio conteúdo. Se o corte semântico não for legível no tamanho de miniatura, volte para a Etapa 3. Se falhar, ajuste a receita ou estratégia e renderize novamente.

Em seguida, entregue o PNG mais uma breve explicação da frase de emparelhamento, da estratégia e por que os motivos foram escolhidos. Inclua as linhas de crédito de SOURCES.json; reproduza os termos da licença quando necessário (CC BY-SA pode exigir que a obra combinada seja compartilhada pela mesma licença). Aponte o usuário para recipe-rationale.md para o registro completo de decisões.

Referência rápida

DesejoComando
Verificar a instalaçãopython3 scripts/check_setup.py
Instalar dependências Pythonbash install.sh
Ver todos os estilos integradospython3 scripts/collage.py --list
Renderizar um predefinidopython3 scripts/collage.py --preset dada-montage --out out.png
Salvar um predefinido como receita editávelpython3 scripts/collage.py --preset cubist-grid --out x.png --dump x.json
Escrever manualmente uma receitapython3 scripts/collage.py --recipe x.json --out x.png
Cortar um contorno observado manualmentepython3 scripts/visual_cutout.py --input foto.jpg --out corte.png --mode shape --shape "0,.1;1,0;.9,1;0,.9" --contact-sheet folha.jpg
Remover um fundo simplespython3 scripts/visual_cutout.py --input objeto.jpg --out corte.png --mode silhouette
Testar uma pesquisa de imagempython3 scripts/source_assets.py --query-only "lua cratera"
Testar um conceito offlinepython3 scripts/source_assets.py --concept c.json --out-dir a --offline

Arquivos nesta skill

requirements.txt declara Pillow e NumPy. install.sh (macOS/Linux) e install.ps1 (Windows) os instalam e executam scripts/check_setup.py. scripts/check_setup.py verifica todos os arquivos incluídos, a versão do Python, resolução de fontes, um teste de fumaça do renderizador e um teste de fumaça de recorte. scripts/collage.py é o renderizador (Pillow + NumPy, sem rede). scripts/visual_cutout.py corta polígonos observados manualmente e silhuetas de fundo simples (Pillow + NumPy, sem rede). scripts/source_assets.py é o pesquisador/baixador do Commons (biblioteca padrão apenas). scripts/theme_to_recipe.py compila um conceito em uma receita e executa os comandos leves de corte de conteúdo. references/movements.md é o mapa de decisões histórico-artístico com fontes. references/materials.md documenta estoques de papel, fontes, bordas e mesclagens. references/composition.md documenta sistemas de layout e antipadrões. references/prompts.md fornece padrões de prompt para quando um modelo texto-para-imagem é mais adequado que o renderizador. references/concept-schema.md é o contrato JSON do conceito. assets/ é o local opcional para imagens de origem fornecidas pelo usuário.

Um exemplo histórico completo (tema → conceito → ativos obtidos → receita → racional → PNG final) está no diretório examples/demo/ do repositório; ele mostra o pipeline anterior de recorte retangular e é mantido como um exemplo do renderizador, não como o fluxo de trabalho atual de corte de conteúdo. O próprio repositório é o pacote instalável: SKILL.md, references/, scripts/, os instaladores e assets/ ficam na raiz. dist/collage.skill é um ZIP exatamente desses arquivos, com os mesmos caminhos na raiz do arquivo.

Habilidades Relacionadas