# Fashion Item Extractor

> 从一张穿搭/服装图里提取、拆解单品。**只要用户提到提取单品、拆单品、拆解穿搭、把这身拆开、扒一下这套、这身有什么、逐件识别、单品清单、找同款先拆出来、复刻这套的每一件、把衣服一件件分出来——必须用本技能**，无论有没有附图、措辞怎么变。也覆盖：穿搭/look/outfit 拆解、服装单品提取、秀场/街拍/明星穿搭逐件还原、做成白底图/电商主图。触发词：提取单品、单品提取、拆单品、拆解、扒图、扒穿搭、拆穿搭、这套是什么、有哪些单品、逐件、一件件、找同款、复刻穿搭、白底单品图。识别出意图就触发，不要犹豫。触发后执行三步工作流：①逐件拆解+为每件写白底单品 prompt ②用脚本把原图每件矩形截图出来当视觉锚点 ③把截图+prompt 喂图生图模型（Seedream 4.0 / nano-banana）生成无模特纯白底商品主图。默认走完三步；用户明说"只拆解/只要 prompt/别出图"时停在对应步骤，没配 API key 时停在截图并提示。本技能是 fashion-model-shot 的逆向（那个：单品图→模特上身图；本技能：穿搭整图→逐件单品白底图）。

- Skill: `jarad-z/fashion-item-extractor` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add jarad-z/fashion-item-extractor`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jarad-z/fashion-item-extractor/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: jarad-z (https://skillmd.com/u/jarad-z)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jarad-z/fashion-item-extractor

---


# Fashion Item Extractor — 穿搭照逐件拆解并还原成单品白底图

你的任务：拿到一张有人穿搭的照片（秀场、街拍、明星图、lookbook 都行），**把里面每一件可识别的单品逐一拆出来**，并一路做到**每件的成品电商白底图**。

这件事的价值：用户看到一张好看的整体造型，想知道"这身到底由哪些东西组成"、想逐件复刻或找同款。你要做的是当一个**有经验的买手/造型师的眼睛**，把一张融合在一起的 look 拆解成清晰的单品，再真正还原成可用的单品白底图。

## 默认工作流：三步走到底

拿到穿搭图，**默认依次走完这三步**，不用等用户逐步开口：

1. **拆解 + 写单品图 prompt** —— 逐件识别、看准维度、为每件写一段白底单品 prompt。
2. **截出每件的实拍图** —— 用 `scripts/crop_items.py` 把原图里每件矩形裁剪出来，当视觉锚点。
3. **生成成品白底图** —— 用 `scripts/generate_whitebg.py` 把「截图 + prompt」喂图生图模型，真正出成品图。

**两个例外让步骤提前停下**：① 用户明说"只拆解 / 只要文字 prompt / 别出图"——停在他要的那步；② 出图所需的 API key/依赖没配——停在步骤二（截图），提示用户配好就能接着出（见步骤三）。

这是 `fashion-model-shot` 技能的逆操作。两者配合：整图 →（本技能）→ 单品白底图；单品图 →（fashion-model-shot）→ 模特上身图。

## 步骤一：拆解每件单品 + 写单品图 prompt

### 拆解原则：全部拆到底

一张造型图里能识别的单品都要拆，不要只拆主要服装。完整地过一遍这个清单，逐项检查图里有没有：

- **主体服装**：上衣 / T恤 / 衬衫 / 卫衣 / 针织衫 / 下装(裤/裙) / 连衣裙 / 连体衣
- **外层**：外套 / 大衣 / 西装 / 夹克 / 风衣 / 马甲
- **鞋**：款式、颜色、鞋型
- **包**：手提 / 单肩 / 斜挎 / 双肩 / 手拿，材质、颜色、五金
- **头部**：帽子 / 头巾 / 发饰 / 眼镜墨镜
- **颈部**：项链 / 围巾 / 丝巾 / choker
- **手腕手部**：手表 / 手镯 / 戒指 / 手套
- **耳部**：耳环 / 耳饰
- **腰部**：腰带 / 腰封
- **腿足**：袜子 / 丝袜 / 腿套

**判断尺度**：能在图里明确看清、且是穿戴的单品就拆出来。看不清的不硬编（比如背面的包看不到正脸、被头发挡住的耳饰），但要诚实标注"图中部分遮挡/不可见"，不要凭空编一个。如果某件单品只露出一角无法判断细节，可以拆出来但说明"仅可见局部"。

按"从上到下、从主到次"的顺序拆，读起来清楚：头 → 上身 → 外层 → 下身 → 鞋 → 包 → 配饰。

### 每件单品要看准的维度

对每一件，像写商品详情页一样把这些维度看准——这是后面单品图 prompt 能还原的地基（看错则全错）：

- **品类与版型**：具体到款（不是"上衣"而是"oversize 落肩圆领卫衣"）。版型决定平铺/挂拍时的形态。每件做到「具体色修饰词 + 精确品类 + 一个关键结构/工艺细节」的密度，且**每件独立成段**——如"酒红色尖头乐福鞋，金属马衔扣""白色短袖T恤，锈红色插肩袖拼接"，不要把多件并进一句。
- **合身度/垂坠状态**：这件穿在身上是贴身、宽松、堆叠还是垂坠？记下来——平铺/挂拍还原成单品独立形态时，靠它判断布料该怎么摊开、怎么垂。
- **颜色**：主色 + 点缀色，用具体修饰词（"雾霾蓝"而非"蓝"，"燕麦色"而非"米"）。颜色是还原最易跑偏处。
- **面料与质感**：棉/丝/针织/牛仔/皮革/羊毛/雪纺/亮片……决定单品图的光泽和褶皱。
- **廓形与关键细节**：领型、袖型、纽扣、拉链、印花、口袋、做旧、拼接、五金、走线。细节丢了就变成"另一件"。
- **图案/印花**：有无、什么图案、位置、配色。
- **风格归属**：街头/极简/复古/学院/机能/法式/Y2K——帮用户理解这件的调性。

被遮挡时，基于可见部分做合理推断并标注是推断（如"裤子下摆被外套遮住，从可见部分判断为直筒，款式存疑"）。**被遮挡单品的出图 prompt 默认补全成一件完整单品**（用户找同款需要完整的图），但要在描述里老实标出哪部分是可见、哪部分是推断补全，不要把推断当事实。

### 为每件生成单品图 Prompt

> **护栏：本技能默认且只产出 N 段相互独立的白底单品 prompt（一件一段）。** 不要把多件单品合成进"一张分解图 / 九宫格 / 带中心人物的拆解海报"——那是另一种插画类需求（且画风冲突），不在本技能范围。你刚把模特从画面里拆掉，不要又把人物加回来。用户真要那种合成图时，明确告诉他这不是本技能做的事。

每件单品配一段**自然语言长描述 prompt**，目标是还原出这件单品的**干净商品图**——默认两种呈现，按单品类型选更合适的：

- **白底产品图**：单品平铺或挂拍在纯白/浅灰背景上，均匀柔和棚拍布光，无模特，clean product shot，电商主图风格。适合大多数服装、鞋、包。
- **平铺 flat-lay**：单品平铺俯拍，整理服帖，自然褶皱，柔光。适合需要看版型全貌的上衣/裙装。

prompt 写作要点（与 fashion-model-shot 同源，针对"无人单品图"调整）：
- **写成连贯自然语言段落**，不是关键词堆叠（这些模型吃长描述，不吃 Midjourney 参数式，除非用户明确要 MJ 版）。
- **信息密度集中在单品本身**：品类、颜色（具体修饰词）、面料质感、廓形、关键细节、印花，全写进去。
- **明确"无模特、白底、聚焦单品"**：直接写"单品独立平铺/挂拍呈现，自然服帖的真实褶皱，无人体、无模特，纯白无缝背景，均匀柔光"即可——不必写"从人体剥离/decoupled"这种话，文生图模型本就没有原图人体可带入，正面描述更干净。避免模型自作主张加人或复杂背景。
- **面料配光**：丝绸侧光带高光、针织柔光显纹理、皮革硬光出高光、棉布均匀柔光。
- **画质收尾模板**（电商单品图骨架，可直接套）：`clean product shot on a pure white seamless background, soft diffused studio lighting with gentle even shadows, the item centered in frame, sharp all-over focus with every detail crisp, true-to-color, highly detailed fabric texture, professional e-commerce product photography.` —— **单品商品图要全幅清晰、不要浅景深虚化**（买家要看清细节），且绝不出现人手、微缩等元素。
- **语言按模型脾气**：即梦/可图中文优先、Gemini 系英文更稳；默认给中文 prompt。

更细的面料词、布光对照、各模型差异，见 `references/fashion-vocabulary.md`，需要时查。

## 步骤二：从原图截出每件单品的实拍图

> **这是工作流的固定一步，默认就做，不用等用户开口。** 文字 prompt 是"凭描述重画"，模型看不到原图；要照着原图那件 1:1 还原、要找同款，都需要原图里那件的**实拍截图**当视觉锚点。这一步把原图按单品区域**矩形裁剪**出来，每件一张图，给下一步出白底图当输入。
>
> **唯一例外**：用户明确说"只拆解 / 只要文字 prompt / 别截图别出图"时，停在步骤一，尊重用户。

**怎么做**（看图估坐标 → Pillow 矩形裁剪）：

1. **看原图，估每件的边界框**。对清单里每件单品，估它在画面中的矩形区域，用 `[left, top, right, bottom]` 四个 **0~1 比例**表示（相对原图宽高，与分辨率无关）。从上到下分层：头部配饰在最上、鞋在最底。框宁可略大一点把整件收全（裙摆、袖子、鞋头别切掉），矩形裁带一点背景是正常的。
2. **写一个 items.json 文件**（不要用命令行内联 JSON——Windows PowerShell 会吞双引号）：
   ```json
   [
     {"name": "01_outer_cardigan", "box": [0.18, 0.18, 0.82, 0.62]},
     {"name": "02_print_dress",    "box": [0.28, 0.22, 0.72, 0.60]},
     {"name": "03_cargo_pants",    "box": [0.26, 0.55, 0.74, 0.92]},
     {"name": "04_white_shoes",    "box": [0.32, 0.86, 0.70, 1.00]}
   ]
   ```
   `name` 用 `序号_英文短名`，序号和清单里的件号对应。
3. **跑脚本裁剪**（Windows 用 `py`，先设 UTF-8 防中文崩溃）：
   ```
   py scripts/crop_items.py <原图路径> <输出目录> <items.json路径>
   ```
4. **回看裁剪结果**，逐张确认框对了（整件在框内、没切掉关键部分）。框歪了就调比例重跑——这一步不能省，坐标是估算的，必须用眼睛验收。

**交付时**：每件的单品段落里，把"实拍截图路径"和"出图 Prompt"并列给出——截图是原图视觉锚点，prompt 是重画/找同款的文字描述，两者配合：
- 想 **1:1 照原图复刻** → 把这件的截图喂给支持图生图的模型（nano-banana / Gemini 图编辑），prompt 作辅助指令。
- 想 **找同款** → 截图拿去以图搜图，prompt 末尾的关键词拿去电商搜索。

**边界**：这是矩形粗裁、会带背景，不做精准抠图（贴边去背景要另上抠图模型，如 rembg）。对"找同款/喂图编辑模型"够用；用户若要干净去背景单品图，下一节就是干这个。

## 步骤三：真正生成电商白底图（图生图）

> **这是工作流的最后一步，默认就做，把每件做到成品白底图为止。** 把上一步的「截图（视觉锚点）+ 白底 prompt（文字指令）」一起喂给图生图模型，真正出图：截图保住款式/颜色/面料，prompt 负责去背景换白底——这才是真的"照原图那件 1:1 还原成白底图"（无模特、纯白底、电商主图风格）。

**这一步要 API key 和依赖，按下面规则决定走还是停**：
- **环境里有 `ARK_API_KEY`（或 `GEMINI_API_KEY`）且依赖已装** → 直接出图，把成品图给用户。
- **没配 key 或缺依赖** → **不要报错硬跑**。停在步骤二（截图已交付），明确告诉用户：「单品已拆解+截图完成；想自动出成品白底图，配好 `ARK_API_KEY`（火山方舟，0.2元/张）后我就能接着出。」把出图脚本的调用方式一并附上，用户配好随时能跑。
- **用户明说"别出图/只要 prompt"** → 尊重，停在前面的步骤。

**两家模型**（详见 `references/whitebg-image-gen.md`，含接口/参数/价格/坑/来源 URL）：

| | nano-banana (Gemini) | Seedream 4.0（火山方舟）|
|---|---|---|
| 环境变量 | `GEMINI_API_KEY` | `ARK_API_KEY` |
| 单价 | ~$0.039/张 | 0.20 元/张 |
| 水印 | 强制 SynthID（去不掉）| 可关 |
| 默认 | 海外/英文 prompt | **国内默认**（中文+便宜+可关水印）|

**怎么做**（脚本已封装两家，命令行直接调）：

1. 先确认依赖：`pip install pillow google-genai`（Gemini）或 `pip install volcengine-python-sdk`（Seedream）。脚本缺依赖会提示装哪个。
2. **prompt 写法变了**：图生图时参考图已给款式/颜色/面料，prompt 重点转成**指令性的「以参考图为主体 + 去背景 + 白底 + 无模特 + 布光」**，不要再重复描述单品细节（会和参考图打架）。主流程那段「白底单品 prompt」前面补一句"以参考图中的[单品]为主体"即可复用。
3. **跑脚本**（Windows 用 `py` + 先设 UTF-8；prompt 含中文/特殊字符建议用 `--prompt-file` 从文件读，避开命令行转义）：
   ```
   py scripts/generate_whitebg.py --provider seedream \
      --image crops/02_print_dress.png \
      --prompt-file prompts/02.txt \
      --out out/02_white.png
   ```
   Gemini 多两个可选参数：`--aspect 4:5`（时尚竖图）`--size 2K`。
4. **回看出的图**，确认款式/颜色/印花和原图那件对得上、背景是干净白底。不对就调 prompt（加强"保留XX细节""纯白无缝背景"）重出，或换另一家模型试。

**完整闭环**：拆解（文字清单）→ 截图（原图锚点）→ 白底图（成品）。每件单品都能一路走到成品白底图。出来的白底图若还想做成模特上身效果，再丢给 `fashion-model-shot`。

## 输出格式

先给整体概览，再逐件展开。用这个结构：

```
## 这身造型概览
[1-2 句：整体风格、色调、场景，识别出 N 件单品]

## 单品清单

### 1. [单品名，如"燕麦色落肩针织开衫"]
- **品类/版型**：…
- **颜色**：…
- **面料质感**：…
- **关键细节**：…
- **风格**：…
- **出图 Prompt**：
  [可直接复制的单品图 prompt]
- **原图截图**：`crops/01_xxx.png`（步骤二产出）
- **成品白底图**：`out/01_white.png`（步骤三产出；没配 key 而停在截图时，此行写"待出图，配好 ARK_API_KEY 后运行 scripts/generate_whitebg.py"）

### 2. […]
…（按从上到下顺序逐件）
```

如果用户额外要了"搭配复盘"，在概览后加一小段分析这身为什么协调（配色/比例/风格逻辑）。如果用户要了"找同款关键词"，在每件的 prompt 后附一行电商搜索关键词。但默认只给"清单 + 单品 prompt"，不堆没要的东西。

**拆完后回扫原图一遍**，逐项确认配饰类（袜子/腰带/耳饰/戒指/手表/眼镜/发饰）没有遗漏——这类小件最容易漏，但正是"全部拆到底"的要求。

**一个要让用户知道的认知**：默认三步走的最后一步是**图生图**——把步骤二截出的实拍图当视觉锚点喂给模型，所以能真照着原图那件还原款式/颜色/印花。但 prompt 仍要把颜色、印花、廓形用文字写准，因为它负责"去背景换白底"这层指令、也帮模型抓重点。如果某一步只停在写文字 prompt（用户只要 prompt、或没配 key），要让用户知道：纯文字 prompt 是"凭描述重画"、模型没有原图可参照，颜色印花写多准还原多准；要严格 1:1 照原图，就得走到步骤三的图生图。

拆完后可以提示用户：任何一件单品 prompt 出图后，想做成模特上身效果，可以用 `fashion-model-shot` 技能——两个技能正好互为正逆，形成闭环。

