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-assets
。
This 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
$short-drama-image-prompts
, video prompts belong to
$short-drama-video-prompts
, dialogue and recording sheets belong to
$short-drama-write
, and voice identity belongs to
$short-drama-assets
.

Quick Start

Quick Start

只在用户明确要求实际生成后,从当前
图片提示词.md
、
分镜.md
或
视频提示词.md
中 取出本次提示词,建立一个有边界的运行 job。creator-first job 的
source
必须指向拥有这条提示词的 当前 Markdown,
source_entry
必须点名该文档允许的二级标题:
图片提示词.md
用
IMG-*
,
视频提示词.md
用
MOTION-*
,
分镜.md
用
SHOT-*
(modality 为
image
,正文取该镜的
### 冻结关键帧提示词
)。此选择器只提取首帧;尾帧需先由图片提示词阶段建立独立
IMG-*
状态图条目, 再从
图片提示词.md
准备 image job。创作者也可以提供已有起始帧—— 在自己的工具里出图再放进项目同样成立,图片始终不进项目时走分镜的
PLAN-...
; 产出落在
剧集/<EP>/制作成果/images/
后,分镜 owner 才能把它绑成
用途:起始帧
的
REF-...
。存在真实参考图时, 还必须逐张填写
reference_bindings
的槽位、顺序、路径、中文名、用途以及允许/禁止控制范围; 内置视频 adapter 把这里的
用途
字段读成供应商自己的 role,只接受它公布的取值 (MiniMax 为
first_frame
/
last_frame
/
reference_image
/
reference_video
/
reference_audio
, Seedance 为三个
reference_*
);带参考图却没有绑定的 job 会直接失败,不替它猜一个 role。 本地图片由内置 adapter 按 base64 data URI 直接送出,不需要自建上传服务。 条目的「输入参考图」写成
PLAN-...
时,那些图片在创作者自己的工具里,项目内没有文件可送:
prepare
直接失败并说明先把真实文件放进项目、改写成
REF-...
,不拿计划当输入,也不静默丢掉参考。
references
可以省略并由绑定顺序生成,也可以作为相同顺序的显式镜像。输出放在
剧集/<EP>/制作成果/
;这个 job 是生产工具的临时输入,不是第六份创作文档:
bash
python3 {技能目录}/scripts/production_tool.py prepare <project> --job <临时-job.json>
先展示
prepare
的完整预览;此时不会调用供应商。
Only after the creator explicitly requests actual generation, take the current prompt from
图片提示词.md
,
分镜.md
, or
视频提示词.md
, and create a bounded run job. A creator-first job's
source
must point to the current Markdown that owns this prompt, and
source_entry
must name the document's allowed secondary heading:
图片提示词.md
uses
IMG-*
,
视频提示词.md
uses
MOTION-*
,
分镜.md
uses
SHOT-*
(modality is
image
, body is taken from that shot's
### 冻结关键帧提示词
). This selector only extracts the first frame; the tail frame must first be established as a separate
IMG-*
state-graph entry by the image prompt stage, and then an image job is prepared from
图片提示词.md
. 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
PLAN-...
from the storyboard; after the output lands in
剧集/<EP>/制作成果/images/
, the storyboard owner can bind it as a
REF-...
with
用途:起始帧
. When real reference images exist, you must also fill in each slot of
reference_bindings
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
first_frame
/
last_frame
/
reference_image
/
reference_video
/
reference_audio
, Seedance uses three
reference_*
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
PLAN-...
, those images live in the creator's own tools and there is no file in the project to send:
prepare
fails directly and explains that real files must first be placed in the project and rewritten as
REF-...
; it does not use the plan as input and does not silently drop references.
references
can be omitted and generated from binding order, or provided as an explicit mirror in the same order. Output goes to
剧集/<EP>/制作成果/
; this job is a temporary input for the production tool, not a sixth creation document:
bash
python3 {skill_directory}/scripts/production_tool.py prepare <project> --job <temporary-job.json>
First show the complete preview from
prepare
; no vendor is called at this point.

硬闸门

Hard Gate

每次生产都必须经过以下四步,顺序不可合并:
  1. 建立一个有边界的 job:一种 modality、明确数量、完整 prompt/spec、参考文件、参数、输出路径和 adapter profile。
  2. 运行
    prepare
    ,把返回的完整预览展示给创作者,尤其是数量、prompt、source entry、 reference bindings、references、outputs、overwrite 与 adapter。creator-first job 会在这一步机械核对 所选标题里的可复制提示词,以及参考图槽位、顺序、路径、中文名和控制边界;任一漂移都 fail closed。
  3. 等创作者在看到这份预览之后明确确认。只有明确同意这项当前任务,才运行
    confirm
    ; “继续”“都做完”“预算没问题”、上游内容已接受或之前确认过另一版,都不算本次生产确认。
  4. 运行
    run
    。它会在启动 adapter 前消费一次确认;成功或失败后再次执行都必须重新确认, 防止失败重试意外产生第二笔费用。
job、prompt、参数、输出路径或直接输入任一变化,旧确认立即失效。不得代替创作者填写确认。 当前已确认 job 是本轮唯一工作单元;运行结束后回报结果并交还控制权,不自动准备下一批或启动审查。
分镜.md
的「输入参考图」路径只是创作阶段的可读依据与使用意图,不是生产输入快照。进入生产时, creator-first job 必须从
图片提示词.md
或
视频提示词.md
的对应条目建立绑定;
prepare
展示的
reference_bindings
、
references
与已确认 job 才是本次 adapter 实际读取哪些文件字节、各自允许 影响什么的权威。非 creator 的结构化规格可不填
source_entry
/
reference_bindings
,继续只使用显式
references
;但新的 image/video job 只要
source
指向 canonical
图片提示词.md
或
视频提示词.md
就强制使用对应 selector,不能靠省略字段降级绕过。升级前已经 prepare 并落盘的 旧 job 仍可按原指纹读取。 新生产结果不自动回填或刷新分镜;需要把它改为后续输入时,由分镜 owner 修订文档,再建立新 job 并重新预览、确认。
Every production must go through the following four steps, in order, and they cannot be merged:
  1. Create a bounded job: one modality, explicit quantity, complete prompt/spec, reference files, parameters, output path, and adapter profile.
  2. Run
    prepare
    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.
  3. Wait for the creator to explicitly confirm after seeing this preview. Only run
    confirm
    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.
  4. Run
    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.
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
分镜.md
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
图片提示词.md
or
视频提示词.md
; the
reference_bindings
,
references
, and the confirmed job shown by
prepare
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
source_entry
/
reference_bindings
and continue using only explicit
references
; but any new image/video job whose
source
points to canonical
图片提示词.md
or
视频提示词.md
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.

命令

Commands

只在进入生产边界后把当前提示词和运行参数写成临时 JSON;视频与图片 job 的
parameters.prompt_language
跟随当前可复制正文已经解析出的提示词语言,使 adapter 追加的参考约束 使用同一种语言,而不是重新回退成固定英文。不要在创作阶段为每条提示词预建 job。 格式和 adapter 契约见 adapter-contract.md。命令由 production_tool.py 提供,然后运行:
text
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>
prepare
只验证并预览,不生产。
confirm
只保存与当前 job 指纹绑定的一次性确认。
run
才启动 adapter。
collect
只取回已经提交过、已经计费的那次任务的结果, 不重新提交、也不需要新的确认——见下面「中断不等于要重跑」。
audit
只对账本地任务历史、失败后恢复、重复内容尝试和当前输出字节, 不会调用供应商,也不把技术成功、文件存在或哈希一致写成媒体质量结论。同一 job 存在未决
running
attempt 时禁止重新 prepare、confirm 或 run;先等待完成或排查遗留 attempt。
Only after entering the production boundary, write the current prompt and run parameters as a temporary JSON; for video and image jobs, the
parameters.prompt_language
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:
text
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>
prepare
only validates and previews; it does not produce.
confirm
only saves a one-time confirmation bound to the current job fingerprint.
run
is what starts the adapter.
collect
only retrieves the result of a task that was already submitted and already billed; it does not resubmit and does not need new confirmation—see "Interruption Does Not Mean Re-running" below.
audit
only reconciles the local task history, post-failure recovery, duplicate content attempts, and current output bytes; it does not call vendors and does not write technical success, file existence, or hash consistency as media-quality conclusions. While an unresolved
running
attempt exists for the same job, re-running prepare, confirm, or run is forbidden; first wait for completion or investigate the leftover attempt.

输入选择

Input Selection

  • image:读取
    图片提示词.md
    的当前
    IMG-*
    可复制正文,或
    分镜.md
    的当前
    SHOT-*
    冻结关键帧正文,加上必要参考图和明确的输出尺寸/数量;creator-first job 使用
    source_entry
    锁定这一条。资产板走
    IMG-*
    ,某一镜的起始画面走
    SHOT-*
    ;两者不互相替代。
  • video:读取
    视频提示词.md
    的当前
    MOTION-*
    可复制正文,并核对
    分镜.md
    中对应镜头、 冻结关键帧、时长与画幅;creator-first job 使用
    source_entry
    锁定这一条。连续段选择从上一段 生成结果续接时,下一段 job 同时绑定上一段实际视频和从该视频取得的实际尾帧,并保留
    continuity_video
    、
    actual_tail_frame
    的不同职责;供应商 role 由目标模型 adapter 翻译。H3 的这组 输入统一译为
    reference_video + reference_image
    ,不能混成
    reference_video + first_frame
    ;不以 计划尾帧或文字描述代替真实文件。
  • tts:从
    剧本.md
    读取原句与表演要求,声音参考由用户或现有媒体明确提供。不得在生产 job 中改词,也不为 TTS 新建第六份创作文档。
  • music:读取
    视频提示词.md
    中创作者已确认的时间线音乐章节;主题曲使用已确认歌词,纯配乐 不携带歌词。供应商不能精确承诺时长时,生成源音轨后仍由
    $short-drama-edit
    按文档里的混音意图完成落点、 循环、淡入淡出和对白 ducking。
一个 job 不混合 modality。大批量工作拆成创作者能看清数量和成本边界的小 job;不为方便把整季 隐式塞进一次确认。
  • image: read the current
    IMG-*
    copyable body from
    图片提示词.md
    , or the current
    SHOT-*
    from
    分镜.md
    frozen keyframe body, plus required reference images and explicit output dimensions/quantity; creator-first jobs use
    source_entry
    to lock this entry. Asset board uses
    IMG-*
    ; a particular shot's start image uses
    SHOT-*
    ; they do not replace each other.
  • video: read the current
    MOTION-*
    copyable body from
    视频提示词.md
    , and cross-check the corresponding shot, frozen keyframe, duration, and aspect ratio in
    分镜.md
    ; creator-first jobs use
    source_entry
    to 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 of
    continuity_video
    and
    actual_tail_frame
    ; vendor roles are translated by the target-model adapter. This group of H3 inputs is uniformly translated to
    reference_video + reference_image
    , not mixed into
    reference_video + first_frame
    ; do not substitute the planned tail frame or text description for the real file.
  • tts: read the original sentence and performance requirements from
    剧本.md
    ; 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.
  • music: read the creator-confirmed timeline music section from
    视频提示词.md
    ; theme songs use confirmed lyrics, pure BGM carries no lyrics. When the vendor cannot precisely promise duration, after generating the source audio track,
    $short-drama-edit
    still handles placement, looping, fades, and dialogue ducking according to the mixing intent in the document.
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 完全一致的结果,并把完整文件原子复制到项目的
剧集/<EP>/制作成果/
目录。项目和上游 Skill 不写死供应商、模型或即将变化的 API。
内置图片/视频 compiler 会根据已确认的
reference_bindings
,按顺序向供应商 prompt 附加一段确定性的 引用语义说明(中文名、用途、允许控制与不得控制范围);不会把槽位名误当成要渲染进画面的文字。 外部 adapter 也必须保留这组语义或明确拒绝,不能只上传文件而静默丢失控制边界。
本技能可选提供四个 stdlib adapter,均通过项目外 adapter config 选择,凭据只从运行环境读取:
  • Seedance:模型/Endpoint ID 必须由账号显式配置;compiler 支持 官方图片、视频和音频参考 role,内置 runtime 未配置可信上传时仍拒绝本地参考文件。
  • GPT Image 2:无参考图走 generation,有参考图走 edit; 固定高保真引用并校验尺寸、格式与透明背景限制。
  • MiniMax Music:使用
    music-3.0
    与 hex 结果,区分主题曲 和纯配乐,不伪造时长请求字段。
  • MiniMax 语音:
    tts
    模态;模型与
    voice_id
    都必须 由账号与文档显式给出,不内置音色清单。只从预置音色合成,不做声音克隆——克隆是授权问题, 创作者授权的参考录音按普通创作者输入走
    输入/
    。
  • MiniMax H3 视频:模型 ID、分辨率集合与时长区间必须 由账号显式配置;提示词进
    content
    的 text 项,参考图按显式 role 绑定,本地参考在没有可信上传时 fail closed。该模型与画面同一次生成声音,写法影响见视频提示词技能的目标模型能力档案。
这些 adapter 是已验证请求契约,不是账号可用性或生成质量保证;正式生产仍必须通过上面的本次 确认闸门,并由审查 Skill 判断产物质量。
仓库自带
fixture_adapter.py
只用于离线测试,不代表真实生成质量或默认生产 adapter。
Adapter 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
剧集/<EP>/制作成果/
directory. The project and upstream Skills do not hardcode vendors, models, or soon-to-change APIs.
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
reference_bindings
; 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.
This 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
    music-3.0
    and hex results; distinguishes theme song and pure BGM; does not fabricate duration request fields.
  • MiniMax Speech:
    tts
    modality; both model and
    voice_id
    must 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 through
    输入/
    as 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
    content
    , 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.
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
fixture_adapter.py
is for offline testing only and does not represent real generation quality or the default production adapter.

中断不等于要重跑

Interruption Does Not Mean Re-running

视频任务在提交那一刻就已经计费,不是在拿到结果时。提交之后的一切——轮询几分钟、下载—— 都可能被进程被杀、断网、机器休眠打断。内置 adapter 因此在拿到供应商任务 ID 的第一时间就把它 写进
handle_path
(早于第一次轮询),这个路径不随本次尝试一起删除。
于是中断之后有三条确定的动作,不必再花一次钱:
  1. audit
    会把带着任务 ID 的未完成尝试报成
    orphaned_provider_job
    ,
    action
    是
    collect_before_retry
    ;
  2. collect
    用那个 ID 取回结果并把这次尝试标成成功;
  3. 只有在
    collect
    也确认那边确实失败之后,才走重新确认与重投的老路。
不要在
audit
报出
orphaned_provider_job
时直接重投
——那是在为同一个镜头付第二次钱。
collect
不走确认闸门是有意的:闸门防的是意外花钱,而 collect 不花钱; 如果它也要求重新确认,那么中断之后最省事的路径就变成再付一次,正好是闸门要防的事。
A 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
handle_path
as soon as it receives it (before the first poll), and this path is not deleted with this attempt.
So after an interruption, there are three deterministic actions that avoid spending again:
  1. audit
    reports the unfinished attempt with its task ID as
    orphaned_provider_job
    , with
    action
    set to
    collect_before_retry
    ;
  2. collect
    uses that ID to retrieve the result and marks this attempt as successful;
  3. Only if
    collect
    also confirms that the provider really failed do you go down the old path of re-confirming and resubmitting.
Do not resubmit directly when
audit
reports
orphaned_provider_job
—that would be paying a second time for the same shot. It is intentional that
collect
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.

结果与复核

Results and Review

成功后回报实际输出路径、媒体类型和运行状态;不要把“adapter 返回成功”写成质量结论。 多任务或重试后先运行
audit
:终态失败按
retryable
路由,重试仍须新的明确确认;输出缺失或 文件的哈希或大小不再等于运行记录时,先复核当前字节或重新生产。
repeated_content
只是成本与诊断信号, 不能自动判定同文重试合理或不合理;
running_attempt
是未决运营状态,audit 必须返回 attention。 失败按三路走。超时、限流、服务端错误这类技术失败可做有上限重试。失败信息点名了被拒的是哪 一项输入——提示词文本、参考图或音频——就先改那一项再投:文本被拒改写那一句,把「一拳砸在 对方脸上,血顺着下巴滴」换成「一拳挥空,对方侧身避开,桌上的杯子被带倒」;参考图被拒换一张 构图与角色一致、画面本身合规的图;音频被拒重录那句台词。改动写进新的 job 重新 prepare,让创 作者在预览里看到改的是哪一项再确认;原样重投的那次确认不产生修复,只产生一笔费用。重复内容 缺陷回到对应 prompt/spec owner。 生产结束后不自动进入剪辑。素材要装配成成片时由用户点名
$short-drama-edit
;它只取舍已有帧, 不回头改本阶段的 job,也不生成新素材。 如需质量复核,报告可把已有结果另行交给
$short-drama-review
;不要在生产调用中自动启动复核。 Dashboard 只负责展示这些文件和运行摘要,不提供 adapter 设置或生产按钮。
On 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
audit
: terminal failures route via
retryable
; 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.
repeated_content
is only a cost and diagnostic signal; it cannot automatically determine whether the same-text retry is reasonable or unreasonable;
running_attempt
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
$short-drama-edit
; 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
$short-drama-review
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.

安装维护

Installation and Maintenance

只有安装、升级或排障时运行离线自检;普通创作和生产准备不运行:
bash
python3 scripts/selftest.py
python3 scripts/provider_adapters.py --selftest
Run 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