手机风格
唯一规则: 观看者必须感觉是创作者本人在手机上、用Instagram编辑器剪辑的。绝不能看起来像广告公司或AI。有疑问时:更少、更原始、更小。漂亮的动态图形在这里是错误。
开始之前请阅读 ../perfil-criadora.md 并加载(或创建)根目录下的 perfil.json。
视觉——不可协商
| 元素 | 规则 |
|---|---|
| 截图 | 学员 我的截图 文件夹中的真实截图(个人资料页眉、数据洞察、点赞/评论/收藏、浏览量、私信、评论、帖子)。原始裁剪:直角、无边框、无阴影、无框架、无圆角卡片。位于头顶上方。 |
| 头顶文字 | 标题字体(.tit),白色,小号——标题48–70 px,标签40–48 px(1080宽度)。与截图左边缘左对齐。 强调色(.y)仅用于偶尔的单个单词。Sans(.sans)仅用于“差/好/爆款”等标签。 |
| 阴影 | 仅当背景墙壁为浅色时使用(.sh)。文字后面绝对不要出现方框、背景或玻璃。 |
| 动画 | 无。 元素以硬切方式进入和退出(show()/hide())。无淡入、滑动、缩放、弹跳。 |
| Emoji | 模板中使用实际字符(✅ ❌ 🔥 ❤️ 👇 🚨 …);montar.mjs 将其替换为 Twemoji 图形。永远不要手绘图标。 |
| 字幕 | 每词一次,54 px,白色带柔和阴影(绝无描边)。位于胸部中央、下巴正下方(reel.json 中的 capTop)。每词硬切。 |
| 持久标题 | 一个主题标题可以在屏幕上长时间停留,同时其上方切换截图。 |
| 列表 | Emoji + 单词的检查清单(✅ 字幕 / ❌ 标题),按口语单词逐项显示。 |
| 模拟图 | 避免。使用真实截图。仅在不存在截图且学员要求时绘制模拟图。 |
剪辑规则
- 无呼吸或停顿:所有低于 −30 dB 且持续 ≥0.15 s 的内容均被移除(
cortar.mjs自动完成)。 - 移除所有重复、错误开头和重写的句子。保留 最后、最干净的版本。
- 转录器会隐藏重复内容并弄错时间。 剪辑后,务必重新转录
clean.mp4并从头到尾查找重复的短语、被剪断的单词和缺少的动词。反复剪辑直到干净。 - 最长90秒,除非学员另有要求。在交付时说明删除了哪些内容。
- 默认启用 J/L cuts(
--jl 6更柔和,--no-jl禁用)。
速度规则(学员的电脑可能较慢——优先级高于以下步骤)
novo-projeto.mjs的转录已经是--rapido(轻量模型,仅用于选择剪辑片段)。clean.mp4的重新转录(即字幕所用的)使用精确模型——每个剪辑版本运行一次,而不是每次调整都运行。- 在 一次 调用中检查所有拼接点(一次模型加载):
$K --em video-projects/<slug> node ../../$M/transcrever.mjs assets/clean.mp4 --janelas t1,t2,…(时间基于 clean 的时间轴)。切勿每次只处理一个窗口。 - 不要为了查看帧而渲染整个草稿。使用
$K --em video-projects/<slug> hyperframes snapshot --at t1,t2,… -o snapshots(每次元素变化运行一次)并查看 PNG 文件。仅当快照正确时渲染视频 一次。仅针对请求的更改重新渲染。 - raw.mp4 / clean.mp4 的编码器会自动选择(NVIDIA / Intel / AMD / Apple,否则 CPU)。不要更改。
- 在每个慢速步骤之前,用一行简短的葡萄牙语说明正在运行的内容以及可能需要几分钟(“正在转录视频——在您的电脑上可能需要几分钟。”),以便等待看起来不像是卡死。
流程(所有命令通过启动器 $K)
M=.claude/skills/_motor · K = videos-opus 技能的启动器:"<VO>\bin\node.exe" "<VO>\scripts\video.mjs" kit,其中 <VO> 是 videos-opus 技能的文件夹(包含发送给您此指南的 SKILL.md)。它会将便携式程序添加到路径中,并在套件的工作目录中运行($K pasta 显示当前目录;项目位于 <pasta>\video-projects\<slug>)。$K --em <subpasta> … 在其中运行。没有散装的 npx、Python 或 node:一切通过 $K 进行。
- 项目 + 快速转录:
$K node $M/novo-projeto.mjs "<video>" <slug> .claude/skills/estilo-celular→video-projects/<slug>/包含assets/raw.mp4(1080×1920,30 fps)、assets/raw.json、assets/palavras.txt、字体和src/index.template.html。slug 简短、小写、带连字符(promo-engrene)。 - 取景:从 raw 视频截取联系快照(
$K --em video-projects/<slug> ffmpeg -i assets/raw.mp4 -vf "fps=1/4,scale=180:-1,tile=12x1" -frames:v 1 assets/contato.png)并 查看:头顶和下巴的位置。元素位于 y≈100 和头顶之间;字幕位于下巴下方 → 在项目根目录写入reel.json:{"capTop": <px>}(默认 1380)。 - 选择剪辑片段:阅读
assets/palavras.txt并写入assets/keeps.json({"fps":30,"keeps":[{"from":0,"to":9.38,"why":"…"}]})。每个why用葡萄牙语解释保留了哪些内容及其原因。 - 剪辑:在
assets/目录内运行:$K --em video-projects/<slug>/assets node ../../../$M/cortar.mjs→clean.mp4+edit-decisions.json。 - 检查:在项目根目录:
$K --em video-projects/<slug> node ../../$M/transcrever.mjs assets/clean.mp4 assets/transcript.json --nomes "<profile terms>"。有重复或单词被剪断 → 返回步骤3。听错的单词 →assets/caption-fixes.json({"cloud":"Claude"})。$K --em video-projects/<slug> ffmpeg -i assets/clean.mp4 -af silencedetect=noise=-30dB:d=0.25 -f null -→ 不能有停顿残留。 - 截图:列出学员资料
pasta_prints中的图片(最新的优先),并在使用前 查看 每个候选。使用 ffmpeg 裁剪到assets/prints/(-vf crop=w:h:x:y),并在assets/prints/ORIGEM.md中记录来源。没有合适的截图 → 说明哪种屏幕截图会有帮助,并 不 使用截图继续(她可以稍后作为调整请求)。永远不要伪造截图。 - 合成:编辑
src/index.template.html——元素位于ELEMENTOS区块,时间位于TEMPOS区块。时间来自$K --em video-projects/<slug> node ../../$M/ancoras.mjs "phrase" "another phrase"(项目根目录),基于口语单词。仅硬切。 - 组装 + 检查:
$K --em video-projects/<slug> node ../../$M/montar.mjs→$K --em video-projects/<slug> hyperframes lint→ 每个元素变化的快照($K --em video-projects/<slug> hyperframes snapshot --at …)并 查看:脸部从未被遮挡、文字可读、截图与标题对齐。然后渲染并交付(通过启动器,在套件的工作目录):$K node $M/renderizar.mjs <slug>——检查锁、后台渲染、验证并复制到prontos/。输出3 = 仍在渲染:运行$K node $M/renderizar.mjs <slug> --esperar直到显示“PRONTO”。切勿直接运行$K --em video-projects/<slug> hyperframes render或手动运行prontos.mjs。 - 交付: 用葡萄牙语简短回答:视频位置、剪掉了什么、使用了哪些截图、哪些还存在疑问。切勿发布或发送任何内容。
交付后的调整
“去掉价格部分” → 编辑 keeps.json,重复步骤4–5,使用 ancoras.mjs 重新计算该片段之后所有内容的时间,并重复步骤8。“字幕再往下一点” → 编辑 reel.json 并重复步骤8。“更换截图” → 仅步骤6–8。切勿从头重做学员未要求更改的内容。