コラージュ は何をしますか?
あなたにはトピックまたは文章が与えられます。あなたの仕事は、その説明ではなく、コラージュアート作品を制作することです。エンドツーエンドで作業します。読む→抽出する→画像を見つける→構図を決める→レンダリングする→検証する→説明する。
このスキルは単一ファイルではなくフォルダです
インストールが完了するには、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のポスター、以下の6つの戦略のいずれか、そして自律的な画像ソーシングです。
ステップ 1 — 読み取りと抽出(これが創造的なステップです。あなたが行います)
ユーザーのテーマまたは文章を読み、小さなコンセプトJSONを書きます。テキストから名詞を列挙するだけではいけません。次のように行います:
- テキスト内の緊張または動きを特定します(何が変化するか、何が対立するか、何が戻るか、何が失われるか)。コラージュには二つの異なるものが必要です。
- 一つの対の文を書きます:「X が Y と出会い、Z を示唆する。」これが作品の主張です。これを書けないなら、テキストを理解していないことになります。
- その主張を伝えることができる2~4つの視覚的モチーフを抽出します。それぞれについて、具体的な画像検索クエリ(Commonsでは英語が最も効果的です)と、それが何に貢献するかを説明する
whyを書きます。抽象名詞よりも、写真に撮れる物体やテクスチャーを優先します。「記憶」はモチーフではありません。「色あせたチケットの半券」、「砕ける波」、「夜のスカイライン」はモチーフです。 - 感情のトーンに合った戦略を
references/movements.mdから選択し、2~4色のパレットを選びます。 - 見出し(雑誌から切り取ったような短いフレーズ、ユーザーの言語または英語)と、オプションでキッカー(小さなモノライン)を選びます。
<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 "..."を使用して検索語を調査し、コンセプトを編集して再実行してください。
良いクエリのルール:具体的な名詞、美的形容詞(「美しい」、「ヴィンテージ」)なし、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を使用します。対比として1~2つの幾何学的/ちぎった紙片を残しますが、発見した写真はまずコンテンツによってカットされなければなりません。切断方法についてはreferences/composition.mdを、alphaソースとマスクについてはreferences/materials.mdを参照してください。
ステップ 4 — レンダリング
python3 scripts/collage.py --recipe <job>/recipe.json --out <job>/final.png
レンダラーは、紙繊維、ハーフトーンスクリーン、ちぎれたエッジ、印刷レジストレーション、ドロップシャドウ、テープ、鉛筆の跡、粒状感、そして統一感のあるウォームウォッシュを適用します。決定論的であり、同じレシピとシードは同じ画像を生成します。2~3つのシードでレンダリングし、最良のものを選んでください — ちぎれたエッジとファセットフィールドは変化します。
ステップ 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検索/ダウンローダーです(stdlibのみ)。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圧縮したもので、アーカイブルートに同じパスを持ちます。