@starreel/mcp 0.1.12 → 0.1.13
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/SKILL.md +8 -1
- package/dist/tools/produce.js +21 -5
- package/package.json +1 -1
- package/server.json +2 -2
package/SKILL.md
CHANGED
|
@@ -82,6 +82,12 @@ content that will be rejected.
|
|
|
82
82
|
user is authorized to use (their own voice, or a rights-holder's written
|
|
83
83
|
consent). `clone_voice` is billed per voice (auto-refunded on failure).
|
|
84
84
|
Never clone a public figure's or third party's voice without authorization.
|
|
85
|
+
Cloning needs **no character and no drama** — `clone_voice` returns a
|
|
86
|
+
`voice_id` (e.g. `lib:12`) you can immediately audition with
|
|
87
|
+
`speak_with_voice` (any text → downloadable audio URL). Bind it to a
|
|
88
|
+
character with `set_character_voice` only when you actually need it to
|
|
89
|
+
dub a shot. Always pass that same `voice_id` — never a raw number from
|
|
90
|
+
somewhere else.
|
|
85
91
|
|
|
86
92
|
6. **Follow the pipeline order — do not skip.** `set_script` → `rewrite_script`
|
|
87
93
|
→ `extract_assets` → portraits → storyboards → frames → videos. Always
|
|
@@ -145,7 +151,8 @@ refund on failure); you never compensate manually.
|
|
|
145
151
|
- **Shots → video**: `quote/generate_storyboards`, `get_storyboards`,
|
|
146
152
|
`quote/generate_frames`, `chain_frames`, `quote/generate_videos`
|
|
147
153
|
- **Audio**: `generate_tts` (required before final cut), `clone_voice`,
|
|
148
|
-
`set_character_voice`, `list_voices`, `
|
|
154
|
+
`speak_with_voice`, `set_character_voice`, `list_voices`, `delete_voice`,
|
|
155
|
+
`generate_bgm`, `replace_shot_dialogue`
|
|
149
156
|
- **Finish**: `compose_episode`, `get_final_cut`, `get_export`,
|
|
150
157
|
`generate_episode_poster`, `generate_cover`
|
|
151
158
|
- **Edit**: `edit_video_shot`, `regenerate_shot_video`, `split_shot`,
|
package/dist/tools/produce.js
CHANGED
|
@@ -315,9 +315,13 @@ export function registerProduceTools(server, client) {
|
|
|
315
315
|
}, async ({ drama_id, ...fields }) => jsonResult(await client.producePost(`/dramas/${drama_id}/products`, fields)));
|
|
316
316
|
server.tool('list_products', '广告项目:列出商品库。免费。', { drama_id: z.number().int().positive() }, async ({ drama_id }) => jsonResult(await client.produceGet(`/dramas/${drama_id}/products`)));
|
|
317
317
|
// ========== AI 声音克隆(voice cloning)==========
|
|
318
|
-
|
|
318
|
+
// 音色是**独立资产**:克隆 → 试听下载,全程不需要角色。绑角色只是「要出片」时的
|
|
319
|
+
// 可选下游动作。voice_id 形如 `lib:12`,克隆/列表/试听/绑定四处同一命名空间。
|
|
320
|
+
server.tool('clone_voice', '从一段**已授权**的音频样本克隆音色,返回 voice_id。**不需要先有角色或剧目**。' +
|
|
319
321
|
'⚠️ 样本必须是本人/持权人**同意授权**的声音(否则侵权,与真人/版权门同理)。' +
|
|
320
|
-
'
|
|
322
|
+
'样本会自动转写出配套文本(零样本克隆需要),10 秒左右清晰人声即可,别用纯音乐/静音。' +
|
|
323
|
+
'按平台价计费(每个音色一口价)。克隆完可直接 speak_with_voice 试听下载;' +
|
|
324
|
+
'只有要用它配音出片时,才需要再 set_character_voice 绑到角色。', {
|
|
321
325
|
name: z.string().min(1).describe('音色命名(便于管理)'),
|
|
322
326
|
sample_file_path: z.string().optional().describe('本地授权音频样本路径(mp3/wav/m4a,自动上传;与 sample_url 二选一)'),
|
|
323
327
|
sample_url: z.string().optional().describe('已上传到 COS 的样本 URL(与 sample_file_path 二选一)'),
|
|
@@ -330,7 +334,19 @@ export function registerProduceTools(server, client) {
|
|
|
330
334
|
throw new Error('需要 sample_file_path(本地样本自动上传)或 sample_url(已上传的 URL)');
|
|
331
335
|
return jsonResult(await client.producePost('/voice-clones', notes ? { name, sample_url: url, notes } : { name, sample_url: url }));
|
|
332
336
|
});
|
|
333
|
-
server.tool('
|
|
334
|
-
|
|
335
|
-
|
|
337
|
+
server.tool('speak_with_voice', '让某个音色说一段任意文本,返回可下载的音频 URL。**不需要角色、不需要剧目**——' +
|
|
338
|
+
'克隆完先用它验收音色像不像,或直接把音频拿去别处用。按文本长度计费(tts 档)。', {
|
|
339
|
+
voice_id: z.string().describe('来自 clone_voice / list_voices 的 voice_id(形如 lib:12)'),
|
|
340
|
+
text: z.string().min(1).max(500).describe('要让这个音色说的话(上限 500 字)'),
|
|
341
|
+
}, async ({ voice_id, text }) => {
|
|
342
|
+
const id = String(voice_id).replace(/^lib:/, '');
|
|
343
|
+
return jsonResult(await client.producePost(`/voice-clones/${id}/speak`, { text }));
|
|
344
|
+
});
|
|
345
|
+
server.tool('list_voices', '列出可用音色:我克隆的私有音色 + 平台公共音色(voice_id/名字/试听样本)。免费。', {}, async () => jsonResult(await client.produceGet('/voice-clones')));
|
|
346
|
+
server.tool('delete_voice', '删除我音色库里的一个克隆音色(平台公共音色不可删)。免费。', { voice_id: z.string().describe('形如 lib:12') }, async ({ voice_id }) => jsonResult(await client.produceDelete(`/voice-clones/${String(voice_id).replace(/^lib:/, '')}`)));
|
|
347
|
+
server.tool('set_character_voice', '把音色绑到某角色,之后 generate_tts 用它给该角色配音。免费。' +
|
|
348
|
+
'只有要出片时才需要这步——克隆和试听都不需要角色。', {
|
|
349
|
+
character_id: z.number().int().positive(),
|
|
350
|
+
voice_id: z.string().describe('来自 clone_voice / list_voices 的 voice_id(形如 lib:12)'),
|
|
351
|
+
}, async ({ character_id, voice_id }) => jsonResult(await client.producePost(`/characters/${character_id}/voice`, { voice_id })));
|
|
336
352
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@starreel/mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.13",
|
|
4
4
|
"mcpName": "ai.starreel/starreel",
|
|
5
5
|
"description": "StarReel MCP server — drive the AI short-drama production pipeline (script → storyboards → frames → video → final cut) from Claude, Cursor, or any MCP client",
|
|
6
6
|
"license": "MIT",
|
package/server.json
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
|
|
3
3
|
"name": "ai.starreel/starreel",
|
|
4
4
|
"description": "Turn a script into a finished, downloadable short-drama episode — via MCP or REST.",
|
|
5
|
-
"version": "0.1.
|
|
5
|
+
"version": "0.1.13",
|
|
6
6
|
"websiteUrl": "https://starreel.ai",
|
|
7
7
|
"packages": [
|
|
8
8
|
{
|
|
9
9
|
"registryType": "npm",
|
|
10
10
|
"identifier": "@starreel/mcp",
|
|
11
|
-
"version": "0.1.
|
|
11
|
+
"version": "0.1.13",
|
|
12
12
|
"transport": { "type": "stdio" },
|
|
13
13
|
"environmentVariables": [
|
|
14
14
|
{
|