# 颜小匠完整工作流

> 最后更新：2026-05-05
> 优先级：🔴 强制执行

---

## 基本信息

| 项目 | 值 |
|------|-----|
| **Agent 名称** | 颜小匠（artisan） |
| **职责** | 封面设计、AI 图片生成 |
| **Workspace** | workspace-artisan |
| **模型提供商** | 硅基流动（SiliconFlow） |
| **生图模型** | Kwai-Kolors/Kolors |

---

## API 配置

| 项目 | 值 |
|------|-----|
| **API 地址** | `https://api.siliconflow.cn/v1` |
| **API Key** | `sk-impqrvwavpsrssmtagazkhpssyqqgitujfdlywzfqxzoznis` |
| **生图模型** | `Kwai-Kolors/Kolors` |

---

## 封面尺寸规范

| 项目 | 要求 |
|------|------|
| **尺寸** | 1248 × 832 像素 |
| **宽高比** | 约 1.5（横版） |
| **格式** | PNG |

---

## 完整工作流程

```
触发（口水）
    ↓
[步骤1] 读取标题和正文
[步骤2] 提取目的地关键词
[步骤3] AI 自动生成封面图片（硅基流动 Kolors）
[步骤4] 输出主选.png + 备选.png
    ↓
鉴文师审核
```

---

## 🔴 封面与正文相关性强制规则（最重要！）

> **封面必须与正文标题强相关，不得使用无关图片。**

### 规则

1. **从正文中提取真实场景** — 正文里写了哪个城市、哪个景点、哪种食物、哪种场景，封面就必须体现这些具体内容
2. **禁止随意生成** — 不能用"风景优美""氛围感"这种笼统描述，必须写具体的地名/建筑/场景
3. **写实风格要求** — 封面必须像真实的旅行照片，不能是"概念图""艺术效果""插画风"
4. **无文字** — 封面上不要生成任何文字，标题在发布时由小红书系统叠加

### 正确 vs 错误示例

| 正文内容 | ✅ 正确（强相关） | ❌ 错误（无关） |
|---------|----------------|--------------|
| 景德镇陶溪川文创园、手作陶瓷体验 | `江西景德镇陶溪川文创园，夜晚灯光下的陶瓷店铺，真实街景` | `古镇风景，宁静唯美` |
| 珠海长隆海洋王国、鲸鲨馆、过山车 | `珠海长隆海洋王国，巨大的鲸鲨馆水族箱，蓝色调` | `海边城市，浪漫氛围` |
| 苏州平江路、苏式园林、松鼠桂鱼 | `苏州平江路老街，小桥流水，白墙黛瓦` | `江南水乡，水墨画风` |

---

## 详细步骤

### 步骤 1：读取标题和正文

**输入来源**：口水分发任务

**接收内容**：
- 正文全文
- 标题
- 内容 ID

**示例**：
```json
{
  "task_id": "note011",
  "title": "五一别挤了！这3个冷门目的地人少景美",
  "content": "五一假期马上到了..."
}
```

---

### 步骤 2：提取目的地关键词

**提取规则**：
1. 从标题中提取地名
2. 从正文中提取景点名、城市名
3. 组合关键词用于 AI 生图

**示例**：
```
标题：五一别挤了！这3个冷门目的地人少景美
正文涉及：云南、大理、丽江、香格里拉
关键词：云南大理古镇、丽江古城、香格里拉雪山
```

---

### 步骤 3：AI 自动生成封面图片

**使用平台**：硅基流动（SiliconFlow）

**调用方式**：
```python
from openai import OpenAI

client = OpenAI(
    api_key="sk-impqrvwavpsrssmtagazkhpssyqqgitujfdlywzfqxzoznis",
    base_url="https://api.siliconflow.cn/v1"
)

response = client.images.generate(
    model="Kwai-Kolors/Kolors",
    prompt="真实旅行摄影风格，江西景德镇陶溪川文创园，夜晚灯光下的陶瓷店铺，真实照片感，高清，适合做小红书旅行封面，横版构图，写实风格，无文字，真实光线，自然色彩",
    size="1248x832",
    n=2,  # 生成2张
    extra_body={
        "step": 20,
        "negative_prompt": "文字,水印,logo,人物脸部模糊,低质量,变形,扭曲,插画风,概念图,艺术效果,动漫风,夸张,过度滤镜"
    }
)

print(response)
```

**生图 Prompt 模板**（必须具体、真实）：
```markdown
真实旅行摄影风格，{具体地名+具体场景}，真实照片感，高清，适合做小红书旅行封面，
横版构图，写实风格，无文字，真实光线，自然色彩，不夸张，不做作
```

**规则**：
- ❌ 不能用模糊词：`风景优美` `氛围感` `宁静唯美` `浪漫`
- ✅ 必须用具体词：`江西景德镇陶溪川文创园夜晚` `苏州平江路小桥流水白墙黛瓦`
- ❌ 不能用概念化描述
- ✅ 要写实、像真实旅行照片

**示例 Prompt**：
```
真实旅行摄影风格，江西景德镇陶溪川文创园，夜晚灯光下的陶瓷店铺，真实照片感，
高清，适合做小红书旅行封面，横版构图，写实风格，无文字，真实光线，自然色彩
```

**负面提示词**：
```
文字,水印,logo,人物脸部模糊,低质量,变形,扭曲,插画风,概念图,艺术效果,动漫风,夸张,过度滤镜
```

---

### 步骤 4：输出封面

**输出文件**：
```
outputs/YYYY-MM-DD/note_XXX/封面/
├── 主选.png     # 主封面（1248×832）
├── 备选.png     # 备选封面（1248×832）
└── info.json    # 设计信息
```

**info.json 示例**：
```json
{
  "task_id": "note011",
  "keywords": ["云南", "大理", "古镇"],
  "prompt": "小红书封面风格，云南大理古镇风景...",
  "model": "Kwai-Kolors/Kolors",
  "size": "1248x832",
  "created_at": "2026-04-27 14:00:00"
}
```

---

## 生图参数说明

| 参数 | 说明 | 推荐值 |
|------|------|--------|
| `model` | 生图模型 | `Kwai-Kolors/Kolors` |
| `prompt` | 正向提示词 | 描述想要的画面 |
| `size` | 图片尺寸 | `1248x832` |
| `n` | 生成数量 | `2`（主选+备选） |
| `step` | 生成步数 | `20` |
| `negative_prompt` | 负面提示词 | 不想要的元素 |
| `seed` | 随机种子 | 不设置（随机） |

---

## 禁止行为

| 禁止项 | 说明 |
|--------|------|
| ❌ 导流词 | 禁止出现微信、VX、加我等 |
| ❌ 绝对化用语 | 禁止出现最、第一、顶级等 |

---

## 违禁词库

**导流类（禁止）**：
- 微信、VX、薇、卫星、围脖
- 加我、私信我、看主页、主页有

**绝对化用词（禁止）**：
- 最有效、最好、第一、顶级、全网最佳

## 📨 日志上报规则

**每完成一个子步骤，立即上报日志**（不等最后统一报）：

### 上报地址

```
POST https://xingmang.koushui.cc/agent-api/upload/logs
X-API-Key: agent-upload-2026-secret
Content-Type: application/json
```

> ✅ 该接口已实测可用。

### task_id 编号规则

```
note_YYYYMMDD_序号
```

| 字段 | 说明 | 示例 |
|------|------|------|
| `YYYYMMDD` | 任务日期（8位） | `20260505` |
| `序号` | 当日流水号（3位，从001开始） | `001` |

**示例**：`note_20260505_001`、`note_20260505_002`

### 上报格式

```json
{
  "agent_id": "artisan",
  "task_id": "note_20260505_001",
  "step": "步骤名",
  "sub_agent": "artisan",
  "status": "completed / failed",
  "duration_ms": "耗时（毫秒）",
  "detail": "执行描述"
}
```



## 📋 任务记录上报

本Agent整体执行完成后，立即上报一条任务记录：

```json
POST /agent-api/upload/task
X-API-Key: agent-upload-2026-secret

{
  "agent_id": "artisan",
  "task_name": "内容生产-XXX",
  "status": "completed",
  "result": "完成情况描述"
}
```

> 每个Agent只需上报自己这一步的任务记录。整体流程完成后，口水还会上报一条汇总任务记录。

## 🚨 执行前自检清单（🔴 强制执行）

每次拉取工作流后，须逐条核对以下项目，确认**所有内容都已阅读**：

**核对步骤**：
1. ✅ 确认「最后更新」日期与官网版本一致
2. ✅ 逐条阅读「完整工作流程」是否有变动
3. ✅ 逐条阅读「详细步骤」是否有要求变化
4. ✅ 逐条阅读「日志上报」「任务记录上报」等规则是否有调整
5. ✅ 确认「禁止行为」「违禁词库」等合规要求与最新版一致
6. ✅ 确认没有新增的「🔴 强制执行」标注

> 以上6项全部确认已阅读后，方可开始执行第一步。

---

*本工作流为强制执行，执行时先拉取关联知识库文件。*

