@starreel/mcp 0.1.67 → 0.1.68
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 +10 -0
- package/dist/tools/produce.js +19 -0
- package/openapi.json +96 -2
- package/package.json +1 -1
- package/server.json +2 -2
package/SKILL.md
CHANGED
|
@@ -652,6 +652,16 @@ to close") tells the vendor to fit that entire sequence into each 3-second shot.
|
|
|
652
652
|
each**: `apply_recovered_final`, or `apply_recovered_candidate` (which
|
|
653
653
|
requires an explicit `target_storyboard_id` — the platform will not guess
|
|
654
654
|
which shot a recovered frame belongs to). `rollback_asset_recovery` undoes one.
|
|
655
|
+
- **Final-cut review (advisory, not a gate)**: `review_final_cut` — unrendered
|
|
656
|
+
shots, subtitles that won't fit on screen, characters without an identity
|
|
657
|
+
anchor, axis jumps, plus one LLM proofreading pass (that pass **costs money**;
|
|
658
|
+
send `proofread: false` to skip it). `can_export: false` only means something
|
|
659
|
+
is worth a look — the platform will **not** block `compose_episode` or
|
|
660
|
+
`get_export`. Walk the findings past the user and let them decide.
|
|
661
|
+
`audit_silent_shot_audio` catches reaction shots that should be silent but are
|
|
662
|
+
louder than the speaking shots around them (only relevant when the drama uses
|
|
663
|
+
clip audio); it is **slow** — 6–10s per shot — so run it once before the final
|
|
664
|
+
cut, not repeatedly mid-pipeline.
|
|
655
665
|
- **Marketing export**: `export_sheet_compare` / `get_sheet_compare` — the
|
|
656
666
|
character-sheet-vs-frame comparison sheet. **Off by default per drama**; a 403
|
|
657
667
|
or `enabled: false` means the user has to switch it on in the drama settings.
|
package/dist/tools/produce.js
CHANGED
|
@@ -629,6 +629,25 @@ export function registerProduceTools(server, client) {
|
|
|
629
629
|
server.tool('get_final_cut', '查某一集成片状态与下载链接。status=completed 时返回 download_url(我方 COS 直链,可直接下载)。免费。' +
|
|
630
630
|
'★bgm_stale=true 表示配乐在成片之后生成/改动、尚未进成片:重新 compose_episode(免费)即可,别用 re-render。', { episode_id: z.number().int().positive() }, async ({ episode_id }) => jsonResult(await client.produceGet(`/episodes/${episode_id}/final-cut`)));
|
|
631
631
|
server.tool('get_export', '查某一集导出/母版状态(成片终拼后的可下载母版)。免费。', { episode_id: z.number().int().positive() }, async ({ episode_id }) => jsonResult(await client.produceGet(`/episodes/${episode_id}/export`)));
|
|
632
|
+
server.tool('review_final_cut', '**成片体检**:导出前把整集过一遍——没出图的镜、字幕一屏放不下、人物没有身份锚、'
|
|
633
|
+
+ '镜头连续性(跳轴)、以及一次错别字通读。'
|
|
634
|
+
+ '\n★**建议式,不阻断**:can_export=false 只代表有 block 级问题值得先看,'
|
|
635
|
+
+ '平台不会拦着你 compose_episode / get_export。把 findings 逐条讲给客户'
|
|
636
|
+
+ '(code=问题类型、shots=命中的镜号、action=该调哪个工具去修),**由客户决定修还是照发**。'
|
|
637
|
+
+ '\n★费用:本身免费,但默认会跑一次 LLM 错别字通读——那一步**要花钱**。'
|
|
638
|
+
+ '不需要通读就传 proofread=false(更快也不扣费)。'
|
|
639
|
+
+ '\n★字幕与错别字那几项的**原文**在官网体检面板里看,这里只给结论与镜号。', {
|
|
640
|
+
episode_id: z.number().int().positive(),
|
|
641
|
+
proofread: z.boolean().optional()
|
|
642
|
+
.describe('是否跑 LLM 错别字通读(默认 true,**要花钱**);传 false 跳过这一步'),
|
|
643
|
+
}, async ({ episode_id, proofread }) => jsonResult(await client.produceGet(`/episodes/${episode_id}/qc${proofread === false ? '?proofread=0' : ''}`)));
|
|
644
|
+
server.tool('audit_silent_shot_audio', '查**无台词镜里的异常发声**:本该沉默的反应镜,音轨却比同场说话镜还响——'
|
|
645
|
+
+ '成片里的表现是「有人在画外乱说话」。免费。'
|
|
646
|
+
+ '\n★用在**原声剧**上(use_clip_audio=true,即直接用 AI 视频自带声音那种)。'
|
|
647
|
+
+ '走 TTS 配音的片子不会有这个问题。'
|
|
648
|
+
+ '\n★**很慢**:每镜要完整解码音轨,实测 6~10 秒/镜(后端限并发 4),整集几十镜要等几分钟。'
|
|
649
|
+
+ '别在产线中途反复调,放在成片前查一次。'
|
|
650
|
+
+ '\n★shots_probe_failed 是**没测成**的镜数,不代表那些镜有问题。', { episode_id: z.number().int().positive() }, async ({ episode_id }) => jsonResult(await client.produceGet(`/episodes/${episode_id}/silent-shot-audio-audit`)));
|
|
632
651
|
server.tool('get_asset_recovery', '列本集可恢复的**历史产物**(免费·只读):以前生成过、后来被覆盖掉的成片与候选帧。'
|
|
633
652
|
+ '\n用途:客户说「上一版那个好」「前天那张图比现在这张好」时,从这里找回来。'
|
|
634
653
|
+ '\n★这一步只看不改。把候选逐条讲给客户,**客户逐条点头**之后再 apply。', { episode_id: z.number().int().positive() }, async ({ episode_id }) => jsonResult(await client.produceGet(`/episodes/${episode_id}/asset-recovery`)));
|
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 → portraits & sheets → storyboards → 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). 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.68",
|
|
6
|
+
"description": "Turn a script into a finished, downloadable short-drama episode over REST.\n\nPipeline: script → AI rewrite → cast/scenes/props extraction → portraits & sheets → storyboards → 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). 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.68 tool surface (operationIds match MCP tool names 1:1)."
|
|
7
7
|
},
|
|
8
8
|
"servers": [
|
|
9
9
|
{
|
|
@@ -4925,6 +4925,53 @@
|
|
|
4925
4925
|
}
|
|
4926
4926
|
}
|
|
4927
4927
|
},
|
|
4928
|
+
"/episodes/{episode_id}/qc": {
|
|
4929
|
+
"get": {
|
|
4930
|
+
"operationId": "review_final_cut",
|
|
4931
|
+
"summary": "**成片体检**:导出前把整集过一遍——没出图的镜、字幕一屏放不下、人物没有身份锚、镜头连续性(跳轴)、以及一次错别字通读",
|
|
4932
|
+
"description": "**成片体检**:导出前把整集过一遍——没出图的镜、字幕一屏放不下、人物没有身份锚、镜头连续性(跳轴)、以及一次错别字通读。\n★**建议式,不阻断**:can_export=false 只代表有 block 级问题值得先看,平台不会拦着你 compose_episode / get_export。把 findings 逐条讲给客户(code=问题类型、shots=命中的镜号、action=该调哪个工具去修),**由客户决定修还是照发**。\n★费用:本身免费,但默认会跑一次 LLM 错别字通读——那一步**要花钱**。不需要通读就传 proofread=false(更快也不扣费)。\n★字幕与错别字那几项的**原文**在官网体检面板里看,这里只给结论与镜号。",
|
|
4933
|
+
"tags": [
|
|
4934
|
+
"episodes"
|
|
4935
|
+
],
|
|
4936
|
+
"parameters": [
|
|
4937
|
+
{
|
|
4938
|
+
"name": "episode_id",
|
|
4939
|
+
"in": "path",
|
|
4940
|
+
"required": true,
|
|
4941
|
+
"schema": {
|
|
4942
|
+
"type": "integer",
|
|
4943
|
+
"exclusiveMinimum": 0
|
|
4944
|
+
}
|
|
4945
|
+
}
|
|
4946
|
+
],
|
|
4947
|
+
"responses": {
|
|
4948
|
+
"200": {
|
|
4949
|
+
"description": "StarReel envelope",
|
|
4950
|
+
"content": {
|
|
4951
|
+
"application/json": {
|
|
4952
|
+
"schema": {
|
|
4953
|
+
"type": "object",
|
|
4954
|
+
"properties": {
|
|
4955
|
+
"code": {
|
|
4956
|
+
"type": "integer"
|
|
4957
|
+
},
|
|
4958
|
+
"message": {
|
|
4959
|
+
"type": "string"
|
|
4960
|
+
},
|
|
4961
|
+
"data": {
|
|
4962
|
+
"description": "Operation result payload"
|
|
4963
|
+
}
|
|
4964
|
+
}
|
|
4965
|
+
}
|
|
4966
|
+
}
|
|
4967
|
+
}
|
|
4968
|
+
},
|
|
4969
|
+
"402": {
|
|
4970
|
+
"description": "Insufficient prepaid balance (never overdrafts); response carries `needed` points"
|
|
4971
|
+
}
|
|
4972
|
+
}
|
|
4973
|
+
}
|
|
4974
|
+
},
|
|
4928
4975
|
"/episodes/{episode_id}/re-render": {
|
|
4929
4976
|
"post": {
|
|
4930
4977
|
"operationId": "rerender_episode",
|
|
@@ -5759,6 +5806,53 @@
|
|
|
5759
5806
|
}
|
|
5760
5807
|
}
|
|
5761
5808
|
},
|
|
5809
|
+
"/episodes/{episode_id}/silent-shot-audio-audit": {
|
|
5810
|
+
"get": {
|
|
5811
|
+
"operationId": "audit_silent_shot_audio",
|
|
5812
|
+
"summary": "查**无台词镜里的异常发声**:本该沉默的反应镜,音轨却比同场说话镜还响——成片里的表现是「有人在画外乱说话」",
|
|
5813
|
+
"description": "查**无台词镜里的异常发声**:本该沉默的反应镜,音轨却比同场说话镜还响——成片里的表现是「有人在画外乱说话」。免费。\n★用在**原声剧**上(use_clip_audio=true,即直接用 AI 视频自带声音那种)。走 TTS 配音的片子不会有这个问题。\n★**很慢**:每镜要完整解码音轨,实测 6~10 秒/镜(后端限并发 4),整集几十镜要等几分钟。别在产线中途反复调,放在成片前查一次。\n★shots_probe_failed 是**没测成**的镜数,不代表那些镜有问题。",
|
|
5814
|
+
"tags": [
|
|
5815
|
+
"episodes"
|
|
5816
|
+
],
|
|
5817
|
+
"parameters": [
|
|
5818
|
+
{
|
|
5819
|
+
"name": "episode_id",
|
|
5820
|
+
"in": "path",
|
|
5821
|
+
"required": true,
|
|
5822
|
+
"schema": {
|
|
5823
|
+
"type": "integer",
|
|
5824
|
+
"exclusiveMinimum": 0
|
|
5825
|
+
}
|
|
5826
|
+
}
|
|
5827
|
+
],
|
|
5828
|
+
"responses": {
|
|
5829
|
+
"200": {
|
|
5830
|
+
"description": "StarReel envelope",
|
|
5831
|
+
"content": {
|
|
5832
|
+
"application/json": {
|
|
5833
|
+
"schema": {
|
|
5834
|
+
"type": "object",
|
|
5835
|
+
"properties": {
|
|
5836
|
+
"code": {
|
|
5837
|
+
"type": "integer"
|
|
5838
|
+
},
|
|
5839
|
+
"message": {
|
|
5840
|
+
"type": "string"
|
|
5841
|
+
},
|
|
5842
|
+
"data": {
|
|
5843
|
+
"description": "Operation result payload"
|
|
5844
|
+
}
|
|
5845
|
+
}
|
|
5846
|
+
}
|
|
5847
|
+
}
|
|
5848
|
+
}
|
|
5849
|
+
},
|
|
5850
|
+
"402": {
|
|
5851
|
+
"description": "Insufficient prepaid balance (never overdrafts); response carries `needed` points"
|
|
5852
|
+
}
|
|
5853
|
+
}
|
|
5854
|
+
}
|
|
5855
|
+
},
|
|
5762
5856
|
"/episodes/{episode_id}/storyboards": {
|
|
5763
5857
|
"get": {
|
|
5764
5858
|
"operationId": "get_storyboards",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@starreel/mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.68",
|
|
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.68",
|
|
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.68",
|
|
12
12
|
"transport": {
|
|
13
13
|
"type": "stdio"
|
|
14
14
|
},
|