short-drama-produce
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinese确认后生产
Post-Confirmation Production
本技能只负责把已经写好的生产规格安全送到运行环境配置的 adapter。图片提示词仍归
,视频提示词归 ,台词与录音表归
,声音身份归 。
$short-drama-image-prompts$short-drama-video-prompts$short-drama-write$short-drama-assetsThis skill is only responsible for safely delivering already-written production specifications to the adapter configured in the runtime environment. Image prompts remain the responsibility of
, video prompts belong to , dialogue and recording sheets belong to
, and voice identity belongs to .
$short-drama-image-prompts$short-drama-video-prompts$short-drama-write$short-drama-assetsQuick Start
Quick Start
只在用户明确要求实际生成后,从当前 、 或 中
取出本次提示词,建立一个有边界的运行 job。creator-first job 的 必须指向拥有这条提示词的
当前 Markdown, 必须点名该文档允许的二级标题: 用 ,
用 , 用 (modality 为 ,正文取该镜的
)。此选择器只提取首帧;尾帧需先由图片提示词阶段建立独立 状态图条目,
再从 准备 image job。创作者也可以提供已有起始帧——
在自己的工具里出图再放进项目同样成立,图片始终不进项目时走分镜的 ;
产出落在 后,分镜 owner 才能把它绑成 的 。存在真实参考图时,
还必须逐张填写 的槽位、顺序、路径、中文名、用途以及允许/禁止控制范围;
内置视频 adapter 把这里的 字段读成供应商自己的 role,只接受它公布的取值
(MiniMax 为 ////,
Seedance 为三个 );带参考图却没有绑定的 job 会直接失败,不替它猜一个 role。
本地图片由内置 adapter 按 base64 data URI 直接送出,不需要自建上传服务。
条目的「输入参考图」写成 时,那些图片在创作者自己的工具里,项目内没有文件可送:
直接失败并说明先把真实文件放进项目、改写成 ,不拿计划当输入,也不静默丢掉参考。
可以省略并由绑定顺序生成,也可以作为相同顺序的显式镜像。输出放在
;这个 job 是生产工具的临时输入,不是第六份创作文档:
图片提示词.md分镜.md视频提示词.mdsourcesource_entry图片提示词.mdIMG-*视频提示词.mdMOTION-*分镜.mdSHOT-*image### 冻结关键帧提示词IMG-*图片提示词.mdPLAN-...剧集/<EP>/制作成果/images/用途:起始帧REF-...reference_bindings用途first_framelast_framereference_imagereference_videoreference_audioreference_*PLAN-...prepareREF-...references剧集/<EP>/制作成果/bash
python3 {技能目录}/scripts/production_tool.py prepare <project> --job <临时-job.json>先展示 的完整预览;此时不会调用供应商。
prepareOnly after the creator explicitly requests actual generation, take the current prompt from , , or , and create a bounded run job. A creator-first job's must point to the current Markdown that owns this prompt, and must name the document's allowed secondary heading: uses ,
uses , uses (modality is , body is taken from that shot's
). This selector only extracts the first frame; the tail frame must first be established as a separate state-graph entry by the image prompt stage, and then an image job is prepared from . Creators may also provide an existing start frame—generating the image in their own tool and placing it into the project is equally valid; if images never enter the project, use from the storyboard; after the output lands in , the storyboard owner can bind it as a with . When real reference images exist, you must also fill in each slot of with order, path, Chinese name, purpose, and the allowed/forbidden control scope; the built-in video adapter reads the field here as the vendor's own role and only accepts its published values
(MiniMax uses ////,
Seedance uses three values); a job with reference images but no bindings will fail directly—it will not guess a role. Local images are sent by the built-in adapter as base64 data URIs directly; no self-hosted upload service is needed. When an entry's "input reference image" is written as , those images live in the creator's own tools and there is no file in the project to send:
fails directly and explains that real files must first be placed in the project and rewritten as ; it does not use the plan as input and does not silently drop references.
can be omitted and generated from binding order, or provided as an explicit mirror in the same order. Output goes to
; this job is a temporary input for the production tool, not a sixth creation document:
图片提示词.md分镜.md视频提示词.mdsourcesource_entry图片提示词.mdIMG-*视频提示词.mdMOTION-*分镜.mdSHOT-*image### 冻结关键帧提示词IMG-*图片提示词.mdPLAN-...剧集/<EP>/制作成果/images/REF-...用途:起始帧reference_bindings用途first_framelast_framereference_imagereference_videoreference_audioreference_*PLAN-...prepareREF-...references剧集/<EP>/制作成果/bash
python3 {skill_directory}/scripts/production_tool.py prepare <project> --job <temporary-job.json>First show the complete preview from ; no vendor is called at this point.
prepare硬闸门
Hard Gate
每次生产都必须经过以下四步,顺序不可合并:
- 建立一个有边界的 job:一种 modality、明确数量、完整 prompt/spec、参考文件、参数、输出路径和 adapter profile。
- 运行 ,把返回的完整预览展示给创作者,尤其是数量、prompt、source entry、 reference bindings、references、outputs、overwrite 与 adapter。creator-first job 会在这一步机械核对 所选标题里的可复制提示词,以及参考图槽位、顺序、路径、中文名和控制边界;任一漂移都 fail closed。
prepare - 等创作者在看到这份预览之后明确确认。只有明确同意这项当前任务,才运行 ; “继续”“都做完”“预算没问题”、上游内容已接受或之前确认过另一版,都不算本次生产确认。
confirm - 运行 。它会在启动 adapter 前消费一次确认;成功或失败后再次执行都必须重新确认, 防止失败重试意外产生第二笔费用。
run
job、prompt、参数、输出路径或直接输入任一变化,旧确认立即失效。不得代替创作者填写确认。
当前已确认 job 是本轮唯一工作单元;运行结束后回报结果并交还控制权,不自动准备下一批或启动审查。
分镜.md图片提示词.md视频提示词.mdpreparereference_bindingsreferencessource_entryreference_bindingsreferencessource图片提示词.md视频提示词.mdEvery production must go through the following four steps, in order, and they cannot be merged:
- Create a bounded job: one modality, explicit quantity, complete prompt/spec, reference files, parameters, output path, and adapter profile.
- Run and show the returned complete preview to the creator, especially quantity, prompt, source entry, reference bindings, references, outputs, overwrite, and adapter. A creator-first job mechanically checks at this step the copyable prompt in the selected heading, as well as reference image slots, order, path, Chinese name, and control boundaries; any drift fails closed.
prepare - Wait for the creator to explicitly confirm after seeing this preview. Only run when the creator explicitly agrees to this current task; "continue," "do them all," "budget is fine," upstream content being accepted, or having previously confirmed another version do not count as confirmation for this production.
confirm - Run . It consumes one confirmation before starting the adapter; after either success or failure, any further execution requires re-confirmation, to prevent failed retries from accidentally generating a second charge.
run
If the job, prompt, parameters, output path, or direct input change in any way, the old confirmation immediately becomes invalid. You must not fill in confirmation on behalf of the creator.
The currently confirmed job is the only work unit for this round; after execution completes, report the result and return control, without automatically preparing the next batch or starting review.
The "input reference image" path in is only a readable basis and usage intent during the creation stage, not a production-input snapshot. When entering production,
a creator-first job must establish bindings from the corresponding entry in or ; the , , and the confirmed job shown by are the authority for which file bytes the adapter actually reads this time and what each is allowed to
influence. Non-creator structured specs may omit / and continue using only explicit
; but any new image/video job whose points to canonical or
is forced to use the corresponding selector and cannot downgrade by omitting fields.
Old jobs that were prepared and written to disk before the upgrade can still be read by their original fingerprint.
New production results are not automatically backfilled or refreshed into the storyboard; if they need to become subsequent input, the storyboard owner revises the document, then creates a new job
and re-previews and re-confirms it.
分镜.md图片提示词.md视频提示词.mdreference_bindingsreferencespreparesource_entryreference_bindingsreferencessource图片提示词.md视频提示词.md命令
Commands
只在进入生产边界后把当前提示词和运行参数写成临时 JSON;视频与图片 job 的
跟随当前可复制正文已经解析出的提示词语言,使 adapter 追加的参考约束
使用同一种语言,而不是重新回退成固定英文。不要在创作阶段为每条提示词预建 job。
格式和 adapter 契约见
adapter-contract.md。命令由
production_tool.py 提供,然后运行:
parameters.prompt_languagetext
python3 <本技能目录>/scripts/production_tool.py prepare <project> --job <job.json>
python3 <本技能目录>/scripts/production_tool.py confirm <project> --job-id <id> --confirmation "CONFIRM <id> <code>"
python3 <本技能目录>/scripts/production_tool.py run <project> --job-id <id> --adapter-config <outside-project-config.json>
python3 <本技能目录>/scripts/production_tool.py status <project> --job-id <id>
python3 <本技能目录>/scripts/production_tool.py collect <project> --job-id <id> --adapter-config <outside-project-config.json>
python3 <本技能目录>/scripts/production_tool.py audit <project>prepareconfirmruncollectauditrunningOnly after entering the production boundary, write the current prompt and run parameters as a temporary JSON; for video and image jobs, the
follows the prompt language already parsed from the current copyable body, so that adapter-appended reference constraints
use the same language instead of falling back to fixed English. Do not pre-create jobs for every prompt during the creation stage.
Format and adapter contract are in
adapter-contract.md. Commands are provided by
production_tool.py, then run:
parameters.prompt_languagetext
python3 <this-skill-directory>/scripts/production_tool.py prepare <project> --job <job.json>
python3 <this-skill-directory>/scripts/production_tool.py confirm <project> --job-id <id> --confirmation "CONFIRM <id> <code>"
python3 <this-skill-directory>/scripts/production_tool.py run <project> --job-id <id> --adapter-config <outside-project-config.json>
python3 <this-skill-directory>/scripts/production_tool.py status <project> --job-id <id>
python3 <this-skill-directory>/scripts/production_tool.py collect <project> --job-id <id> --adapter-config <outside-project-config.json>
python3 <this-skill-directory>/scripts/production_tool.py audit <project>prepareconfirmruncollectauditrunning输入选择
Input Selection
- image:读取 的当前
图片提示词.md可复制正文,或IMG-*的当前分镜.md冻结关键帧正文,加上必要参考图和明确的输出尺寸/数量;creator-first job 使用SHOT-*锁定这一条。资产板走source_entry,某一镜的起始画面走IMG-*;两者不互相替代。SHOT-* - video:读取 的当前
视频提示词.md可复制正文,并核对MOTION-*中对应镜头、 冻结关键帧、时长与画幅;creator-first job 使用分镜.md锁定这一条。连续段选择从上一段 生成结果续接时,下一段 job 同时绑定上一段实际视频和从该视频取得的实际尾帧,并保留source_entry、continuity_video的不同职责;供应商 role 由目标模型 adapter 翻译。H3 的这组 输入统一译为actual_tail_frame,不能混成reference_video + reference_image;不以 计划尾帧或文字描述代替真实文件。reference_video + first_frame - tts:从 读取原句与表演要求,声音参考由用户或现有媒体明确提供。不得在生产 job 中改词,也不为 TTS 新建第六份创作文档。
剧本.md - music:读取 中创作者已确认的时间线音乐章节;主题曲使用已确认歌词,纯配乐 不携带歌词。供应商不能精确承诺时长时,生成源音轨后仍由
视频提示词.md按文档里的混音意图完成落点、 循环、淡入淡出和对白 ducking。$short-drama-edit
一个 job 不混合 modality。大批量工作拆成创作者能看清数量和成本边界的小 job;不为方便把整季
隐式塞进一次确认。
- image: read the current copyable body from
IMG-*, or the current图片提示词.mdfromSHOT-*frozen keyframe body, plus required reference images and explicit output dimensions/quantity; creator-first jobs use分镜.mdto lock this entry. Asset board usessource_entry; a particular shot's start image usesIMG-*; they do not replace each other.SHOT-* - video: read the current copyable body from
MOTION-*, and cross-check the corresponding shot, frozen keyframe, duration, and aspect ratio in视频提示词.md; creator-first jobs use分镜.mdto lock this entry. When a continuous segment continues from the previous segment's generation result, the next segment's job binds both the previous segment's actual video and the actual tail frame obtained from that video, while retaining the distinct responsibilities ofsource_entryandcontinuity_video; vendor roles are translated by the target-model adapter. This group of H3 inputs is uniformly translated toactual_tail_frame, not mixed intoreference_video + reference_image; do not substitute the planned tail frame or text description for the real file.reference_video + first_frame - tts: read the original sentence and performance requirements from ; voice reference is explicitly provided by the user or existing media. Do not modify lyrics in production jobs, and do not create a sixth creation document for TTS.
剧本.md - music: read the creator-confirmed timeline music section from ; theme songs use confirmed lyrics, pure BGM carries no lyrics. When the vendor cannot precisely promise duration, after generating the source audio track,
视频提示词.mdstill handles placement, looping, fades, and dialogue ducking according to the mixing intent in the document.$short-drama-edit
A single job does not mix modalities. Large batches are split into small jobs where the creator can see clear quantity and cost boundaries; do not implicitly stuff an entire season
into one confirmation for convenience.
Adapter 边界
Adapter Boundary
adapter 配置必须在项目外,只包含 argv 命令和超时;凭据由 adapter 自己从进程环境或系统凭据
存储读取。项目 job、确认记录、运行记录和 Dashboard 都不得保存密钥。
脚本以 JSON stdin 调用 argv 数组,不使用 shell,不拼接命令。adapter 返回本地临时文件;工具只
接受与已确认 targets 完全一致的结果,并把完整文件原子复制到项目的
目录。项目和上游 Skill 不写死供应商、模型或即将变化的 API。
剧集/<EP>/制作成果/内置图片/视频 compiler 会根据已确认的 ,按顺序向供应商 prompt 附加一段确定性的
引用语义说明(中文名、用途、允许控制与不得控制范围);不会把槽位名误当成要渲染进画面的文字。
外部 adapter 也必须保留这组语义或明确拒绝,不能只上传文件而静默丢失控制边界。
reference_bindings本技能可选提供四个 stdlib adapter,均通过项目外 adapter config 选择,凭据只从运行环境读取:
- Seedance:模型/Endpoint ID 必须由账号显式配置;compiler 支持 官方图片、视频和音频参考 role,内置 runtime 未配置可信上传时仍拒绝本地参考文件。
- GPT Image 2:无参考图走 generation,有参考图走 edit; 固定高保真引用并校验尺寸、格式与透明背景限制。
- MiniMax Music:使用 与 hex 结果,区分主题曲 和纯配乐,不伪造时长请求字段。
music-3.0 - MiniMax 语音:模态;模型与
tts都必须 由账号与文档显式给出,不内置音色清单。只从预置音色合成,不做声音克隆——克隆是授权问题, 创作者授权的参考录音按普通创作者输入走voice_id。输入/ - MiniMax H3 视频:模型 ID、分辨率集合与时长区间必须
由账号显式配置;提示词进 的 text 项,参考图按显式 role 绑定,本地参考在没有可信上传时 fail closed。该模型与画面同一次生成声音,写法影响见视频提示词技能的目标模型能力档案。
content
这些 adapter 是已验证请求契约,不是账号可用性或生成质量保证;正式生产仍必须通过上面的本次
确认闸门,并由审查 Skill 判断产物质量。
仓库自带 只用于离线测试,不代表真实生成质量或默认生产 adapter。
fixture_adapter.pyAdapter configuration must live outside the project and contain only the argv command and timeout; credentials are read by the adapter itself from the process environment or system credential
store. Project jobs, confirmation records, run logs, and Dashboard must not store secrets.
The script invokes the argv array via JSON stdin, does not use a shell, and does not concatenate commands. The adapter returns local temporary files; the tool only
accepts results that exactly match the confirmed targets, and atomically copies complete files into the project
directory. The project and upstream Skills do not hardcode vendors, models, or soon-to-change APIs.
剧集/<EP>/制作成果/The built-in image/video compiler appends a deterministic reference-semantics note to the vendor prompt (Chinese name, purpose, allowed control, and forbidden control scope)
in order, based on the confirmed ; it does not mistake slot names for text to be rendered into the frame.
External adapters must also preserve this semantics or explicitly refuse, and must not silently lose control boundaries by merely uploading files.
reference_bindingsThis skill optionally provides four stdlib adapters, all selected via an out-of-project adapter config, with credentials read only from the runtime environment:
- Seedance: model/Endpoint ID must be explicitly configured by the account; compiler supports official image, video, and audio reference roles; the built-in runtime still rejects local reference files when no trusted upload is configured.
- GPT Image 2: no reference image → generation; with reference image → edit; fixed high-fidelity reference, validates size, format, and transparent-background constraints.
- MiniMax Music: uses and hex results; distinguishes theme song and pure BGM; does not fabricate duration request fields.
music-3.0 - MiniMax Speech: modality; both model and
ttsmust be explicitly given by the account and documentation; no built-in voice list. Synthesizes only from preset voices; no voice cloning—cloning is a licensing issue. Creator-authorized reference recordings go throughvoice_idas ordinary creator input.输入/ - MiniMax H3 Video: model ID, resolution set, and duration range must be explicitly
configured by the account; prompts go into the text item of , reference images are bound by explicit role, and local references fail closed without a trusted upload. This model generates sound in the same pass as visuals; the writing impact is described in the video prompt skill's target-model capability profile.
content
These adapters are validated request contracts, not guarantees of account availability or generation quality; formal production must still pass the above per-confirmation gate,
and a review Skill judges the quality of the output.
The repository's is for offline testing only and does not represent real generation quality or the default production adapter.
fixture_adapter.py中断不等于要重跑
Interruption Does Not Mean Re-running
视频任务在提交那一刻就已经计费,不是在拿到结果时。提交之后的一切——轮询几分钟、下载——
都可能被进程被杀、断网、机器休眠打断。内置 adapter 因此在拿到供应商任务 ID 的第一时间就把它
写进 (早于第一次轮询),这个路径不随本次尝试一起删除。
handle_path于是中断之后有三条确定的动作,不必再花一次钱:
- 会把带着任务 ID 的未完成尝试报成
audit,orphaned_provider_job是action;collect_before_retry - 用那个 ID 取回结果并把这次尝试标成成功;
collect - 只有在 也确认那边确实失败之后,才走重新确认与重投的老路。
collect
不要在 报出 时直接重投——那是在为同一个镜头付第二次钱。
不走确认闸门是有意的:闸门防的是意外花钱,而 collect 不花钱;
如果它也要求重新确认,那么中断之后最省事的路径就变成再付一次,正好是闸门要防的事。
auditorphaned_provider_jobcollectA video task is billed at the moment of submission, not when the result is received. Everything after submission—polling for minutes, downloading—
can be interrupted by a killed process, network loss, or machine sleep. The built-in adapter therefore writes the vendor task ID into as soon as it receives it (before the first poll), and this path is not deleted with this attempt.
handle_pathSo after an interruption, there are three deterministic actions that avoid spending again:
- reports the unfinished attempt with its task ID as
audit, withorphaned_provider_jobset toaction;collect_before_retry - uses that ID to retrieve the result and marks this attempt as successful;
collect - Only if also confirms that the provider really failed do you go down the old path of re-confirming and resubmitting.
collect
Do not resubmit directly when reports —that would be paying a second time for the same shot.
It is intentional that does not go through the confirmation gate: the gate prevents accidental spending, and collect does not spend;
if it also required re-confirmation, the cheapest path after interruption would become paying again, exactly what the gate is meant to prevent.
auditorphaned_provider_jobcollect结果与复核
Results and Review
成功后回报实际输出路径、媒体类型和运行状态;不要把“adapter 返回成功”写成质量结论。
多任务或重试后先运行 :终态失败按 路由,重试仍须新的明确确认;输出缺失或
文件的哈希或大小不再等于运行记录时,先复核当前字节或重新生产。 只是成本与诊断信号,
不能自动判定同文重试合理或不合理; 是未决运营状态,audit 必须返回 attention。
失败按三路走。超时、限流、服务端错误这类技术失败可做有上限重试。失败信息点名了被拒的是哪
一项输入——提示词文本、参考图或音频——就先改那一项再投:文本被拒改写那一句,把「一拳砸在
对方脸上,血顺着下巴滴」换成「一拳挥空,对方侧身避开,桌上的杯子被带倒」;参考图被拒换一张
构图与角色一致、画面本身合规的图;音频被拒重录那句台词。改动写进新的 job 重新 prepare,让创
作者在预览里看到改的是哪一项再确认;原样重投的那次确认不产生修复,只产生一笔费用。重复内容
缺陷回到对应 prompt/spec owner。
生产结束后不自动进入剪辑。素材要装配成成片时由用户点名 ;它只取舍已有帧,
不回头改本阶段的 job,也不生成新素材。
如需质量复核,报告可把已有结果另行交给 ;不要在生产调用中自动启动复核。
Dashboard 只负责展示这些文件和运行摘要,不提供 adapter 设置或生产按钮。
auditretryablerepeated_contentrunning_attempt$short-drama-edit$short-drama-reviewOn success, report the actual output path, media type, and run status; do not write "adapter returned success" as a quality conclusion.
After multiple tasks or retries, first run : terminal failures route via ; retries still require new explicit confirmation; if output is missing or
a file's hash or size no longer equals the run record, first recheck the current bytes or re-produce. is only a cost and diagnostic signal;
it cannot automatically determine whether the same-text retry is reasonable or unreasonable; is a pending operational status, and audit must return attention.
Failures are routed three ways. Technical failures such as timeout, throttling, and server errors can be retried with a cap. When the failure message names which input was rejected—
prompt text, reference image, or audio—fix that item before resubmitting: if text was rejected, rewrite that sentence, changing
"fist slams into the other's face, blood drips along the chin" to "fist swings empty, the other sidesteps, the cup on the table is knocked over"; if the reference image was rejected, replace it with an image whose composition and character are consistent and whose content is compliant; if audio was rejected, re-record that line. Write the change into a new job and re-run prepare, letting the creator see in the preview which item changed, then confirm; resubmitting the same content without change produces no fix, only a charge. Duplicate-content defects return to the corresponding prompt/spec owner.
Production does not automatically enter editing. When the material needs to be assembled into a final cut, the user names ; it only selects among existing frames,
and does not retroactively change jobs from this stage or generate new material.
If quality review is needed, the report can hand existing results to separately; do not auto-start review from within the production call.
The Dashboard is only for displaying these files and run summaries; it does not provide adapter settings or production buttons.
auditretryablerepeated_contentrunning_attempt$short-drama-edit$short-drama-review安装维护
Installation and Maintenance
只有安装、升级或排障时运行离线自检;普通创作和生产准备不运行:
bash
python3 scripts/selftest.py
python3 scripts/provider_adapters.py --selftestRun offline self-tests only during installation, upgrade, or troubleshooting; not during normal creation or production preparation:
bash
python3 scripts/selftest.py
python3 scripts/provider_adapters.py --selftest