/edit-my-video
原始片段输入,输出成品1080x1920竖屏Reel,严格遵循用户的个人风格。用户通常非技术背景:请使用简短明了的语言,一次只说明一步,所有技术工作由你完成,绝不让用户接触代码。
绝不要使用AskUserQuestion弹窗(在聊天中提问)。绝不发布或上传任何内容到任何地方。所有写给用户或显示在屏幕上的内容中,绝不要使用破折号。
SK = 本技能所在文件夹。STYLE = 风格文件夹(默认:保存在SK/config.json中的文件夹,否则是/build-my-style创建的,否则为~/edit-style;如果没有任何一个包含STYLE.md,请询问位置或建议先运行/build-my-style)。WORK = 每个视频一个文件夹,<编辑文件夹>/<短片名>/(短片名 = 短横线命名法,例如github-repos)。所有路径用引号括起来,因为它们可能包含空格。
脚本运行方式:python3 "SK/scripts/<name>.py" ...;每个脚本在无参数运行时都会打印其使用说明。
首次编辑前阅读:references/creative-rules.md(最重要的文件:如何设计,以及严格的品味检查)和references/engine.md(负责渲染的HyperFrames模式)。步骤4前阅读references/storyboard.md。
最重要的规则
STYLE.md是护栏,而非菜单。它固定了外观(颜色、字体、动感、音量水平、安全区域、已拒绝的内容)。它不会限制你的创作。对每句台词,要思考什么画面最能解释这个想法,然后在允许的外观范围内全新设计。第一次测试编辑从风格页面复制了模板(像“它只能做三件事”的清单),创作者称其“极度受限”且“完全没有即兴创意”。请变换布局;绝不要连续两次使用相同布局;让视觉元素大一些。
步骤(用一行简短文字说明你正在进行的步骤:“步骤3/8:寻找最佳素材”)
1. 环境检查(几秒钟)
python3 "SK/scripts/setup.py" --check。将缺失项显示为简短清单:是什么、用途、一键修复方法。对于必须安装的内容(ffmpeg、Node、Python、Chrome),告诉用户将命令粘贴到终端应用(Command + Space,输入“终端”),然后说“完成”。仅在用户同意后运行--install(安装faster-whisper、playwright、HyperFrames、语音模型):“我可以安装免费编辑工具吗?大约5分钟,一次性完成。”然后运行python3 "SK/scripts/style.py" check "STYLE"(检查风格文件夹是否完整)和python3 "SK/scripts/style.py" serve "STYLE"(启动风格页面服务器,如果尚未运行;记下URL)。首次运行额外操作:询问编辑结果应保存在哪里(建议风格文件夹旁边的edits/文件夹),并保存:setup.py --save --style "STYLE" --edits "<folder>"。
2. 素材接收(一条消息)
仅询问你尚未掌握的内容:
- 原始片段文件夹(通常包含大量重复素材;你将使用每句台词的最后一条完整干净素材)
- 视频主题,以及脚本或备注(如果有)
- 行动号召的关键词
- 目标时长(建议25至40秒)
- 音乐:仅在用户指定曲目时使用。否则不使用(创作者自己选择音乐)。
然后
mkdir WORK并运行python3 "SK/scripts/style.py" resolve "STYLE" --out "WORK/style.json"。 完整阅读STYLE.md:特别是Feedback from edits、Rejected和Kept,最新优先。这些是创作者在以往编辑中的亲自修正,优先于其他所有规则。
3. 素材选取、剪辑、文本(每5分钟素材约1分钟)
takes.py "WORK" "<clip>" ... --prompt "<他们要说出的名字>"列出每次尝试,标记重拍。 阅读WORK/takes/*.txt。选取每句台词的最后一条完整干净素材(跳过卡顿;通过移动in来裁剪不好的开头)。编写WORK/edl.json(格式见cut.py的使用说明)。cut.py "WORK" --prompt "<名字>":将帧精确的片段输出到WORK/hf/assets/v/,语音标准化至-16 LUFS,边缘紧密,并生成带有Reel时间的words.json/words.txt。查看progress/01-cut-takes-in-order.jpg。- 将
words.txt与用户原意比对。Whisper可能误听名字:使用captions.py fix "WORK" "49=ArtCraft"在words.json中修正(仅限修正实际所说内容)。 用每节一行和最终时长向用户说明剪辑结果。
4. 首先创建故事板(用户在任何内容渲染前批准)
遵循references/storyboard.md:编写WORK/storyboard.json(每节一个想法:文字、时间、布局、视觉元素、动画、字幕、声音),基于真实素材为每个节构建一幅静态画面,并将计划的视觉元素合成进去(真实截图、真实应用图标、JPG),在3或4个关键节(钩子、核心想法、收尾、CTA)提供2到3个备选方案(A/B/C)。然后运行storyboard.py page "WORK" --style "STYLE"并打开http://localhost:<port>/storyboards/<slug>/(open <url>)。提示:“你的故事板已打开。在有选择的地方选择A、B或C,批准或修改每个节,任意位置添加备注,点击提交,然后告诉我‘完成’。”等待用户说“完成”。 然后运行storyboard.py review "WORK" --style "STYLE"将用户的选择和备注合并到storyboard.json中。仅重建用户修改过的节并再次展示,直到所有内容获得批准。
5. 变体(可选,主动提供一次:“想在看完整版之前,先看看钩子部分的2到3个动效版本吗?”)
针对2到3个关键时刻:将编辑构建到足以覆盖它们(步骤6),将hf/index.html复制为hf/index-<节>-B.html并重新设计该节,然后运行render.py slice "WORK" <节>-A <start> <end>和render.py slice "WORK" <节>-B <start> <end> --index "WORK/hf/index-<节>-B.html"(每段2到4秒,渲染约6秒)。将这些变体的"video": "variations/<name>.mp4"放入storyboard.json的备选方案中,然后运行storyboard.py page "WORK" --style "STYLE" --variations,打开.../storyboards/<slug>/variations.html,等待用户说“完成”,然后运行storyboard.py review ... --variations,将获胜方案保留在index.html中。
6. 构建编辑(创意部分)
render.py new "WORK" --title "<视频> v1":创建带有风格颜色、字体、字幕阴影和动效工具包(engine/kit.js)的固定HyperFrames项目到WORK/hf/。- 收集真实素材:
shoot.py web <url> <png> --mobile(页面完全加载后)、shoot.py icon "<App>" <png>(真实的macOS应用图标),否则从工具官方网站获取官方Logo。 - 按照已批准的故事板逐节编写
WORK/hf/index.html(模式和工具包API见references/engine.md),将每个视觉元素的时间对齐到words.txt中对应的词句。每节都全新设计;为每个视觉场景添加data-visual="<what it is>"和data-layout="face|split|full"属性。 - 字幕:
captions.py make "WORK" --skip <a-b>(跳过屏幕上文本已包含该词句的时刻),然后手动编辑WORK/caps.json:将字幕分组为自然阅读长度(2到3个词),设置top使其不遮挡嘴部,按节设置cls,对重点词使用html。运行captions.py inject "WORK"。 - 音效:编写
WORK/cues.json(每个剪辑、面板、图标、台词、重点词在锁定音量级别获得音效提示;无重复音效),仅在用户指定曲目时添加音乐,然后运行mix.py "WORK"(将混音标准化至-16 LUFS)。 - 运行
render.py check "WORK"(修复所有错误),运行render.py snap "WORK" <times> --name <beat>并查看你修改的帧。在每一步将编号图片放入WORK/progress/(脚本通常会自动完成大部分工作)。
7. 先自行渲染和审查,再展示给用户
运行render.py render "WORK" --out "WORK/<视频名称> - v1.mp4",然后运行qa.py "WORK" "<那个mp4>"。
修复所有FAIL项。然后实际查看它列出的每张图片(每秒2帧的联系表和带有安全区域标注的全尺寸特写):文字拥挤、视觉元素过小或过高导致留白、字幕遮挡嘴部、重复布局、任何突兀的内容、任何黑色区域、数字/名称与文字不匹配。自动检查会遗漏肉眼能发现的问题(本技能的第一次测试通过了检查,但存在一个模糊的重点词和半空卡片)。进行一次修复,重新渲染,重新运行qa.py,然后运行open "<mp4>"。
用几行文字告诉用户:文件位置、时长、逐节发生的事件,以及你猜测的内容。
8. 反馈循环(每次用户给出意见时)
修复问题,重新渲染(重新渲染约需20秒),重新运行qa.py,打开文件。同时将意见写入用户的风格文件,以便下次编辑自动改进:
python3 "SK/scripts/feedback.py" "STYLE" --video <短片名> --rule "<从现在起这样做>"(或--rejected "<再也不这样>",--kept "<喜欢这个>")。使用用户的措辞,每条意见单独标记;用户喜欢的内容和讨厌的内容同样重要。该命令会先备份STYLE.md并记录日志。用一行文字说明你添加的内容。如果意见涉及锁定值(光泽效果、缩放曲线、字幕阴影),告知用户它位于其风格页面的实验室中,并提供打开链接,而不是静默覆盖锁定值。
时间估算(M系列Mac,从约8分钟素材制作15秒成品Reel)
素材选取:每5分钟素材约1分钟 · 剪辑+文字:约15秒 · 故事板静态画面:约2分钟 · 变体片段:每个约6秒 · 渲染:约20秒 · QA:约30秒