@starreel/mcp 0.1.239 → 0.1.241
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 +6 -0
- package/dist/tools/guide-data.js +2 -2
- package/dist/tools/produce.js +24 -2
- package/openapi.json +128 -4
- package/package.json +1 -1
- package/server.json +2 -2
package/SKILL.md
CHANGED
|
@@ -448,6 +448,12 @@ content that will be rejected.
|
|
|
448
448
|
`get_run_status` → `video_run` (shots with video / remaining; it survives a
|
|
449
449
|
server restart and is resumed automatically where enabled — `status=interrupted`
|
|
450
450
|
means re-quote and call `generate_videos` again, finished shots are skipped).
|
|
451
|
+
To stop that run, call `cancel_videos` only when the customer asks: shots
|
|
452
|
+
already sent to the vendor still finish and are still charged; the rest are
|
|
453
|
+
not dispatched (re-quote later to continue).
|
|
454
|
+
To stop a batch image job (frames, frame chain, portraits, sheets, scene
|
|
455
|
+
images…), call `cancel_images` only when the customer asks: images already
|
|
456
|
+
sent to the vendor still finish and are still charged; the rest are not sent.
|
|
451
457
|
When a native-audio project
|
|
452
458
|
needs one seed shot per speaking character before locking voices, render those
|
|
453
459
|
seeds with the single-shot tools `quote_regenerate_shot_video` →
|
package/dist/tools/guide-data.js
CHANGED
|
@@ -255,7 +255,7 @@ export const PIPELINE = [
|
|
|
255
255
|
},
|
|
256
256
|
{
|
|
257
257
|
step: '7 出帧(镜头图)',
|
|
258
|
-
tools: ['run_precheck(免费,揪出必被厂商拒的镜)', 'quote_frames', 'generate_frames', 'tail_frame_plan(免费,首帧出完必调)', 'quote_shot_frame', 'generate_shot_frame(单镜重生)', 'quote_local_frame_edit', 'local_frame_edit(局部返修·只改框内,灰度剧)', 'get_local_frame_edit', 'adopt_local_frame_edit', 'chain_frames(先 dry_run:true 看计划与预估)', 'chain_shot_from_prev(免费,单道接缝)', 'quote_chain_shot_from', 'chain_shot_from', 'quote_align_prev_shot', 'align_prev_shot', 'upload_shot_frame'],
|
|
258
|
+
tools: ['run_precheck(免费,揪出必被厂商拒的镜)', 'quote_frames', 'generate_frames', 'tail_frame_plan(免费,首帧出完必调)', 'quote_shot_frame', 'generate_shot_frame(单镜重生)', 'quote_local_frame_edit', 'local_frame_edit(局部返修·只改框内,灰度剧)', 'get_local_frame_edit', 'adopt_local_frame_edit', 'chain_frames(先 dry_run:true 看计划与预估)', 'cancel_images(停批量出图:已派的照常出完扣费,未派的不再派·免费)', 'chain_shot_from_prev(免费,单道接缝)', 'quote_chain_shot_from', 'chain_shot_from', 'quote_align_prev_shot', 'align_prev_shot', 'upload_shot_frame'],
|
|
259
259
|
billing: '报价确认后扣点',
|
|
260
260
|
gate: 'review_frames(镜头图审查;免费;generate_videos 前必过)',
|
|
261
261
|
note: '★出帧是**两趟**:generate_frames 默认只出首帧,首帧出完必须调一次免费的 `tail_frame_plan` ' +
|
|
@@ -272,7 +272,7 @@ export const PIPELINE = [
|
|
|
272
272
|
},
|
|
273
273
|
{
|
|
274
274
|
step: '8 出视频',
|
|
275
|
-
tools: ['quote_videos', 'generate_videos', 'get_scene_group_plan', 'generate_scene_groups', 'quote_regenerate_shot_video', 'regenerate_shot_video', 'quote_edit_video_shot', 'edit_video_shot', 'upload_shot_footage(实拍素材镜:客户录屏/产品实拍直接当该镜视频,不出视频不扣费)', 'get_edit_capabilities', 'get_repaint_capabilities', 'quote_repaint_shot_video', 'repaint_shot_video', 'quote_reskin_shot_video', 'reskin_shot_video', 'get_repaint_status', 'restore_repaint_original', 'get_av_anchors(定妆视频锚现况:挂锚的镜首尾帧不送)', 'clear_character_av_anchor(客户确认后摘锚·免费)'],
|
|
275
|
+
tools: ['quote_videos', 'generate_videos', 'cancel_videos(停整集出视频:已派的照常出完扣费,未派的不再派·免费)', 'get_scene_group_plan', 'generate_scene_groups', 'quote_regenerate_shot_video', 'regenerate_shot_video', 'quote_edit_video_shot', 'edit_video_shot', 'upload_shot_footage(实拍素材镜:客户录屏/产品实拍直接当该镜视频,不出视频不扣费)', 'get_edit_capabilities', 'get_repaint_capabilities', 'quote_repaint_shot_video', 'repaint_shot_video', 'quote_reskin_shot_video', 'reskin_shot_video', 'get_repaint_status', 'restore_repaint_original', 'get_av_anchors(定妆视频锚现况:挂锚的镜首尾帧不送)', 'clear_character_av_anchor(客户确认后摘锚·免费)'],
|
|
276
276
|
billing: '报价确认后扣点',
|
|
277
277
|
note: 'video_engine 必须在出视频前定(写实真人剧 seedance-2.5 或降本 hailuo-3 / 动漫·风格化 seedance-2.5 或 wan3.0·wan 绝不用于写实真人;' + MODEL_AVAILABILITY_NOTE + ');切换不回溯已生成镜头。',
|
|
278
278
|
},
|
package/dist/tools/produce.js
CHANGED
|
@@ -781,7 +781,22 @@ export function registerProduceTools(server, client) {
|
|
|
781
781
|
'shots_total / shots_with_video / shots_remaining = 共几镜、已出几镜、剩几镜;running:true = 链在跑,别重发 generate_videos;' +
|
|
782
782
|
'resumed_after_restart>0 = 中途服务重启过、已自动续跑(已出视频与中断前已派发的镜不重出不重扣);' +
|
|
783
783
|
'status=interrupted = 重启后没自动续跑(interrupt_reason 写原因),重新 quote_videos 后 generate_videos 会跳过已出的镜;' +
|
|
784
|
-
'shots_dispatched_without_video = 派发过但没出片的镜,用 get_jobs 看原因、regenerate_shot_video
|
|
784
|
+
'shots_dispatched_without_video = 派发过但没出片的镜,用 get_jobs 看原因、regenerate_shot_video 单补;' +
|
|
785
|
+
'status=cancelling / cancelled = 客户用 cancel_videos 停了这条链,cancelled_shot_numbers 是没出没扣费的镜。\n' +
|
|
786
|
+
'★批量出图(整集出帧 / 帧链 / 定妆图 / 设定图 / 场景图等)看 image_batches:每批 kind / status(running / done / cancelled)/' +
|
|
787
|
+
' dispatched / in_flight / completed / targets_not_dispatched;status=cancelled = 客户用 cancel_images 停了这一批。', { episode_id: z.number().int().positive() }, async ({ episode_id }) => jsonResult(await client.produceGet(`/episodes/${episode_id}/run-status`)));
|
|
788
|
+
// ---------- 取消批量出图(免费) ----------
|
|
789
|
+
server.tool('cancel_images', '(免费)停掉本剧还在跑的批量出图:整集出帧(generate_frames)、工作台出帧批次、帧链(chain_frames 与自动帧链)、' +
|
|
790
|
+
'定妆图、设定图、场景图、世界观图、角色变体图、锚图。语义:**已交给厂商的图照常出完、照常扣费(不退,含 best-of-N 已派出的候选)**;' +
|
|
791
|
+
'还没派的不再派、不扣费;之后的质量重试、补派、服务重启后的重排也不会再派;被取消的出帧批次重启后不续跑。' +
|
|
792
|
+
'可选 episode_id 只停这一集的批次、kind 只停一种(frames / frame_batch / frame_chain / portraits / sheets / scene_images / world_images / character_variants / anchors),不传 = 本剧全部。' +
|
|
793
|
+
'回执每批给 in_flight_items(已派出、会出完扣费)、completed_items(已出完)、cancelled_targets(没派、不扣费;null = 该批次没预先登记目标清单)。' +
|
|
794
|
+
'被取消的镜 / 角色 / 场景之后可以重新报价再发起对应的 generate_*(已出的会跳过),或单张重出。' +
|
|
795
|
+
'★只在客户明确要停时调用;单张出图(generate_shot_frame 等)不能取消;没有可取消的批次返回 409 NO_ACTIVE_IMAGE_BATCH。出视频的取消用 cancel_videos。', {
|
|
796
|
+
drama_id: z.number().int().positive(),
|
|
797
|
+
episode_id: z.number().int().positive().optional(),
|
|
798
|
+
kind: z.enum(['frames', 'frame_batch', 'frame_chain', 'portraits', 'sheets', 'scene_images', 'world_images', 'character_variants', 'anchors']).optional(),
|
|
799
|
+
}, async ({ drama_id, episode_id, kind }) => jsonResult(await client.producePost(`/dramas/${drama_id}/images/cancel`, { ...(episode_id ? { episode_id } : {}), ...(kind ? { kind } : {}) })));
|
|
785
800
|
// ---------- 分镜级 AI 操作:2 个免费质量闸 + 3 个 AI 增强(★都在出图前做)----------
|
|
786
801
|
server.tool('run_precheck', '(★推荐·免费质量闸)出图/出视频前跑生成前预检,把会被拒的镜提前揪出。免费、不扣费。' +
|
|
787
802
|
'强烈建议 generate_frames/generate_videos 前调,防白花钱被拒。\n' +
|
|
@@ -1137,6 +1152,12 @@ export function registerProduceTools(server, client) {
|
|
|
1137
1152
|
quote_id: z.string().describe('来自 quote_videos'),
|
|
1138
1153
|
...REVIEW_ARGS,
|
|
1139
1154
|
}, async ({ episode_id, quote_id, review_token, acknowledge_review, auto_acknowledge }) => jsonResult(await client.producePost(`/episodes/${episode_id}/videos/generate`, { quote_id, review_token, acknowledge_review, auto_acknowledge })));
|
|
1155
|
+
// ---------- 取消整集出视频(免费) ----------
|
|
1156
|
+
server.tool('cancel_videos', '(免费)停掉本集 generate_videos 发起的整集出视频接力链。语义:**已派给厂商的镜照常出完、照常扣费(不退)**;还没派的不再派、不扣费;' +
|
|
1157
|
+
'取消后服务重启也不会自动续跑。回执里 in_flight_shot_numbers = 已派出、会照常出完扣费的镜;cancelled_shot_numbers = 被取消、没出没扣费的镜。' +
|
|
1158
|
+
'status=cancelling 表示链会在当前镜之后停下,用 get_run_status 等 video_run.status 变成 cancelled。' +
|
|
1159
|
+
'被取消的镜之后可以重新 quote_videos 再 generate_videos 接着做(会跳过已出视频的镜),或 quote_regenerate_shot_video / regenerate_shot_video 单镜补。' +
|
|
1160
|
+
'★只在客户明确要停时调用。单镜在途的视频(regenerate_shot_video 等)不能中途取消;本集没有在跑的整批链会返回 409 NO_ACTIVE_VIDEO_RUN。', { episode_id: z.number().int().positive() }, async ({ episode_id }) => jsonResult(await client.producePost(`/episodes/${episode_id}/videos/cancel`)));
|
|
1140
1161
|
// ---------- 成片(compose/终拼) ----------
|
|
1141
1162
|
server.tool('compose_episode', '把某一集所有镜头视频拼成一条成片(终拼)。**免费**(纯拼接,无需报价确认),后台异步。' +
|
|
1142
1163
|
'发起前有终拼预检:缺视频的镜或仍在生成中的视频任务会 400 硬阻断并列出问题镜(blockers),' +
|
|
@@ -2250,7 +2271,8 @@ export function registerProduceTools(server, client) {
|
|
|
2250
2271
|
'异步生成后用它看进度。免费。' +
|
|
2251
2272
|
'★整集出帧(generate_frames)是后台逐镜派发,被拒的镜不会出现在任务列表里——看响应的 frame_dispatch_rejections' +
|
|
2252
2273
|
'(每镜 storyboard_id/frame_type/code/message)。code=ERA_USER_REF_CONFLICT 表示客户上传的定妆图被时代审核判冲突:' +
|
|
2253
|
-
'把 message 转告客户' + ALWAYS_ASK('allow_era_ref_conflict ') + ',客户确认后带 allow_era_ref_conflict=true 对那几镜 generate_shot_frame。重启后该列表清空。'
|
|
2274
|
+
'把 message 转告客户' + ALWAYS_ASK('allow_era_ref_conflict ') + ',客户确认后带 allow_era_ref_conflict=true 对那几镜 generate_shot_frame。重启后该列表清空。' +
|
|
2275
|
+
'★image_batches = 最近 24 小时的批量出图批次(含 cancel_images 取消的,status=cancelled)。', { drama_id: z.number().int().positive() }, async ({ drama_id }) => jsonResult(await client.produceGet(`/dramas/${drama_id}/jobs`)));
|
|
2254
2276
|
server.tool('get_drama_bill', '本剧净费用账单(免费)。核账、回答「到底花了多少、钱花在哪、退了多少」时用它,别自己拼流水。' +
|
|
2255
2277
|
'\n· totals / by_kind:每类 charged(扣费)、refunded(已退回)、net(净额)、charges/refunds(笔数)。' +
|
|
2256
2278
|
'**net 才是花费**,与网页「本剧已花费」、get_budget_status 同源;charged 含失败后自动退回的空转,只用于核账。' +
|
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.241",
|
|
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.241 tool surface (operationIds match MCP tool names 1:1)."
|
|
7
7
|
},
|
|
8
8
|
"servers": [
|
|
9
9
|
{
|
|
@@ -2627,11 +2627,88 @@
|
|
|
2627
2627
|
}
|
|
2628
2628
|
}
|
|
2629
2629
|
},
|
|
2630
|
+
"/dramas/{drama_id}/images/cancel": {
|
|
2631
|
+
"post": {
|
|
2632
|
+
"operationId": "cancel_images",
|
|
2633
|
+
"summary": "(免费)停掉本剧还在跑的批量出图:整集出帧(generate_frames)、工作台出帧批次、帧链(chain_frames 与自动帧链)、定妆图、设定图、场景图、世界观图、角色变体图、锚图",
|
|
2634
|
+
"description": "(免费)停掉本剧还在跑的批量出图:整集出帧(generate_frames)、工作台出帧批次、帧链(chain_frames 与自动帧链)、定妆图、设定图、场景图、世界观图、角色变体图、锚图。语义:**已交给厂商的图照常出完、照常扣费(不退,含 best-of-N 已派出的候选)**;还没派的不再派、不扣费;之后的质量重试、补派、服务重启后的重排也不会再派;被取消的出帧批次重启后不续跑。可选 episode_id 只停这一集的批次、kind 只停一种(frames / frame_batch / frame_chain / portraits / sheets / scene_images / world_images / character_variants / anchors),不传 = 本剧全部。回执每批给 in_flight_items(已派出、会出完扣费)、completed_items(已出完)、cancelled_targets(没派、不扣费;null = 该批次没预先登记目标清单)。被取消的镜 / 角色 / 场景之后可以重新报价再发起对应的 generate_*(已出的会跳过),或单张重出。★只在客户明确要停时调用;单张出图(generate_shot_frame 等)不能取消;没有可取消的批次返回 409 NO_ACTIVE_IMAGE_BATCH。出视频的取消用 cancel_videos。",
|
|
2635
|
+
"tags": [
|
|
2636
|
+
"dramas"
|
|
2637
|
+
],
|
|
2638
|
+
"parameters": [
|
|
2639
|
+
{
|
|
2640
|
+
"name": "drama_id",
|
|
2641
|
+
"in": "path",
|
|
2642
|
+
"required": true,
|
|
2643
|
+
"schema": {
|
|
2644
|
+
"type": "integer",
|
|
2645
|
+
"exclusiveMinimum": 0
|
|
2646
|
+
}
|
|
2647
|
+
}
|
|
2648
|
+
],
|
|
2649
|
+
"requestBody": {
|
|
2650
|
+
"required": false,
|
|
2651
|
+
"content": {
|
|
2652
|
+
"application/json": {
|
|
2653
|
+
"schema": {
|
|
2654
|
+
"type": "object",
|
|
2655
|
+
"properties": {
|
|
2656
|
+
"episode_id": {
|
|
2657
|
+
"type": "integer",
|
|
2658
|
+
"exclusiveMinimum": 0
|
|
2659
|
+
},
|
|
2660
|
+
"kind": {
|
|
2661
|
+
"type": "string",
|
|
2662
|
+
"enum": [
|
|
2663
|
+
"frames",
|
|
2664
|
+
"frame_batch",
|
|
2665
|
+
"frame_chain",
|
|
2666
|
+
"portraits",
|
|
2667
|
+
"sheets",
|
|
2668
|
+
"scene_images",
|
|
2669
|
+
"world_images",
|
|
2670
|
+
"character_variants",
|
|
2671
|
+
"anchors"
|
|
2672
|
+
]
|
|
2673
|
+
}
|
|
2674
|
+
}
|
|
2675
|
+
}
|
|
2676
|
+
}
|
|
2677
|
+
}
|
|
2678
|
+
},
|
|
2679
|
+
"responses": {
|
|
2680
|
+
"200": {
|
|
2681
|
+
"description": "StarReel envelope",
|
|
2682
|
+
"content": {
|
|
2683
|
+
"application/json": {
|
|
2684
|
+
"schema": {
|
|
2685
|
+
"type": "object",
|
|
2686
|
+
"properties": {
|
|
2687
|
+
"code": {
|
|
2688
|
+
"type": "integer"
|
|
2689
|
+
},
|
|
2690
|
+
"message": {
|
|
2691
|
+
"type": "string"
|
|
2692
|
+
},
|
|
2693
|
+
"data": {
|
|
2694
|
+
"description": "Operation result payload"
|
|
2695
|
+
}
|
|
2696
|
+
}
|
|
2697
|
+
}
|
|
2698
|
+
}
|
|
2699
|
+
}
|
|
2700
|
+
},
|
|
2701
|
+
"402": {
|
|
2702
|
+
"description": "Insufficient prepaid balance (never overdrafts); response carries `needed` points"
|
|
2703
|
+
}
|
|
2704
|
+
}
|
|
2705
|
+
}
|
|
2706
|
+
},
|
|
2630
2707
|
"/dramas/{drama_id}/jobs": {
|
|
2631
2708
|
"get": {
|
|
2632
2709
|
"operationId": "get_jobs",
|
|
2633
2710
|
"summary": "查一部剧的任务队列进度(出图/出视频/合成各阶段的 pending/processing/done/failed)",
|
|
2634
|
-
"description": "查一部剧的任务队列进度(出图/出视频/合成各阶段的 pending/processing/done/failed)。异步生成后用它看进度。免费。★整集出帧(generate_frames)是后台逐镜派发,被拒的镜不会出现在任务列表里——看响应的 frame_dispatch_rejections(每镜 storyboard_id/frame_type/code/message)。code=ERA_USER_REF_CONFLICT 表示客户上传的定妆图被时代审核判冲突:把 message 转告客户(allow_era_ref_conflict 任何执行模式都须客户明确同意,托管也不例外),客户确认后带 allow_era_ref_conflict=true 对那几镜 generate_shot_frame
|
|
2711
|
+
"description": "查一部剧的任务队列进度(出图/出视频/合成各阶段的 pending/processing/done/failed)。异步生成后用它看进度。免费。★整集出帧(generate_frames)是后台逐镜派发,被拒的镜不会出现在任务列表里——看响应的 frame_dispatch_rejections(每镜 storyboard_id/frame_type/code/message)。code=ERA_USER_REF_CONFLICT 表示客户上传的定妆图被时代审核判冲突:把 message 转告客户(allow_era_ref_conflict 任何执行模式都须客户明确同意,托管也不例外),客户确认后带 allow_era_ref_conflict=true 对那几镜 generate_shot_frame。重启后该列表清空。★image_batches = 最近 24 小时的批量出图批次(含 cancel_images 取消的,status=cancelled)。",
|
|
2635
2712
|
"tags": [
|
|
2636
2713
|
"dramas"
|
|
2637
2714
|
],
|
|
@@ -9329,7 +9406,7 @@
|
|
|
9329
9406
|
"get": {
|
|
9330
9407
|
"operationId": "get_run_status",
|
|
9331
9408
|
"summary": "(★免费·长耗时操作后必用)查这一集当前有没有 agent 正在跑",
|
|
9332
|
-
"description": "(★免费·长耗时操作后必用)查这一集当前有没有 agent 正在跑。rewrite_script / extract_assets / generate_storyboards 都是**分钟级**后台任务,它们只回一句 status:\"generating\",本工具是唯一能区分「还在跑」与「已经结束」的手段。\n★典型耗时(生产实测):改写 2~4 分钟、拆镜 5~10 分钟——**单次 LLM 调用就可能 3~7 分钟**。所以 60 秒内查不到结果是完全正常的,绝不是失败。\n用法:发起后每 30~60 秒调一次。running:true = 还在跑,继续等,**千万不要重发**(重发拆镜会替换整集分镜,已调好/已出图的全丢、要重花钱);running:false = 那次已经结束,这时才去 get_storyboards / get_script 看产物有没有落库。\n⚠️ 服务重启会让 agent 在途登记归零,重启期间发起的运行也会显示为无在途。\n★generate_videos 整集出视频的接力链看返回里的 video_run 段(它落库,重启不会凭空消失):shots_total / shots_with_video / shots_remaining = 共几镜、已出几镜、剩几镜;running:true = 链在跑,别重发 generate_videos;resumed_after_restart>0 = 中途服务重启过、已自动续跑(已出视频与中断前已派发的镜不重出不重扣);status=interrupted = 重启后没自动续跑(interrupt_reason 写原因),重新 quote_videos 后 generate_videos 会跳过已出的镜;shots_dispatched_without_video = 派发过但没出片的镜,用 get_jobs 看原因、regenerate_shot_video
|
|
9409
|
+
"description": "(★免费·长耗时操作后必用)查这一集当前有没有 agent 正在跑。rewrite_script / extract_assets / generate_storyboards 都是**分钟级**后台任务,它们只回一句 status:\"generating\",本工具是唯一能区分「还在跑」与「已经结束」的手段。\n★典型耗时(生产实测):改写 2~4 分钟、拆镜 5~10 分钟——**单次 LLM 调用就可能 3~7 分钟**。所以 60 秒内查不到结果是完全正常的,绝不是失败。\n用法:发起后每 30~60 秒调一次。running:true = 还在跑,继续等,**千万不要重发**(重发拆镜会替换整集分镜,已调好/已出图的全丢、要重花钱);running:false = 那次已经结束,这时才去 get_storyboards / get_script 看产物有没有落库。\n⚠️ 服务重启会让 agent 在途登记归零,重启期间发起的运行也会显示为无在途。\n★generate_videos 整集出视频的接力链看返回里的 video_run 段(它落库,重启不会凭空消失):shots_total / shots_with_video / shots_remaining = 共几镜、已出几镜、剩几镜;running:true = 链在跑,别重发 generate_videos;resumed_after_restart>0 = 中途服务重启过、已自动续跑(已出视频与中断前已派发的镜不重出不重扣);status=interrupted = 重启后没自动续跑(interrupt_reason 写原因),重新 quote_videos 后 generate_videos 会跳过已出的镜;shots_dispatched_without_video = 派发过但没出片的镜,用 get_jobs 看原因、regenerate_shot_video 单补;status=cancelling / cancelled = 客户用 cancel_videos 停了这条链,cancelled_shot_numbers 是没出没扣费的镜。\n★批量出图(整集出帧 / 帧链 / 定妆图 / 设定图 / 场景图等)看 image_batches:每批 kind / status(running / done / cancelled)/ dispatched / in_flight / completed / targets_not_dispatched;status=cancelled = 客户用 cancel_images 停了这一批。",
|
|
9333
9410
|
"tags": [
|
|
9334
9411
|
"episodes"
|
|
9335
9412
|
],
|
|
@@ -11110,6 +11187,53 @@
|
|
|
11110
11187
|
}
|
|
11111
11188
|
}
|
|
11112
11189
|
},
|
|
11190
|
+
"/episodes/{episode_id}/videos/cancel": {
|
|
11191
|
+
"post": {
|
|
11192
|
+
"operationId": "cancel_videos",
|
|
11193
|
+
"summary": "(免费)停掉本集 generate_videos 发起的整集出视频接力链",
|
|
11194
|
+
"description": "(免费)停掉本集 generate_videos 发起的整集出视频接力链。语义:**已派给厂商的镜照常出完、照常扣费(不退)**;还没派的不再派、不扣费;取消后服务重启也不会自动续跑。回执里 in_flight_shot_numbers = 已派出、会照常出完扣费的镜;cancelled_shot_numbers = 被取消、没出没扣费的镜。status=cancelling 表示链会在当前镜之后停下,用 get_run_status 等 video_run.status 变成 cancelled。被取消的镜之后可以重新 quote_videos 再 generate_videos 接着做(会跳过已出视频的镜),或 quote_regenerate_shot_video / regenerate_shot_video 单镜补。★只在客户明确要停时调用。单镜在途的视频(regenerate_shot_video 等)不能中途取消;本集没有在跑的整批链会返回 409 NO_ACTIVE_VIDEO_RUN。",
|
|
11195
|
+
"tags": [
|
|
11196
|
+
"episodes"
|
|
11197
|
+
],
|
|
11198
|
+
"parameters": [
|
|
11199
|
+
{
|
|
11200
|
+
"name": "episode_id",
|
|
11201
|
+
"in": "path",
|
|
11202
|
+
"required": true,
|
|
11203
|
+
"schema": {
|
|
11204
|
+
"type": "integer",
|
|
11205
|
+
"exclusiveMinimum": 0
|
|
11206
|
+
}
|
|
11207
|
+
}
|
|
11208
|
+
],
|
|
11209
|
+
"responses": {
|
|
11210
|
+
"200": {
|
|
11211
|
+
"description": "StarReel envelope",
|
|
11212
|
+
"content": {
|
|
11213
|
+
"application/json": {
|
|
11214
|
+
"schema": {
|
|
11215
|
+
"type": "object",
|
|
11216
|
+
"properties": {
|
|
11217
|
+
"code": {
|
|
11218
|
+
"type": "integer"
|
|
11219
|
+
},
|
|
11220
|
+
"message": {
|
|
11221
|
+
"type": "string"
|
|
11222
|
+
},
|
|
11223
|
+
"data": {
|
|
11224
|
+
"description": "Operation result payload"
|
|
11225
|
+
}
|
|
11226
|
+
}
|
|
11227
|
+
}
|
|
11228
|
+
}
|
|
11229
|
+
}
|
|
11230
|
+
},
|
|
11231
|
+
"402": {
|
|
11232
|
+
"description": "Insufficient prepaid balance (never overdrafts); response carries `needed` points"
|
|
11233
|
+
}
|
|
11234
|
+
}
|
|
11235
|
+
}
|
|
11236
|
+
},
|
|
11113
11237
|
"/episodes/{episode_id}/videos/generate": {
|
|
11114
11238
|
"post": {
|
|
11115
11239
|
"operationId": "generate_videos",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@starreel/mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.241",
|
|
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.241",
|
|
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.241",
|
|
12
12
|
"transport": {
|
|
13
13
|
"type": "stdio"
|
|
14
14
|
},
|