@amaster.ai/pi-video-gen 0.1.8 → 0.1.10
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/README.md +57 -111
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +217 -40
- package/dist/index.js.map +1 -1
- package/dist/jobs/store.d.ts.map +1 -1
- package/dist/jobs/store.js +5 -7
- package/dist/jobs/store.js.map +1 -1
- package/dist/prompt.d.ts +28 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +112 -0
- package/dist/prompt.js.map +1 -0
- package/dist/providers/ark.d.ts +2 -2
- package/dist/providers/ark.d.ts.map +1 -1
- package/dist/providers/ark.js +47 -4
- package/dist/providers/ark.js.map +1 -1
- package/dist/providers/dashscope.js +2 -2
- package/dist/providers/dashscope.js.map +1 -1
- package/dist/providers/kling.js +2 -2
- package/dist/providers/kling.js.map +1 -1
- package/dist/providers/minimax.js +2 -2
- package/dist/providers/minimax.js.map +1 -1
- package/dist/providers/models.d.ts.map +1 -1
- package/dist/providers/models.js +9 -0
- package/dist/providers/models.js.map +1 -1
- package/dist/providers/newapi.js +2 -2
- package/dist/providers/newapi.js.map +1 -1
- package/dist/providers/openrouter.js +2 -2
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/request.d.ts +11 -1
- package/dist/providers/request.d.ts.map +1 -1
- package/dist/providers/request.js +56 -0
- package/dist/providers/request.js.map +1 -1
- package/dist/providers/task.d.ts +4 -0
- package/dist/providers/task.d.ts.map +1 -1
- package/dist/providers/task.js +10 -2
- package/dist/providers/task.js.map +1 -1
- package/dist/render.d.ts +6 -4
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +53 -11
- package/dist/render.js.map +1 -1
- package/dist/types.d.ts +49 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -5
- package/skills/video-gen/SKILL.md +90 -171
- package/skills/video-gen/evals.json +65 -0
- package/skills/video-gen/references/seedance-personas.json +72626 -0
- package/skills/video-gen/references/seedance-public-material-library.md +269 -0
- package/skills/video-gen/scripts/search-seedance-personas.mjs +75 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
# Seedance public material library
|
|
2
|
+
|
|
3
|
+
Source: [Volcengine Seedance 2.0 experience center](https://exp.volcengine.com/ark/gen_video?model=doubao-seedance-2-0-260128), **素材库**.
|
|
4
|
+
|
|
5
|
+
Observed on 2026-08-24. The Asset IDs below were copied directly from each
|
|
6
|
+
material card's **ID** button; they were not inferred from labels or media URLs.
|
|
7
|
+
The catalog may change independently of the API. It currently contains 71
|
|
8
|
+
images, 36 videos, and 80 audio samples. The separate **虚拟人像库** is not
|
|
9
|
+
duplicated here; search it through the persona workflow in `SKILL.md` §A2.
|
|
10
|
+
|
|
11
|
+
## Selection contract
|
|
12
|
+
|
|
13
|
+
1. Use this file when the user wants a built-in public image, action, camera
|
|
14
|
+
move, visual style, environment, character, or sample voice.
|
|
15
|
+
2. Put the selected value below into `referenceAssets[].assetId` unchanged,
|
|
16
|
+
with the matching `image`, `video`, or `audio` modality. The extension
|
|
17
|
+
normalizes it to Ark's `asset://...` request form.
|
|
18
|
+
3. These IDs prove what the observed experience-center account returned on
|
|
19
|
+
the observation date; Volcengine does not document them here as permanent
|
|
20
|
+
or cross-account identifiers. If the active account rejects one, reopen
|
|
21
|
+
the current experience center and copy that card's ID again.
|
|
22
|
+
4. Keep duplicate labels distinct. The video library has two entries named
|
|
23
|
+
`仰卧起坐`; select them by their different Asset IDs.
|
|
24
|
+
5. Preserve modality order. In prompt prose refer to attachments as `Image 1`,
|
|
25
|
+
`Video 1`, or `Audio 1`, never by Asset ID.
|
|
26
|
+
6. Do not reuse these public-material IDs as preset-avatar IDs. For a
|
|
27
|
+
recognizable real person, follow §A2 and obtain a current-account trusted
|
|
28
|
+
portrait or preset-avatar Asset ID from the user.
|
|
29
|
+
|
|
30
|
+
Example:
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"referenceAssets": [
|
|
35
|
+
{ "modality": "image", "assetId": "asset-..." },
|
|
36
|
+
{ "modality": "video", "assetId": "asset-..." },
|
|
37
|
+
{ "modality": "audio", "assetId": "asset-..." }
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Images (71)
|
|
43
|
+
|
|
44
|
+
### Clothing — 服饰 (17)
|
|
45
|
+
|
|
46
|
+
| Display label | Asset ID |
|
|
47
|
+
|---|---|
|
|
48
|
+
| 东北大花袄 | `asset-20260224190652-2qjpm` |
|
|
49
|
+
| 云锦马褂 | `asset-20260224190652-gjxrs` |
|
|
50
|
+
| 前卫时尚装 | `asset-20260224190652-qh7jl` |
|
|
51
|
+
| 卫衣 | `asset-20260224190652-xpr4v` |
|
|
52
|
+
| 太空服 | `asset-20260224190652-6g4vg` |
|
|
53
|
+
| 旗袍 | `asset-20260224190652-sp4wk` |
|
|
54
|
+
| 校服 | `asset-20260224190652-zqllz` |
|
|
55
|
+
| 毛衣 | `asset-20260224190652-5nqsp` |
|
|
56
|
+
| 汉服 | `asset-20260224190652-qbgxp` |
|
|
57
|
+
| 波西米亚装 | `asset-20260224190652-kpb7f` |
|
|
58
|
+
| 洛丽塔装 | `asset-20260224190652-n8sd2` |
|
|
59
|
+
| 洛可可装 | `asset-20260224190652-n8g6z` |
|
|
60
|
+
| 港风服装 | `asset-20260224190652-xjqsq` |
|
|
61
|
+
| 牛仔装 | `asset-20260224190652-4ww76` |
|
|
62
|
+
| 童装 | `asset-20260224190652-xcjwr` |
|
|
63
|
+
| 西装 | `asset-20260224190652-lgzsw` |
|
|
64
|
+
| 黑暗哥特装 | `asset-20260224190652-9hcbf` |
|
|
65
|
+
|
|
66
|
+
### Environments — 环境 (18)
|
|
67
|
+
|
|
68
|
+
| Display label | Asset ID |
|
|
69
|
+
|---|---|
|
|
70
|
+
| 中式宫廷 | `asset-20260224190652-wcjmn` |
|
|
71
|
+
| 元宇宙锚点站台 | `asset-20260224190652-b89h7` |
|
|
72
|
+
| 北极冰屋画廊 | `asset-20260224190652-g2xn9` |
|
|
73
|
+
| 印第安星空剧场 | `asset-20260224190652-xf7sd` |
|
|
74
|
+
| 古祠银杏书屋 | `asset-20260224190652-ch6g5` |
|
|
75
|
+
| 埃及沙漠书店 | `asset-20260224190652-p62jn` |
|
|
76
|
+
| 无人便利店迷宫 | `asset-20260224190652-vpdzh` |
|
|
77
|
+
| 星云穿梭机 | `asset-20260224190652-kgm2p` |
|
|
78
|
+
| 榫卯古城防御战 | `asset-20260224190652-hgjcj` |
|
|
79
|
+
| 毛茸茸耶耶之家 | `asset-20260224190652-kc7cz` |
|
|
80
|
+
| 潮汐实验室 | `asset-20260224190653-vxlbm` |
|
|
81
|
+
| 火山熔岩工厂 | `asset-20260224190652-lmt6v` |
|
|
82
|
+
| 蒸汽档案馆 | `asset-20260224190653-lx8xv` |
|
|
83
|
+
| 运河酒肆 | `asset-20260224190653-c8cbc` |
|
|
84
|
+
| 都市外卖海盗船 | `asset-20260224190653-bspwx` |
|
|
85
|
+
| 雾凇林海 | `asset-20260224190653-mxcs5` |
|
|
86
|
+
| 露天蓝冰洞 | `asset-20260224190653-kjptw` |
|
|
87
|
+
| 魔法直播间 | `asset-20260224190653-86wsc` |
|
|
88
|
+
|
|
89
|
+
### Visual styles — 画风 (18)
|
|
90
|
+
|
|
91
|
+
| Display label | Asset ID |
|
|
92
|
+
|---|---|
|
|
93
|
+
| 丙烯插画 | `asset-20260224190653-kt76l` |
|
|
94
|
+
| 体素风 | `asset-20260224190653-pshz6` |
|
|
95
|
+
| 像素风 | `asset-20260224190653-9trv8` |
|
|
96
|
+
| 印象派油画 | `asset-20260224190653-95mql` |
|
|
97
|
+
| 叙事插画 | `asset-20260224190653-8p42x` |
|
|
98
|
+
| 国漫 | `asset-20260224190653-m5cjp` |
|
|
99
|
+
| 折纸 | `asset-20260224190653-dpjsd` |
|
|
100
|
+
| 拼贴画报 | `asset-20260224190653-8wcxx` |
|
|
101
|
+
| 日漫 | `asset-20260224190653-tlgbc` |
|
|
102
|
+
| 欧美3D动画 | `asset-20260224190653-cmlmc` |
|
|
103
|
+
| 水墨 | `asset-20260224190653-wg4hr` |
|
|
104
|
+
| 水彩 | `asset-20260224190653-7cj2s` |
|
|
105
|
+
| 版画 | `asset-20260224190653-7p424` |
|
|
106
|
+
| 皮影戏 | `asset-20260224190653-hv2mt` |
|
|
107
|
+
| 简笔画 | `asset-20260224190653-87hrk` |
|
|
108
|
+
| 素描 | `asset-20260224190654-nv4db` |
|
|
109
|
+
| 线稿 | `asset-20260224190653-bsjpj` |
|
|
110
|
+
| 黏土风 | `asset-20260224190653-tjwpv` |
|
|
111
|
+
|
|
112
|
+
### Characters — 角色 (18)
|
|
113
|
+
|
|
114
|
+
| Display label | Asset ID |
|
|
115
|
+
|---|---|
|
|
116
|
+
| 剑穗松鼠侠 | `asset-20260224190653-ts8h4` |
|
|
117
|
+
| 古风小生 | `asset-20260224190654-fpcs4` |
|
|
118
|
+
| 围脖树懒君 | `asset-20260224190654-twfhw` |
|
|
119
|
+
| 塔罗占星者 | `asset-20260224190654-jcnvv` |
|
|
120
|
+
| 小伞蝾螈 | `asset-20260224190654-hhsz7` |
|
|
121
|
+
| 拖鞋柯基犬 | `asset-20260224190654-qqp65` |
|
|
122
|
+
| 月老 | `asset-20260224190654-p66c8` |
|
|
123
|
+
| 机车雪狼王 | `asset-20260224190654-vznsm` |
|
|
124
|
+
| 棉花糖羊驼 | `asset-20260224190654-r7spk` |
|
|
125
|
+
| 粽子宝宝 | `asset-20260224190654-m4mgr` |
|
|
126
|
+
| 精灵耳女孩 | `asset-20260224190654-rhkbk` |
|
|
127
|
+
| 绒帽鼠宝 | `asset-20260224190654-hcsf6` |
|
|
128
|
+
| 绒毛墨镜青蛙 | `asset-20260224190654-4xxp2` |
|
|
129
|
+
| 肚兜胖橘猫 | `asset-20260224190654-6dmkh` |
|
|
130
|
+
| 背带花猪猪 | `asset-20260224190654-cmgl4` |
|
|
131
|
+
| 财神 | `asset-20260224190654-mmlrk` |
|
|
132
|
+
| 钢爪猎鹰哥 | `asset-20260224190654-gtl8r` |
|
|
133
|
+
| 魔法帽小熊 | `asset-20260224190654-zf97b` |
|
|
134
|
+
|
|
135
|
+
## Videos (36)
|
|
136
|
+
|
|
137
|
+
### Actions — 动作 (18)
|
|
138
|
+
|
|
139
|
+
| Display label | Asset ID |
|
|
140
|
+
|---|---|
|
|
141
|
+
| 华尔兹 | `asset-20260224190654-hrc6j` |
|
|
142
|
+
| 仰卧起坐 (entry 1) | `asset-20260224190654-plxzb` |
|
|
143
|
+
| 仰卧起坐 (entry 2) | `asset-20260224190655-wh6q5` |
|
|
144
|
+
| 作揖 | `asset-20260224190654-sccrq` |
|
|
145
|
+
| 偷感很重 | `asset-20260224190654-dcmbc` |
|
|
146
|
+
| 勾手转圈圈 | `asset-20260224190654-rkfwp` |
|
|
147
|
+
| 打斗 | `asset-20260224190655-9vtsk` |
|
|
148
|
+
| 扭秧歌 | `asset-20260224190654-9nbbl` |
|
|
149
|
+
| 扮鬼脸 | `asset-20260224190654-hf5mv` |
|
|
150
|
+
| 投掷武器 | `asset-20260224190655-8q5f8` |
|
|
151
|
+
| 拥抱 | `asset-20260224190655-5r8fd` |
|
|
152
|
+
| 摇头扭胯 | `asset-20260224190655-7fkx2` |
|
|
153
|
+
| 比心 | `asset-20260224190655-rptx6` |
|
|
154
|
+
| 牵手带走 | `asset-20260224190655-gfv4h` |
|
|
155
|
+
| 狼吞虎咽 | `asset-20260224190655-8v44l` |
|
|
156
|
+
| 美式打招呼 | `asset-20260224190655-btnhx` |
|
|
157
|
+
| 跑酷跨栏 | `asset-20260224190655-sf8bz` |
|
|
158
|
+
| 跪地求饶 | `asset-20260224190655-lqs52` |
|
|
159
|
+
|
|
160
|
+
### Camera and transition references — 运镜 (18)
|
|
161
|
+
|
|
162
|
+
| Display label | Asset ID |
|
|
163
|
+
|---|---|
|
|
164
|
+
| FPV坠楼旋转俯冲 | `asset-20260224190655-67n7r` |
|
|
165
|
+
| POV到过肩镜头 | `asset-20260224190655-zzg8c` |
|
|
166
|
+
| RIG镜头 | `asset-20260224190655-b9w7v` |
|
|
167
|
+
| 产品摄影旋转 | `asset-20260224190655-zfgg6` |
|
|
168
|
+
| 子弹时间转场 | `asset-20260224190655-hjgxp` |
|
|
169
|
+
| 宠物儿童鱼眼镜头 | `asset-20260224190655-n8qw9` |
|
|
170
|
+
| 延时摄影 | `asset-20260224190655-7gsx7` |
|
|
171
|
+
| 微距镜头拉伸至广角 | `asset-20260224190655-95kps` |
|
|
172
|
+
| 手持摄影 | `asset-20260224190655-sflmb` |
|
|
173
|
+
| 无人机低飞追拍拉升 | `asset-20260224190655-xgrff` |
|
|
174
|
+
| 时空隧道 | `asset-20260224190655-bkdh9` |
|
|
175
|
+
| 焦点偏移 | `asset-20260224190655-kk469` |
|
|
176
|
+
| 焦距压缩 | `asset-20260224190655-4jrc8` |
|
|
177
|
+
| 物品飞出伸手接住 | `asset-20260224190656-69q5r` |
|
|
178
|
+
| 物品飞出变装转场 | `asset-20260224190656-5lqm4` |
|
|
179
|
+
| 特写转大全景 | `asset-20260224190656-xl9m7` |
|
|
180
|
+
| 英雄时刻 | `asset-20260224190656-7tx7w` |
|
|
181
|
+
| 镜面反射 | `asset-20260224190656-54sg9` |
|
|
182
|
+
|
|
183
|
+
## Audio samples (80)
|
|
184
|
+
|
|
185
|
+
Preview durations are the lengths shown by the experience center, not a
|
|
186
|
+
promise about generated-video duration.
|
|
187
|
+
|
|
188
|
+
| Display label | Preview | Asset ID |
|
|
189
|
+
|---|---:|---|
|
|
190
|
+
| 少年_少女-女-少儿故事 | 11.4s | `asset-20260224190656-dw78f` |
|
|
191
|
+
| 青年-女-流畅女声 | 8.5s | `asset-20260224190656-7nvns` |
|
|
192
|
+
| 青年-女-魅力女友 | 9.1s | `asset-20260224190656-qr992` |
|
|
193
|
+
| 青年-女-黑猫侦探社咪仔 | 11.7s | `asset-20260224190656-f5wvc` |
|
|
194
|
+
| 青年-女-鸡汤女 | 9.3s | `asset-20260224190656-8t7zs` |
|
|
195
|
+
| 青年-男-大壹 | 7s | `asset-20260224190656-tnphs` |
|
|
196
|
+
| 青年-男-儒雅逸辰 | 8.8s | `asset-20260224190656-7n7cg` |
|
|
197
|
+
| 青年-男-儒雅公子 | 6.3s | `asset-20260224190656-k9d7r` |
|
|
198
|
+
| 少年_少女-女-萌丫头 | 9.8s | `asset-20260224190656-mdwbp` |
|
|
199
|
+
| 青年-女-贴心女声 | 11.5s | `asset-20260224190656-ddltv` |
|
|
200
|
+
| 中年-女-鸡汤妹妹 | 11.9s | `asset-20260224190656-mcs77` |
|
|
201
|
+
| 少年_少女-男-亮嗓萌仔 | 5.7s | `asset-20260224190656-6g84r` |
|
|
202
|
+
| 儿童-男-懒音绵宝 | 3.7s | `asset-20260224190656-srtjr` |
|
|
203
|
+
| 青年-女-俏皮女声 | 8s | `asset-20260224190656-jtswz` |
|
|
204
|
+
| 中年-男-四郎 | 12.4s | `asset-20260224190656-hczx4` |
|
|
205
|
+
| 中年-男-广告解说 | 11.6s | `asset-20260224190656-tqq2h` |
|
|
206
|
+
| 儿童-女-樱桃丸子 | 9.6s | `asset-20260224190656-gz5kb` |
|
|
207
|
+
| 中年-女-武则天 | 14.9s | `asset-20260224190656-rb4s7` |
|
|
208
|
+
| 儿童-女-佩奇猪 | 10s | `asset-20260224190656-7r964` |
|
|
209
|
+
| 少年_少女-男-熊二 | 9.4s | `asset-20260224190656-mrbs2` |
|
|
210
|
+
| 青年-男-猴哥 | 15s | `asset-20260224190656-sq5tk` |
|
|
211
|
+
| 儿童-男-天才童声 | 13.1s | `asset-20260224190656-6gkjj` |
|
|
212
|
+
| 青年-女-温柔小雅 | 13s | `asset-20260224190656-zrb6k` |
|
|
213
|
+
| 青年-男-咆哮小哥 | 5.5s | `asset-20260224190656-q8n9n` |
|
|
214
|
+
| 青年-男-醇厚低音 | 11.2s | `asset-20260224190656-ld557` |
|
|
215
|
+
| 青年-女-倾心少女 | 4.1s | `asset-20260224190656-459nf` |
|
|
216
|
+
| 青年-女-文静毛毛 | 8.5s | `asset-20260224190656-pc9ns` |
|
|
217
|
+
| 青年-男-悠悠君子 | 8.1s | `asset-20260224190656-wbz44` |
|
|
218
|
+
| 中年-男-Noah | 7.1s | `asset-20260224190656-dqph5` |
|
|
219
|
+
| 青年-男-Xavier | 7.5s | `asset-20260224190656-k7px4` |
|
|
220
|
+
| 儿童-男-KevinMcCallister | 9.8s | `asset-20260224190656-kl5gf` |
|
|
221
|
+
| 老年-男-ClownMan | 9.7s | `asset-20260224190656-ccgx8` |
|
|
222
|
+
| 青年-男-Chucky | 9.2s | `asset-20260224190656-5rq88` |
|
|
223
|
+
| 青年-男-Jigsaw | 8.5s | `asset-20260224190656-qltvl` |
|
|
224
|
+
| 青年-男-Zayne | 8.9s | `asset-20260224190657-j7z55` |
|
|
225
|
+
| 青年-女-Charlie | 5.1s | `asset-20260224190657-qx2rl` |
|
|
226
|
+
| 青年-女-贴心妹妹 | 5.6s | `asset-20260224190657-6z7hn` |
|
|
227
|
+
| 青年-女-小何2.0 | 6.4s | `asset-20260224190657-558cg` |
|
|
228
|
+
| 青年-男-小天2.0 | 6.2s | `asset-20260224190657-nd59k` |
|
|
229
|
+
| 青年-男-云舟2.0 | 6.8s | `asset-20260224190657-kdxqk` |
|
|
230
|
+
| 青年-女-爽快思思 | 9.6s | `asset-20260224190657-jk6vd` |
|
|
231
|
+
| 青年-女-儿童绘本 | 11.1s | `asset-20260224190657-9lsgk` |
|
|
232
|
+
| 青年-女-温柔女神 | 9.7s | `asset-20260224190657-6kzhw` |
|
|
233
|
+
| 青年-女-暖阳女声 | 10.2s | `asset-20260224190657-fjfcj` |
|
|
234
|
+
| 青年-男-儒雅男友 | 4.6s | `asset-20260224190657-pljvq` |
|
|
235
|
+
| 少年_少女-男-炀炀 | 5s | `asset-20260224190657-bj5zq` |
|
|
236
|
+
| 青年-女-Vivi | 11.6s | `asset-20260224190657-4hks7` |
|
|
237
|
+
| 青年-男-解说小明 | 11.4s | `asset-20260224190657-dw6jj` |
|
|
238
|
+
| 青年-女-清新女声 | 10.9s | `asset-20260224190657-8tcfp` |
|
|
239
|
+
| 青年-女-Tina老师 | 9.9s | `asset-20260224190657-smk6c` |
|
|
240
|
+
| 少年_少女-男-温暖少年 | 6.8s | `asset-20260224190657-x2g8f` |
|
|
241
|
+
| 青年-男-温暖阿虎 | 5.8s | `asset-20260224190657-w9bjq` |
|
|
242
|
+
| 少年_少女-女-灿灿 | 6.3s | `asset-20260224190657-qm7zm` |
|
|
243
|
+
| 青年-男-温柔小哥 | 8.4s | `asset-20260224190657-dk6kj` |
|
|
244
|
+
| 青年-男-率真小伙 | 7.1s | `asset-20260224190657-qn26k` |
|
|
245
|
+
| 青年-男-活泼爽朗 | 5.4s | `asset-20260224190657-7dgr4` |
|
|
246
|
+
| 青年-男-开朗轻快 | 5.4s | `asset-20260224190657-t55r8` |
|
|
247
|
+
| 青年-女-温柔文雅 | 8.7s | `asset-20260224190657-tx5bj` |
|
|
248
|
+
| 青年-男-暖心体贴 | 5.8s | `asset-20260224190657-jjj56` |
|
|
249
|
+
| 青年-女-知性温婉 | 9.1s | `asset-20260224190657-79wft` |
|
|
250
|
+
| 中年-女-心灵鸡汤 | 13s | `asset-20260224190657-dtx47` |
|
|
251
|
+
| 青年-女-开朗姐姐 | 12.6s | `asset-20260224190657-hjk6p` |
|
|
252
|
+
| 青年-女-清澈梓梓 | 10.4s | `asset-20260224190657-dmrnn` |
|
|
253
|
+
| 青年-女-甜美小源 | 13.2s | `asset-20260224190657-kvrll` |
|
|
254
|
+
| 少年_少女-女-邻家女孩 | 10.4s | `asset-20260224190657-c25mw` |
|
|
255
|
+
| 青年-男-清爽男大 | 10.8s | `asset-20260224190657-zzv99` |
|
|
256
|
+
| 青年-女-知性女声 | 11.3s | `asset-20260224190658-8h2gv` |
|
|
257
|
+
| 青年-女-魅力苏菲 | 7.4s | `asset-20260224190657-4vxtg` |
|
|
258
|
+
| 青年-男-开朗学长 | 7s | `asset-20260224190658-wg7vs` |
|
|
259
|
+
| 青年-女-温柔白月光 | 6s | `asset-20260224190658-mwq8b` |
|
|
260
|
+
| 青年-女-贴心闺蜜 | 4.8s | `asset-20260224190658-l5jhn` |
|
|
261
|
+
| 青年-女-初恋女友 | 5.3s | `asset-20260224190658-mdd62` |
|
|
262
|
+
| 青年-女-纯澈女生 | 4s | `asset-20260224190658-xf6fq` |
|
|
263
|
+
| 青年-男-冷酷哥哥 | 8.8s | `asset-20260224190658-llks5` |
|
|
264
|
+
| 青年-男-快乐小东 | 12.7s | `asset-20260224190658-k8s4v` |
|
|
265
|
+
| 青年-男-阳光阿辰 | 6.4s | `asset-20260224190658-cfzpd` |
|
|
266
|
+
| 青年-女-知心姐姐 | 6.9s | `asset-20260224190658-7kss5` |
|
|
267
|
+
| 儿童-女-元气甜妹 | 6.5s | `asset-20260224190658-dbmhj` |
|
|
268
|
+
| 青年-男-机灵小伙 | 5.4s | `asset-20260224190658-wx5qt` |
|
|
269
|
+
| 青年-女-亲切女声 | 5.6s | `asset-20260224190658-9xwll` |
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { readFileSync } from 'node:fs';
|
|
4
|
+
import { dirname, join } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
|
|
7
|
+
const args = process.argv.slice(2);
|
|
8
|
+
|
|
9
|
+
if (args.includes('--help')) {
|
|
10
|
+
process.stdout.write(`Usage: node search-seedance-personas.mjs --query <terms> [options]\n\nOptions:\n --framing any|half|full Require an available framing (default: any)\n --limit <1-50> Maximum returned matches (default: 10)\n --help Show this help\n`);
|
|
11
|
+
process.exit(0);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function option(name, fallback) {
|
|
15
|
+
const index = args.indexOf(name);
|
|
16
|
+
if (index === -1) return fallback;
|
|
17
|
+
const value = args[index + 1];
|
|
18
|
+
if (!value || value.startsWith('--')) throw new Error(`${name} requires a value`);
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
try {
|
|
23
|
+
const query = option('--query', '').trim();
|
|
24
|
+
const framing = option('--framing', 'any');
|
|
25
|
+
const limit = Number.parseInt(option('--limit', '10'), 10);
|
|
26
|
+
|
|
27
|
+
if (!query) throw new Error('--query is required');
|
|
28
|
+
if (!['any', 'half', 'full'].includes(framing)) {
|
|
29
|
+
throw new Error('--framing must be any, half, or full');
|
|
30
|
+
}
|
|
31
|
+
if (!Number.isInteger(limit) || limit < 1 || limit > 50) {
|
|
32
|
+
throw new Error('--limit must be an integer from 1 to 50');
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const catalogPath = join(
|
|
36
|
+
dirname(fileURLToPath(import.meta.url)),
|
|
37
|
+
'..',
|
|
38
|
+
'references',
|
|
39
|
+
'seedance-personas.json',
|
|
40
|
+
);
|
|
41
|
+
const personas = JSON.parse(readFileSync(catalogPath, 'utf8'));
|
|
42
|
+
const terms = query.toLocaleLowerCase('zh-CN').split(/\s+/).filter(Boolean);
|
|
43
|
+
const matches = personas.filter((persona) => {
|
|
44
|
+
const half = persona.assets['半身像'];
|
|
45
|
+
const full = persona.assets['全身照'];
|
|
46
|
+
if (framing === 'half' && !half) return false;
|
|
47
|
+
if (framing === 'full' && !full) return false;
|
|
48
|
+
const searchable = [persona.group_id, persona['人物标签'], persona['人物小传'], half, full]
|
|
49
|
+
.filter(Boolean)
|
|
50
|
+
.join(' ')
|
|
51
|
+
.toLocaleLowerCase('zh-CN');
|
|
52
|
+
return terms.every((term) => searchable.includes(term));
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
const results = matches.slice(0, limit).map((persona) => {
|
|
56
|
+
const half = persona.assets['半身像'];
|
|
57
|
+
const full = persona.assets['全身照'];
|
|
58
|
+
const selectedFraming = framing === 'full' || (!half && full) ? 'full' : 'half';
|
|
59
|
+
return {
|
|
60
|
+
groupId: persona.group_id,
|
|
61
|
+
label: persona['人物标签'],
|
|
62
|
+
bio: persona['人物小传'],
|
|
63
|
+
assets: { half: half || null, full: full || null },
|
|
64
|
+
selectedFraming,
|
|
65
|
+
selectedAssetId: selectedFraming === 'full' ? full : half,
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
process.stdout.write(
|
|
70
|
+
`${JSON.stringify({ query, framing, totalMatches: matches.length, returned: results.length, results }, null, 2)}\n`,
|
|
71
|
+
);
|
|
72
|
+
} catch (error) {
|
|
73
|
+
console.error(`[pi-video-gen] ${error instanceof Error ? error.message : 'persona search failed'}`);
|
|
74
|
+
process.exitCode = 1;
|
|
75
|
+
}
|