ink-wash-restyle — 水墨遊記畫面(v16 固定版)
把任意照片重繪為行程手繪水墨感的遊記畫面:
- 黑白水墨為底:墨色五層 + 大面積留白(水墨感優先)
- 克制彩色筆觸(約 20%):只在視覺中心點染傳統國畫色,不搶水墨戲
- 遊記標籤:畫面疊加"畫面描述 · 地點"文字 + 固定 朱砂印章,像旅行手帳
保留:主體類別、空間關係、人物身份(性別 / 年齡 / 關鍵外觀)。替換:寫實材質 → 墨色筆觸,照片光影 → 墨韻與留白,寫實色彩 → 局部傳統國畫色。
何時觸發
用戶上傳或引用一張照片,並表達"水墨 / 國畫 / 寫意 / 水墨化 / 遊記 / 手帳 / ink wash / shuimo / sumi-e"等意圖。本 skill 只做水墨,不做其他風格。
輸入契約
- 必填:1 張照片(本地路徑、URL 或上傳圖片)
- 選填:地點(如"成都街頭")——用於遊記標籤;缺省則不寫地點,只寫畫面描述,或寫"旅人手記"
核心風格規則(6 大鐵律)
🎨 1. 水墨感優先鐵律
黑白水墨是主角,彩色是點綴。 彩色佔比過高 / 顏色太跳會毀掉水墨感(demo-016 教訓)。所以:
- 彩色佔比 20%:只在視覺中心點染,控制在畫面約 20%
- 黑白 + 直接彩色:黑白色調 + 一個直接的色彩點(不要多種顏色混搭、不要漸變、不要大面積暈染)
- 克制:寧可彩少,不可彩多;彩色點到為止,像傳統文人畫"惜色如金"
- 水墨感優先:五層墨、留白、筆觸必須強於彩色存在感
🎨 2. 墨色五層 + 留白鐵律
- 墨色五層必須分明:焦 / 濃 / 重 / 淡 / 清,禁止均勻灰
- 留白 ≥ 50%:畫面整體空白面積 ≥ 50%
- 🚨 主體大小鐵律(最重要):人物 / 主體必須保持正常比例大小(接近原圖的人物佔比),禁止為留白而縮小主體。留白是"背景與邊角的空",不是"主體的小"。人物要大、要完整、要自信地佔據畫面主要位置
- 惜墨如金:全圖 1 個濃墨集中區(落在主體上),密區面積要小
- 疏密對比:主體充分、背景空靈,以空襯實——空在背景,不在主體
🚨 3. 人物身份鎖定(性別漂移教訓)
- 絕對禁止泛指詞:
a person/a figure/someone/a lone traveler/a small figure - 必須顯式寫:性別 + 年齡段 + 髮色髮型 + 服裝 + 配飾 + 姿態朝向
- 走寫意方向:衣紋流暢線條,面部留白或幾筆示意
- 禁止 drip/melt/flow 一類動詞(會把人物畫成流掛液體)
✍️ 4. 寫意三要素
- 意到筆不到:物體只畫七分,形體在完成前淡出
- 書法用筆:提按、頓挫、飛白、枯筆
- 墨韻偶然:濕墨滲化、破墨潑墨
- 刪繁就簡:刪除的是背景雜物(貨架、車輛、招牌、筐、多餘人),主體本身必須完整充分、保持正常大小——只刪環境,不刪主體
🎨 5. 彩色筆觸自動配比(20%)
- 誰是視覺中心:構圖最大 / 最亮 / 最靠前 / 最獨特的主體
- 用什麼色:主體天然色相 → 傳統國畫色(朱砂 / 胭脂 / 花青 / 石綠 / 藤黃 / 赭石)
- 配比 20%:只點染視覺中心,約佔畫面 20%
- 其餘 100% 黑白墨
📝 6. 遊記標籤鐵律(v16 最終形態)
每張成品圖必須疊加遊記標籤。形態 = 傳統國畫"題款"路線:墨字 + 朱砂印章直接蓋在畫面上,無任何"卡片 / 底板 / 邊框"(卡片化被用戶判定為失去水墨美感)。
- 標籤內容:畫面描述 + 地點(如"盛夏的瓜攤 · 成都街頭";地點缺省則只寫畫面描述)
- 疊加方式:禁止讓圖生圖模型直接生成文字(必亂碼);必須用
scripts/tag.py(v6 素材版)在生成後疊加 - 模板化樣式(統一外觀,不因圖片改變):
- 位置:右上角豎排(v17 改版)——傳統國畫落款經典位置
- 正文題字:宋體(Songti,橫細豎粗),深墨色(#1E1E1E)不透明,每個字元一列從上到下
- 米色描邊 halo:每個文字字元帶 4px 米色(#F5F0E6)半透明描邊(alpha 175),讓深墨背景下也能看清字形
- 朱砂印章 = AI 生成真印章素材:朱砂紅篆刻印章、白文豎排、刀痕、印泥斑駁、邊緣不規則。由 AI 圖生圖模型一次生成 +
scripts/seal-bake.py摳圖成透明底,固定素材存於assets/seal-la.png,每張圖都貼這同一個素材(PIL 字體畫無法模擬真實印章質感,必須用 AI 生成的素材)。所有圖統一 印章素材,不得更改。印章貼在文字列末尾正下方(水平居中對齊) - 整體形態:墨字 + 朱印融入畫面,不破筆墨
- 標籤順序:圖生圖模型出圖 → 加標籤(tag.py v7)→ 拼上下對照圖(用帶標籤成品圖,下方)
工作流
Step 1 — 解析輸入
確認能存取到圖;詢問 / 記錄地點(用戶沒說就不寫)。
Step 2 — 圖像理解(含彩色方案 + 標籤決策)
讀圖,提取(必填):
- 人物身份:性別 + 年齡段 + 髮色髮型 + 服裝 + 配飾 + 姿態朝向(寫進 prompt,禁止泛指詞)
- 主體:主要物 / 場景
- 🎨 視覺中心判定
{focus}:誰最抓眼? - 🎨 彩色方案
{color_scheme}:視覺中心天然色相 → 傳統國畫色 - 📝 標籤文案
{tag_text}:畫面描述(3–8 字)+ 地點(可選),如"瓜棚下的笑臉 · 老市集" - 構圖 / 光源 / 氛圍
Step 3 — 構建 prompt
讀取 styles/ink-wash.md 模板,填入變數。
Step 4 — 調用宿主平台的圖生圖能力
mode : image-to-image(宿主平台圖生圖,跟隨原圖)
input_image : 原圖
prompt : 完整 prompt(含 LOCKED APPEARANCE + 克制 COLOR ACCENT 20% + 墨色五層 + 留白 ≥50% + 主體大小鐵律 + XIEYI)
fidelity : medium
aspect : 跟隨原圖
⚠️ 必須顯式傳 output_dir 到 <workspace>/outputs/photo-restyle/<YYYYMMDD-HHMM>/,禁止依賴預設目錄。
Step 5 — 交付(先加標籤,再拼圖)
scripts/tag.py給水墨成品疊加遊記標籤 →<原圖名>-inkwash-tagged.pngscripts/compare.py拼上下對照圖:上方原圖 / 下方帶標籤成品圖(預設 width 1600,保證標籤清晰)→compare-<原圖名>-inkwash.png- 主輸出 = 上下拼圖(帶標籤成品在下);tagged 單圖與純水墨單圖僅作附件
- 標註"水墨遊記"風格名
硬約束(不可繞過)
- ❌ 禁止純黑白輸出——彩色必出(約 20%)
- ❌ 禁止彩色 > 20%(彩色喧賓奪主 = 錯誤輸出)
- ❌ 禁止彩色出現在背景 / 邊角(只許視覺中心)
- ❌ 禁止高飽和現代色 / 紫色 / 螢光 / 漸變彩虹色(只許傳統國畫色,直接點染)
- ❌ 禁止讓圖生圖模型生成標籤文字(必亂碼)——必須
scripts/tag.py疊加 - ❌ 含人物禁止泛指詞,必須鎖定性別 / 年齡 / 關鍵外觀
- ❌ 禁止為留白而縮小主體——主體保持正常大小
- ✅ 出圖標註"水墨遊記"風格名
- ✅ 主輸出必須是上下拼圖(上方原圖 / 下方帶標籤成品);tagged 單圖與純水墨單圖僅作附件
- ✅ 產物輸出到可見目錄(如
<workspace>/outputs/photo-restyle/),不落平台隱藏目錄
錯誤處理
| 情況 | 應對 |
|---|---|
| 沒拿到圖 | 提示用戶先上傳照片 |
| 輸出純黑白 / 彩色太淡 | 檢查 COLOR ACCENT 塊,強調"color REQUIRED on {focus},約 20%" |
| 彩色溢出 / 佔比過高 | 強調 "color only on {focus}, about 20% of the frame, keep it restrained",或縮小 {color_scheme} 描述 |
| 彩色太豔 / 現代感 | 只寫傳統國畫色名,強調半透明直接點染 |
| 人物性別 / 年齡漂移 | 補全 LOCKED APPEARANCE 重跑 |
| 主體被縮小 / 留白吃掉主體 | 強調 SUBJECT SCALE:figure big, emptiness in background only |
| 標籤亂碼 / 缺失 | 用 scripts/tag.py 重疊加,禁止重跑圖生圖 |
| 對照圖拼接失敗 / 標籤在拼圖中看不清 | 檢查 scripts/compare.py(預設 width 1600),或單獨交付兩張圖 |
輸出位置
<workspace>/outputs/photo-restyle/<YYYYMMDD-HHMM>/
├── <原圖名>-inkwash.png # 附件:水墨圖(無標籤)
├── <原圖名>-inkwash-tagged.png # 附件:加遊記標籤的成品圖
└── compare-<原圖名>-inkwash.png # 主輸出:上下拼圖(上原圖 / 下帶標籤成品)
Skill 目錄結構
<平台 skills 目錄>/ink-wash-restyle/(以 WorkBuddy 為例:~/.workbuddy/skills/ink-wash-restyle/)
├── SKILL.md # 本檔案(規則入口)
├── styles/ink-wash.md # 水墨 prompt 模板(含 LOCKED APPEARANCE / COLOR ACCENT / SUBJECT SCALE / XIEYI / 負面詞)
├── scripts/
│ ├── tag.py # 標籤疊加(v6:宋體墨字 + halo + 貼 印章素材)
│ ├── 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 白村赭石塔均穩定命中紅瓦小鎮風