跳到正文

短剧镜头视频提示词

根据分镜、角色资产和连续性要求组织视频生成提示词,明确镜头动作、时序与参考材料。

开源精选视频内容31 个文件2,909 Stars浏览次数 0zenstory-ai/drama-skills MIT版本 f53fb20
开始使用

下载前阅读 SKILL.md 中的使用条件,并确认所用工具支持对应能力。

输入资料
分镜和镜头目标 角色、场景及参考图像 阅读本节完整说明
交付内容
分镜视频提示词 生成参考与连续性说明 阅读本节完整说明
环境与依赖
只有安装、升级或排障时运行 python3 scripts/selftest.py。 阅读本节完整说明
  1. 获取完整包,保留配套文件的目录结构。
  2. 按照原文准备所需工具、依赖与输入资料。
  3. 阅读对应使用步骤与输入输出说明,在自己的环境中验证结果。

使用提示摘自原文,配套文件保留来源版本;实际运行条件以各包说明为准。

正文

获取原文件

references/delivery-profile.md

目录

一、档案由创作者声明,本文只规定槽位职责

交付档案是创作者可选声明的一份排布约定:把已接受的运动规格摊成执行端逐行读取的 文本。本套件只规定每个槽位必须回答什么(语义),不规定它写成什么样子(语法)。

  • 槽位语义属于本套件:一个位置槽必须回答“相对哪个画面内可命名的锚点”,换任何 执行端这个问题都成立,也不含任何供应商内容;
  • 槽位拼写属于创作者档案:用什么括号、分隔符、编号前缀和字段名,随执行端更换而 作废,本套件不规定,也不把任何一种拼写当作标准格式;
  • 项目没有声明档案时,按 motion-recipe.md 写连贯的自然语言即可。 不要为了“像个格式”自造槽位,空槽位比缺槽位更难审查。

数字规则仍然一律拒绝,只有两处例外,因为它们是对创作者已接受值做算术,不引入 任何新标准:时长在两个层级上都必须精确加总(分段之和等于所属镜头的已接受时长,容器 时长等于其成员镜头已接受时长之和);分段标识必须唯一且有序。除此之外的档位、配额、 每镜增量和元素上限都不由本文档提出。

容器之外的交付路由

容器回答的是“一次交付里装几个已接受镜头”。有些执行方式还会改变这一次从哪里开始生成, 那是另一个维度,容器字段表达不了:

路由 起点来自 对本套件产物的影响
逐镜(默认) 该镜已接受的起始边界 无
多镜打包 首个成员镜头的已接受起始边界 无,按本文容器算术记账
单次长生成 覆盖段落中第一个镜头的已接受起始边界 无;按多镜容器记账(见下)
从已生成结果续接 上一次生成出来的结果 多一层证据义务,见下

前三种只改变打包粒度。镜头目的、起止边界与逐镜可审查性不因为”这次一起生成”而消失。

单次长生成不是容器之外的第三种账。 它承载多个已接受镜头,所以就是一个多镜容器, 照 VID-13 与 VID-15 记账:成员来源顺序连续、共享同一条绑定链、不跨场次边界, 容器时长等于成员已接受时长之和,且在全集账目里只被算一次。它只是把切换交给执行端 在已接受的成员边界上完成,不把若干镜头合并成一个没有内部边界的长镜。 若一次长生成想跨越 Location/View 变化或场次边界,先拆成两个容器——这一条没有例外, “执行端一次能读多长”不是创作决定。

第四种不一样:它的起点是一段已经生成出来的媒体,而这段媒体在本套件里不是权威产物, 最多只能是一条 generated_result 观察记录(两种观察的区别由核心的参考资料定义)。

因此续接路由要同时守住两条:

  • 已接受的镜头起始边界仍是唯一权威。续接不产生第二个起点取值权威;不能因为“结果看起来 是这样”就把观察到的状态回写成镜头边界。两者不一致时先回分镜发修订请求,不在交付层调和。
  • 对结果状态的任何主张都要绑定观察记录。没有创作者提供或授权形成的观察时写 unverified, 并说明续接依据缺失。不要凭想象补一个结尾画面:续接提示词的每一条连续性指令都建立在那个 起点上,起点是编的,后面整条链一起作废。

连续段真正进入生产时,下一段同时使用两项真实输入:

  • 上一段实际视频:承接已经生成出来的动作速度、人物表演、运镜、环境运动与声音空间;
  • 上一段实际尾帧:从该视频直接取得,作为下一段第一帧的人物姿态、双手、持物、光线与构图起点。

二者职责不同,不能只给其中一项,也不能用计划尾帧、分镜关键帧或文字描述冒充。提示词仍按下一段 已接受的「起点 → 唯一动作 → 终点」写;实际尾帧若与已接受起点冲突,先处理上一段结果,不能把漂移 写进下一段继续放大。

创作者已经选择续接后,缺素材只改变就绪状态,不改变执行路由:后续容器标成“待续接、不可提交”, 列明缺少上一段实际视频与实际尾帧,继续保留从已接受起点写出的内容草案;不得把它改称普通文生视频。 真实素材到位后再按模型方言加入续接触发词与实际槽位。逐镜运动正文继续承担成员边界和内容依据, 不能被当作绕开续接的平行提交方案。

路由由创作者档案声明。项目没有声明时按逐镜写,不为“支持更多路由”预留空字段。声明后在 视频提示词.md 只标一个正式执行路由;其他粒度的正文若因可审查性而保留,要明确标成成员依据。

这里的“逐镜 / 多镜容器”是打包粒度,不自动表示独立生成。同一场次、时间连续、地点与资产绑定链 不变的相邻正式段,在目标档案支持续接时默认组成实际结果接力链:第一段从已接受起点生成,第二段起 等待上一段实际视频和实际尾帧。只有创作者明确选择独立重生成,或已接受内容发生时间/地点跳变时才 重新起链;不能仅凭 one-shot-per-generation 把每镜都解释成互不相干的文生任务。

二、容器算术(唯一允许的数字规则)

容器是执行端一次读取的交付单位。它可能正好等于一个已接受镜头,也可能按创作者声明的 打包方式承载若干个连续的已接受镜头。两种形态下算术都只对创作者已接受的值做加法, 不引入新标准:

  • 单镜容器:容器时长 = 该镜头的已接受时长。分段是容器内的有序切片,用来给动作 因果分配时间,不是新的剪辑边界——一个分段内不允许出现第二次切换(见 review-and-fixtures.md 的段内藏切)。
  • 多镜容器:容器时长 = 各成员镜头已接受时长之和。成员之间的边界仍然是真实剪辑 边界,打包不合并、不改写、也不重新分配它们;每个成员镜头内部再按上一条切分段。

两种形态的区别只在“容器里有几个镜头”,不在“镜头是什么”。把多个镜头装进一个容器 不会让它们变成一个长镜,也不会让它们失去各自的目的、边界与可审查性;反过来,容器时长 若不等于成员时长之和,多出或少下的时间会落在没有任何镜头负责的区间里。

structural_invariant:容器只能承载已接受镜头;容器时长等于其成员镜头已接受时长 之和;镜头边界、镜头目的与逐镜独立可审查性不因打包发生变化(VID-13)。

这条不变式必须可本地核对,所以需要多镜打包时,在 视频提示词.md 增加“交付分组”章节: 用稳定组 ID 依次列出成员 MOTION-... / SHOT-...、各镜时长、容器总时长,以及同场、连续、 同一地理/资产链的理由。单镜交付不需要额外章节。

双向和不变式

structural_invariant:在每个成员镜头内部,所有非重叠分段的时长相加必须等于 该镜头的已接受时长;重叠段要写明重叠关系。两个方向都是缺陷:

  • 超出:落在该成员镜头已接受时长之外的那部分被执行端截断,段尾的动作、逐字 对白和终点姿态一起丢失,end_report 会声称到达了从未被拍出的终点。在多镜容器里, 它还会挤占下一个成员镜头的起点,把两个镜头的边界一起搞坏;
  • 不足:执行端可能把已写动作拉长去占满镜头,写下的秒点整体后移,计划不再描述成片 (观察与修法见 motion-recipe.md 3.6)。

多镜容器的成员资格

打包不是把相邻镜头凑够时长。可以同处一个容器的镜头必须同时满足:

  • 来源顺序连续:在已接受的覆盖里相邻,且容器内顺序与来源顺序一致;不跳镜、不重排。
  • 绑定链不变:共享同一条已接受的地理与资产绑定。出现新的 Location/View、新的资产 变体、新的可读文字义务或任何未解决绑定时,必须换容器——否则执行端会把绑定切换当成 同一空间内的位置移动。
  • 不跨场次边界:容器不跨越已接受的场次或时间跳跃。省略、闪回分支与声明过的蒙太奇 各自单独成容器。
  • 各成员仍可单独审查:每个成员镜头保留自己的目的、起止边界与终点报告,容器只是 它们的排布方式,不是新的权威记录。

不满足时就拆容器。容器数量由绑定链和场次决定,本文不设配额;执行端一次能读多长也不是 创作决定,若打包方式与镜头边界冲突,改打包方式,不改镜头。

全集账目:一个镜头只能被算一次(VID-15)

单个容器的时长加总正确,不代表全集的账是对的。容器逐个看都成立,而某个镜头同时出现在 两个容器里,或者某个镜头谁都没装——两种错误在单容器视角下都看不见。前者让全集时长凭空 多出一段,后者让一个已接受镜头无声消失,而它对应的台词、绑定与关键帧提示词都已经做完了。

structural_invariant:在一集之内,一个镜头最多属于一个容器。容器不必覆盖全部镜头, 未装容器的镜头可以直接交付;但容器成员与散镜合起来,必须不重不漏地正好覆盖本集镜头集合。 重复计入或无人认领都是缺陷,不是打包偏好。

对账方法就是集合运算,不需要判断:把各容器的 members 展开取并集,与覆盖记录里本集的 镜头集合相比——交集之外的差集两侧都必须能解释。任一侧非空且解释不了时,先修容器划分, 不要调整镜头时长去凑总数。这条与 SHT-16 的加总互为验算:镜头侧给出本集应有的总时长, 容器侧给出实际打包出去的总时长,两个数字必须相等。

有一种情况拆容器解决不了:单个已接受镜头本身就长于执行端一次能读的长度。容器只能 承载整镜,分段又不是剪辑边界,所以这里没有打包层的解法——回分镜环节发修订请求, 把该镜头拆成两个已接受镜头,而不是在交付层把它截断或硬塞。

分段标识

分段标识必须唯一、连续,并按时间升序。重复或跳号会让引用无法解析,也让审查者无法把 问题定位到具体一段。分段数量由动作的因果节点决定,本文不设配额;但把整镜写成一个不 分段的整块,等于把全部时间交给执行端自行分配,这是最常见的失控形态——不是因为“段 太少”,而是因为没有任何一段说明这几秒里先后发生了什么。

三、槽位语义表

槽位职责 该槽位必须回答什么 省略会怎样失败
空间 本段发生在已接受场景的哪个可命名区域?画面外紧邻的是什么? 执行端沿用上一段残留或参考图猜测环境,同一场景在段与段之间换了地理,正反打穿帮
姿态 段首人物的重心、朝向、双手与持物是什么?段尾变成什么? 段与段之间人物瞬移、换手、道具凭空出现或消失,接触动作失去因果顺序
位置 相对哪个画面内可命名的可见锚点?距离与朝向怎样可比较地表述?(裸写的左右指画面左右;人物自身的左右要带主体) 只剩绝对坐标或“靠左一点”,执行端按自己的构图重排人物,轴线与遮挡关系随段变化
表演 触发是什么,可见处理是什么,落到哪个状态?这个形容词要演到多硬? 只剩情绪标签,执行端按平均值演;同一个形容词在不同段被演成完全不同的强度

用法:

  • 表演槽与剧本 (情绪) 括注同源:同一个括注同时决定表演状态和说话方式。三者 (标尺值、可见表演、说话方式)互相矛盾时以剧本括注为准,需要改动就发修订请求; 形容词要演到多硬的问题见 performance-action-timing.md 的表演标尺。
  • 每个槽位只写本段执行需要的内容。参考帧已经承载的外貌、整套服装和静态构图不重复。
  • 槽位留空好过槽位填废话。没有依据就留空并记为未解决,不要用“自然”“电影感”“氛围 拉满”占位——这类词占住了槽位,却没有回答槽位的问题。
  • 交付文本里不出现 hash、参考图文件名、内部规则 ID、锁定标记、草图指代或任务备注, 见 production-prompt-grammar.md 的“交付文本只含交付内容”。

四、必须原样保留的文本

交付文本里有两类内容不能被改写,失败方式相反:台词被改写会念错,触发词被改写会 什么都不发生。两类都由创作者档案声明,本套件都只规定它们必须回答什么。

逐字对白围栏

必须逐字保留的文本要用档案声明的定界符与描述文本隔开:围栏内是原样保留的台词, 围栏外是可以改写的描述。围栏是一道文本边界,不是风格选择——没有它,执行端会把台词 当描述改写、翻译或压缩,也可能把描述句当成台词念出来。

  • 围栏内只放台词本身与必要的说话人标识;情绪括注、导演提示和动作说明写在表演槽或 围栏外的相邻描述里。
  • 围栏用哪一对符号来自创作者档案,本文不规定。
  • 画外音、旁白与同期对白各自带明确的声源标识;把三者混进同一段无标识文本,执行端无法 决定要不要对口型。声源标识里一并写这句台词的口语语言:说话人的 voice_direction.language 已经定了就照写,没定就向创作者确认后再写,它与描述文本用什么 语言无关。不写,执行端就按描述语言念,得到错的配音语种和错的口型。

执行触发词

有些执行方式要求交付文本里出现固定字样,才会走到对应的处理路径。它和逐字对白同属 不可改写的文本,但风险方向相反。

按字面匹配的入口,通常不会因为字样被改写而报错——改写后的句子仍然是一段合法描述, 于是那条路径没有被选中,而请求照常返回。本提示词环节不调用生成服务,因此不断言任何具体 入口的实际行为;这里只说明为什么这类改写值得当成缺陷防:它的失败是安静的, 交付文本读起来完好,不像超时或参数错误那样自己暴露出来。

至于某一次结果是否真的走了那条路径,属于结果服从度,只能由绑定的生产观察支持, 不能从提示词文本推断。

  • 触发词由创作者档案声明。本套件不规定任何具体字样,也不推断某种执行方式需要哪些词; 档案没有声明就不写,凭空加入的“固定字样”只会变成画面上的文字或多余的旁白。
  • 一旦声明,就在该路由的交付文本里逐字节出现:不同义替换、不翻译、不省略,也不为了 “读起来顺”改写语序。这与参考编号的稳定性同源——都是执行端按字面匹配的记账,不是措辞偏好。
  • 触发词写在描述文本中,不进逐字对白围栏:围栏内的内容会被当作要念出来或要显示的台词。
  • 触发词只声明路由,不替代内容。写了续接字样不等于说明了续接从哪个状态开始, 该写的起点、动作与终点一条都不能少。

reviewed_invariant:档案声明了某路由的必需字样时,该路由的交付文本逐字保留它们; 审查者拿档案声明与交付文本比对(VID-19)。档案给出可机读字样清单后校验器才可能接管, 在此之前不声称机械阻断。

五、合成示例(记号来自创作者档案)

以下人物、场景与记号均为合成材料。这是一个单镜容器:镜头已接受时长 5.0 秒,容器 时长同为 5.0 秒,三段相加正好 5.0 秒。若同一场戏的下一个镜头也被装进这个容器,容器 时长就变成两镜已接受时长之和,而每个镜头内部各自重新分段。

[段1 | 0.0–1.6]
  〈空间〉檐廊内侧,右手边是通向内院的门;门外区域本段不入画
  〈姿态〉角色甲半跪,重心在右膝,左手扶栏,右手在竹箱内翻找
  〈位置〉角色乙站在角色甲右后方约两步,位于角色甲视线之外
  〈表演〉角色甲听见身后一次落锁声,翻找动作停住,未回头
  〈对白〉无
[段2 | 1.6–3.4]
  〈空间〉同上
  〈姿态〉角色甲右手离开竹箱、按住箱盖;角色乙双手仍垂在身侧
  〈位置〉角色乙向前一步,进入角色甲右侧余光
  〈表演〉角色甲从警觉转为压住不动;角色乙保持不变,只等对方先开口
  〈对白〉〔角色乙 · 同期 · 汉语〕「你找的东西不在里面。」
[段3 | 3.4–5.0]
  〈空间〉同上
  〈姿态〉角色甲合上箱盖并把左手撤离栏杆,重心移回双膝
  〈位置〉两人相对位置不变
  〈表演〉角色甲落到承认被看见后的克制,未反驳
  〈对白〉无

〈…〉、方括号、竖线、分段编号和对白围栏的写法都来自创作者档案,本套件不把其中 任何一种拼写规定为交付格式。可迁移的只有每一行必须回答的问题。若只写到 3.4 秒就收尾, 前两段的动作可能被拉长去占满 5 秒,段边界的秒点就不再是实际发生的时刻。

六、自检

  1. 容器里装了几个已接受镜头?容器时长是否正好等于这些镜头已接受时长之和?
  2. 在每个成员镜头内部,各分段时长相加是否正好等于该镜头的已接受时长?余量是被分配了, 还是只写到一半?
  3. 多镜容器的成员是否来源顺序连续、共享同一条绑定链、不跨场次?是否每个成员仍能单独审查?
  4. 分段标识是否唯一、按时间升序?有没有跳号或重复?
  5. 每个分段内是否只有一个连续视角?切换是否都落在成员镜头边界上,而不是藏在段内叙述里?
  6. 位置槽是否指向画面内可命名的可见锚点,而不是绝对坐标或模糊方向?
  7. 姿态槽的段尾状态是否等于下一段的段首状态?最后一段是否落到已接受终点?
  8. 表演槽是否写了触发与可见处理,而不是只有一个形容词或一个数字?
  9. 逐字对白是否在围栏内原样保留?声源(同期、画外、旁白)与这句台词的口语语言是否分别标明?
  10. 交付文本里是否只剩要被拍出来的画面内容,没有工艺备注与内部记号?
  11. 档案声明的执行触发词是否逐字节出现、且留在围栏之外?没有声明时是否也没有自造字样?
  12. 本次用的是哪条交付路由?若是从已生成结果续接,起点状态是绑定了观察记录,还是仍为 unverified?有没有把观察到的状态当成新的镜头边界?

CONTACT HAONAN

联系haonan

医疗 AI · 产品与独立开发

刘浩南

关注医疗 AI 从 demo 到真实落地,聚焦产品化、商业化与院内工作流效率提升。

12年医疗产研经验,大湾区头部医疗AI公司前产品总监,独立开发者

医疗 AI 产品化医疗 AI 商业化院内工作流效率
刘浩南的微信联系二维码
微信扫一扫,联系 haonan