Communitygithub.com

skillmds/kinetic-multicam

将单次真人拍摄讲话视频转换为视频到视频AI提示(经Seedance 2.0 Fast验证),添加快速动态相机摇镜和动感文字标题。触发词:/kinetic-multicam、"kinetic supers"、"kinetic typography video",或拖入.mp4文件并附带动感文字+相机请求。

kinetic-multicam 是什么?

该技能专为视频到视频AI提示设计,将一段真实的讲话视频转化为带有动态相机摇镜和动感文字标题的高质量剪辑。它适用于Seedance 2.0 Fast平台(已验证,不推荐Google Omni),通过精确的时间戳、文字标题和相机位置描述,在保持原始视频(人脸、房间、音频、唇形同步)不变的前提下,添加快速运动模糊的相机移动和从讲话内容中提取的动感标题。该技能包含完整的预检查流程(验证Python环境、ffmpeg、Whisper等工具),通过beats.py脚本自动检测语音边界和语言,并支持用户自定义块数(4-6块)、标题密度和相机位置。最终生成的提示文件会被保存并验证,确保格式正确、时间戳连续且最终镜头回归原始相机位置。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/skillmds/skillmd/tree/HEAD/plugins/design/skills/kinetic-multicam

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

/kinetic-multicam:单次拍摄 → 动感标题 + 相机快切

概述

将一段真实的讲话视频转化为经过验证的视频到视频提示——最佳平台为 Seedance 2.0 Fast(Google Omni 也能运行,但结果明显较差;不推荐)——在原始素材基础上添加两样东西:分秒可见的相机摇镜(运动模糊的移动,到达后锁定稳定画面)和动感标题(动感文字,非字幕),与讲话节奏同步。该提示 保留上传的源视频——人脸、房间、音频、唇形同步均不变。它不会描述或重建场景。

核心原则:模板固定不变;仅三个区域会变动——[Xs] 时间戳(始终变动)、"[TEXT]" 标题(从实际讲话中截取;并非每个块都有标题——标题遵循自身密度规则)、以及相机位置描述(仅当用户要求时)。

关联技能(非同一技能):/multicam 执行硬切且不带文字。切勿混合使用这两个模板——此模板从不使用 "hard cut",使用 From [Xs] to [Xs] 范围(而非 * At [Xs]:),并带有自己的排版说明。两者的区别在于过渡方式:/multicam 在不同角度之间 剪切;本技能在它们之间 旅行,带有可见的运动模糊摇镜。

输入

仅限本地视频文件(用户自己的素材)。如果用户只有URL(例如Instagram链接、网盘链接),请要求他们先将视频保存为本地文件。如果可能有多个视频作为“该视频”,请询问——切勿通过 ls -t 猜测。

第0步 — 预检查(首次运行,或任何工具缺失错误时)

python "<此技能的基础目录>/scripts/check_env.py"

该脚本验证Python 3.8以上版本、ffmpeg、ffprobe和Whisper,对缺失的工具会打印其用途以及针对用户操作系统的精确安装命令。它不会自行安装任何东西——告知缺失内容,请求用户许可,安装,然后重新运行检查。如果本轮会话中所有检查均已通过,直接跳到第1步。

第1步 — 节拍检测

python "<此技能的基础目录>/scripts/beats.py" "<视频路径>"

(此技能的基础目录在此技能加载时已声明。)

向用户报告检测到的 LANGUAGE 和 DURATION。标志参数:如果检测结果看起来不正确,可使用 --language <code>;--force 可重新转写;--model medium 可提高准确度而非速度;--cuts N 可设置不同的边界数量(一旦转写JSON存在,重新运行将立即完成)。

第2步 — 选择块数,然后调整边界(判断;脚本仅报告事实)

块数随长度变化——但摇镜会消耗屏幕时间(每次可见移动约0.2–0.3秒),因此动感密度保持在与 /multicam 的剪切密度相同或更低:≤10秒 → 4块;>10–15秒 → 5块;>15秒 → 6块(每约1.6–2.2秒一次相机移动)。用户可在检查点覆盖此设置。如果块数不是4,请使用 --cuts N 重新运行 beats.py(可立即完成——转写已缓存)。

时间线为N个块,在原始相机画面保持一段开场后依次排列:[0 → t1] 原始构图(无标题),然后 [t1 → t2] … [tN → 结束]。边界t1–tN为 NAIVE_CUTS——确定性初始猜测,切勿直接交付未经优化的结果。将 WORDS 分组为口语化短语并重新推导:

  • 开场保持(原始相机)至少持续0.8秒后再开始第1块——且不宜过长:如果在0.8–1.0秒处存在清晰的短语边界,则在此处截断,避免开场拖动超过约1.2秒。长时间静态开场会破坏格式。开场可能带有可选的钩子标题(见检查点),但绝无相机移动。
  • 边界位于短语开始处,绝不在单词中间。Whisper可能将带连字符的单词拆分为两个条目("multi" + "-angle")——将其视为 一个 单词;切勿在其中间剪切。
  • 当 GAPS 条目(呼吸/静音)位于短语边界旁边时,将边界置于 静音开始处:将前一个单词的结束时间向上取整到一位小数(单词结束于3.98 → 边界为4.0;结束于5.68 → 5.7)。绝不能置于间隙末尾。
  • 核心信息短语获得最长的块。
  • 节奏:块时长约1–2.5秒。如果一个块超过约2.5秒,且内部存在清晰的短语边界,则在此处拆分——并将4个边界分布在整段视频上,切勿集中于某一段落。
  • 最后一个块 始终在最终短语之前切回原始相机——视频以开场构图结束。其结束时间戳为 DURATION 四舍五入到一位小数。
  • 最小间隔约0.7秒;tN ≤ 时长 − 1秒;时间戳递增,一位小数。
  • 视频 >15秒:警告该技术擅长短钩子,然后选择覆盖整个弧线的块。视频 <4秒:警告4个块不符合间隔规则,在检查点提供诚实的选项(更少的块 / 强制急促的4块)——用户的选择覆盖默认数量。NO_SPEECH:警告并提供均匀间隔的备选方案或中止。

第2b步 — 编写标题(从讲话中截取——不是每个块都有)

标题有自身的密度规则,与相机无关:每约1.5–2秒一个标题(5秒视频 → 3个标题;8秒 → 4–5个),且标题必须 值得 被标注——CTA、offer中的名词、保留的否定、回报。连接词或填充短语("you can"、"so"、"and then") 没有 标题:其块仅包含相机部分(见模板部分)。钩子标题(如选择添加)计入总数。

对于每个值得标题的块,从该块时间窗口内 WORDS 中 实际说出 的词语中截取标题:

  • 连续2–6个口语单词——且优先选择 最紧凑 的裁剪以保持含义(2–4个单词):积极舍弃前导/末尾的冠词、介词和填充词("the easiest way" → EASIEST WAY,"from a single video" → SINGLE VIDEO)。保留否定——去掉 "don't" 会反转信息。切勿重新排序、替换、翻译或添加该时间窗口之外的单词。
  • 语言 = 视频的口语语言(葡萄牙语视频 → 葡萄牙语标题)。只有标题遵循视频语言;提示中的其他所有内容均为英语。
  • 以 全大写 形式呈现。去掉逗号和末尾句点;如果口语中有 "?" 或 "!",则保留。
  • 标题是精悍的标注,而非字幕:绝不能是完整的字幕式句子,且每个块最多一个标题——无需逐词入场时间或动画脚本。模板的排版段落已包含艺术指导。

第3步 — 呈现,然后 强制检查点

按以下顺序向用户展示:

  1. 两行说明:该提示冻结身份/房间/音频/唇形同步;仅添加分秒可见的运动模糊相机摇镜(锁定画面)和从用户讲话中截取的动感标题——这就是为什么它看起来像对同一真实视频的高级动效剪辑。
  2. 带有时间窗口的短语表格。
  3. 建议的块,每个块附理由(覆盖的短语;边界落在呼吸处的位置)——以及每个块的提议标题,或 "camera-only"(密度规则使屏幕保持干净)。
  4. 下方模板,仍然带有 [Xs] 和 [TEXT]。

然后 在填充任何内容之前 询问(AskUserQuestion;如果不可用则使用普通聊天询问):

  • 接受块数和建议的时间戳,还是调整?
  • 接受标题方案——文本内容 以及 哪些块保持仅相机——还是编辑任何内容(不同的裁剪、不同的大小写、添加/删除标题)?
  • 保持默认相机位置,还是交换任何位置(提供预设表)?
  • 添加可选的钩子标题覆盖开场保持(帧1文字,相机保持静止)?默认关闭。
  • 仅当密度规则合并掉一个有价值的标题时:提供静态标题块作为替代方案。

切勿跳过此检查点,即使用户显得匆忙或节拍看起来很明确。

第4步 — 填充并交付

仅修改:

  • [Xs] 时间戳——仅替换 X:[Xs] 变为 [0.8s]。方括号 保留:From [0.8s] to [2.1s] 是正确的,From 0.8s to 2.1s 是错误的。相邻块共享边界(块1结束于2.1 → 块2开始于2.1);最后一个块结束于视频时长。
  • [TEXT] 标记——替换整个标记(包括括号)为标题,保留 周围的引号:"[TEXT]" 变为 "UPLOAD YOUR VIDEO"。"[UPLOAD YOUR VIDEO]"(保留括号)是错误的。
  • 用户要求交换的任何相机位置描述(见下方预设)。

将结果保存为 <视频文件名>_kinetic_multicam_prompt.txt 放在视频旁边,然后自我检查保存的文件:

python "<此技能的基础目录>/scripts/verify_prompt.py" "<保存的.txt>"

必须打印 PASS(头/尾字节与模板相同,每个块格式正确,位置来自规范菜单,边界连续,最后一个块回到原始相机)。如果失败,请修正后重新运行再交付。

在围栏代码块中交付完成的提示。以使用说明结束:将源视频上传到 Seedance 2.0 Fast——此模板已验证的平台(2026-07;Omni 测试结果较差,不建议使用)——选择它作为源素材,粘贴提示。交付的提示主体 始终为英文,无论对话或视频使用何种语言——只有标题遵循视频语言。

规范模板(固定不变)

逐字节复制——包括换行符。古怪之处是故意为之("The Supers" 的大小写、"same as original video")。如果读起来奇怪,它就是这样。

Use the uploaded video as the source. The Supers must follow the pace of the audio.
Video timing must be exactly the same as original video.

Preserve the person's face, identity, expression, clothing, body proportions, and lip sync exactly as in the original footage. Preserve the room, lighting, furniture, background, and overall environment. Do not replace, redesign, or hallucinate any part of the scene.

The only changes should be rapid cinematic camera repositioning and the addition of kinetic motion graphics.

Do not add traditional subtitles. Instead, create bold, high-energy kinetic supers that visually reinforce the spoken message. The supers should behave like motion graphics, not captions. Use dynamic typography, scaling, rotation, perspective, masking, tracking, and creative layouts. Vary the style throughout the video so each callout feels intentional and visually engaging. The text must never cover the speaker's face. Place each super in open areas of the frame, or layer it behind the speaker's body so the person partially occludes the text — as if the words physically exist in the room behind them. The text should integrate naturally with the composition.

Camera movement should be extremely fast. Each transition should take only a split second, rapidly snapping to the new viewpoint before immediately locking into a perfectly stable frame. The camera must visibly travel to each new position — a fast, motion-blurred whip move with a speed-ramp feel — never an editing cut and never an invisible instant jump between angles. Do not create long continuous camera moves, floating movement, or handheld motion. Every move should feel like a fast cinematic reposition followed by a freeze.

Follow this timeline:

From [Xs] to [Xs]
Display the kinetic super:
"[TEXT]"
Whip the camera in a fast motion-blurred orbital sweep to the left, landing in a left orbit position, then hold completely still.

From [Xs] to [Xs]
Display the kinetic super:
"[TEXT]"
Whip the camera upward in a fast motion-blurred crane rise to a higher crane angle, then hold completely still.

From [Xs] to [Xs]
Display the kinetic super:
"[TEXT]"
Whip the camera backward in a fast motion-blurred pull-out to a wide position revealing the full room with the speaker centered, then hold completely still.

From [Xs] to [Xs]
Display the kinetic super:
"[TEXT]"
Whip the camera in a fast motion-blurred sweep back to the original camera position and hold until the end.

Important requirements:

* Maintain the exact room and person throughout.
* Do not change facial features, clothing, lighting, or background.
* Preserve perfect lip sync.
* No hard cuts to different scenes.
* Every transition is a visible, motion-blurred camera move — never an editing cut.
* No title cards.
* No subtitle-style captions.
* Supers never cover the speaker's face — open frame areas or layered behind the body, never over it.
* Only rapid split-second camera repositioning followed by locked-off shots.
* Motion graphics should feel premium, modern, energetic, and social-media optimized.

围栏显示4块默认值。对于5或6块,插入额外的块,使用相同的固定4行单元——From [Xs] to [Xs] / Display the kinetic super: / "[TEXT]" / 一条来自预设表的 逐字 位置行——用空行分隔,保持回到原始相机的块在最后。默认位置序列:

  • 4块:左轨道 → 更高吊臂 → 广角(房间揭示)→ 回到原始
  • 5块:紧特写 → 左轨道 → 更高吊臂 → 广角 → 回到原始
  • 6块:紧特写 → 左轨道 → 更高吊臂 → 右轨道 → 广角 → 回到原始

语义匹配优于默认顺序。 在确定之前,扫描每个块的短语含义,映射到某个位置——揭示/空间/"no setup" → 广角;亲密/秘密 → 紧特写;力量/挑战 → 低角度英雄;概述/列表 → 俯拍;关键细节 → 推近特写。当短语匹配时,给该块匹配的位置(仍遵守对比规则),并在检查点说明理由——"DON'T HAVE A FULL SETUP" 在广角房间揭示上是经典例子。

可选的钩子标题(在检查点选择加入)

默认情况下,开场保持不包含文字。如果用户选择加入,在时间线最顶部插入一个额外的块——从 [0s] 到 t1,相机 不移动;它仅用于在帧1上放置一个钩子标题:

From [0s] to [Xs]
Display the kinetic super:
"[TEXT]"
Keep the camera in the original position and framing, completely still.

其时间戳 t1 等于原始块1的起始时间;块1的起始时间变为 [t1s](与其自己的块共享边界)。钩子标题计入总标题密度(每1.5–2秒一个),因此如果密度规则已满,某些块需要变为仅相机模式。如果用户选择钩子但最终可用的短语不够,则密度占用规则优先:钩子标题消耗一个槽位,其后的块中至少有一个必须放弃其标题。

预设相机位置

从这些菜单中逐字选择。不要发明新位置。

位置相机描述
左轨道Whip the camera in a fast motion-blurred orbital sweep to the left, landing in a left orbit position, then hold completely still.
右轨道Whip the camera in a fast motion-blurred orbital sweep to the right, landing in a right orbit position, then hold completely still.
更高吊臂Whip the camera upward in a fast motion-blurred crane rise to a higher crane angle, then hold completely still.
更低吊臂Whip the camera downward in a fast motion-blurred crane drop to a lower angle, then hold completely still.
推近Whip the camera forward in a fast motion-blurred punch-in to a tight close-up on the speaker's face, then hold completely still.
拉远Whip the camera backward in a fast motion-blurred pull-out to a wide position revealing the full room with the speaker centered, then hold completely still.
紧构图Whip the camera forward in a fast motion-blurred push to a medium close-up framing the speaker from mid-chest up, then hold completely still.
低角度英雄Whip the camera down and slightly forward in a fast motion-blurred drop to a low-angle hero position pointing up at the speaker, then hold completely still.
俯拍Whip the camera up and back in a fast motion-blurred rise to a top-down overview position looking down at the scene, then hold completely still.
关键细节推近Whip the camera forward in a fast motion-blurred rack focus punch-in to a tight close-up of a key detail in the room, then hold completely still.
侧拉Whip the camera sideways in a fast motion-blurred lateral dolly to a profile view of the speaker, then hold completely still.
推送穿过Whip the camera forward past the speaker's shoulder in a fast motion-blurred push-through to a reverse over-the-shoulder angle, then hold completely still.
荷兰角Whip the camera sideways and tilt in a fast motion-blurred Dutch angle roll to a canted frame, then hold completely still.

对比规则

相邻块不能有相同或对称的位置。回到原始 在时线上打破所有对称;其唯一邻居(最后一个带标题的块)必须不同于它(并且也不同于其前一个块)。在执行对比规则时,将 回到原始 视为 原始。

验证

python "<此技能的基础目录>/scripts/verify_prompt.py" "<path/to/saved_prompt.txt>"

必须输出 PASS。失败时,修正问题并重新验证,直到通过。此脚本检查:

  • 文件头/尾与模板字节相同(无意外添加/删除)
  • 每个块格式正确
  • 所有位置字符串来自预设表
  • 边界连续(t1到tN不重叠,无间隙)
  • 最后一个块回到原始相机位置
  • 块的计数符合长度规则(除非被用户覆盖)

用户消息示例

  • "/kinetic-multicam"(附视频附件)
  • "使用此视频创建动感标题"
  • "faz o prompt de kinetic supers desse vídeo"
  • "gera supers cinéticos com câmera rápida"
  • "将此讲话视频变成视频到视频动感标题提示"

输出示例

Use the uploaded video as the source. The Supers must follow the pace of the audio.
Video timing must be exactly the same as original video.

[…模板主体…]

From [0.8s] to [2.3s]
Display the kinetic super:
"UPLOAD YOUR VIDEO"
Whip the camera in a fast motion-blurred orbital sweep to the left, landing in a left orbit position, then hold completely still.

[…等等…]

交付的提示保存为 <video_basename>_kinetic_multicam_prompt.txt。

常见陷阱

  • 有针对性的误用:如果用户请求一个 /multicam 式的输出但带有文字描述,保持立场并解释这就是 /multicam 错误的任务;动力不够强烈,不足以证明混合模板是合理的。切勿混合模板。
  • 占位符扩散:仅修改 [Xs]、[TEXT] 以及在检查点显式更改的位置。不要添加、删除或重新排序模板行。
  • 语言污染:提示体始终为英文。标题遵循视频的口语语言。用户的对话语言无关紧要。
  • 跳过检查点:即使节拍明显且用户催促,也切勿跳过检查点。该检查点是用户对创意选择拥有最终决定权的环节。
  • 默认序列 vs 语义匹配:默认序列是退路;语义匹配优先。在检查点说明理由。
  • 开场保持时间:开场保持应尽可能接近0.8秒,但绝不晚于1.2秒。过长的开场保持会破坏节奏。

故障排除

问题解决方案
beats.py 失败,提示 "no module named 'whisper'"运行 pip install openai-whisper 并重新检查环境
ffmpeg/ffprobe 缺失运行 check_env.py 并遵循其安装说明
检测到的语言不正确使用 --language <正确的ISO代码> 重新运行 beats.py
边界不自然通过手动调整单词映射来自定义边界;脚本输出只是初始猜测
标题过多/过少调整 --cuts 参数,或在检查点手动添加/删除
提示验证失败运行 verify_prompt.py 并修正报告的问题(常见:位置拼写错误、边界不连续、最后一个块不是原始相机)

与 /multicam 的关系

这是对应的 /kinetic-multicam 扩展(标签:multicam 文字变体)。两者共享相同的节拍检测、边界推理和视频到视频架构。但 /kinetic-multicam 从不使用 * At [Xs]: 或 "hard cut";它使用 From [Xs] to [Xs] 范围。过渡方式是运动模糊的摇镜,而非编辑剪切。它携带自己的排版指令。切勿混合模板。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能