---
name: sophnet-sticker-edit
description: Use when the user wants sticker or emoji image-to-image on Sophnet—apply art styles to one source image, with random preset style, a new random style on request, or a user-specified style.
---

# Sophnet Sticker Edit（表情包图生图）

## 何时使用

- 要把**已有图片**做成聊天用**表情包 / 贴图**风格（图生图），且走 Sophnet。
- 用户要**随机画风**、**换风格**，或**说清楚想要什么画风**。
- **不适用**：没有参考图的纯生成；需先用生图类 skill 出底图，再编辑。

## 图片来源与路径

用户在对话里上传的图片，通常会落在工作区的 **`media/inbound/images/`**。必须从 **Media Understanding** 日志里取**已解析的完整路径**，不要凭印象拼相对路径。

典型日志形态：

```
[Media Understanding] Resolved relative path: "media/inbound/images/xxx.jpg" -> "/absolute/path/to/workspace/media/inbound/images/xxx.jpg"
```

路径规则：

- **`--image`** 可为 URL、data URI、或可读的本地文件路径；本地文件会由脚本转为 data URI。
- **仅 1 张图**；多图请改用 `sophnet-image-edit`。

**找不到输入图或脚本报路径不存在时**：

1. 再查一遍 Media Understanding 是否给出新的解析路径，优先使用日志里的**绝对路径**。
2. 在运行环境里确认该文件存在且可读（工作区是否一致、是否被清理）。
3. 仍没有可用路径时：**请用户重新上传**这张图，或改用**可直连的图片 URL**；不要编造路径强行调用。

## 生成步骤

1. **按上一节**确定唯一一张输入图的路径或 URL。
2. **选画风**（三选一，互斥）：
   - 首次或用户只说「随机」：**`--random-style`**。
   - 用户说「换个风格」且没指定具体画名：再次 **`--random-style`**，并加上 **`--avoid-style <上一轮输出的 SELECTED_STYLE_ID>`**，减少连续撞同一种。
   - 用户指定了名字且能对上预设：**`--style <id>`**（可先 **`--list-styles`** 看 id）。
   - 用户用自然语言描述画风：**`--style-custom "……"`**。
3. **补充画面**（可选）：用 **`--prompt`** 只改表情、动作、小道具、背景等；**不要**把整段画风描写塞进 **`--prompt`**，画风交给上一步参数。
4. **执行**：`uv run --project {baseDir} python {baseDir}/scripts/edit_sticker_image.py` + 上述参数 + **恰好一张** **`--image`**。需要可先 **`--dry-run`**。
5. **读结果**：从标准输出取 **`SELECTED_STYLE_ID` / `SELECTED_STYLE_NAME`**（告知用户本轮画风）、**`IMAGE_URL`** 等；若有 **`PREVIEW_PATH`** 一并说明。

### 常用命令

| 场景 | 示例 |
| --- | --- |
| 随机 + 单图 | `uv run --project {baseDir} python {baseDir}/scripts/edit_sticker_image.py --random-style --image "media/inbound/images/a.png"` |
| 换风格（避开上一轮） | `... --random-style --avoid-style <上轮ID> --image "..."` |
| 指定预设 | `... --style <id> --image "..."` |
| 自定义画风 | `... --style-custom "……" --image "..."` |
| 加一句画面补充 | 在以上命令末尾加 `--prompt "……"` |

## 约束与易错点

- **仅支持 1 张参考图**；传入 0 张或多张时脚本会报错并提示改用 `sophnet-image-edit`。
- **换风格**时仍使用**同一张**参考图（或用户明确更换后的**单张**新图路径）。
- 不要把长篇风格说明只写在 **`--prompt`** 而不同步使用 **`--style-custom`**（或预设 id），以免和随机/预设逻辑拧巴。
- 输出给用户时按下方模板填值，不要随意改模板结构；可提示保留 **`SELECTED_STYLE_ID`** 供下次 `--avoid-style`。

与通用图片编辑 skill 相同的输出字段（任务状态、链接等）照常解析；本 skill 额外关注 **`SELECTED_STYLE_*`**。

## 输出模板

```
✅ 表情包图生图完成！

🎲 **本次画风**：SELECTED_STYLE_NAME
🖼️ **结果图片**：![image](IMAGE_URL)
⚠️**提示**: 本内容有AI生成，图片保存24小时，请及时下载！
```

如有 `PREVIEW_PATH`，在模板后补充：

```
📁 **本地预览**：PREVIEW_PATH
```
