Communitygithub.com

水墨游记 Ink-Wash Restyle

写真を手描きの水墨画風の旅行スケッチに変換する、AIエージェント用スキルです。

水墨游记 Ink-Wash Restyle とは?

このスキルは、任意の写真を「旅程を手描きした水墨画風の旅行スケッチ」に変換するAIエージェント用スキルです。『デモ-016』や『v16』で固められたルールに基づき、墨色五層(焦・濃・重・淡・清)と50%以上の余白で水墨感を最優先しつつ、画面中心部にのみ伝統的な中国画の色(朱砂・花青・石緑など)を約20%点描します。特に「人物の性別・年齢・髪型・服装」を明示的に指定するロック機能や、主体の大きさを保ったまま背景のみを簡略化する「主体サイズ不変の鉄則」が組み込まれており、性別の誤認や主体の縮小を防ぎます。出力時には、生成画像に`scripts/tag.py`を使って右上縦書きの宋体文字と朱砂印を重ね、元画像と比較できる上下分割画像を生成します。Claude Code、Cursor、Codexなどのホストプラットフォーム上で、画像ファイルパスまたはURLを入力として受け付け、指定されたワークスペースディレクトリに結果を出力します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add zhaimengrica-bit/ai-design-skills-ink-wash-restyle

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

ink-wash-restyle — 水墨遊記画面(v16 固定版)

任意の写真を行程を手描きした水墨感のある旅のスケッチに描き直します:

  • 白黒水墨をベース:墨色五層 + 広い余白(水墨感優先)
  • 控えめなカラー筆触(約20%):視覚中心にのみ伝統的な中国画の色を点描し、水墨の主役を奪わない
  • 旅のスケッチラベル:画面に「画面の説明・場所」の文字 + 固定の朱砂印を重ね、旅行の手帳のように

保持:主体の種類、空間関係、人物の身分(性別/年齢/主要な外見)。置き換え:写実的な質感→墨の筆触、写真の光と影→墨の韻と余白、写実的な色彩→部分的な伝統中国画色。

いつトリガーするか

ユーザーが写真をアップロードまたは参照し、「水墨/国画/写意/水墨化/遊記/手帳/ ink wash / shuimo / sumi-e」などの意図を表明したとき。このスキルは水墨のみを扱い、他のスタイルは扱いません。

入力契約

  • 必須:1枚の写真(ローカルパス、URL、またはアップロード画像)
  • 任意:場所(例:「成都の街角」)— 旅のスケッチラベルに使用。デフォルトでは場所を書かず、画面の説明のみ、または「旅人の手記」と記述

コアスタイルルール(6大鉄則)

🎨 1. 水墨感優先鉄則

白黒水墨が主役で、カラーはアクセント。 カラー比率が高すぎる/色が派手すぎると水墨感が損なわれる(demo-016 の教訓)。従って:

  1. カラー比率20%:視覚中心にのみ点描し、画面の約20%に抑える
  2. 白黒 + 直接的なカラー:白黒トーン + 1つの直接的な色の点(複数色の混在、グラデーション、広範囲のぼかしは禁止)
  3. 控えめに:カラーは少なすぎる方が良い、多すぎるのは不可。カラーはほどほどに、伝統的な文人画の「惜色如金」のように
  4. 水墨感優先:五層の墨、余白、筆触がカラーの存在感より強くなければならない

🎨 2. 墨色五層 + 余白鉄則

  1. 墨色五層を明確に:焦/濃/重/淡/清、均一なグレーは禁止
  2. 余白 ≥ 50%:画面全体の空白面積 ≥ 50%
  3. 🚨 主体サイズ鉄則(最重要):人物/主体は通常の比率サイズを維持する(元画像に近い人物の割合)、余白のために主体を縮小してはならない。余白は「背景と端の空白」であり、「主体の小ささ」ではない。人物は大きく、完全に、自信を持って画面の主要な位置を占めること
  4. 惜墨如金:全体で1つの濃墨集中領域(主体に当てる)、密集領域は小面積に
  5. 疎密対比:主体は充実、背景は幽玄、空で実を引き立てる——空は背景にあり、主体に非ず

🚨 3. 人物身分ロック(性別誤認の教訓)

  • 絶対に禁止する一般用語:a person / a figure / someone / a lone traveler / a small figure
  • 明示的に記述すること:性別 + 年齢層 + 髪色髪型 + 服装 + アクセサリー + 姿勢・向き
  • 写意方向:衣文は流れるような線、顔は余白または数筆で示す
  • 禁止動詞:drip/melt/flow など(人物を垂れる液体にしてしまう)

✍️ 4. 写意三要素

  1. 意到筆不到:物体は七分だけ描き、形が完成する前にフェードアウト
  2. 書法用筆:提按、頓挫、飛白、枯筆
  3. 墨韻偶然:湿墨の滲み、破墨、泼墨
  4. 刪繁就簡:削除するのは背景の雑多なもの(棚、車、看板、籠、余分な人)、主体自体は完全で充実し、通常サイズを維持する——環境だけを削除し、主体は削除しない

🎨 5. カラー筆触自動配分(20%)

  1. 視覚中心はどれか:構図上最も大きい/最も明るい/最も手前/最もユニークな主体
  2. 使用する色:主体の自然な色相 → 伝統的な中国画の色(朱砂/胭脂/花青/石緑/藤黄/赭石)
  3. 配分20%:視覚中心にのみ点描、画面の約20%
  4. 残り100%は白黒墨

📝 6. 旅のスケッチラベル鉄則(v16 最終形態)

生成されたすべての完成画像には必ず旅のスケッチラベルを重ねる。 形態=伝統中国画の「題款」路線:墨字 + 朱砂印を直接画面に重ねる。一切の「カード/台紙/枠線」はなし(カード化はユーザーから水墨美を損なうと判断された)。

  1. ラベル内容:画面の説明 + 場所(例:「真夏の瓜売り · 成都の街角」;場所がデフォルトの場合は画面の説明のみ)
  2. 重ね方:画像生成モデルに直接文字を生成させてはならない(必ず文字化けする);必ず scripts/tag.py(v6 素材版)で生成後に重ねる
  3. テンプレート化スタイル(統一外観、画像によって変わらない):
    • 位置:右上縦書き(v17 改訂)— 伝統中国画の落款の古典的位置
    • 本文題字:宋体(Songti、横細縦太)、濃墨色(#1E1E1E)不透明、各文字を一列に上から下へ
    • ベージュ色の縁取りハロー:各文字に 4px のベージュ色(#F5F0E6)半透明縁取り(アルファ 175)、暗い墨背景でも字形が見えるように
    • 朱砂印 = AI 生成の本物の印素材:朱砂紅の篆刻印、白文縦書き、刀痕、印泥の斑、不規則なエッジ。AI の画像生成モデルで一度生成 + scripts/seal-bake.py で切り抜き透明背景に、固定素材として assets/seal-la.png に保存、すべての画像にこの同じ素材を貼る(PIL フォントでは本物の印の質感を再現できないため、AI 生成素材が必須)。すべての画像で統一 印素材を使用し、変更してはならない。印は文字列の末尾の真下に貼る(水平中央揃え)
    • 全体の形態:墨字 + 朱印が画面に溶け込み、筆墨を壊さない
  4. ラベル順序:画像生成モデルで出力 → ラベル追加(tag.py v7)→ 上下比較画像を作成(ラベル付き完成品を使用、下側)

ワークフロー

Step 1 — 入力の解析

画像にアクセスできることを確認;場所を尋ねる/記録する(ユーザーが言わなければ書かない)。

Step 2 — 画像理解(カラー案 + ラベル決定を含む)

画像を読み込み、以下を抽出(必須):

  • 人物の身分:性別 + 年齢層 + 髪色髪型 + 服装 + アクセサリー + 姿勢・向き(プロンプトに記述、一般用語禁止)
  • 主体:主要な物/シーン
  • 🎨 視覚中心判定 {focus}:誰/何が最も目を引くか?
  • 🎨 カラー案 {color_scheme}:視覚中心の自然な色相 → 伝統中国画の色
  • 📝 ラベル文案 {tag_text}:画面の説明(3–8文字)+ 場所(任意)、例:「瓜棚の下の笑顔 · 古い市場」
  • 構図/光源/雰囲気

Step 3 — プロンプトの構築

styles/ink-wash.md テンプレートを読み込み、変数を代入する。

Step 4 — ホストプラットフォームの画像生成機能を呼び出す

mode        : image-to-image(ホストプラットフォームの画像生成、元画像に従う)
input_image : 元画像
prompt      : 完全なプロンプト(LOCKED APPEARANCE + 控えめ COLOR ACCENT 20% + 墨色五層 + 余白 ≥50% + 主体サイズ鉄則 + XIEYI を含む)
fidelity    : medium
aspect      : 元画像に従う

⚠️ 必ず明示的に output_dir を <workspace>/outputs/photo-restyle/<YYYYMMDD-HHMM>/ に設定し、デフォルトのディレクトリに依存しないこと。

Step 5 — 納品(まずラベル追加、次に合成)

  1. scripts/tag.py で水墨完成品に旅のスケッチラベルを重ねる → <元画像名>-inkwash-tagged.png
  2. scripts/compare.py で上下比較画像を合成:上側に元画像 / 下側にラベル付き完成品(デフォルト width 1600、ラベルが鮮明であることを保証)→ compare-<元画像名>-inkwash.png
  3. 主出力 = 上下合成画像(ラベル付き完成品が下);tagged 単体画像と水墨単体画像は添付のみ
  4. 「水墨遊記」スタイル名を明記

ハード制約(回避不可)

  1. ❌ 純粋な白黒出力は禁止——カラーは必ず出力する(約20%)
  2. ❌ カラー > 20% は禁止(カラーが主役を奪う=誤った出力)
  3. ❌ カラーが背景/端に現れるのは禁止(視覚中心のみ許可)
  4. ❌ 高彩度の現代色/紫色/蛍光色/グラデーション虹色は禁止(伝統中国画色のみ、直接点描)
  5. ❌ 画像生成モデルにラベル文字を生成させてはならない(必ず文字化けする)— scripts/tag.py で重ねること
  6. ❌ 人物が含まれる場合、一般用語は禁止、性別/年齢/主要な外見をロックすること
  7. ❌ 余白のために主体を縮小してはならない——主体は通常サイズを維持
  8. ✅ 出力画像に「水墨遊記」スタイル名を明記
  9. ✅ 主出力は上下合成画像とすること(上側に元画像 / 下側にラベル付き完成品);tagged 単体画像と水墨単体画像は添付のみ
  10. ✅ 成果物を可視ディレクトリ(例: <workspace>/outputs/photo-restyle/)に出力し、プラットフォームの隠しディレクトリに置かない

エラー処理

状況対応
画像が取得できないユーザーに写真をアップロードするよう促す
出力が純白黒/カラーが薄すぎるCOLOR ACCENT ブロックを確認し、「{focus} にカラー必須、約20%」を強調
カラーが溢れる/比率が高すぎる「色は {focus} のみ、フレームの約20%、控えめに保つ」を強調、または {color_scheme} の説明を縮小
カラーが派手すぎる/現代感がある伝統中国画の色名のみを記述し、半透明で直接点描することを強調
人物の性別/年齢がずれるLOCKED APPEARANCE を補完して再実行
主体が縮小される/余白に主体が飲み込まれるSUBJECT SCALE を強調:figure big, emptiness in background only
ラベルが文字化け/欠落scripts/tag.py で再重ね、画像生成の再実行は禁止
比較画像の合成失敗/ラベルが比較画像で見えないscripts/compare.py を確認(デフォルト width 1600)、または2枚の画像を個別に納品

出力位置

<workspace>/outputs/photo-restyle/<YYYYMMDD-HHMM>/
├── <元画像名>-inkwash.png           # 添付:水墨画像(ラベルなし)
├── <元画像名>-inkwash-tagged.png    # 添付:旅のスケッチラベル付き完成品
└── compare-<元画像名>-inkwash.png   # 主出力:上下比較画像(上元画像 / 下ラベル付き完成品)

スキルディレクトリ構造

<プラットフォームのスキルディレクトリ>/ink-wash-restyle/(例:WorkBuddy の場合 ~/.workbuddy/skills/ink-wash-restyle/)
├── SKILL.md                  # 本ファイル(ルールエントリ)
├── styles/ink-wash.md        # 水墨プロンプトテンプレート(LOCKED APPEARANCE / COLOR ACCENT / SUBJECT SCALE / XIEYI / ネガティブワードを含む)
├── scripts/
│   ├── tag.py                # ラベル重ね(v6:宋体墨字 + ハロー + 印素材の貼り付け)
│   ├── compare.py            # 上下合成(デフォルト width 1600)
│   ├── seal-bake.py          # 印の切り抜きツール(AI 生成素材 → 透明背景)
│   └── prototype_seal.py     # 印スタイル比較デバッグツール(歴史的遺産)
├── assets/
│   └── seal-la.png           # 固定 朱砂印素材(透明背景、AI 生成)
└── examples/README.md        # サンプル説明

バージョン履歴

  • v1–v5:純白黒水墨路線
  • v6(ロールバック済み):固定の顔面胭脂
  • v7:デフォルトで上下比較画像
  • v8:白黒ベース + カラー筆触(視覚中心、自動配分 15–35%)
  • v9:カラーを ≤15% に圧縮 + 旅のスケッチラベル鉄則
  • v9.1:主出力を上下合成画像に固定
  • v10:ラベルを「ベージュカード台紙」化(後に却下)
  • v11:カラー20%;印を固定印に;ラベルを「宣紙札」化(後に却下)
  • v12:ラベルをカード化解除(純粋な題款路線)+ 余白55%
  • v13:主体サイズ鉄則を追加(余白 ≠ 主体縮小)、余白を50%に戻す
  • v14:印を縦書き + 宋体(フォント案、後に却下)
  • v15:compare のデフォルト width を 1600 に(ラベル拡大後も鮮明)
  • v16(現在の固定版):印を AI 生成の本物篆刻素材(assets/seal-la.png)に変更、tag.py v6 で素材貼り付けモードに;すべてのルールを本ファイルの状態に収束
  • v17:ユーザーから「他の部分はそのままに、ラベルと落款を右上縦書きに変更」→ tag.py v7:位置を左下から右上に変更、本文題字を縦書き(上→下)、印を文字列の真下に貼る(水平中央)
  • v17 筆触修正(styles/ink-wash.md 更新):「赤瓦の町 / 金秋の蟹宴」スタイルの水墨写意筆触を復元——① v19 の CLEANLINESS ブロックを追加(すっきりと、筆触が明確で、汚くない)② XIEYI 三要素のシーン化:背景(遠山/空/大きな色面)は 湿墨暈染(wet-on-wet ink wash、墨が宣紙に滲む)、前景(植物の葉面/屋根瓦/細部)は飛白枯筆。検証:demo-058 ランサローテ、demo-059 白村赭石塔の両方で安定して赤瓦の町スタイルを命中

関連スキル