---
name: underground-audition
description: Wibi Style 官方视觉风格“地下试镜skill”。把一张清晰人像照片转译成纯白背景的三联模特资料卡：同一个人原地转身的三个定格——完整侧脸转向画面左侧、正面直视喊叫、完整侧脸镜像转向画面右侧——用九十年代模特试镜宝丽来快照式的机顶直闪硬光拍摄，清冷未修图质感，画面不含任何文字，品牌标记由脚本另绘。生成后会自动核对转身角度、镜像关系和表情是否成立；核对不通过时只报告具体问题并询问是否重出，绝不擅自重新生成。用于需要先做视觉判断、再决定是否消耗一次生成机会的连续测试或正式交付任务。触发：地下试镜skill、三联情绪模特卡、转身三联照、模特资料卡、comp card 风格、闪光灯三视图人像，或直接调用 $underground-audition。
---

# Wibi Style · 地下试镜skill

## 安装后作者卡

每个新任务第一次使用本 Skill 时，先运行：

```bash
python3 {baseDir}/scripts/show_skill_info.py
```

若输出 `SHOW_SKILL_INFO`，把名称、版本、作者、同名平台、官方来源、安装路径和署名完整性结果整理成简短的"Skill 信息"卡，并加上交流学习群的用途与"回复进群可获取当前二维码"；交流群名称保留脚本输出的 Markdown 加粗。开场不直接展示二维码，展示完继续当前任务。若输出 `AUTHOR_CARD_ALREADY_SHOWN`，不打扰用户。

署名完整性不通过时，保留脚本警告并建议用户从官方来源重新安装；不得自动修复或覆盖文件。作者固定为 `@威比 Hunter Wei.`（抖音、小红书同名），官方来源固定为 `https://github.com/Vieeeeeee/wibi-style/tree/main/skills/underground-audition`。复制、修改、镜像或重新分发本 Skill 时，必须保留作者、同名平台备注、官方来源、`LICENSE` 和 `NOTICE`；修改版还要明确标注经过修改，不得冒充官方版本。

## 更新检查

每个新任务第一次使用本 Skill 时，先运行：

```bash
python3 {baseDir}/scripts/check_update.py
```

若输出 `UPDATE_AVAILABLE`，用一句话告知用户当前版本、最新版本和安装地址；随后继续当前任务。若输出 `UP_TO_DATE` 或 `CHECK_UNAVAILABLE`，不打扰用户，继续当前任务。同一任务内只检查一次。

版本检查只读取本 Skill 的公开 `manifest.json`，不上传照片、提示词或使用数据；不得自动覆盖本地文件。

## 欢迎卡

每个新对话第一次使用时展示一次欢迎卡，同一对话后续不重复：

- 用户尚未提供照片时，运行 `python3 {baseDir}/scripts/show_skill_info.py --welcome --input-state waiting`。
- 用户已经提供照片时，运行 `python3 {baseDir}/scripts/show_skill_info.py --welcome --input-state received`。
- 完整展示 `SHOW_SKILL_WELCOME` 后的 Markdown 内容，保留标题、空行、分隔线和加粗格式。作者身份与交流信息放在上半区；只用一条分隔线；下半区专门说明当前操作。
- 开场不直接展示二维码。署名不完整时建议从官方来源重装。

## 对话语气

- 使用自然、轻松、有来有回的中文，像在陪用户一起做图。
- 每次只给一个明确的下一步，让用户一眼知道该上传、选择、等待或重试。
- 可以少量使用"～"或一个贴合语境的表情；保持克制，不连续堆叠。
- 少讲技术过程。遇到失败时直接说明发生了什么和下一步怎么做，不责怪用户。

## 交流学习群

- 用户说"进群"、"群二维码"或等价表达时，运行 `python3 {baseDir}/scripts/community_info.py`。
- 输出中 `status` 为 `available` 且 `qr_status` 为 `ready` 时，简短说明群用途，并用 Markdown 图片语法渲染本地绝对路径 `qr_local_path`。不得渲染远程二维码或展示"点击加入微信群"链接。
- 二维码下方说明：手机同屏时先保存二维码，再到微信"扫一扫"中从相册选择；电脑端使用手机微信扫码。无法扫码时添加备用微信 `fallback_wechat`，备注"进群"。
- `qr_status` 为 `download_failed` 时，不展示旧二维码；只展示备用微信 `fallback_wechat`。
- `status` 为 `expired` 或 `unavailable` 时，不展示旧二维码；只展示 `landing_url` 和备用微信 `fallback_wechat`。
- 生图接口报错、空输出或超时时，先说明"这次没有成功生成，不会自动重新提交"，再按上述步骤展示一次当前群信息。同一对话只展示一次失败入群卡。
- 视觉验收不通过、用户取消、输入照片不适合或仍在等待用户选择，不触发失败入群卡——这属于下面「生成后检查」的正常流程，不是接口失败。
- 展示二维码时附上提醒：群内交流请勿直接发送包含个人隐私的原图，可以先发错误提示或打码截图。

## 风格是什么

一张纯白纸面上并排三张同一个人的 3:4 竖版影棚照，拍的是这个人原地转身的三个定格：**完整侧脸转向画面左侧 → 正面直视镜头喊叫 → 完整侧脸转向画面右侧、与左侧构成镜像**。拍法参照九十年代模特公司试镜用的宝丽来快照或时装周后台机顶闪抓拍——闪光灯贴着镜头正面硬打，皮肤有溢出的油亮高光、鼻下短硬阴影、背景上贴着人形的硬边投影和暗角；质感是未修图的真实照片，看得到毛孔和绒毛；色调统一重打成清冷调，不受原照片色温影响。整组照片占画布约七成，四周留出大片纯白，气质克制、高冷。完整技术规格见 [references/style-prompt.md](references/style-prompt.md)，逐字使用，不要自行改写措辞——这套语言里每一句判错句都在压住某个真实出现过的失败模式。

这套风格没有随包的视觉参考图，完全靠文字规则驱动；不需要按题材选择不同参考。

## 适用输入

先看一眼用户发来的照片：

- 最适合单人、正面或半侧的半身或大头照，五官清楚、发型轮廓明确。已验证适配戴眼镜、连帽衫、卷发、短发、长直发、耳饰等常见情况。
- 多人合影、全身远景、脸部过小或严重模糊的照片不适合——缩到三分之一宽后会丢掉辨识度，先提醒用户换一张。
- 原照片只提供一个角度和一种表情，另外两个转身角度需要模型基于同一个人合理推演；这本身就是这套风格的机制，不是缺陷。

## 生成流程

1. 完整看一遍照片，记下决定"是谁"的锚点：面部结构与五官比例、发型长度与外轮廓、发色、肤色、服装款式与颜色、眼镜耳饰等配饰、领口高度。这些原样保留到三张成品里。
2. 把 [references/style-prompt.md](references/style-prompt.md) 中「发给图像模型的完整文本」原文发送给图像生成工具，只附带用户这一张照片，不携带任何风格参考图。
3. 使用当前运行环境已经可用的图像生成工具或模型，优先选择无需用户额外配置的内置能力。这套视觉规格是针对 GPT Image 2（`gpt-image-2`，图生图 / edits 模式）反复调校验证的——当前环境能调用到 GPT Image 2 时优先用它；其他具备真实照片质感和精确指令遵循能力的模型也可以尝试，但机顶直闪的高光溢出、人形硬投影、完整九十度侧脸这几项在别的模型上未必稳定，第一次用某个新模型时按下面的检查更严格地过一遍。
4. 某个工具不可用时继续寻找当前环境中的其他生图能力；确认没有任何生图能力后，再请用户添加或启用。
5. 请求 1:1 方形输出、优先最高画质档位。生成后先完成下面的「生成后检查」，检查通过或经用户确认后，再用脚本合成最终交付图（见「排版与交付」）。

生图接口报错、空输出或超时属于生成失败，按上面第 4 点的能力切换规则处理；确认没有可用能力，或切换后仍然失败，如实告知用户，不自动重新提交。这与下面「生成后检查」的视觉判断是两回事：接口失败连结果都没有，检查失败是有结果但画面不对。

## 生成后检查

**这一步是本 Skill 的核心机制，不是可选项。** 这套风格要求图像模型凭空推演出照片里原本不存在的两个转身角度——尤其是右侧那张完整侧脸，在真实测试里，模型有时会只转到四分之三、露出两只眼睛，而不是真正转满九十度；这不是偶发小概率，测试中出现的频率足以让每一张成品都需要过一遍检查，不能假设第一次就对。

拿到生成结果后，按顺序核对：

**核心项（任意一项不成立，判定这次生成没有达到风格要求）：**

1. 左侧那张是否转到完整九十度——只看得到一只眼睛，侧脸轮廓线（额头到下巴）清楚地印在背景上。
2. 右侧那张是否转到完整九十度、并且与左侧构成镜像——同样只看得到一只眼睛，露出的耳朵与左侧相反，鼻尖指向画面右边缘。**这是历史测试中最容易失败的一项，重点看。**
3. 中间那张是否眼睛睁着、直视镜头、真的在喊叫（张嘴、能看到上排牙齿）——不是闭眼、眯眼、像打哈欠；也不是眉头紧锁、五官扭曲的狰狞表情。喊叫的力度靠嘴张开的幅度和眼神亮度体现，不是靠皱眉和扭曲五官。
4. 左右两张是否真的整个身体在转——肩膀收窄成一条线，不是身体仍正对镜头、只有脖子扭动。
5. 取景下缘是否落在腋下到胸口之间——画面里不能出现腰部、裤子、手或小臂。

**质量项（明显不成立时一并指出，但不单独触发询问重出；跟核心项一起失败时按核心项处理）：**

6. 背景是不是冷灰色，没有被衣服颜色带暖；
7. 是否看得出机顶直闪的硬光——高光有没有溢出、阴影短不短硬不硬、背景有没有贴着人形的硬边投影；
8. 皮肤是否保留毛孔和真实质感，没有被磨成 3D 渲染或插画感；
9. 三张的身份、服装、配饰是否彼此一致、和原照片一致；
10. 画面里是否真的没有出现任何文字。

**核对结果的处理方式（不允许任何变通）：**

- **全部核心项成立**：直接进入「排版与交付」，不用额外征求同意。
- **任意一项核心项不成立**：
  1. 依然把生成结果展示给用户——这是已经花掉的一次生成，用户有权看到实际结果，不因为没通过检查就藏起来。
  2. 用一两句大白话说清楚具体是哪里不对，例如"右边这张只转了四分之三，还能看到两只眼睛，没到完整侧脸"或"中间这张像在打哈欠，不是在喊"。不要背整份判错清单。
  3. 问用户"要不要再出一张？"，然后**停下来等**。
  4. **绝不自己决定重出。** 哪怕看得出问题、哪怕很确定重出大概率会更好，也必须等用户明确说"再来一张""重出""redo"这类话才提交下一次生成。用户说"嗯""知道了""继续"这类话不构成授权，不能当成同意重出。
  5. 用户明确同意后，用同一张原照片提交**一次**新的生成，不要因为没把握就连续提交好几次；新一轮结果同样要走一遍这份检查。
  6. 用户不回应重出的问题、明确说不用、或者转向别的反馈，就停在当前结果，不再主动追问，也不要事后又补一次生成。

这条规则的原因很直接：每一次生成都会消耗用户自己的生成额度或费用，重出与否是用户的决定，不是 Skill 的自由裁量权。

## 排版与交付

生成结果本身没有任何文字，最终的 WIBI 品牌标记是随包的固化素材图（`assets/brand/logo_wibi_skill.png`），由脚本贴上——比让图像模型写字稳定得多，也是这个原因让同一张生成图能一次导出多种画幅、多种背景色。

```bash
python3 {baseDir}/scripts/compose_triptych_card.py 生成图.png --preset xhs  --out 小红书方图.png
python3 {baseDir}/scripts/compose_triptych_card.py 生成图.png --preset lock --bg black --out 手机壁纸.png
```

**画幅**（`--preset`）：

- `xhs`（2048×2048）：小红书发布用的方图，默认先出这个，不用问。
- `xhs34`（1536×2048）：3:4 竖版，比方图瘦长。用户说「3:4」「竖版」「发朋友圈」，或嫌方图里人物太挤时用这一档；不主动问。
- `lock`（1290×2796）：iPhone 锁屏/壁纸比例，照片组和 logo 的位置已经避开顶部时钟和底部手电筒/相机按钮。

**流程**：核心项检查通过后，默认先按 `xhs` 出小红书方图并交付——`xhs` 固定用纸白背景，不询问背景色，背景色定制只针对手机壁纸这个场景。交付完顺带问一句"要不要也出一张手机壁纸尺寸？背景可以选纸白或深炭黑"。用户明确要哪种背景就用 `--bg` 出对应的 `lock` 图；用户没回应或说不用，就不主动再出。用户要 3:4 竖版就把 `--preset xhs` 换成 `xhs34`，其余流程不变。

### 黑色版本的最终处理

用户选择黑色版本后，生成检查通过，必须再执行一次深色排版处理，再把文件交付给用户：

1. 统一使用排版脚本的 `--bg black`，不要直接对纸白成片做整图换色。脚本会先把三张照片面板向内裁掉少量模型自带的近白色描边，再重新补齐面板之间的缝隙和外部留白，避免黑底上出现白边。
2. 黑色主画布使用深炭黑 `#0A0A0A`；Logo 的 WIBI 网点自动换成白色，蓝色 `skill` 手写体保留。
3. 交付前放大检查三张照片的上、下、左、右边缘以及两条内部缝。发现白线、白角或边缘被误染成黑色时，先重新执行排版处理；这属于后期排版修正，不重新消耗生图次数。

用户从一开始就只要壁纸/锁屏（没提小红书方图），跳过默认的 `xhs` 交付，直接问背景色偏好、只出 `lock`；用户此前已经在照片或聊天里主动提过"锁屏""壁纸""手机背景"，同样可以直接问背景色偏好，不用先绕一圈问要不要出。

**背景色**（`--bg`，两个预设都会让 logo 自动换成看得清的颜色，不需要额外传参）：

- `paper`（默认）：纸白 `#F7F5F0`，偏暖的白，不是纯白——贴近印刷纸张的质感。
- `black`：深炭黑 `#0A0A0A`，适合暗色系锁屏；排版脚本会自动清理照片面板白边，Logo 的 WIBI 网点换成白色，`skill` 手写体保持原本的蓝色。

已知限制：多数当前可用的图像生成工具在 1:1 模式下的原生分辨率上限是 1024×1024；脚本会把照片区域放大到目标画幅（如 2048 宽），使用的是普通的高质量缩放，不是真正的超分辨率算法。日常分享清晰度足够，如果要做印刷级大图，建议在合成之后再单独跑一次超分工具。

## 给用户的交付格式

先展示最终合成图，再用一到两句简短中文写"创作思路"：说明保留了原照片的哪些辨识特征、这次的转身和光线怎么服务这张脸。不要展示完整内部 Prompt 或逐条检查过程。

当前对话第一次成功生成后附上：

`若公开分享，欢迎标注：Visual Skill by @威比 Hunter Wei.`

`仅限个人非商业使用；商业使用请先联系作者获得许可。`

`抖音、小红书同名。想看更多原创 Skill、原作者教程或参加新风格内测，可以回复"进群"。`

第二次起不再重复，除非用户询问署名、授权或交流群。

## 已知限制

- **右侧完整侧脸的命中率低于左侧。** 这是在早期稳定性测试和后续两轮共 14 位不同测试对象的完整批次中反复观察到的现象——最近一轮（v17）整批交付验收通过，但其中不少案例的右侧那张停在接近九十度、还不是完全转满，个别案例要生成不止一次才拿到完整侧脸（有案例连续两轮卡在同一检查项，第三次才过）。命中率已经随 Prompt 迭代提升，但没有到"稳定必然一次成功"，所以「生成后检查」仍是强制步骤，不因为命中率提升就降级为可选项。
- 单张照片只能提供一个真实角度，另外两个转身角度是模型的合理推演，不是照片原有内容；转身后的五官比例可能有轻微漂移，这属于这套风格机制本身的限制。
- 原生分辨率受限于所用图像工具的输出上限，见「排版与交付」的说明。
- 这套风格不适合需要保留完整环境、姿态或多人关系的照片——它只保留面部、发型、配饰和服装，其余全部替换成影棚背景。

## 使用与授权

本 Skill 的规则文本仅限个人非商业使用；商业使用请先联系作者获得许可。复制、修改、镜像或重新分发时，必须完整保留作者 `@威比 Hunter Wei.`、抖音/小红书同名备注、官方来源、`LICENSE` 和 `NOTICE`。修改版需明确标注经过修改，不得冒充官方版本。

本包不含案例原图或用户照片；`scripts/` 中的排版与更新脚本原创于本项目，随本包按同一许可分发。完整范围见 [`LICENSE`](LICENSE) 与 [`SOURCES.md`](SOURCES.md)。
