| name | short-drama-video-prompts |
| description | 为已接受的短剧镜头和关键帧编写或修改可复制的通用视频提示词与运动规格,也负责跨镜时间线配乐/主题曲的 provider-neutral 音乐规格。用户提到视频提示词、文生视频、图生视频动作、人物表演过程、运镜、对白口型、环境运动、镜头时长、起止状态、把分镜转成视频提示词、写主题曲/配乐提示词或校验时间线音乐规格时直接使用;视频部分只描述单个已编镜头内的运动、表演、摄影与声音,音乐部分只投影已接受剧情/导演意图和创作者提供的歌词;不生成媒体,不调用供应商,不创作歌词,也不改写分镜边界。 |
| license | MIT |
短剧视频与时间线音乐提示词
把分镜已经决定的一个镜头,写成按时间执行的动作、表演、摄影和声音。运动说明只实现起止边界,不能改写边界。
当音乐承担跨镜、跨场或主题曲职责时,本技能拥有独立的 provider-neutral 时间线音乐规格;
它不替创作者写词,也不把配乐为了某个供应商方便而烘焙进每镜。
预览、末端报告与补拍说明是创作者读的:项目内跟随 short-drama.json#/language,独立运行时
跟随用户使用的语言。送给视频生成器的提示词正文在项目内跟随
#/format/prompt_language,独立运行时由用户指定、未指定则为 en。改了描述语言
不等于改了画面里说什么或写什么——那来自已接受的资产记录与文字政策。
开始前
本技能可独立安装和执行。先读取用户明确提供的镜头、关键帧与本任务直接输入;若当前目录是
short-drama 项目且项目工具可用,可以读取 status 并使用其发布生命周期,但缺少 core
或任何其他技能都不是视频提示词工作的阻断条件。阶段契约
给出本阶段边界、制作形态输入与规则表,无需读取其他技能的文件。
Quick Start
校验一个独立的时间线音乐规格,不调用供应商或生成媒体:
python3 {技能目录}/scripts/music_spec_check.py examples/minimal-music-specs.jsonl
python3 {技能目录}/scripts/selftest.py
进入条件与权属
- 可从已接受的镜头、关键帧或创作者直接提供的等价输入进入,无需重新开发故事或安装主技能。
- 所有权或直接输入影响不清楚时,读
阶段契约 的所有权边界;需要定位规则 ID
或解释审查问题时,读同一文件的本阶段规则表。
- 输入至少包含当前已确认的镜头、起始关键帧/边界、时长、连续性终点与对白/声音引用;需要更新时退回
$short-drama-storyboard。
- 若创作者明确要求全链预览,可对状态为
provisional、但没有 unresolved 问题的镜头/关键帧
写候选运动说明;明确标为待确认,禁止声称已接受或已通过。
- 镜头的起点、终点、时长、对白、资产绑定和下一镜状态全部只读。运动规格只负责有序动作、表演过程、摄影与声音实现,以及派生的结束报告。
- 视觉、声音和口型等审美选择读取
short-drama.json#/creator_authority/{visual_direction,production_profile};
直接从本环节开始的项目若为 unset,就保留选择,不把默认配置写成已接受事实。
- 先写不绑定供应商的通用文本。不得生成视频或音频、上传参考帧、创建远程执行任务、调用模型接口、轮询状态或宣称成片质量。
按任务加载资料
规格使用 运动规格模板;末镜或下一集记录尚未建立时参考
末镜定位示例;可复制交付使用
Markdown 模板。只加载本次问题需要的资料。
每轮的工作单元
一轮处理一个场次或一段连续镜头范围。整集请求按这些边界拆成若干轮,每轮:
- 只读这个范围的直接输入,写它的逐镜运动规格,跑本地结构检查;
- 落盘这个范围,其余范围保持原样;
- 报告已覆盖范围、剩余范围、未决 motion 字段和下一个值得做的范围;
- 交还控制权,等创作者的下一次请求。
生产、重新打包和审查各自是独立的工作单元,由创作者明确请求时开始。
工作流
1. 先写“不能动的边框”
建立只读的起止边界清单:
- 镜头/关键帧引用:文件头
sources 声明的快照 key(src)加准确的 record_id/field;
- 时长,以及起点姿态、重心、目光、双手、持物和空间关系;
- 分镜负责的结束姿态/状态与连续性终点;
- 准确的对白、画外音、音效和声音引用;
- 镜头目的、信息/情绪变化和下一镜交接(只用于核对)。
任何来源冲突先停止。如果创作者要求延长时长、换结尾站位、删对白或改变下一镜开场,
就向负责该内容的技能提出修改请求;不要在运动规格中覆盖。
2. 决定这个镜头真正发生什么变化
用一句话写镜头内的运动目的:“观众在这几秒内看到或感到什么变化?”然后选择少量有因果顺序的事件:主体行动 → 可见反应或注意转移 → 到达终点。只加活动会冲淡表演。
写逐镜文本前,跨镜头重读完整来源顺序,把每个有语义的动作、接收、声音变化和道具状态只放到
它应发生的位置;上游串行事件不得因压缩而并发,也不得把后发生的事件挪到较早镜头。
reviewed_invariant:动作量必须让演员有时间完成镜头的故事变化;是否能完成由审查者结合当前资料判断,不用动词数或固定秒/动作公式硬挡。
craft_default:短镜头优先一个主要动作,加一个必要反应;复杂过程请求分镜拆镜或延长。
taste_option:克制、爆发、停顿、喜剧节奏等取决于角色和导演意图。
3. 按七部分编写运动说明
- 起点
start_anchor:只重述开动所需的姿态、重心、目光、手、持物和空间关系。
- 有序动作
ordered_subject_motion:谁先做什么、方向/路径、物理接触与先后;不要用一串“同时”。
- 表演过程
performance_arcs[](按需):只有承担可见变化的人进入;根据本镜实际需要写
trigger、receive、mask/visible leak、choice 或 landing,不把六项变成必填拍表。空镜、道具细节、
纯空间转场或只有物理动作时省略这两个字段;需要时从
表演/注意交接片段 插入统一结构,多人物注意真正交接时才写
attention_handoffs[]。
- 摄影机
camera:一次有动机的移动,写起点、速度/节奏和终点;或明确固定机位。
- 环境与声音
environment_motion/audio:只写有剧情和连续性依据的环境运动、对白、画外音、
环境声、音效和音乐意图;本镜 shot_ref 指向的 accepted scene plan 有 sound_strategy 时,
才逐镜投影其进入、撤出、距离、留白和 bridge,不在 motion 再保存第二条 plan ref。
- 时间
timing_plan:用阶段/顺序为主;需要精确时间时,明确段落总和必须正好等于镜头时长——超出会被截断,不足的余量会被执行端用未经批准的动作填满。
- 结束报告
end_report:说明当前描述怎样到达分镜负责的连续性终点;终点要求可见完成时,
写清动作接触、物件归属、位置或可观察结果,抽象的“处理、履行、完成”不能替代这些事实;
终点若只要求过程开始,也不得擅自推进到完成。结束报告只用于比较,不是新的权威来源。
4. 不重复参考帧已经说明的内容
如果绑定的参考帧已经说明人物外貌、服装、场景构图和光线,正文就聚焦“从此刻开始怎么变”。只重复动作执行中容易出错的局部事实,如“右手仍握住铜夹”。不要复制完整人物/场景设定,也不要用“与参考一致”替代必要的起点信息。
每条参考绑定还要声明稳定 slot_id、显式 order 与 role / may_control / must_not_control。
数组重排或插入参考不得改变已有槽位用途。身份参考不自动决定
构图,构图或尺度参考不自动带入图中人物、服装、文字、道具和故事状态;先做像素/文字
检查,再使用允许参考的内容。只有创作者/参考图权利人的可核对说明,或运行环境获授权
后形成的输入参考图检查记录,才能给出结论;说明记录写 creator_described,视觉检查写
visually_inspected,两者都没有时保持 unverified。这不是媒体生成
或成片验收。
5. 检查冲突与单镜头边界
structural_invariant:明确时间段相加正好用完镜头时长(既不超出也不留余量);同一时间区间不能既固定机位又摇、移、手持,除非写清切换;引用必须可解析;end_report 必须匹配来源终点。
reviewed_invariant:动作物理可行、存在表演变化时弧线可见、摄影有动机、没有语义发明。
craft_default:环境和摄影只支持注意、压力、揭示、结盟或转场,不用来装饰每一镜。
taste_option:固定或移动机位、焦段语汇、口型精度和音乐密度由项目配置决定。
最后串读整场:上一镜结束边界与下一镜冻结首帧逐项相等;所有切换继续沿用已接受工作侧、
屏幕方向与可命名空间锚点。同一句对白在相邻镜头中的开始、延续、停顿与结束也必须接得上,
不能在前镜结束后又无依据续说。同一句跨过多镜时,每镜显式说明画内/画外延续、停顿或结束,
中间镜不能省略声音状态。任一处不一致先退回修正,不靠流畅措辞掩盖。
一个已经设计好的镜头只保持一个剪辑边界。不要在镜头内部偷藏未声明的切镜;打包也不改变源镜头可以单独审查的要求。
预览时从现有 shot/keyframe/boundary/dialogue/reference/config refs 派生文本准备度,
逐镜按实际声明的 scope 分别显示 ready | blocked 与真实 blocking_gaps;不把它写回 motion spec
形成第二套状态。
准备度只说明文本是否足以交给外部执行,绝不保证生成后的身份、表演、口型、混音、剪辑或市场效果。
逐字台词缺失时,只阻断逐字台词时序、台词表演/口型可行性及“具体总时长可演”的判断;
仍可预览不依赖逐字语速的候选构图、动作先后和相对节奏,不得自编台词。其他缺口同样只阻断
其实际支持的交付判断。只有全部适用 scope 都为 ready,才可声称整体 delivery-ready。
本环节新增的动作/表演、摄影、声音与相对节奏选择也按类别总括,不逐镜复述;只单列会改变
信息时机、因果顺序、观众立场或表演所有权、可读文字、场尾落点、制作成本或回退路径的高影响例外。
未被总括的新增选择要么删除,要么补入接受摘要。
若创作者声明了多镜交付容器,一个容器可以按来源顺序承载若干连续镜头:此时切换只允许出现在成员镜头边界上,容器时长必须等于成员镜头已接受时长之和,镜头目的与逐镜可审查性不变。容器分层、成员资格与两级算术见 delivery-profile.md。
写完容器记录后用 container_check.py 做一次全集对账:
python3 <skill-dir>/scripts/container_check.py \
剧集/EP001/storyboard/delivery-containers.jsonl \
--shots 剧集/EP001/storyboard/shots.jsonl
逐个容器都正确不代表全集的账是对的:一个镜头同时进两个容器会让全集时长凭空多一段,
一个镜头谁都没装会让它无声消失——两种错误在单容器视角下都看不见。脚本做的是集合
与算术比对:成员是否重复认领、成员是否属于本集、容器时长是否等于成员之和、容器加散镜
是否正好等于全集总时长。
未装容器的散镜是合法的,脚本只报告不判错;时长尚未确定的镜头列在 unmeasured_shots
并排除在总和之外,这样"还没做完"不会被当成"做错了"。
若 timing_plan 写的是显式秒段,再用
motion_timing_check.py 核 VID-04 的算术:
python3 <skill-dir>/scripts/motion_timing_check.py \
剧集/EP001/storyboard/motion-specs.jsonl \
--shots 剧集/EP001/storyboard/shots.jsonl
超出与不足都算违约,且不足的后果更重:未分配的余量不会渲染成静止画面,执行端会用
没有上游来源的动作、表情或运镜把它填满。脚本还会报未声明的区间重叠、declared_total
与实际覆盖不一致,以及 boundary_refs.duration 相对镜头已接受时长过期。
relative 计时不做算术断言,列在 relative_plans 里报告而不是判过。
若当前版本是局部补拍或替代实现,才增加 coverage_scope 并标明 pickup | alternate,
按 补拍/替代范围片段 用同一文件内稳定的运动记录 ID
说明母版和补充关系;每项原文要求都要对应到
当前运动字段或说明去向。补拍默认只补充、不替代母版;运动规格只能提出替代请求,
reviewer 在下游审查结论中决定,不能回写运动规格形成循环引用。
若收到绑定准确 prompt/spec/reference/config 的项目生产观察,只修改诊断涉及的运动字段,并在
修订提案中列出 change_set、preserve_set 和仍未知结果;不能把重复提交相同文本当修复,
也不能把一次配置下的观察提升为通用动作、表演或运镜规则。
6. 预览、接受与发布
先向创作者展示起止边界摘要、动作/表演顺序、摄影/声音选择、时长警告和可复制提示词。接受后写:
剧集/<EP>/storyboard/motion-specs.jsonl:首行 sources 声明本文件引用的上游快照,
其后每行一条运动规格,字段与只读来源引用见
motion-spec.jsonl.md;
剧集/<EP>/storyboard/delivery-containers.jsonl:仅当项目声明了多镜交付容器时,
记录容器成员顺序、各成员已接受时长的只读引用与容器时长,模板见
delivery-container.jsonl.md;
剧集/<EP>/storyboard/video-prompts.md:由已接受规格与容器记录生成的文本版本,元信息写明用的是哪个配方。
generic_prompt 与派生文本是同一段交付文本,写成执行端可以直接下单的画面描述:从已接受起点的
姿态与持物说起,逐条写动作、接触、摄影机行为与终点状态。写满的样子见
生产提示词语法惯例,那里有成稿与一段合成反例。
它只含要被拍出来的内容(VID-22)——把规格字段名、规则原文或约束清单复述进去,
读起来很规范,但执行端拿不到任何可以画出来的名词。
自然语言改提示词时,先展示规格字段怎样变化和重新生成的文本预览;若改动触碰分镜或
剧本负责的内容,保持当前文件不变,并把修改请求交给对应技能。项目工具可用时用 publish
发布跨文件产物并声明直接输入;独立运行时直接写出本阶段文件。
完成标准
- 提示词从准确的
start_anchor 出发,以明确顺序实现已确认终点,不改变时长、对白或下一镜;
- 若本镜确有表演变化,表演有触发、处理与可见结果;动作量可行,摄影与环境/声音服务镜头目的;
- 参考帧已知外观不被重复描述淹没,通用提示词可独立复制;
- 交付文本只含要拍出来的画面内容:没有参考图文件名、版本号、内部标记、草图指代或任务备注;同一角色的参考绑定在每次提及处一致,不出现只绑一半的写法;
- 已完成当前批次的本地结构检查;需要内容 verdict 时另行请求
$short-drama-review;
- 没有媒体文件、供应商接口或远程任务字段、远端 ID 或“视频已生成”声明。
投产交接
用户要求把已接受运动规格真正生成视频时,交给 $short-drama-produce。传递准确的 motion
spec、起止帧/参考文件、时长、画幅、声音要求和目标路径;生产技能必须展示完整预览并取得
本次任务的明确确认后才可调用外部 adapter。本技能本身仍只负责规格和提示词。
环境声与事件音随镜头走,写在各自运动规格的 audio 里;已被镜头认领的 [SFX] 剧本块,
它声明的那个声音要出现在这一镜的 audio 里,否则这条已接受的事实到交付时就消失了。
音乐承担跨镜、跨场或主题曲职责时,写独立的 provider-neutral
剧集/<EP>/storyboard/music-specs.jsonl,并用
music_spec_check.py 校验。音乐是时间线层,不能为了某个
供应商方便而复制进每镜视频提示词。生成时把已接受的 prompt、歌词(如有)、引用和目标路径
作为独立 music job 交给 $short-drama-produce。