@optima-chat/optima-agent 0.9.10 → 0.9.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/.kb-skills-managed.json +9 -9
- package/.claude/skills/ads/SKILL.md +244 -244
- package/.claude/skills/ads/template/campaign/CREATIVES.md +18 -18
- package/.claude/skills/ads/template/campaign/NOTES.md +10 -10
- package/.claude/skills/ads/template/campaign/STRATEGY.md +29 -29
- package/.claude/skills/ads/template/user/ADS.md +29 -29
- package/.claude/skills/ads/template/user/LEARNINGS.md +15 -15
- package/.claude/skills/ads/template/user/PROGRESS.md +20 -20
- package/.claude/skills/ads/template/user/README.md +25 -25
- package/.claude/skills/ads/template/user/assets/.gitignore +2 -2
- package/.claude/skills/bi/SKILL.md +131 -131
- package/.claude/skills/browser/SKILL.md +201 -201
- package/.claude/skills/channels/SKILL.md +188 -188
- package/.claude/skills/collection/SKILL.md +88 -88
- package/.claude/skills/douyin/SKILL.md +408 -408
- package/.claude/skills/ffmpeg/SKILL.md +164 -164
- package/.claude/skills/gen/SKILL.md +279 -279
- package/.claude/skills/growth/SKILL.md +90 -90
- package/.claude/skills/growth/template/ACCOUNTS.md +14 -14
- package/.claude/skills/growth/template/CALENDAR.md +7 -7
- package/.claude/skills/growth/template/COMMENTS.md +7 -7
- package/.claude/skills/growth/template/GROWTH.md +37 -37
- package/.claude/skills/growth/template/PROGRESS.md +4 -4
- package/.claude/skills/growth/template/README.md +20 -20
- package/.claude/skills/growth/template/TOPICS.md +7 -7
- package/.claude/skills/homepage/SKILL.md +177 -177
- package/.claude/skills/i18n/SKILL.md +517 -517
- package/.claude/skills/ingesting-sources/SKILL.md +94 -94
- package/.claude/skills/initializing-kb/SKILL.md +117 -117
- package/.claude/skills/instagram/SKILL.md +321 -321
- package/.claude/skills/inventory/SKILL.md +328 -328
- package/.claude/skills/kol-outreach/SKILL.md +232 -232
- package/.claude/skills/kol-outreach/template/campaign/CONFIG.md +60 -60
- package/.claude/skills/kol-outreach/template/campaign/KOLS.md +6 -6
- package/.claude/skills/kol-outreach/template/campaign/PROGRESS.md +3 -3
- package/.claude/skills/kol-outreach/template/campaign/TEMPLATES.md +88 -88
- package/.claude/skills/kol-outreach/template/merchant/BRAND.md +36 -36
- package/.claude/skills/kol-outreach/template/merchant/CAMPAIGNS.md +6 -6
- package/.claude/skills/kol-outreach/template/merchant/MERCHANT_LIMITS.md +16 -16
- package/.claude/skills/kol-outreach/template/merchant/PROGRESS.md +4 -4
- package/.claude/skills/kol-outreach/template/merchant/README.md +20 -20
- package/.claude/skills/linting-the-wiki/SKILL.md +68 -68
- package/.claude/skills/logistics/SKILL.md +180 -180
- package/.claude/skills/markdown-pdf/SKILL.md +72 -72
- package/.claude/skills/merchant/SKILL.md +110 -110
- package/.claude/skills/multigrid-poster/SKILL.md +192 -192
- package/.claude/skills/multigrid-poster/layouts/2x2.json +34 -34
- package/.claude/skills/multigrid-poster/layouts/3x3.json +43 -43
- package/.claude/skills/multigrid-poster/scripts/compose.py +116 -116
- package/.claude/skills/order/SKILL.md +452 -452
- package/.claude/skills/product/SKILL.md +379 -379
- package/.claude/skills/product-page/SKILL.md +106 -106
- package/.claude/skills/querying-the-wiki/SKILL.md +59 -59
- package/.claude/skills/reddit/SKILL.md +277 -277
- package/.claude/skills/review/SKILL.md +321 -321
- package/.claude/skills/scout/SKILL.md +575 -575
- package/.claude/skills/sentinel/SKILL.md +281 -281
- package/.claude/skills/shein/SKILL.md +246 -246
- package/.claude/skills/shipping/SKILL.md +200 -200
- package/.claude/skills/shop-content/SKILL.md +101 -101
- package/.claude/skills/shopify/SKILL.md +282 -282
- package/.claude/skills/skillify/SKILL.md +114 -114
- package/.claude/skills/taobao/SKILL.md +238 -238
- package/.claude/skills/tiktok/SKILL.md +381 -381
- package/.claude/skills/twitter/SKILL.md +302 -302
- package/.claude/skills/updating-related-pages/SKILL.md +65 -65
- package/.claude/skills/video-edit/SKILL.md +138 -138
- package/.claude/skills/video-gen/SKILL.md +630 -548
- package/.claude/skills/video-gen/templates/INDEX.md +78 -78
- package/.claude/skills/video-gen/templates/before-after-beauty.md +183 -183
- package/.claude/skills/video-gen/templates/drama-fmcg.md +183 -183
- package/.claude/skills/video-gen/templates/kol-reaction-food.md +193 -193
- package/.claude/skills/video-gen/templates/multi-point-apparel.md +185 -185
- package/.claude/skills/video-gen/templates/pain-solution-home.md +184 -184
- package/.claude/skills/video-gen/templates/pdp-360-showcase.md +189 -189
- package/.claude/skills/video-gen/templates/pdp-feature-highlight.md +182 -182
- package/.claude/skills/video-gen/templates/scene-digital.md +183 -183
- package/.claude/skills/wechat/SKILL.md +174 -174
- package/.claude/skills/xhs/SKILL.md +170 -170
- package/README.md +276 -276
- package/dist/bin/optima.js +26 -26
- package/dist/bin/serve.js +23 -23
- package/dist/bin/video-edit.d.ts +3 -0
- package/dist/bin/video-edit.d.ts.map +1 -0
- package/dist/bin/video-edit.js +153 -0
- package/dist/bin/video-edit.js.map +1 -0
- package/dist/src/agent.d.ts +1 -1
- package/dist/src/agent.js +4 -4
- package/dist/src/system-prompt.d.ts.map +1 -1
- package/dist/src/system-prompt.js +175 -173
- package/dist/src/system-prompt.js.map +1 -1
- package/dist/src/tools/memory.js +10 -10
- package/dist/src/ui/headless.js +7 -7
- package/package.json +79 -79
|
@@ -1,110 +1,110 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: merchant
|
|
3
|
-
description: "店铺基础信息管理。使用场景:查看店铺信息、更新店铺名称/描述/联系方式/发货地址。注意:运费设置用 shipping skill。"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 店铺管理
|
|
7
|
-
|
|
8
|
-
## 典型场景
|
|
9
|
-
|
|
10
|
-
| 用户说 | 命令 |
|
|
11
|
-
|--------|------|
|
|
12
|
-
| "查看店铺信息" / "我的店铺" | `commerce merchant info` |
|
|
13
|
-
| "修改店铺名称" / "更新店铺描述" | `commerce merchant update --name/--description` |
|
|
14
|
-
| "设置联系方式" | `commerce merchant update --contact-*` |
|
|
15
|
-
| "更新发货地址" | `commerce merchant update --origin-*` |
|
|
16
|
-
| "设置品牌色" / "修改主题色" / "换个颜色" | `commerce merchant update --primary-color "#1a3a5c"` |
|
|
17
|
-
|
|
18
|
-
## 不在此模块(重要)
|
|
19
|
-
|
|
20
|
-
| 用户说 | 正确位置 |
|
|
21
|
-
|--------|----------|
|
|
22
|
-
| "运费设置" / "运费模式" / "运费区域" | **shipping skill**:`commerce shipping get-mode` |
|
|
23
|
-
| "Easyship" / "快递公司" | **shipping skill**:`commerce easyship couriers` |
|
|
24
|
-
| "Stripe/支付设置" | `commerce stripe status` |
|
|
25
|
-
| "首页设置" | **homepage skill** |
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## 查看店铺信息
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
commerce merchant info
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
返回:店铺名称、描述、Logo、货币、联系信息、发货地址
|
|
36
|
-
|
|
37
|
-
**注意**:此命令不返回运费设置,运费相关请用 `commerce shipping get-mode`
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## 更新店铺信息
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
commerce merchant update [选项]
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### 基础信息
|
|
48
|
-
| 选项 | 说明 |
|
|
49
|
-
|------|------|
|
|
50
|
-
| `--name` | 店铺名称 |
|
|
51
|
-
| `--slug` | 店铺标识(影响 URL) |
|
|
52
|
-
| `--description` | 店铺描述 |
|
|
53
|
-
| `--default-currency` | 默认货币(USD, CNY 等) |
|
|
54
|
-
| `--google-ads-customer-id` | Google Ads 客户 ID(10位数字) |
|
|
55
|
-
| `--primary-color` | 品牌主色(hex 格式,如 #FF5A5F) |
|
|
56
|
-
|
|
57
|
-
### 联系方式
|
|
58
|
-
| 选项 | 说明 |
|
|
59
|
-
|------|------|
|
|
60
|
-
| `--contact-name` | 联系人 |
|
|
61
|
-
| `--contact-phone` | 联系电话 |
|
|
62
|
-
| `--contact-email` | 联系邮箱 |
|
|
63
|
-
| `--company-name` | 公司名称 |
|
|
64
|
-
|
|
65
|
-
### 发货地址
|
|
66
|
-
| 选项 | 说明 |
|
|
67
|
-
|------|------|
|
|
68
|
-
| `--origin-country-alpha2` | 国家代码(CN, US 等) |
|
|
69
|
-
| `--origin-city` | 城市 |
|
|
70
|
-
| `--origin-postal-code` | 邮编 |
|
|
71
|
-
| `--origin-line-1` | 地址行1 |
|
|
72
|
-
| `--origin-line-2` | 地址行2 |
|
|
73
|
-
| `--origin-state` | 省/州 |
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## 示例
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
# 更新名称和描述
|
|
81
|
-
commerce merchant update --name "我的小店" --description "精选好物"
|
|
82
|
-
|
|
83
|
-
# 更新联系方式
|
|
84
|
-
commerce merchant update \
|
|
85
|
-
--contact-name "张三" \
|
|
86
|
-
--contact-phone "13800138000" \
|
|
87
|
-
--contact-email "shop@example.com"
|
|
88
|
-
|
|
89
|
-
# 更新发货地址
|
|
90
|
-
commerce merchant update \
|
|
91
|
-
--origin-country-alpha2 CN \
|
|
92
|
-
--origin-city 深圳 \
|
|
93
|
-
--origin-postal-code 518000 \
|
|
94
|
-
--origin-line-1 "科技园路1号" \
|
|
95
|
-
--origin-state 广东
|
|
96
|
-
|
|
97
|
-
# 设置品牌色
|
|
98
|
-
commerce merchant update --primary-color "#1a3a5c"
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
---
|
|
102
|
-
|
|
103
|
-
## 命令参考
|
|
104
|
-
|
|
105
|
-
- `commerce merchant info` - 查看店铺信息
|
|
106
|
-
- `commerce merchant update` - 更新店铺信息
|
|
107
|
-
|
|
108
|
-
## 不确定用什么命令?
|
|
109
|
-
|
|
110
|
-
运行 `commerce --help` 查看所有模块,或 `commerce merchant --help` 查看子命令。
|
|
1
|
+
---
|
|
2
|
+
name: merchant
|
|
3
|
+
description: "店铺基础信息管理。使用场景:查看店铺信息、更新店铺名称/描述/联系方式/发货地址。注意:运费设置用 shipping skill。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 店铺管理
|
|
7
|
+
|
|
8
|
+
## 典型场景
|
|
9
|
+
|
|
10
|
+
| 用户说 | 命令 |
|
|
11
|
+
|--------|------|
|
|
12
|
+
| "查看店铺信息" / "我的店铺" | `commerce merchant info` |
|
|
13
|
+
| "修改店铺名称" / "更新店铺描述" | `commerce merchant update --name/--description` |
|
|
14
|
+
| "设置联系方式" | `commerce merchant update --contact-*` |
|
|
15
|
+
| "更新发货地址" | `commerce merchant update --origin-*` |
|
|
16
|
+
| "设置品牌色" / "修改主题色" / "换个颜色" | `commerce merchant update --primary-color "#1a3a5c"` |
|
|
17
|
+
|
|
18
|
+
## 不在此模块(重要)
|
|
19
|
+
|
|
20
|
+
| 用户说 | 正确位置 |
|
|
21
|
+
|--------|----------|
|
|
22
|
+
| "运费设置" / "运费模式" / "运费区域" | **shipping skill**:`commerce shipping get-mode` |
|
|
23
|
+
| "Easyship" / "快递公司" | **shipping skill**:`commerce easyship couriers` |
|
|
24
|
+
| "Stripe/支付设置" | `commerce stripe status` |
|
|
25
|
+
| "首页设置" | **homepage skill** |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 查看店铺信息
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
commerce merchant info
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
返回:店铺名称、描述、Logo、货币、联系信息、发货地址
|
|
36
|
+
|
|
37
|
+
**注意**:此命令不返回运费设置,运费相关请用 `commerce shipping get-mode`
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 更新店铺信息
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
commerce merchant update [选项]
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 基础信息
|
|
48
|
+
| 选项 | 说明 |
|
|
49
|
+
|------|------|
|
|
50
|
+
| `--name` | 店铺名称 |
|
|
51
|
+
| `--slug` | 店铺标识(影响 URL) |
|
|
52
|
+
| `--description` | 店铺描述 |
|
|
53
|
+
| `--default-currency` | 默认货币(USD, CNY 等) |
|
|
54
|
+
| `--google-ads-customer-id` | Google Ads 客户 ID(10位数字) |
|
|
55
|
+
| `--primary-color` | 品牌主色(hex 格式,如 #FF5A5F) |
|
|
56
|
+
|
|
57
|
+
### 联系方式
|
|
58
|
+
| 选项 | 说明 |
|
|
59
|
+
|------|------|
|
|
60
|
+
| `--contact-name` | 联系人 |
|
|
61
|
+
| `--contact-phone` | 联系电话 |
|
|
62
|
+
| `--contact-email` | 联系邮箱 |
|
|
63
|
+
| `--company-name` | 公司名称 |
|
|
64
|
+
|
|
65
|
+
### 发货地址
|
|
66
|
+
| 选项 | 说明 |
|
|
67
|
+
|------|------|
|
|
68
|
+
| `--origin-country-alpha2` | 国家代码(CN, US 等) |
|
|
69
|
+
| `--origin-city` | 城市 |
|
|
70
|
+
| `--origin-postal-code` | 邮编 |
|
|
71
|
+
| `--origin-line-1` | 地址行1 |
|
|
72
|
+
| `--origin-line-2` | 地址行2 |
|
|
73
|
+
| `--origin-state` | 省/州 |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 示例
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# 更新名称和描述
|
|
81
|
+
commerce merchant update --name "我的小店" --description "精选好物"
|
|
82
|
+
|
|
83
|
+
# 更新联系方式
|
|
84
|
+
commerce merchant update \
|
|
85
|
+
--contact-name "张三" \
|
|
86
|
+
--contact-phone "13800138000" \
|
|
87
|
+
--contact-email "shop@example.com"
|
|
88
|
+
|
|
89
|
+
# 更新发货地址
|
|
90
|
+
commerce merchant update \
|
|
91
|
+
--origin-country-alpha2 CN \
|
|
92
|
+
--origin-city 深圳 \
|
|
93
|
+
--origin-postal-code 518000 \
|
|
94
|
+
--origin-line-1 "科技园路1号" \
|
|
95
|
+
--origin-state 广东
|
|
96
|
+
|
|
97
|
+
# 设置品牌色
|
|
98
|
+
commerce merchant update --primary-color "#1a3a5c"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## 命令参考
|
|
104
|
+
|
|
105
|
+
- `commerce merchant info` - 查看店铺信息
|
|
106
|
+
- `commerce merchant update` - 更新店铺信息
|
|
107
|
+
|
|
108
|
+
## 不确定用什么命令?
|
|
109
|
+
|
|
110
|
+
运行 `commerce --help` 查看所有模块,或 `commerce merchant --help` 查看子命令。
|
|
@@ -1,192 +1,192 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: multigrid-poster
|
|
3
|
-
description: "为商家生成小红书 2×2 四宫格 / 3×3 九宫格封面图。触发场景:做小红书封面 / 小红书首图 / 种草帖封面 / 爆款封面 / 四宫格 / 九宫格。一句话指令产出 1242×1660 成片,支持自然语言迭代(换版式 / 重抽某格 / 改文案)。本 skill 只生成封面图,搜索小红书笔记 / 分析博主请用 'xhs' skill。"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 小红书多宫格封面生成
|
|
7
|
-
|
|
8
|
-
帮电商商家用 AI 图 + 通用网格布局合成小红书封面。**一句话从意图到 1242×1660 成片**,支持 4 宫格 / 9 宫格两种版式。
|
|
9
|
-
|
|
10
|
-
## Global Rules
|
|
11
|
-
|
|
12
|
-
优先级高于任何 pipeline 步骤。
|
|
13
|
-
|
|
14
|
-
1. **User-facing 不出现模型名 / 服务名**
|
|
15
|
-
status / 成本 / 进度统一用"封面生成中 / 素材生成中 / 合成封面中"。`gen image` 作为 CLI 字面值可以,但不要把整条命令原文回显给用户。
|
|
16
|
-
|
|
17
|
-
2. **花钱前必走 COST-GATE**
|
|
18
|
-
任何 `gen image` 批量调用之前必走一次成本确认。**Fast-path、迭代、重试均无例外**。2×2 = 4 张,3×3 = 9 张,SKU 拉图 = 0 张。rate 按 `gen image` 每次 1 积分估。
|
|
19
|
-
|
|
20
|
-
3. **Per-post init 是任何 pipeline 第一步**
|
|
21
|
-
出图 / 合成执行前先建目录 + cd。否则 write 写错位置。迭代场景用 `{旧id}-vN`。
|
|
22
|
-
|
|
23
|
-
4. **Anti-fabrication**
|
|
24
|
-
未在本 skill 显式列出的命令 / flag / 参数,不允许凭印象拼。`gen image` / `commerce` / `compose.py` 子命令同样适用。
|
|
25
|
-
|
|
26
|
-
5. **不自动发帖**
|
|
27
|
-
只产 PNG,**绝对不调用**任何自动登录 / 发帖 / 上传命令。完成后给路径,用户自己下载手动发。
|
|
28
|
-
|
|
29
|
-
## 工作目录
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
~/multigrid-poster/
|
|
33
|
-
├── preferences.md
|
|
34
|
-
├── history.md
|
|
35
|
-
└── posters/{post-id}/
|
|
36
|
-
├── intent.md # 用户意图 + layout + 文案
|
|
37
|
-
├── cells/cell_0..N.png # 4 或 9 张素材
|
|
38
|
-
├── cover.png # 成片
|
|
39
|
-
└── cost.md
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
整个 `~/multigrid-poster/` 是一个 git repo。每步完成后 `git add -A && git commit`。
|
|
43
|
-
|
|
44
|
-
## 启动流程
|
|
45
|
-
|
|
46
|
-
1. **首次** (`ls ~/multigrid-poster/preferences.md` 不存在) → `mkdir -p ~/multigrid-poster/posters && cd ~/multigrid-poster && git init -b main`,创建空的 `preferences.md` (字段:merchant_id / brand_name / category / xhs_account_id / default_layout) 和 `history.md` (表头:date | post-id | layout | title | parent | status)。`.gitignore` 加 `posters/**/cells/*.png` 和 `posters/**/cover.png`。
|
|
47
|
-
2. **扫未完成**:`posters/` 下有 `intent.md` 但无 `cover.png` 且 < 7 天 → 提一次"你有 N 个封面没完成"。
|
|
48
|
-
3. **读 preferences.md / history.md**,继续主流程。
|
|
49
|
-
|
|
50
|
-
## 主流程
|
|
51
|
-
|
|
52
|
-
### Step 1: 选 layout
|
|
53
|
-
|
|
54
|
-
| 用户原话 | layout | cells |
|
|
55
|
-
|---|---|---|
|
|
56
|
-
| 含"九宫格 / 9 格 / 9 张 / 清单 / N 款 / 礼物推荐 / 榜单" | **3×3** | 9 |
|
|
57
|
-
| 其他(包含"四宫格 / 4 格 / 4 张" 或没指定) | **2×2** | 4 |
|
|
58
|
-
|
|
59
|
-
### Step 2: Per-post init
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
# slug = 用户意图前 20 字内的 kebab-case
|
|
63
|
-
POST_ID="$(date +%Y%m%d-%H%M)-<slug>"
|
|
64
|
-
mkdir -p ~/multigrid-poster/posters/$POST_ID/cells
|
|
65
|
-
cd ~/multigrid-poster/posters/$POST_ID
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
迭代("换版式 / 重抽 / 改文案")时:轻迭代沿用旧目录,重迭代新建 `{旧id}-vN`。
|
|
69
|
-
|
|
70
|
-
### Step 3: 写文案
|
|
71
|
-
|
|
72
|
-
agent 自己写,不调外部生成器。约束:
|
|
73
|
-
- **title**:2 行 × 8-12 字 / 行(2×2 适合)或 2 行 × 6-10 字 / 行(3×3 标题挤)
|
|
74
|
-
- **caption**:2 行 × 15-20 字 / 行
|
|
75
|
-
- 硬禁:医疗 / 保健 / 绝对化用语(最 / 第一 / 唯一 / 100%)
|
|
76
|
-
|
|
77
|
-
写到 `intent.md`:
|
|
78
|
-
|
|
79
|
-
```markdown
|
|
80
|
-
# Intent
|
|
81
|
-
| 项目 | 值 |
|
|
82
|
-
|---|---|
|
|
83
|
-
| 用户原话 | <原话> |
|
|
84
|
-
| layout | 2x2 / 3x3 |
|
|
85
|
-
| title 行 1 | <8-12 字> |
|
|
86
|
-
| title 行 2 | <8-12 字> |
|
|
87
|
-
| caption 行 1 | <15-20 字> |
|
|
88
|
-
| caption 行 2 | <15-20 字> |
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
展示给用户:"标题'XXX / YYY',副标题'AAA / BBB'。OK 吗?"
|
|
92
|
-
- Fast-path(意图明确):告知,用户喊停才停
|
|
93
|
-
- 意图模糊:必须等确认
|
|
94
|
-
|
|
95
|
-
### Step 4: COST-GATE
|
|
96
|
-
|
|
97
|
-
**生成前必做**(包括 Fast-path / 迭代 / 重试):
|
|
98
|
-
|
|
99
|
-
> 即将生成封面(布局: 2x2 / 3x3),预计:
|
|
100
|
-
> - 素材调用: N 次(2×2=4 / 3×3=9 / SKU 拉图=0)
|
|
101
|
-
> - 预估耗时: ~X 分钟
|
|
102
|
-
> - 预估成本: ~Y 积分
|
|
103
|
-
>
|
|
104
|
-
> 继续?
|
|
105
|
-
|
|
106
|
-
用户说"继续 / 好" → 执行。"太贵 / 换便宜的" → 提议降级 (3×3 → 2×2,或 SKU 拉图)。不回应 → 等。
|
|
107
|
-
|
|
108
|
-
### Step 5: 出图
|
|
109
|
-
|
|
110
|
-
**默认走 AI 生图**。每个 cell 并行调一次:
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
# 2×2: cell 尺寸 621×830;3×3: cell 尺寸 414×420
|
|
114
|
-
gen image "<subprompt>" -W <W> -H <H> -o ./cells/cell_<i>.png -s <seed> -f png
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
`<subprompt>` 由 agent 根据用户意图为每格独立设计(不同视角 / 不同 step / 不同场景 / 不同 SKU 等)。`<seed>` 用确定性 hash(POST_ID + cell_index),迭代复用同格 seed。
|
|
118
|
-
|
|
119
|
-
**SKU 拉图模式**(用户明确说"用我店里商品图"做 listicle):
|
|
120
|
-
|
|
121
|
-
```bash
|
|
122
|
-
commerce product list --limit 9
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
下载到 `./cells/cell_0..8.png`。商品 < 9 → 降级 2×2 取前 4。商品 < 4 → 报错。
|
|
126
|
-
|
|
127
|
-
**失败容忍**:单格生图失败 → 重试 1 次(换 seed)。两次失败 → 用 `${CLAUDE_SKILL_DIR}/scripts/placeholder.png` 占位,告知用户"第 N 格失败,先占位,要重抽直接说"。
|
|
128
|
-
|
|
129
|
-
### Step 6: 合成
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
python3 $CLAUDE_SKILL_DIR/scripts/compose.py \
|
|
133
|
-
--layout $CLAUDE_SKILL_DIR/layouts/2x2.json \
|
|
134
|
-
--cells ./cells/cell_0.png ./cells/cell_1.png ... \
|
|
135
|
-
--title-line "<title 行 1>" \
|
|
136
|
-
--title-line "<title 行 2>" \
|
|
137
|
-
--caption-line "<caption 行 1>" \
|
|
138
|
-
--caption-line "<caption 行 2>" \
|
|
139
|
-
--output ./cover.png
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
依赖:Pillow(容器自带)。失败常见原因:
|
|
143
|
-
|
|
144
|
-
| 错误 | 处理 |
|
|
145
|
-
|---|---|
|
|
146
|
-
| `cell 数量不对` | layout 要求 4 / 9,检查 `--cells` 参数 |
|
|
147
|
-
| `font not found` | 检查 `$CLAUDE_SKILL_DIR/shared/fonts/` 完整 |
|
|
148
|
-
| 中文显示方块 | 同上,字体没加载 |
|
|
149
|
-
|
|
150
|
-
### Step 7: 交付
|
|
151
|
-
|
|
152
|
-
写 `cost.md`,追加 `~/multigrid-poster/history.md` 一行,告知用户:
|
|
153
|
-
|
|
154
|
-
> 封面在 `~/multigrid-poster/posters/<POST_ID>/cover.png`,可以下载发帖了。
|
|
155
|
-
> 换版式 / 改文案 / 重抽某格直接告诉我。
|
|
156
|
-
|
|
157
|
-
用户说"好 / 完美" → preferences.md `Learned` 追加一条 → commit。
|
|
158
|
-
|
|
159
|
-
## 迭代
|
|
160
|
-
|
|
161
|
-
| 类型 | 重跑步骤 | 新目录 | 成本 |
|
|
162
|
-
|---|---|---|---|
|
|
163
|
-
| 换 layout(2×2 ↔ 3×3) | 文案 → 出图 → 合成 | 是(`-vN`) | 全成本 |
|
|
164
|
-
| 重抽全部 | 出图 → 合成 | 是 | 全素材 |
|
|
165
|
-
| 重抽单格 N | 出图(单格) → 合成 | 否 | 1 素材 |
|
|
166
|
-
| 改文案 | 合成 | 否 | 0 |
|
|
167
|
-
|
|
168
|
-
**每次迭代也走 COST-GATE**,即使 0 积分。
|
|
169
|
-
|
|
170
|
-
## 错误处理
|
|
171
|
-
|
|
172
|
-
| 故障 | 处理 |
|
|
173
|
-
|---|---|
|
|
174
|
-
| `gen image` 返回 failed | 重试 1 次换 seed → 仍失败用占位图 |
|
|
175
|
-
| 超配额 / 余额不足 | 告知用户,不自动降级 |
|
|
176
|
-
| `commerce product list` < 9 | 降级 2×2 取前 4 |
|
|
177
|
-
| 会话关闭 | 状态在文件系统 + git,下次接续 |
|
|
178
|
-
|
|
179
|
-
## 相关工具
|
|
180
|
-
|
|
181
|
-
- `gen image` — 文生图(详见 `gen` skill)
|
|
182
|
-
- `commerce merchant get` / `commerce product list` — 商家档案 / 商品(详见 `merchant` skill 和 `product` skill)
|
|
183
|
-
- `compose.py` — 本 skill 自带的 Pillow 渲染器
|
|
184
|
-
|
|
185
|
-
## 流程偏好
|
|
186
|
-
|
|
187
|
-
- **信息够就直接做(Fast-path)**
|
|
188
|
-
- **`intent.md` 是可追溯产物**
|
|
189
|
-
- **每步完成立刻 git commit**
|
|
190
|
-
- **生成过程零打扰**
|
|
191
|
-
- **迭代用 `-vN` 不覆盖**
|
|
192
|
-
- **新会话有未完成先告知一次**
|
|
1
|
+
---
|
|
2
|
+
name: multigrid-poster
|
|
3
|
+
description: "为商家生成小红书 2×2 四宫格 / 3×3 九宫格封面图。触发场景:做小红书封面 / 小红书首图 / 种草帖封面 / 爆款封面 / 四宫格 / 九宫格。一句话指令产出 1242×1660 成片,支持自然语言迭代(换版式 / 重抽某格 / 改文案)。本 skill 只生成封面图,搜索小红书笔记 / 分析博主请用 'xhs' skill。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 小红书多宫格封面生成
|
|
7
|
+
|
|
8
|
+
帮电商商家用 AI 图 + 通用网格布局合成小红书封面。**一句话从意图到 1242×1660 成片**,支持 4 宫格 / 9 宫格两种版式。
|
|
9
|
+
|
|
10
|
+
## Global Rules
|
|
11
|
+
|
|
12
|
+
优先级高于任何 pipeline 步骤。
|
|
13
|
+
|
|
14
|
+
1. **User-facing 不出现模型名 / 服务名**
|
|
15
|
+
status / 成本 / 进度统一用"封面生成中 / 素材生成中 / 合成封面中"。`gen image` 作为 CLI 字面值可以,但不要把整条命令原文回显给用户。
|
|
16
|
+
|
|
17
|
+
2. **花钱前必走 COST-GATE**
|
|
18
|
+
任何 `gen image` 批量调用之前必走一次成本确认。**Fast-path、迭代、重试均无例外**。2×2 = 4 张,3×3 = 9 张,SKU 拉图 = 0 张。rate 按 `gen image` 每次 1 积分估。
|
|
19
|
+
|
|
20
|
+
3. **Per-post init 是任何 pipeline 第一步**
|
|
21
|
+
出图 / 合成执行前先建目录 + cd。否则 write 写错位置。迭代场景用 `{旧id}-vN`。
|
|
22
|
+
|
|
23
|
+
4. **Anti-fabrication**
|
|
24
|
+
未在本 skill 显式列出的命令 / flag / 参数,不允许凭印象拼。`gen image` / `commerce` / `compose.py` 子命令同样适用。
|
|
25
|
+
|
|
26
|
+
5. **不自动发帖**
|
|
27
|
+
只产 PNG,**绝对不调用**任何自动登录 / 发帖 / 上传命令。完成后给路径,用户自己下载手动发。
|
|
28
|
+
|
|
29
|
+
## 工作目录
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
~/multigrid-poster/
|
|
33
|
+
├── preferences.md
|
|
34
|
+
├── history.md
|
|
35
|
+
└── posters/{post-id}/
|
|
36
|
+
├── intent.md # 用户意图 + layout + 文案
|
|
37
|
+
├── cells/cell_0..N.png # 4 或 9 张素材
|
|
38
|
+
├── cover.png # 成片
|
|
39
|
+
└── cost.md
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
整个 `~/multigrid-poster/` 是一个 git repo。每步完成后 `git add -A && git commit`。
|
|
43
|
+
|
|
44
|
+
## 启动流程
|
|
45
|
+
|
|
46
|
+
1. **首次** (`ls ~/multigrid-poster/preferences.md` 不存在) → `mkdir -p ~/multigrid-poster/posters && cd ~/multigrid-poster && git init -b main`,创建空的 `preferences.md` (字段:merchant_id / brand_name / category / xhs_account_id / default_layout) 和 `history.md` (表头:date | post-id | layout | title | parent | status)。`.gitignore` 加 `posters/**/cells/*.png` 和 `posters/**/cover.png`。
|
|
47
|
+
2. **扫未完成**:`posters/` 下有 `intent.md` 但无 `cover.png` 且 < 7 天 → 提一次"你有 N 个封面没完成"。
|
|
48
|
+
3. **读 preferences.md / history.md**,继续主流程。
|
|
49
|
+
|
|
50
|
+
## 主流程
|
|
51
|
+
|
|
52
|
+
### Step 1: 选 layout
|
|
53
|
+
|
|
54
|
+
| 用户原话 | layout | cells |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| 含"九宫格 / 9 格 / 9 张 / 清单 / N 款 / 礼物推荐 / 榜单" | **3×3** | 9 |
|
|
57
|
+
| 其他(包含"四宫格 / 4 格 / 4 张" 或没指定) | **2×2** | 4 |
|
|
58
|
+
|
|
59
|
+
### Step 2: Per-post init
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# slug = 用户意图前 20 字内的 kebab-case
|
|
63
|
+
POST_ID="$(date +%Y%m%d-%H%M)-<slug>"
|
|
64
|
+
mkdir -p ~/multigrid-poster/posters/$POST_ID/cells
|
|
65
|
+
cd ~/multigrid-poster/posters/$POST_ID
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
迭代("换版式 / 重抽 / 改文案")时:轻迭代沿用旧目录,重迭代新建 `{旧id}-vN`。
|
|
69
|
+
|
|
70
|
+
### Step 3: 写文案
|
|
71
|
+
|
|
72
|
+
agent 自己写,不调外部生成器。约束:
|
|
73
|
+
- **title**:2 行 × 8-12 字 / 行(2×2 适合)或 2 行 × 6-10 字 / 行(3×3 标题挤)
|
|
74
|
+
- **caption**:2 行 × 15-20 字 / 行
|
|
75
|
+
- 硬禁:医疗 / 保健 / 绝对化用语(最 / 第一 / 唯一 / 100%)
|
|
76
|
+
|
|
77
|
+
写到 `intent.md`:
|
|
78
|
+
|
|
79
|
+
```markdown
|
|
80
|
+
# Intent
|
|
81
|
+
| 项目 | 值 |
|
|
82
|
+
|---|---|
|
|
83
|
+
| 用户原话 | <原话> |
|
|
84
|
+
| layout | 2x2 / 3x3 |
|
|
85
|
+
| title 行 1 | <8-12 字> |
|
|
86
|
+
| title 行 2 | <8-12 字> |
|
|
87
|
+
| caption 行 1 | <15-20 字> |
|
|
88
|
+
| caption 行 2 | <15-20 字> |
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
展示给用户:"标题'XXX / YYY',副标题'AAA / BBB'。OK 吗?"
|
|
92
|
+
- Fast-path(意图明确):告知,用户喊停才停
|
|
93
|
+
- 意图模糊:必须等确认
|
|
94
|
+
|
|
95
|
+
### Step 4: COST-GATE
|
|
96
|
+
|
|
97
|
+
**生成前必做**(包括 Fast-path / 迭代 / 重试):
|
|
98
|
+
|
|
99
|
+
> 即将生成封面(布局: 2x2 / 3x3),预计:
|
|
100
|
+
> - 素材调用: N 次(2×2=4 / 3×3=9 / SKU 拉图=0)
|
|
101
|
+
> - 预估耗时: ~X 分钟
|
|
102
|
+
> - 预估成本: ~Y 积分
|
|
103
|
+
>
|
|
104
|
+
> 继续?
|
|
105
|
+
|
|
106
|
+
用户说"继续 / 好" → 执行。"太贵 / 换便宜的" → 提议降级 (3×3 → 2×2,或 SKU 拉图)。不回应 → 等。
|
|
107
|
+
|
|
108
|
+
### Step 5: 出图
|
|
109
|
+
|
|
110
|
+
**默认走 AI 生图**。每个 cell 并行调一次:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# 2×2: cell 尺寸 621×830;3×3: cell 尺寸 414×420
|
|
114
|
+
gen image "<subprompt>" -W <W> -H <H> -o ./cells/cell_<i>.png -s <seed> -f png
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
`<subprompt>` 由 agent 根据用户意图为每格独立设计(不同视角 / 不同 step / 不同场景 / 不同 SKU 等)。`<seed>` 用确定性 hash(POST_ID + cell_index),迭代复用同格 seed。
|
|
118
|
+
|
|
119
|
+
**SKU 拉图模式**(用户明确说"用我店里商品图"做 listicle):
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
commerce product list --limit 9
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
下载到 `./cells/cell_0..8.png`。商品 < 9 → 降级 2×2 取前 4。商品 < 4 → 报错。
|
|
126
|
+
|
|
127
|
+
**失败容忍**:单格生图失败 → 重试 1 次(换 seed)。两次失败 → 用 `${CLAUDE_SKILL_DIR}/scripts/placeholder.png` 占位,告知用户"第 N 格失败,先占位,要重抽直接说"。
|
|
128
|
+
|
|
129
|
+
### Step 6: 合成
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
python3 $CLAUDE_SKILL_DIR/scripts/compose.py \
|
|
133
|
+
--layout $CLAUDE_SKILL_DIR/layouts/2x2.json \
|
|
134
|
+
--cells ./cells/cell_0.png ./cells/cell_1.png ... \
|
|
135
|
+
--title-line "<title 行 1>" \
|
|
136
|
+
--title-line "<title 行 2>" \
|
|
137
|
+
--caption-line "<caption 行 1>" \
|
|
138
|
+
--caption-line "<caption 行 2>" \
|
|
139
|
+
--output ./cover.png
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
依赖:Pillow(容器自带)。失败常见原因:
|
|
143
|
+
|
|
144
|
+
| 错误 | 处理 |
|
|
145
|
+
|---|---|
|
|
146
|
+
| `cell 数量不对` | layout 要求 4 / 9,检查 `--cells` 参数 |
|
|
147
|
+
| `font not found` | 检查 `$CLAUDE_SKILL_DIR/shared/fonts/` 完整 |
|
|
148
|
+
| 中文显示方块 | 同上,字体没加载 |
|
|
149
|
+
|
|
150
|
+
### Step 7: 交付
|
|
151
|
+
|
|
152
|
+
写 `cost.md`,追加 `~/multigrid-poster/history.md` 一行,告知用户:
|
|
153
|
+
|
|
154
|
+
> 封面在 `~/multigrid-poster/posters/<POST_ID>/cover.png`,可以下载发帖了。
|
|
155
|
+
> 换版式 / 改文案 / 重抽某格直接告诉我。
|
|
156
|
+
|
|
157
|
+
用户说"好 / 完美" → preferences.md `Learned` 追加一条 → commit。
|
|
158
|
+
|
|
159
|
+
## 迭代
|
|
160
|
+
|
|
161
|
+
| 类型 | 重跑步骤 | 新目录 | 成本 |
|
|
162
|
+
|---|---|---|---|
|
|
163
|
+
| 换 layout(2×2 ↔ 3×3) | 文案 → 出图 → 合成 | 是(`-vN`) | 全成本 |
|
|
164
|
+
| 重抽全部 | 出图 → 合成 | 是 | 全素材 |
|
|
165
|
+
| 重抽单格 N | 出图(单格) → 合成 | 否 | 1 素材 |
|
|
166
|
+
| 改文案 | 合成 | 否 | 0 |
|
|
167
|
+
|
|
168
|
+
**每次迭代也走 COST-GATE**,即使 0 积分。
|
|
169
|
+
|
|
170
|
+
## 错误处理
|
|
171
|
+
|
|
172
|
+
| 故障 | 处理 |
|
|
173
|
+
|---|---|
|
|
174
|
+
| `gen image` 返回 failed | 重试 1 次换 seed → 仍失败用占位图 |
|
|
175
|
+
| 超配额 / 余额不足 | 告知用户,不自动降级 |
|
|
176
|
+
| `commerce product list` < 9 | 降级 2×2 取前 4 |
|
|
177
|
+
| 会话关闭 | 状态在文件系统 + git,下次接续 |
|
|
178
|
+
|
|
179
|
+
## 相关工具
|
|
180
|
+
|
|
181
|
+
- `gen image` — 文生图(详见 `gen` skill)
|
|
182
|
+
- `commerce merchant get` / `commerce product list` — 商家档案 / 商品(详见 `merchant` skill 和 `product` skill)
|
|
183
|
+
- `compose.py` — 本 skill 自带的 Pillow 渲染器
|
|
184
|
+
|
|
185
|
+
## 流程偏好
|
|
186
|
+
|
|
187
|
+
- **信息够就直接做(Fast-path)**
|
|
188
|
+
- **`intent.md` 是可追溯产物**
|
|
189
|
+
- **每步完成立刻 git commit**
|
|
190
|
+
- **生成过程零打扰**
|
|
191
|
+
- **迭代用 `-vN` 不覆盖**
|
|
192
|
+
- **新会话有未完成先告知一次**
|