一个 Claude Agent Skill:把中文文案做成电影感竖屏 explainer 视频。
核心主张:字幕负责「说」,主画面负责「演」。
多数自动出片工具把同一句话在字幕和画面上写两遍——观众看到的是复读,不是信息。这套的每一帧主画面都是抽象图解 / 动效演绎 + 一个记忆锚点,观众记住的是画面里的动作(进度条断裂、柱子被压下来、✗✗✗→✓),不是又读了一遍字幕。
git clone https://github.com/derek-zhuolin/interflow-copy ~/.claude/skills/interflow-copy
pip install edge-tts # 免费配音(微软神经语音,原生词级时间戳)Claude Code 会自动发现。说「把这篇稿子做成视频」即触发。
触发后第一件事是问你文案怎么处理:1. 原封不动(默认)/ 2. 允许改写。
默认不动你的字——措辞是你想过的,「优化」不可逆。想让它重排叙事就选 2。
依赖:hyperframes + faceless-explainer skill(渲染管线)、ffmpeg。
| 层 | 是什么 | 数量 |
|---|---|---|
| 镜头配方卡 | 「这一帧长什么样、怎么拍」的成片指令 | 30 张(覆盖 387 个案例素材的镜头形式) |
| 动效图谱 | 底层动效原语 + 网页→视频转译原则 | 30 类 |
每张卡的结构(参考 video-shotcraft 的卡片规格):
一句话 / 适用 / 时长 / 能量
├ 意图 —— 为什么这么拍
├ 动效核心 —— 关键动作与层级
├ 参数表 —— 典型值 + 调节手感(超了会怎样)
├ 已知坑 —— 踩过的具体坑
└ 参考实现 —— 可直接抄的 GSAP
选卡从 references/shots-index.md 按内容语义查表:
| 这一帧在讲… | 用哪张卡 |
|---|---|
| 一个数字是主角 | stat-counter-landing |
| 趋势/对比/构成 | chart-draw-reveal |
| 停止/中断/卡住 | progress-rail-break |
| 允许试错 | attempt-grid-win |
| A vs B 对照 | compare-split-book |
| 金句/留白/喘息 | testimonial-quote-hold |
| …(共 30 张) | 见索引 |
- 主画面演意思,不复述字幕 — PPT 感的真正来源
- 中文字重不走极细 — 「越大越细」只对拉丁成立;中文巨字 700、主字 500、数字永远 800
- 构图不许重样 — 一支片至少 6 种形态(无卡巨字 / 散落卡 / 尺度纵深 / 点名大字 / 宫格 / 面板 / 形变 / 滚动带…)
- 连续画布 + 真视差 — 背景走全局函数取窗且位移放大 2.5 倍,前景静止;背景 blur 18–20px 留住边缘
- 阻尼动效 + 落位后永不静止 + 落位前完全不可见 —
back.out过冲 + ±5px 呼吸;不用「露出一半」的预备位 - 运镜只在转折点用 — 全片 ≤2 次真运镜,其余给元素;转场以硬切为主
对标同类成片的结论(references/rhythm-and-camera.md):
- 3–5 秒一个视觉。一帧 6–8 秒观众第 3 秒就看完了。55s 的片子 ≈ 12 拍,不是 8 帧。
- 并列段落用副歌:同一形式在不相邻位置重复(如三次「点名大字」),是结构不是重样。
- 转场 cut 占比 ≥40%,强转场只留给转折帧。
| 档 | 用在哪 | 词级时间戳 | 成本 |
|---|---|---|---|
| 0 · Edge 免费声 | 默认、调试 | ✅ 原生词级 | 免费无 key |
| 1 · 火山声音复刻 | 用「我的声音」正式交付 | ✅ 短句级 | 走自己的额度 |
| 2 · 本地 TTS + whisper | 完全离线 | ✅ 事后对齐 | 免费 |
python3 assets/scripts/edge_tts_audiometa.py --script ./SCRIPT.md --out-dir . --voice zh-CN-YunxiNeural关键:脚本里显式请求了
boundary='WordBoundary'。中文音色默认只发整句边界, 显式请求才按词切分(国内/的/赛道/我/停/了)——词级动效靠这个粒度。停顿别靠语速:
--rate '+8%'赶出来的不是抑扬顿挫,是急。要停顿就把长句拆成短句, 句号处 TTS 会真停 ~0.5s。档位细节见references/voice.md。
管线自带的分组对中文过密(142 词 → 68 组 ≈ 2 词一组,字幕在闪)。
merge_captions.mjs 按「停顿即语义边界」重建,断点落在每个逗号句号上:
cp assets/scripts/merge_captions.mjs . && node merge_captions.mjs # 68 → 21 组SKILL.md 入口:Step 0 文案模式 + 8 步工作流 + 六条硬规则 + 自查
references/
rhythm-and-camera.md 节奏 / 构图形态 / 转场 / 运镜纪律
voice.md 声音三档 + 环境配置 + 中文字幕重组
shots-index.md 镜头卡索引(按语义选卡)
shots/*.md 30 张镜头配方卡
motion-atlas.md 动效原语图谱 + 网页→视频转译原则
figure-not-caption.md 「图解不复述」方法论
design-system.md 设计 token / 字阶纪律 / 玻璃配方 / 命令速查
continuity.md 连续画布的数学
pitfalls.md 踩过的坑(含建帧结构三条铁律)
assets/
frame-template.html 帧骨架模板(含 <template> 壳与作用域)
build-frames.template.mjs 建帧器骨架(帧数 ≥6 时用,设计系统单一事实源)
scripts/
edge_tts_audiometa.py 免费配音 → audio_meta.json
merge_captions.mjs 中文字幕重组(中文出片必跑)
compute_continuity.py 连续性参数计算器
extract_motion_index.py 动效索引提取器(换素材库时重跑)
镜头卡的组织规格参考了 Vincentwei1021/video-shotcraft—— 一个非常好的电影感产品视频 skill,它的「配方卡 + 参数表 + 已知坑」结构值得学。 本项目面向的是中文口播 explainer(竖屏、语义图解、字幕驱动),场景不同,卡内容为自行编写。
本仓库不含任何密钥、个人路径或私有素材。商用音色凭证请放各自 skill 的 .env(已在 .gitignore 中)。
沉淀方法论,不沉淀素材:文档里的所有文案示例、项目名、时间地点一律虚构或抽象化。 真实客户文案、活动名、成片内容不进这个仓库——包括提交信息。skill 要的是「怎么做」, 不是「给谁做过什么」。
MIT