@starreel/mcp 0.1.79 → 0.1.80
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/dist/tools/produce.js +11 -8
- package/openapi.json +8 -8
- package/package.json +1 -1
- package/server.json +2 -2
package/dist/tools/produce.js
CHANGED
|
@@ -747,8 +747,11 @@ export function registerProduceTools(server, client) {
|
|
|
747
747
|
+ '\n★**很慢**:每镜要完整解码音轨,实测 6~10 秒/镜(后端限并发 4),整集几十镜要等几分钟。'
|
|
748
748
|
+ '别在产线中途反复调,放在成片前查一次。'
|
|
749
749
|
+ '\n★shots_probe_failed 是**没测成**的镜数,不代表那些镜有问题。', { episode_id: z.number().int().positive() }, async ({ episode_id }) => jsonResult(await client.produceGet(`/episodes/${episode_id}/silent-shot-audio-audit`)));
|
|
750
|
-
server.tool('get_asset_recovery', '
|
|
751
|
-
+ '\n
|
|
750
|
+
server.tool('get_asset_recovery', '列本集可恢复的**历史视频产物**(免费·只读):以前生成过、后来被覆盖掉的整集成片与逐镜视频。'
|
|
751
|
+
+ '\n用途:客户说「上一版那个成片好」「这一镜前天那条视频比现在这条好」时,从这里找回来。'
|
|
752
|
+
+ '\n★★只管视频,**不含图片帧**:首尾帧不在这里,列表里也永远不会出现。'
|
|
753
|
+
+ '客户想换回某一帧 → 用 generate_shot_frame 重出(平台带身份锚),'
|
|
754
|
+
+ '或 upload_shot_frame 登记指定图片 URL(注意它会让该帧从此不被批量重生覆盖)。'
|
|
752
755
|
+ '\n★这一步只看不改。把候选逐条讲给客户,**客户逐条点头**之后再 apply。', { episode_id: z.number().int().positive() }, async ({ episode_id }) => jsonResult(await client.produceGet(`/episodes/${episode_id}/asset-recovery`)));
|
|
753
756
|
server.tool('apply_recovered_final', '把某个**历史终拼**设为本集当前成片(免费,指针切换)。'
|
|
754
757
|
+ '\n★这会**覆盖**本集现在对外的那一版成片。先用 get_asset_recovery 列出来、'
|
|
@@ -757,15 +760,15 @@ export function registerProduceTools(server, client) {
|
|
|
757
760
|
episode_id: z.number().int().positive(),
|
|
758
761
|
merge_id: z.number().int().positive().describe('取自 get_asset_recovery 的 finals[].id'),
|
|
759
762
|
}, async ({ episode_id, merge_id }) => jsonResult(await client.producePost(`/episodes/${episode_id}/asset-recovery/finals/${merge_id}/apply`, {})));
|
|
760
|
-
server.tool('apply_recovered_candidate', '
|
|
761
|
-
+ '\n★**必须显式指定 target_storyboard_id
|
|
762
|
-
+ '猜错目标镜比不做更糟(
|
|
763
|
-
+ '\n
|
|
763
|
+
server.tool('apply_recovered_candidate', '把某条**历史镜头视频**回填到指定镜头(免费,指针切换)。★它换的是那一镜的**视频**,不是首尾帧。'
|
|
764
|
+
+ '\n★**必须显式指定 target_storyboard_id**:这条视频要回到哪一镜只有客户知道,平台不替你猜——'
|
|
765
|
+
+ '猜错目标镜比不做更糟(会把另一镜正在用的视频换掉)。'
|
|
766
|
+
+ '\n★同样是**逐条确认**:一次只回填一条,先把「哪条视频(时长/提示词)、回到第几镜」讲给客户听。', {
|
|
764
767
|
episode_id: z.number().int().positive(),
|
|
765
|
-
generation_id: z.number().int().positive().describe('取自 get_asset_recovery 的 candidates[].id'),
|
|
768
|
+
generation_id: z.number().int().positive().describe('取自 get_asset_recovery 的 candidates[].source_generation_id(响应里没有 id 这个键)'),
|
|
766
769
|
target_storyboard_id: z.number().int().positive().describe('回填到哪一镜(必填,不猜)'),
|
|
767
770
|
}, async ({ episode_id, generation_id, target_storyboard_id }) => jsonResult(await client.producePost(`/episodes/${episode_id}/asset-recovery/candidates/${generation_id}/apply`, { target_storyboard_id })));
|
|
768
|
-
server.tool('rollback_asset_recovery', '把一次已应用的恢复**退回去**(免费)。apply
|
|
771
|
+
server.tool('rollback_asset_recovery', '把一次已应用的恢复**退回去**(免费)。apply 错了就用它撤销,恢复到应用之前的状态(同样只涉及视频)。', {
|
|
769
772
|
episode_id: z.number().int().positive(),
|
|
770
773
|
event_id: z.number().int().positive().describe('取自 get_asset_recovery 的恢复事件 id'),
|
|
771
774
|
}, async ({ episode_id, event_id }) => jsonResult(await client.producePost(`/episodes/${episode_id}/asset-recovery/events/${event_id}/rollback`, {})));
|
package/openapi.json
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"openapi": "3.1.0",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "StarReel Production API",
|
|
5
|
-
"version": "0.1.
|
|
6
|
-
"description": "Turn a script into a finished, downloadable short-drama episode over REST.\n\nPipeline: script → AI rewrite → cast/scenes/props extraction → storyboards → portraits & sheets + scene plates → keyframes → video shots → TTS → final cut (.mp4).\n\n**Billing is prepaid and agent-safe**: big-ticket stages are quote-then-generate (`quote_*` returns a `quote_id`). For video, quote == actual charge. For images the quote is a *range* — models billed per reference image are priced before those are assembled, so `estimated_points` is the upper bound (size the balance by it and a run never dies half-way) and `typical_points` is the usual cost; fixed-price models return the two equal. Insufficient balance returns 402 — nothing half-runs and the account never goes negative.\n\nAuth: exchange your API key at `POST /v1/agent/token` for a 15-minute bearer token.\n\nGenerated from the @starreel/mcp v0.1.
|
|
5
|
+
"version": "0.1.80",
|
|
6
|
+
"description": "Turn a script into a finished, downloadable short-drama episode over REST.\n\nPipeline: script → AI rewrite → cast/scenes/props extraction → storyboards → portraits & sheets + scene plates → keyframes → video shots → TTS → final cut (.mp4).\n\n**Billing is prepaid and agent-safe**: big-ticket stages are quote-then-generate (`quote_*` returns a `quote_id`). For video, quote == actual charge. For images the quote is a *range* — models billed per reference image are priced before those are assembled, so `estimated_points` is the upper bound (size the balance by it and a run never dies half-way) and `typical_points` is the usual cost; fixed-price models return the two equal. Insufficient balance returns 402 — nothing half-runs and the account never goes negative.\n\nAuth: exchange your API key at `POST /v1/agent/token` for a 15-minute bearer token.\n\nGenerated from the @starreel/mcp v0.1.80 tool surface (operationIds match MCP tool names 1:1)."
|
|
7
7
|
},
|
|
8
8
|
"servers": [
|
|
9
9
|
{
|
|
@@ -2571,8 +2571,8 @@
|
|
|
2571
2571
|
"/episodes/{episode_id}/asset-recovery": {
|
|
2572
2572
|
"get": {
|
|
2573
2573
|
"operationId": "get_asset_recovery",
|
|
2574
|
-
"summary": "
|
|
2575
|
-
"description": "
|
|
2574
|
+
"summary": "列本集可恢复的**历史视频产物**(免费·只读):以前生成过、后来被覆盖掉的整集成片与逐镜视频",
|
|
2575
|
+
"description": "列本集可恢复的**历史视频产物**(免费·只读):以前生成过、后来被覆盖掉的整集成片与逐镜视频。\n用途:客户说「上一版那个成片好」「这一镜前天那条视频比现在这条好」时,从这里找回来。\n★★只管视频,**不含图片帧**:首尾帧不在这里,列表里也永远不会出现。客户想换回某一帧 → 用 generate_shot_frame 重出(平台带身份锚),或 upload_shot_frame 登记指定图片 URL(注意它会让该帧从此不被批量重生覆盖)。\n★这一步只看不改。把候选逐条讲给客户,**客户逐条点头**之后再 apply。",
|
|
2576
2576
|
"tags": [
|
|
2577
2577
|
"episodes"
|
|
2578
2578
|
],
|
|
@@ -2618,8 +2618,8 @@
|
|
|
2618
2618
|
"/episodes/{episode_id}/asset-recovery/candidates/{generation_id}/apply": {
|
|
2619
2619
|
"post": {
|
|
2620
2620
|
"operationId": "apply_recovered_candidate",
|
|
2621
|
-
"summary": "
|
|
2622
|
-
"description": "
|
|
2621
|
+
"summary": "把某条**历史镜头视频**回填到指定镜头(免费,指针切换)",
|
|
2622
|
+
"description": "把某条**历史镜头视频**回填到指定镜头(免费,指针切换)。★它换的是那一镜的**视频**,不是首尾帧。\n★**必须显式指定 target_storyboard_id**:这条视频要回到哪一镜只有客户知道,平台不替你猜——猜错目标镜比不做更糟(会把另一镜正在用的视频换掉)。\n★同样是**逐条确认**:一次只回填一条,先把「哪条视频(时长/提示词)、回到第几镜」讲给客户听。",
|
|
2623
2623
|
"tags": [
|
|
2624
2624
|
"episodes"
|
|
2625
2625
|
],
|
|
@@ -2640,7 +2640,7 @@
|
|
|
2640
2640
|
"schema": {
|
|
2641
2641
|
"type": "integer",
|
|
2642
2642
|
"exclusiveMinimum": 0,
|
|
2643
|
-
"description": "取自 get_asset_recovery 的 candidates[].id"
|
|
2643
|
+
"description": "取自 get_asset_recovery 的 candidates[].source_generation_id(响应里没有 id 这个键)"
|
|
2644
2644
|
}
|
|
2645
2645
|
}
|
|
2646
2646
|
],
|
|
@@ -2696,7 +2696,7 @@
|
|
|
2696
2696
|
"post": {
|
|
2697
2697
|
"operationId": "rollback_asset_recovery",
|
|
2698
2698
|
"summary": "把一次已应用的恢复**退回去**(免费)",
|
|
2699
|
-
"description": "把一次已应用的恢复**退回去**(免费)。apply
|
|
2699
|
+
"description": "把一次已应用的恢复**退回去**(免费)。apply 错了就用它撤销,恢复到应用之前的状态(同样只涉及视频)。",
|
|
2700
2700
|
"tags": [
|
|
2701
2701
|
"episodes"
|
|
2702
2702
|
],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@starreel/mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.80",
|
|
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.80",
|
|
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.80",
|
|
12
12
|
"transport": {
|
|
13
13
|
"type": "stdio"
|
|
14
14
|
},
|