Community影像github.com

Ewen2015/collage

將主題、簡要說明或一段文字轉化為完成的拼貼藝術作品。當使用者要求拼貼藝術、拼貼海報、剪紙構圖、混合媒材/拼貼畫/照片蒙太奇/撕貼畫風格,或希望從一段文字中衍生的視覺圖像時使用。

collage 是什麼?

此技能是一個端到端的拼貼藝術生成器,能將任意主題或文字轉化為完成的拼貼藝術作品。它模擬傳統拼貼的創作流程:閱讀文字、提取概念、搜尋圖像、裁剪內容、合成渲染,最後驗證並給出解釋。 技能支援多種藝術策略(如立體主義、達達主義、超現實主義、普普藝術、撕貼畫、編輯式),並提供一個六大策略的美術史參考地圖。渲染引擎基於 Pillow 和 NumPy,能模擬紙纖維、網點、撕裂邊緣、陰影、膠帶、鉛筆痕跡及統一暖色調等效果。 關鍵特點包括: - 自主圖像搜尋:透過 Wikimedia Commons 搜尋 CC 授權圖像,並自動生成帶有作者和授權資訊的來源清單。 - 語義裁剪:不是簡單疊放矩形圖片,而是根據每個圖像的內容進行精確裁剪(如形狀輪廓或簡單背景移除)。 - 可離線運作:安裝後除圖像搜尋外,所有核心功能(渲染、裁剪、概念編譯)皆可離線執行。 - 驗證與解釋:產出 PNG 後需檢查是否違反構圖反模式,並提供匹配句子、策略選擇和動機說明的解釋。 此技能適用於 Claude Code、Cursor 和 Codex 等 AI Agent 平台,需要安裝完整檔案夾(包含 `SKILL.md`、`references/`、`scripts/`、安裝腳本和 `requirements.txt`)。創作過程完全自主,無需使用者做藝術決策。

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

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

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

拼貼

你被賦予一個主題或一段文字。你的工作是產出一件 拼貼藝術作品,而不是對其的描述。端到端地運作:閱讀 → 提取 → 尋找圖像 → 構圖 → 渲染 → 驗證 → 解釋。

此技能是一個資料夾,而非單一檔案

只有當 SKILL.md、references/、scripts/、requirements.txt、install.sh、install.ps1 和 scripts/check_setup.py 都存在於同一目錄時,安裝才算完成。如果缺少其中任何一個,請重新安裝整個套件,而不是單獨複製 SKILL.md。

步驟 0 — 檢查安裝(只需執行一次)

python3 scripts/check_setup.py

它會驗證 Python 版本、每個捆綁檔案、Pillow、NumPy、字體解析度、渲染器冒煙測試以及內容裁剪冒煙測試。如果有任何缺失:

bash install.sh          # macOS / Linux:安裝 requirements.txt,然後重新執行檢查
# Windows:powershell -ExecutionPolicy Bypass -File install.ps1

安裝程式僅在安裝 Python 套件時需要網路連線;該技能的所有其他部分均可離線運作。

指導理念來自 references/ 中的參考資料:拼貼是已具有歷史的材料組合(Rise Art, Artsy),其視覺邏輯是 断裂 / 重组 / 融合 (UISDC)。因此,最終作品必須看起來像是裁剪過的紙張被黏貼後重新掃描,並且必須傳達一個由兩個不同事物組合而成的想法。

不要要求使用者做出藝術決策

推斷所有可以推斷的內容:策略、色調、格式、標題、主題。僅當簡要說明是一個沒有上下文的模糊單詞,或者明確需要使用者的自有素材時,才進行提問。預設為 1200×1500 海報、以下六種策略之一,以及自主圖像來源。

步驟 1 — 閱讀與提取(這是創意步驟,由你執行)

閱讀使用者的主題或段落,並撰寫一個小型的概念 JSON。不要 只是列出文字中的名詞。請執行以下步驟:

  1. 識別文字中的 張力或動勢(什麼在改變、什麼是對立的、什麼在回歸、什麼在消失)。一件拼貼需要兩個不同的東西。
  2. 撰寫一個 配對句子:"X 相遇 Y,這暗示了 Z。" 這是作品的論點。如果你無法寫出這個句子,代表你尚未理解該文字。
  3. 提取 2-4 個能夠 承載 該論點的 視覺主題。針對每個主題,撰寫一個具體的圖像搜尋查詢(英文在 Commons 上效果最好)和一個解釋其貢獻的 why。偏好可拍攝的物體和紋理,而非抽象名詞。"記憶"不是一個主題;"一張褪色的票根"、"一個破碎的波浪"、"一個夜景天際線" 才是。
  4. 從 references/movements.md 中選擇一個符合情感基調的 策略,以及一個 2-4 種墨色的 色調。
  5. 選擇一個 標題(一個簡短的、從雜誌剪下的短語,使用使用者的語言或英語)以及可選的 引題(一條小的、單色線條)。

將其寫入 <job>/concept.json:

{
  "theme": "潮汐與城市",
  "headline": "TIDE / CITY",
  "kicker": "A NOTE ON DISTANCE",
  "statement": "回歸的潮汐遇見沉睡的城市,暗示著一種不斷回來的記憶。",
  "strategy": "surrealism",
  "palette": ["#16283a", "#d94f36", "#4a86a8", "#f0c94b"],
  "motifs": [
    {"id": "tide", "query": "breaking ocean wave water", "role": "hero",
     "why": "回歸的潮汐,不斷回來的東西"},
    {"id": "city", "query": "city skyline night silhouette", "role": "ground",
     "why": "沉睡的城市,固定不變的東西"},
    {"id": "moon", "query": "moon crater lunar surface", "role": "satellite",
     "why": "遙遠的見證者,拱門內一個不可能的物體"}
  ]
}

strategy 是 cubism, dada, surrealism, pop, decollage, editorial 之一。role 是 hero(一個)、ground 或 satellite。完整結構定義:references/concept-schema.md。

當使用者提供他們自己的圖像時,跳過步驟 2,並撰寫一個指向這些檔案的 SOURCES.json 清單,其中包含 license: "user-provided"。

步驟 2 — 自主尋找圖像來源

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

這會搜尋 Wikimedia Commons,僅保留 CC BY / BY-SA / CC0 / 公有領域的結果,跳過帶有人格權警告的檔案,下載縮圖,並為每張圖像撰寫包含作者、授權和來源頁面的 <job>/assets/SOURCES.json。不要跳過此清單 — 完成的作品必須是可歸因的。當某個主題的搜尋結果不佳時,使用 --query-only "..." 來探查搜尋詞,然後編輯概念並重新執行。

好的查詢規則:具體名詞、無美學形容詞("beautiful", "vintage")、2-4 個詞、避免返回人物的查詢。如果下載的圖像是肖像或圖表,請更換它 — 在步驟 5 檢查渲染結果,而不是相信檔案名稱。

如果環境沒有網路,請說明情況並繼續使用程序化紙張來源(photo, newsprint, grid, wood, halftone),這些無需下載。渲染器會在素材路徑缺失時優雅降級。

步驟 3 — 根據圖像的可見內容進行裁剪

這是不可省略的。 完成的拼貼不能是一堆裝飾性撕裂邊緣的完整矩形照片。觀察每個來源圖像,並裁剪出承載意義的部分:一個剪影、一隻手、一個鍵盤、一張嘴、一塊橋板、一條深色對角線、一片藍色區域、一排座位、一個黑板、一條穿過草叢的小徑。將這些圖像形狀的碎片重新組合,使接縫成為一個論點。Lydia Rink 的初學者指南強化了這方面的實體版本:美工刀用於精確切割元素;黏貼前鬆散排列;留出負空間;變化比例;使用圖層來創造深度。

scripts/visual_cutout.py 是一個特意製作的小型數位美工刀。它僅使用 Pillow 和 NumPy。主要模式是 shape:觀察來源照片並用標準化多邊形描述可見物體或結構區域。第二種 silhouette 模式通過顏色距離移除純色邊框/背景。沒有重量級的圖像分割依賴。編譯器還會寫入 cuts/contact-sheet.jpg;在構圖前檢查它,如果裁剪未命中主體,則調整多邊形。

編譯器執行裁剪並將產生的透明 PNG 綁定到配方,使用 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

在概念中描述每個主題的裁剪(cut)或在一個以主題 ID 為鍵的 cuts 映射中描述。一個主題可以提供一個指令或一個指令列表,從一張照片中產出多個碎片:

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

對你可以在照片中看到的語義輪廓使用 shape;座標是標準化的 x,y;x,y;...。僅當物體位於純色紙狀背景上時使用 silhouette。保留一兩個幾何/撕裂的紙片作為對比,但找到的照片必須首先按內容進行裁剪。請參閱 references/composition.md 了解裁剪方法,以及 references/materials.md 了解 alpha 來源和遮罩。

步驟 4 — 渲染

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

渲染器會套用紙纖維、網點、撕裂邊緣、印刷套準、投影、膠帶、鉛筆痕跡、顆粒感和統一的暖色調。它是確定性的:相同的配方加上相同的種子會產生相同的圖像。渲染兩到三個種子,然後選擇最好的 — 撕裂邊緣和面域會變化。

步驟 5 — 驗證,然後解釋

在交付前,務必查看 你產生的圖像(打開它或生成一張校對表)。檢查 references/composition.md 中的反模式:顏色過多、每層都有陰影、所有元素都旋轉0度、全部撕裂邊緣、文字比碎片還小,尤其是照片仍然讀起來像一個完整的矩形窗口,而不是一個從其自身內容中裁剪出來的形狀。如果語義裁剪在縮圖大小下不明確,返回步驟 3。如果失敗,調整配方或策略並重新渲染。

然後交付 PNG 以及一個簡短的解釋,說明配對句子、策略以及選擇這些主題的原因。包含來自 SOURCES.json 的致謝行;在需要時複製授權條款(CC BY-SA 可能要求衍生作品以相同方式共享)。引導使用者查看 recipe-rationale.md 以獲取完整的決策記錄。

快速參考

目的指令
驗證安裝python3 scripts/check_setup.py
安裝 Python 依賴bash install.sh
查看所有內建風格python3 scripts/collage.py --list
渲染一個預設python3 scripts/collage.py --preset dada-montage --out out.png
將預設儲存為可編輯的配方python3 scripts/collage.py --preset cubist-grid --out x.png --dump x.json
手寫配方python3 scripts/collage.py --recipe x.json --out x.png
裁剪手動觀察的輪廓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
移除純色背景python3 scripts/visual_cutout.py --input object.jpg --out cut.png --mode silhouette
探查圖像搜尋python3 scripts/source_assets.py --query-only "moon crater"
離線測試概念python3 scripts/source_assets.py --concept c.json --out-dir a --offline

此技能中的檔案

requirements.txt 宣告了 Pillow 和 NumPy。install.sh (macOS/Linux) 和 install.ps1 (Windows) 安裝它們並執行 scripts/check_setup.py。scripts/check_setup.py 驗證每個捆綁檔案、Python 版本、字體解析度、渲染器冒煙測試和裁剪冒煙測試。scripts/collage.py 是渲染器(Pillow + NumPy,無網路)。scripts/visual_cutout.py 裁剪手動觀察的多邊形和簡單的純色背景剪影(Pillow + NumPy,無網路)。scripts/source_assets.py 是 Commons 搜尋/下載器(僅標準庫)。scripts/theme_to_recipe.py 將概念編譯成配方,並執行輕量級的內容裁剪指令。references/movements.md 是附有來源的美術史決策地圖。references/materials.md 記錄了紙張庫存、來源、邊緣和混合模式。references/composition.md 記錄了佈局系統和反模式。references/prompts.md 提供了當文字轉圖像模型比渲染器更適合時的提示模式。references/concept-schema.md 是概念 JSON 的合約。assets/ 是用於使用者提供的來源圖像的選用位置。

一個歷史工作範例(主題 → 概念 → 來源素材 → 配方 → 理由 → 最終 PNG)存在於存放庫的 examples/demo/ 目錄中;它展示了早期的矩形碎片流程,並作為渲染器範例保留,而非當前的內容裁剪工作流程。存放庫本身是可安裝的套件:SKILL.md、references/、scripts/、安裝程式和 assets/ 位於根目錄。dist/collage.skill 是這些檔案的 ZIP 壓縮檔,在歸檔根目錄中具有相同的路徑。

相關技能