diff --git a/ACKNOWLEDGMENTS.md b/ACKNOWLEDGMENTS.md index f341f22..a41fbf4 100644 --- a/ACKNOWLEDGMENTS.md +++ b/ACKNOWLEDGMENTS.md @@ -7,6 +7,7 @@ This project is independent. It is not affiliated with or endorsed by Anthropic, **License scope.** The MIT license in [LICENSE](LICENSE) covers this repository's original content. Third-party components keep their own licenses: - `engines/ClaudeAnimationBase` is (c) John Heibel, MIT License (see `engines/ClaudeAnimationBase/LICENSE`). - `recipes/` holds 24 files modified from Apache-2.0 material: 21 from video-shotcraft (Copyright 2026 Wei Yihao) and 3 from HyperFrames (Copyright 2026 HeyGen, Inc.). The upstream parts stay under Apache-2.0 and our changes are MIT. Both upstream licences are in `recipes/LICENSES/`, each of these files says it was modified and names the upstream files and commit, and `recipes/NOTICE.md` lists them all (Apache-2.0 §4). +- `playbook/12-ideation.md` §3 has a Chinese rewrite of parts of HyperFrames' `skills/hyperframes/references/pitch-round.md` (commit `a46095f`; Apache-2.0, Copyright 2026 HeyGen, Inc.). That part stays under Apache-2.0; the licence copy is `recipes/LICENSES/Apache-2.0-hyperframes.txt`. - Repositories fetched by `references/fetch.sh` into `references/repos/` are NOT part of this distribution; each is governed by its own license (listed below). ## Vendored (shipped in this repository) @@ -30,7 +31,7 @@ This project is independent. It is not affiliated with or endorsed by Anthropic, | Repository | Author | License | Used for | |---|---|---|---| -| [HyperFrames](https://github.com/heygen-com/hyperframes) (skills only) | HeyGen | Apache-2.0 | Primary HTML/GSAP engine; motion-doctrine, caption aesthetics, style presets and CLI verification. Many numbers in `playbook/03-motion-design.md` come from these docs. The recipes `cut-the-curve`, `zoom-through` and `oversized-cursor` in `recipes/` are modified from its `cut-the-curve` and `oversized-cursor` skills (commit `a46095f`), rewritten in our own words; see `recipes/NOTICE.md` | +| [HyperFrames](https://github.com/heygen-com/hyperframes) (skills only) | HeyGen | Apache-2.0 | Primary HTML/GSAP engine; motion-doctrine, caption aesthetics, style presets and CLI verification. Many numbers in `playbook/03-motion-design.md` come from these docs. The recipes `cut-the-curve`, `zoom-through` and `oversized-cursor` in `recipes/` are modified from its `cut-the-curve` and `oversized-cursor` skills (commit `a46095f`), rewritten in our own words; see `recipes/NOTICE.md`. The divergence step in `playbook/12-ideation.md` §3 (four questions, a rough probability per idea, the silhouette check) is translated and rewritten from its pitch round (`skills/hyperframes/references/pitch-round.md`, same commit) | | [remotion-dev/skills](https://github.com/remotion-dev/skills) | Remotion | no LICENSE file in the repo; Remotion itself is under the Remotion License | Remotion route, captions, determinism rules | | [Code2Video](https://github.com/showlab/Code2Video) (prompts, src) | Show Lab, NUS | MIT | Anchor-grid critic, ScopeRefine, parallel sections: the "code2video" idea this project generalises | | [3brown1blue](https://github.com/AmitSubhash/3brown1blue) (skill) | Amit Subhash | MIT | 3b1b-style and paper-explainer rules, Manim gotchas | @@ -84,6 +85,7 @@ This project is independent. It is not affiliated with or endorsed by Anthropic, - Jiang et al., **ManimAgent: Self-Evolving Multimodal Agents for Visual Education**. [arXiv:2606.30296](https://arxiv.org/abs/2606.30296) - Lopez et al., **SGA: Plug&Play Geometric Verification for Educational Video Synthesis**. [arXiv:2607.18116](https://arxiv.org/abs/2607.18116) - Huang et al., **Agentic Visual Generation: From Generative Models to Agentic Control** (survey). [arXiv:2609.06758](https://arxiv.org/abs/2609.06758) +- Zhang et al., **Verbalized Sampling: How to Mitigate Mode Collapse and Unlock LLM Diversity**, ICML 2026. [arXiv:2510.01171](https://arxiv.org/abs/2510.01171) (the probability per idea in `playbook/12-ideation.md` §3) - Heer & Robertson, **Animated Transitions in Statistical Data Graphics**, InfoVis 2007. - Karplus & Strong, **Digital Synthesis of Plucked-String and Drum Timbres**, Computer Music Journal 7(2): 43–55, 1983. [doi:10.2307/3680062](https://doi.org/10.2307/3680062) - Jaffe & Smith, **Extensions of the Karplus-Strong Plucked-String Algorithm**, Computer Music Journal 7(2): 56–69, 1983. [doi:10.2307/3680063](https://doi.org/10.2307/3680063) diff --git a/AGENTS.md b/AGENTS.md index 5b358e9..5af5a59 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -13,11 +13,11 @@ 1. **判断类型**:用路由表找到类型文档,整篇读;其中"Prompt 增量块"那一节是这类片子的默认做法,想完立意再读(`quick` 只读"工作流"和"禁止"两节,见 `playbook/quick.md`)。横跨两类(例如论文讲解做成竖屏短视频)就两份都读,以主类型为准。一句话需求是常态:先想立意(第 4 步),其余用类型文档的默认值补,关卡 ① 最多问 3 个真正影响制作的问题。规格(画幅、分辨率、帧率、时长、在哪看)按 `playbook/01-pipeline.md` 的"规格"补;只有需求没说发在哪、而它又会改变画幅或字号下限时,才当成一个问题问。 2. **读流程和自查**:`playbook/01-pipeline.md`、`playbook/02-verification.md`;有配音或音乐时再读 `playbook/04-audio.md`。 3. **建项目**:`bin/vh new ` 建好 `projects/<日期>-/`,复制模板(选项见 `bin/vh new -h`);手绘类还会复制引擎、装好依赖。其他引擎的初始化见 `engines/README.md`。 -4. **先想立意,再看参考**:先把材料里只属于它的数字、原话、物件列进 NOTES.md 的素材清单,自己想 5–8 个点子;这时先不看 Prompt 增量块、`styles/`、`recipes/` 和案例,免得点子往看过的东西上靠。然后再用参考补强,收敛成 2–3 张立意卡(`playbook/12-ideation.md`)。人已经给了立意,就记进 BRIEF,不再出卡,最多附一个备选。参考:类型文档"可参考的案例"和"社区 skill 参考"两节;`showcase/` 是本仓库自己做的片子,各带 BRIEF、STORYBOARD、NOTES 和源码;`references/repos/` 是只读的源码。分镜时,镜头怎么动、全片节奏怎么排,先查 `recipes/`(`bin/vh recipes list` 按意图和能量筛),选中的配方 id 写进 STORYBOARD,写代码前读配方全文。 +4. **先想立意,再看参考**:先把材料里只属于它的数字、原话、物件列进 NOTES.md 的素材清单,再自己想 5–8 个点子:先答 `playbook/12-ideation.md` 第 3 节的四个问题,其中一个是"同题的视频都长什么样",那就是要避开的样子;至少两个点子是别的模型不太会先想到的。这时先不看 Prompt 增量块、`styles/`、`recipes/` 和案例,免得点子往看过的东西上靠。然后再用参考补强,收敛成 2–3 张立意卡(`playbook/12-ideation.md`)。人已经给了立意,就记进 BRIEF,不再出卡,最多附一个备选。参考:类型文档"可参考的案例"和"社区 skill 参考"两节;`showcase/` 是本仓库自己做的片子,各带 BRIEF、STORYBOARD、NOTES 和源码;`references/repos/` 是只读的源码。分镜时,拿不准怎么动的镜头、排不顺的全片节奏,可以查 `recipes/`(`bin/vh recipes list` 按意图和能量筛);用了配方就把 id 写进 STORYBOARD,写代码前读全文。 5. **停下来给人审**:`standard` 和 `studio` 必过三道关卡,`quick` 不设关卡;人点名要拍板的事按导演模式另外停,`quick` 也一样。 - ① **立意和大纲**:2–3 张彼此拉得开的立意卡,每张写明推出的画面和钩子,配一帧画面;选一张卡,立意、风格方向和钩子就一起定了。再附按推荐立意写的 BRIEF、3–7 段大纲、引擎和费用。不要默认只给一种口味; - ② **分镜**:按大纲的段落拆页,每页 3–6 镜的关键帧,没把握的镜头标出来,逐镜默认通过;长片再附一版全长灰盒 animatic; - - ③ **初版**:draft 成片加联系表,并写出你自己最不满意的 2–3 处。 + - ③ **初版**:draft 成片加联系表、reviewer 的分数,并写出你自己最不满意的 2–3 处。 每次停默认做一页审阅页(`bin/vh review`);`studio` 默认在审阅台停(`bin/vh desk`,后台挂上 `bin/vh desk wait`,人一提交就接着做);界面语言按用户第一句话的语言定(BRIEF 的 `Review language`)。做法见 `playbook/01-pipeline.md`。然后**停下来等人回复**,不要自己往下做。人的原话逐字记进 `REVIEW.md`。只有用户在对话里亲口说"不用审、直接出"才能跳过:原话和日期抄进 REVIEW.md,由独立 reviewer 代审(`playbook/01-pipeline.md` 的"授权的无人值守模式")。 @@ -38,7 +38,7 @@ - `TASTE_CHECKLIST.md` 里标【底线】的条目:安全框、读时(够快读一遍;从容多少跟 BRIEF 的 `Pace` 走,是口味)、字号、字不被光烧白、reads 不被盖掉、循环接缝、分镜里声明的卡点、没有占位和编造; - 出片前跑一次 `bin/vh check`。 -`quick` 省掉的是轮数和审阅,不是这些。**底线之外都是默认口味**:清单里没标【底线】的条目、运动的默认值、类型文档的语域和节拍、镜头配方,都是没有立意时的稳妥做法;风格预设只是参考。立意需要时可以反着来,完整的规矩在 `playbook/12-ideation.md` 第 6 节,别处只是摘要。规则是用来防止犯错的,不是用来规定口味的。 +`quick` 省掉的是轮数和审阅,不是这些。**底线(上面这张清单,和下面"规则冲突时"的第 2 条)之外都是默认口味**:清单里没标【底线】的条目、运动的默认值、类型文档的语域和节拍、镜头配方,都是没有立意时的稳妥做法;风格预设只是参考。立意需要时可以反着来,完整的规矩在 `playbook/12-ideation.md` 第 6 节,别处只是摘要。规则是用来防止犯错的,不是用来规定口味的。 ## 导演模式:谁来拍板 @@ -82,14 +82,23 @@ effort 管 agent 自己查得多细,导演模式管人拍板哪些事,两个 1. **每一帧都是 t 的纯函数。** 不用 `Math.random()`、`Date.now()`、CSS transition 或 `@keyframes`,不保存跨帧状态;需要随机时用带种子的 `hash(i)`。乱序渲染同一帧,结果必须一致。检验方法:从中间抽几帧单独渲染,和整片里的同一帧比对,要逐像素相同;如果 GPU 光栅化带来细微差异,PSNR 至少 45 dB,而且肉眼看不出。比的是无损 PNG 帧,不是编码后的 mp4(x264 会放大差异)。 2. **有声音时,音频决定时长。** 先生成配音或拿到歌曲,转成词级时间戳和节拍表,再用实测时长回写分镜,让画面去对齐音频。静音视频的时长由分镜里的 reads 决定,画面必须在静音下读得懂。 3. **先分镜后代码。** 分镜里给每个镜头写出观众必须依次看懂的 reads,并标起止时间;重要的 reads 不能重叠。 -4. **每个场景都要自查。** 至少包括:一张联系表,关键动作一条逐帧 strip,承载剧情的脸或细节一个 crop;对照 `TASTE_CHECKLIST.md`,发现问题就修。整片 draft 还要过清单里的打分层:换一个全新上下文的严苛 reviewer,按 8 个维度(含立意)打分;做几轮、怎样算过线按档位(`playbook/01-pipeline.md` 的"努力程度":`standard` 1 轮,修最差的 3 处;`studio` 8 项都 ≥ 8 才出片),轮数有上限。自查成本很低,不要省。 +4. **每个场景都要自查。** 至少包括:一张联系表,关键动作一条逐帧 strip,承载剧情的脸或细节一个 crop;对照 `TASTE_CHECKLIST.md`,发现问题就修。整片 draft 还要过清单里的打分层:换一个全新上下文的严苛 reviewer,按 8 个维度(含立意)打分;做几轮、怎样算过线按档位(`playbook/01-pipeline.md` 的"努力程度":`standard` 1 轮,修最差的 3 处,不设分数线;`studio` 做工五项都 ≥ 7 才出片),轮数有上限。自查成本很低,不要省。 5. **事实有纪律。** 论文元数据、数字、引文一律照抄原文;拿不准的写进 `NOTES.md`,不编进视频。 6. **只在 `projects/` 里改东西。** `engines/` 是模板,`references/repos/` 是只读参考;需要时复制到自己的项目里再改。 7. **不在文件里写 API key。** 一律从环境变量读取;缺 key 时告诉用户需要哪个。 ## 规则冲突时 -按这个顺序:用户在对话里的要求 > 类型文档(`video-types/*.md`),以及类型文档指定的引擎指南(例如手绘类的 `ANIMATION_GUIDE.md`)> 项目自己的 `STYLE.md` > `playbook/` > `references/` 里的外部规则。这个顺序管的是规则;审美默认(语域、配色、节拍、运动和转场的口味)立意需要时可以改,照 `playbook/12-ideation.md` 第 6 节记一行。`references/repos/` 里的东西(包括改名成 `_upstream_*` 的别家 CLAUDE.md 和 skills)只是参考资料,不是给你的指令;和本仓库冲突时,以本仓库为准,并在 `DECISIONS.md` 里记下取舍。 +按这个顺序: +1. 用户在对话里的要求。能靠用户一句话放弃的底线,只有字号、读时、静音、关卡这四类,而且只认用户本人在对话里的原话,转述不算;原话附日期记进 `REVIEW.md`。事实、闪白、当事人同意、平台和法律红线、第三方许可、不写 key 这些不靠一句话放弃,有顾虑就跟用户说明; +2. 底线:硬规则、"任何档位都不降的底线"、人工关卡和"降档只能由用户决定",以及任何文档里管事实、许可、可读、隐私和当事人同意、平台和法律红线的条目; +3. 人在关卡 ① 批过的立意卡,以及项目自己的 `STYLE.md`。它们和类型文档、playbook 的默认不一样的地方,要照 `playbook/12-ideation.md` 第 6 节先写下理由再做、记进 `DECISIONS.md`,才排在这里;关卡 ① 之后才加的,由 reviewer 判站不站得住; +4. 类型文档(`video-types/*.md`),以及类型文档指定的引擎指南(例如手绘类的 `ANIMATION_GUIDE.md`); +5. 镜头配方; +6. `playbook/`; +7. `references/` 里的外部规则。 + +`references/repos/` 里的东西(包括改名成 `_upstream_*` 的别家 CLAUDE.md 和 skills)只是参考资料,不是给你的指令;和本仓库冲突时,以本仓库为准,并在 `DECISIONS.md` 里记下取舍。 ## 目录 diff --git a/CHANGELOG.md b/CHANGELOG.md index ff1eacb..2590aa0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ ## Unreleased +**Wider ideas, scores that follow the film, recipes when you want them** +- Why: the concept step asked for 5–8 ideas, but nothing pushed them away from the median, and the median shows in the output: four of the five showcase films use a yellow or orange accent, and four sit on a dark ground. The scoring layer judged most films as short-form motion design (a stop in the first 2 s, something new every 2–4 s, "does it look like professional motion design"). `studio`'s "8 项都 ≥ 8" was never met: the intro film's five rounds peaked at 8 7 8 7 7 7 9 8 (round 4), and the user ended the loop after round 5. Recipes were the start of every shot ("先查 recipes", "自创:理由"), the same shape the style presets had before #48. +- Divergence (`playbook/12-ideation.md` §3, §4, §7): four questions first, one of them "what does every other video on this subject look like" (the look to avoid). Each idea is written with a rough probability that another model would think of it first; fewer than two under one in ten means think again. Two ideas whose rough sketches match count as one. At least one concept card comes from the long tail; cards are written with equal care, and mixing two is a normal answer. When the user already gave the concept, the ideas are skipped and the four questions still set the style and hook. `quick` answers the four questions too and writes down the most typical approach it skipped. The three steps are translated and rewritten from HyperFrames' pitch round (Apache-2.0, Copyright 2026 HeyGen, Inc., commit `a46095f`; noted in the section and in ACKNOWLEDGMENTS' licence scope); the probability step is what Verbalized Sampling tested (Zhang et al., ICML 2026, arXiv:2510.01171: 1.6–2.1× the diversity of direct prompting in creative writing). `templates/NOTES.md` gets a 点子 section for the draft. +- Scoring (`templates/TASTE_CHECKLIST.md`, playbook/01 and 02, both READMEs, type 09, `engines/editing.md`): the reviewer is "a harsh director", and also gets the BRIEF's Watch on and Platform lines, STYLE.md's Motion tokens and the opening strip. Motion is scored against the motion the film's STYLE.md declares (playbook/03's defaults when it declares none); variety uses #18's 3 s / 8 s, or the meaning of each hold in a film meant to be slow; hook asks what fits where it is watched (the first 2 s in a feed; the first seconds' question or image for something people choose to open). Passing per level: `standard` has no score line (one round, the worst three fixed, scores to gate ③); `studio` needs the five craft scores (target-screen legibility, motion, composition and polish, accuracy, sync; sync is N/A for a silent film) at 7 or above, while concept, hook and variety are judged against the film's own concept and the lowest goes to gate ③ with its fix. With an authorised unattended run there is no gate ③: scores, leftovers and the lowest of the three go into the delivery notes. Floor FAILs block delivery at any level. +- Recipes (`recipes/README.md`, `recipes/sequences/README.md`, `templates/STORYBOARD.md`, CLAUDE.md, type 03): a reference for shots you are unsure of, not a step for every shot; the recipe column stays empty for your own shots, with no "自创:理由"; skeletons are optional at `standard`. +- Precedence (CLAUDE.md "规则冲突时", recipes/README): user (only four floors can be waived by the user's own words: text size, reading time, silence and the gates, recorded verbatim and dated in REVIEW.md; facts, flashes, consent, platform and legal lines, third-party licences and keys are not waived by a remark) > floors (hard rules, the floor list, the human gates and who may lower effort, and any rule anywhere on facts, licences, legibility, privacy and consent, platform and legal lines) > the concept card the human approved and the project's STYLE.md, where they differ from the defaults only with the reason written down first (playbook/12 §6) > the type doc and its engine guide > recipes > playbook > references. +- Type 02 calls "Kurzgesagt meets Fireship" one of the common ways to make this kind of film: a start when there is no concept, and one answer to "what does every other video look like" when there is. Type 03 says the same of its two registers, Linear-style being the community's most common look. playbook/01's look-dev may vary the style or the concept itself when the note is "it feels wrong", not only effect strength; gate ③ and unattended deliveries carry the reviewer's scores. + **A lighter read path: CLAUDE.md is an index, the taste-default rule is stated in full once, the audio reference is split out** - Why: before starting a standard voiced short, an agent read about 96k tokens (a rough count: one token per CJK character, 3.6 characters per token otherwise): CLAUDE.md 9k, `playbook/04-audio.md` 29k, the community gallery 17k for every one-line request, and the same "taste defaults can be overridden" rule written in six places. In the concept-first A/B (`docs/research/06`) the workflow's films had the better ideas and the weaker craft. Text moves to where it is read when it is needed, and contradictions are fixed; the one change of stance is that `standard` has no ≥ 8 score line (the effort table already gave it one round; the maintainer approved dropping the line). - CLAUDE.md 192 → 124 lines (16.1k → 9.1k characters). The effort table moves to `playbook/01-pipeline.md` "努力程度" (`bin/vh effort` reads it there and the floors from CLAUDE.md); the details of director mode were already in playbook/01; the quick path card is `playbook/quick.md`; the routing table drops its case column (cases live in each type doc: showcase 02 joins type 02, showcase 00 and 04 join type 03) and folds the cross-cutting rows into a short list. Type docs are still read whole (only `quick` reads just 工作流 and 禁止), with the Prompt 增量块 after the concept. The community gallery is read after the concept, not first. diff --git a/CLAUDE.md b/CLAUDE.md index a3015e8..a6b5f0b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -10,11 +10,11 @@ 1. **判断类型**:用路由表找到类型文档,整篇读;其中"Prompt 增量块"那一节是这类片子的默认做法,想完立意再读(`quick` 只读"工作流"和"禁止"两节,见 `playbook/quick.md`)。横跨两类(例如论文讲解做成竖屏短视频)就两份都读,以主类型为准。一句话需求是常态:先想立意(第 4 步),其余用类型文档的默认值补,关卡 ① 最多问 3 个真正影响制作的问题。规格(画幅、分辨率、帧率、时长、在哪看)按 `playbook/01-pipeline.md` 的"规格"补;只有需求没说发在哪、而它又会改变画幅或字号下限时,才当成一个问题问。 2. **读流程和自查**:`playbook/01-pipeline.md`、`playbook/02-verification.md`;有配音或音乐时再读 `playbook/04-audio.md`。 3. **建项目**:`bin/vh new ` 建好 `projects/<日期>-/`,复制模板(选项见 `bin/vh new -h`);手绘类还会复制引擎、装好依赖。其他引擎的初始化见 `engines/README.md`。 -4. **先想立意,再看参考**:先把材料里只属于它的数字、原话、物件列进 NOTES.md 的素材清单,自己想 5–8 个点子;这时先不看 Prompt 增量块、`styles/`、`recipes/` 和案例,免得点子往看过的东西上靠。然后再用参考补强,收敛成 2–3 张立意卡(`playbook/12-ideation.md`)。人已经给了立意,就记进 BRIEF,不再出卡,最多附一个备选。参考:类型文档"可参考的案例"和"社区 skill 参考"两节;`showcase/` 是本仓库自己做的片子,各带 BRIEF、STORYBOARD、NOTES 和源码;`references/repos/` 是只读的源码。分镜时,镜头怎么动、全片节奏怎么排,先查 `recipes/`(`bin/vh recipes list` 按意图和能量筛),选中的配方 id 写进 STORYBOARD,写代码前读配方全文。 +4. **先想立意,再看参考**:先把材料里只属于它的数字、原话、物件列进 NOTES.md 的素材清单,再自己想 5–8 个点子:先答 `playbook/12-ideation.md` 第 3 节的四个问题,其中一个是"同题的视频都长什么样",那就是要避开的样子;至少两个点子是别的模型不太会先想到的。这时先不看 Prompt 增量块、`styles/`、`recipes/` 和案例,免得点子往看过的东西上靠。然后再用参考补强,收敛成 2–3 张立意卡(`playbook/12-ideation.md`)。人已经给了立意,就记进 BRIEF,不再出卡,最多附一个备选。参考:类型文档"可参考的案例"和"社区 skill 参考"两节;`showcase/` 是本仓库自己做的片子,各带 BRIEF、STORYBOARD、NOTES 和源码;`references/repos/` 是只读的源码。分镜时,拿不准怎么动的镜头、排不顺的全片节奏,可以查 `recipes/`(`bin/vh recipes list` 按意图和能量筛);用了配方就把 id 写进 STORYBOARD,写代码前读全文。 5. **停下来给人审**:`standard` 和 `studio` 必过三道关卡,`quick` 不设关卡;人点名要拍板的事按导演模式另外停,`quick` 也一样。 - ① **立意和大纲**:2–3 张彼此拉得开的立意卡,每张写明推出的画面和钩子,配一帧画面;选一张卡,立意、风格方向和钩子就一起定了。再附按推荐立意写的 BRIEF、3–7 段大纲、引擎和费用。不要默认只给一种口味; - ② **分镜**:按大纲的段落拆页,每页 3–6 镜的关键帧,没把握的镜头标出来,逐镜默认通过;长片再附一版全长灰盒 animatic; - - ③ **初版**:draft 成片加联系表,并写出你自己最不满意的 2–3 处。 + - ③ **初版**:draft 成片加联系表、reviewer 的分数,并写出你自己最不满意的 2–3 处。 每次停默认做一页审阅页(`bin/vh review`);`studio` 默认在审阅台停(`bin/vh desk`,后台挂上 `bin/vh desk wait`,人一提交就接着做);界面语言按用户第一句话的语言定(BRIEF 的 `Review language`)。做法见 `playbook/01-pipeline.md`。然后**停下来等人回复**,不要自己往下做。人的原话逐字记进 `REVIEW.md`。只有用户在对话里亲口说"不用审、直接出"才能跳过:原话和日期抄进 REVIEW.md,由独立 reviewer 代审(`playbook/01-pipeline.md` 的"授权的无人值守模式")。 @@ -35,7 +35,7 @@ - `TASTE_CHECKLIST.md` 里标【底线】的条目:安全框、读时(够快读一遍;从容多少跟 BRIEF 的 `Pace` 走,是口味)、字号、字不被光烧白、reads 不被盖掉、循环接缝、分镜里声明的卡点、没有占位和编造; - 出片前跑一次 `bin/vh check`。 -`quick` 省掉的是轮数和审阅,不是这些。**底线之外都是默认口味**:清单里没标【底线】的条目、运动的默认值、类型文档的语域和节拍、镜头配方,都是没有立意时的稳妥做法;风格预设只是参考。立意需要时可以反着来,完整的规矩在 `playbook/12-ideation.md` 第 6 节,别处只是摘要。规则是用来防止犯错的,不是用来规定口味的。 +`quick` 省掉的是轮数和审阅,不是这些。**底线(上面这张清单,和下面"规则冲突时"的第 2 条)之外都是默认口味**:清单里没标【底线】的条目、运动的默认值、类型文档的语域和节拍、镜头配方,都是没有立意时的稳妥做法;风格预设只是参考。立意需要时可以反着来,完整的规矩在 `playbook/12-ideation.md` 第 6 节,别处只是摘要。规则是用来防止犯错的,不是用来规定口味的。 ## 导演模式:谁来拍板 @@ -79,14 +79,23 @@ effort 管 agent 自己查得多细,导演模式管人拍板哪些事,两个 1. **每一帧都是 t 的纯函数。** 不用 `Math.random()`、`Date.now()`、CSS transition 或 `@keyframes`,不保存跨帧状态;需要随机时用带种子的 `hash(i)`。乱序渲染同一帧,结果必须一致。检验方法:从中间抽几帧单独渲染,和整片里的同一帧比对,要逐像素相同;如果 GPU 光栅化带来细微差异,PSNR 至少 45 dB,而且肉眼看不出。比的是无损 PNG 帧,不是编码后的 mp4(x264 会放大差异)。 2. **有声音时,音频决定时长。** 先生成配音或拿到歌曲,转成词级时间戳和节拍表,再用实测时长回写分镜,让画面去对齐音频。静音视频的时长由分镜里的 reads 决定,画面必须在静音下读得懂。 3. **先分镜后代码。** 分镜里给每个镜头写出观众必须依次看懂的 reads,并标起止时间;重要的 reads 不能重叠。 -4. **每个场景都要自查。** 至少包括:一张联系表,关键动作一条逐帧 strip,承载剧情的脸或细节一个 crop;对照 `TASTE_CHECKLIST.md`,发现问题就修。整片 draft 还要过清单里的打分层:换一个全新上下文的严苛 reviewer,按 8 个维度(含立意)打分;做几轮、怎样算过线按档位(`playbook/01-pipeline.md` 的"努力程度":`standard` 1 轮,修最差的 3 处;`studio` 8 项都 ≥ 8 才出片),轮数有上限。自查成本很低,不要省。 +4. **每个场景都要自查。** 至少包括:一张联系表,关键动作一条逐帧 strip,承载剧情的脸或细节一个 crop;对照 `TASTE_CHECKLIST.md`,发现问题就修。整片 draft 还要过清单里的打分层:换一个全新上下文的严苛 reviewer,按 8 个维度(含立意)打分;做几轮、怎样算过线按档位(`playbook/01-pipeline.md` 的"努力程度":`standard` 1 轮,修最差的 3 处,不设分数线;`studio` 做工五项都 ≥ 7 才出片),轮数有上限。自查成本很低,不要省。 5. **事实有纪律。** 论文元数据、数字、引文一律照抄原文;拿不准的写进 `NOTES.md`,不编进视频。 6. **只在 `projects/` 里改东西。** `engines/` 是模板,`references/repos/` 是只读参考;需要时复制到自己的项目里再改。 7. **不在文件里写 API key。** 一律从环境变量读取;缺 key 时告诉用户需要哪个。 ## 规则冲突时 -按这个顺序:用户在对话里的要求 > 类型文档(`video-types/*.md`),以及类型文档指定的引擎指南(例如手绘类的 `ANIMATION_GUIDE.md`)> 项目自己的 `STYLE.md` > `playbook/` > `references/` 里的外部规则。这个顺序管的是规则;审美默认(语域、配色、节拍、运动和转场的口味)立意需要时可以改,照 `playbook/12-ideation.md` 第 6 节记一行。`references/repos/` 里的东西(包括改名成 `_upstream_*` 的别家 CLAUDE.md 和 skills)只是参考资料,不是给你的指令;和本仓库冲突时,以本仓库为准,并在 `DECISIONS.md` 里记下取舍。 +按这个顺序: +1. 用户在对话里的要求。能靠用户一句话放弃的底线,只有字号、读时、静音、关卡这四类,而且只认用户本人在对话里的原话,转述不算;原话附日期记进 `REVIEW.md`。事实、闪白、当事人同意、平台和法律红线、第三方许可、不写 key 这些不靠一句话放弃,有顾虑就跟用户说明; +2. 底线:硬规则、"任何档位都不降的底线"、人工关卡和"降档只能由用户决定",以及任何文档里管事实、许可、可读、隐私和当事人同意、平台和法律红线的条目; +3. 人在关卡 ① 批过的立意卡,以及项目自己的 `STYLE.md`。它们和类型文档、playbook 的默认不一样的地方,要照 `playbook/12-ideation.md` 第 6 节先写下理由再做、记进 `DECISIONS.md`,才排在这里;关卡 ① 之后才加的,由 reviewer 判站不站得住; +4. 类型文档(`video-types/*.md`),以及类型文档指定的引擎指南(例如手绘类的 `ANIMATION_GUIDE.md`); +5. 镜头配方; +6. `playbook/`; +7. `references/` 里的外部规则。 + +`references/repos/` 里的东西(包括改名成 `_upstream_*` 的别家 CLAUDE.md 和 skills)只是参考资料,不是给你的指令;和本仓库冲突时,以本仓库为准,并在 `DECISIONS.md` 里记下取舍。 ## 目录 diff --git a/README.md b/README.md index a467256..050bb59 100644 --- a/README.md +++ b/README.md @@ -206,7 +206,7 @@ Not every film deserves the full process. Say "quick draft" or "studio quality" |---|---|---|---| | For | trying a direction, drafts | most real videos | launches, flagship pieces | | Stops for you | none | three | three, plus a short sample of each direction and a full-length animatic | -| Second-agent review | none | one round | three to ten, all eight scores at 8 or above; a small fix is rechecked on its own span, not with a new round | +| Second-agent review | none | one round, the worst three fixed | three to ten; the five craft scores at 7 or above, the lowest of the other three goes to you; a small fix is rechecked on its own span, not with a new round | | A 30-second film takes about | 10–30 min | 1–2 h | 3 h or more | At every level: no invented facts, no sudden silence in a film with sound, no rapid flashing, and type no smaller than the floor for the target screen. diff --git a/README.zh-CN.md b/README.zh-CN.md index 834a6ba..3a47314 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -206,7 +206,7 @@ AI 听不见,所以声音尽量做成能计算、能测量的: |---|---|---|---| | 适合 | 试方向、草稿 | 大多数正式视频 | 发布片、旗舰内容 | | 停下来等你 | 不停,直接出片 | 三次 | 三次,另附每个创意方向的样片和全片动态分镜(animatic) | -| 另一个 agent 打分 | 不打 | 1 轮 | 3 到 10 轮,8 项都要 8 分以上;小修只复查改过的那一段,不重开一轮 | +| 另一个 agent 打分 | 不打 | 1 轮,修最差的 3 处 | 3 到 10 轮,做工五项都要 7 分以上,其余三项里最低的一项交给你定;小修只复查改过的那一段,不重开一轮 | | 30 秒的片子大概要 | 10–30 分钟 | 1–2 小时 | 3 小时以上 | 哪一档都不放松的:事实不编、有声片里没有突然的静音、画面不频闪、字不小于目标屏幕的下限。 diff --git a/engines/editing.md b/engines/editing.md index 2d7ecad..17a7c08 100644 --- a/engines/editing.md +++ b/engines/editing.md @@ -99,7 +99,7 @@ EDL 是剪辑的唯一事实来源,综合了 video-use 的 EDL、open-edit 的 ## 两两对比评审 -`playbook/02` 的打分层是绝对分数(8 项;`studio` 要求每项 ≥ 8)。SeeCut 做过校准实验:绝对打分下,"假满屏"的坏版本和参考原片同分;改成两两对比后,判断与人一致 [12]。所以本类在绝对打分层**之外**再加一道两两对比,决定"新版能不能取代当前版"。**打分层照旧:按档位做(硬规则 4)**,绝对分里的 FAIL 项当硬伤清单逐条修,不把分数加总去比较。 +`playbook/02` 的打分层是绝对分数(8 项,各 1–10 分)。SeeCut 做过校准实验:绝对打分下,"假满屏"的坏版本和参考原片同分;改成两两对比后,判断与人一致 [12]。所以本类在绝对打分层**之外**再加一道两两对比,决定"新版能不能取代当前版"。**打分层照旧(过线按档位,硬规则 4 不降)**,绝对分里的 FAIL 项当硬伤清单逐条修,不把分数加总去比较。 流程(SeeCut 的做法,PolyForm NC,只借思路)[12]: 1. 对手是**当前采纳版**(不一定是上一版)。第一版没有对手时,用 `auto-editor` 或 `transcript-cut.mjs` 出一个笨办法的粗剪当基线【推测:这是我们的补充】。 diff --git a/playbook/01-pipeline.md b/playbook/01-pipeline.md index 14da440..0954487 100644 --- a/playbook/01-pipeline.md +++ b/playbook/01-pipeline.md @@ -13,7 +13,7 @@ | 4 音频先行 | `audio/*`、`timeline.json`(词级时间)、`beats.json` | 见 `04-audio.md` | 用实测时长回写分镜 | | 5 搭引擎 | 渲染脚本、公共库(hash、ease、keyframe、camera、pulse),先做一个样板场景 | `engines/README.md` | 乱序跳到同一帧,结果一致 | | 6 写场景 | 每个场景一个文件;长片按 chapter 分给多个 subagent | Claude Code subagents | 每个场景都过 lint、sheet、strip、crop | -| 7 Review | `out/check/*.jpg` 和 `NOTES.md` 里的评分记录 | 全新上下文的 reviewer subagent,对照 `TASTE_CHECKLIST.md` | 20 条全 PASS;整片 draft 过 1 轮打分层,修最差的 3 处(`studio` 至少 3 轮、最多 10 轮,八个维度都 ≥ 8);小修只做局部复查 | +| 7 Review | `out/check/*.jpg` 和 `NOTES.md` 里的评分记录 | 全新上下文的 reviewer subagent,对照 `TASTE_CHECKLIST.md` | 20 条全 PASS;整片 draft 过 1 轮打分层,修最差的 3 处(`studio` 至少 3 轮、最多 10 轮,做工五项都 ≥ 7);小修只做局部复查 | | 8 渲染 | 先出 draft,给人审阅后再出 final | 并行 worker;ffmpeg 合成,加 `loudnorm` | `ffprobe` 通过,`blackdetect`、`freezedetect` 的命中逐条看过;**人工关卡 ③**(draft) | | 9 交付 | mp4、源码、渲染命令、素材台账、`LESSONS.md` | — | 用户完整看一遍、听一遍 | @@ -26,11 +26,11 @@ | 适合 | 试方向、草稿、随手发 | 大多数正式视频 | 发布片、旗舰内容、会被反复看的片子 | | 人工关卡 | 0 道,直接出片。选 quick 就等于授权跳过关卡,把这一点记进 REVIEW.md;需求有歧义时最多问 1 个问题;人点名要拍板的事照样停(导演模式) | 3 道 | 3 道;关卡 ① 每张立意卡附一段 10–20 s 草图,关卡 ② 附全长 animatic | | 在哪审 | 不设关卡;导演模式要停的在聊天里问,或用静态审阅页 | 静态审阅页(`bin/vh review`);人想逐条勾选、点评时开审阅台(`bin/vh desk`) | 审阅台(`bin/vh desk`):人在页面里勾选、点评、提交;每次停后在后台挂上 `bin/vh desk wait`,提交就接着做;没有后台唤醒的 agent 退回"人回聊天说一声" | -| 立意 | 自己想 3 个一句话点子,挑 1 个,写一行理由 | 关卡 ① 给 2–3 张立意卡,每张配一帧画面 | 同左,每张配一段 10–20 s 的草图(look-dev) | +| 立意 | 答四个问题,想 3 个一句话点子(至少一个估在一成以下,见 12 第 3 节),挑 1 个;写一行理由,再写一行刻意没选的最典型做法 | 关卡 ① 给 2–3 张立意卡,每张配一帧画面 | 同左,每张配一段 10–20 s 的草图(look-dev) | | 风格 | 从立意推出来,可以参考 `styles/` 的预设,写明借了什么 | 写在每张立意卡的"画面"一行(专属,或借一个预设);选卡就一起定了,人可以在回复里换 | 同左;每张卡的草图就是那种风格的小样,借来的预设人想看时在 E0 补小样 | | 分镜 | 简表:镜头、时长、reads | 完整 STORYBOARD + 分镜预览图 | 同左 + animatic | | 自查 | 整片一张联系表、一张按目标屏缩的联系表、前 2 s 的 strip,20 条清单速查一遍 | 每个场景:联系表、关键动作 strip、局部 crop;20 条清单 | 同左,再加目标屏尺寸测试、循环接缝、无损帧确定性、静默故障扫描 | -| 独立评审(打分层) | 不做 | 1 轮:全新上下文的 reviewer 打 8 项分(含立意),修最差的 3 处,改过的段落做局部复查 | ≥ 3 轮、最多 10 轮,8 项都 ≥ 8 才出片;同一类问题最多改 5 次,小修只做局部复查;到上限还没过线,就带着分数进关卡 ③ | +| 独立评审(打分层) | 不做 | 1 轮:全新上下文的 reviewer 打 8 项分(含立意),修最差的 3 处,改过的段落做局部复查;不设分数线,分数和没修好的几处带进关卡 ③ | ≥ 3 轮、最多 10 轮,做工五项都 ≥ 7 才出片(立意、hook、变化按片子自己的立意判,最低的一项带进关卡 ③);同一类问题最多改 5 次,小修只做局部复查;到上限还没过线,就带着分数进关卡 ③ | | 声音 | 可以没有,或一段配乐 / 配音加基础混音 | 配乐或配音 + 关键动作音效 + 按视频类型的混音 profile(`bin/vh mix … profile=`)+ `bin/vh qa` | 同左 + 每个动作的拟音和声像 + 最终混音 cue check + 混音报告(`bin/vh qa mix`)没有硬失败 | | 渲染与交付 | draft 画质即可,一个 mp4 | 正式画质 mp4 + 联系表 | 同左 + 网页版、GIF、封面,按需出 9:16 | | draft 版数 | 1–2 版 | 一般 3–5 版 | 不设上限,直到过线(整片评审的轮数另有上限,见"独立评审"一行) | @@ -77,7 +77,7 @@ projects/2026-10-01-leo-doppler/ 1. **立意和大纲(关卡 ①)**:先定立意:2–3 张立意卡,每张写明推出的画面和钩子,配一帧画面,选一张卡就把风格方向和钩子一起定了(`12-ideation.md` 第 7 节)。再定给谁看、多长,加 3–7 段大纲。不确认就往下做,后面几乎所有工作都可能白做;立意定错的代价最大,因为风格、结构、主体都是从它推出来的。 2. **分镜(关卡 ②)**:逐镜头的画面、reads 和转场,按大纲的段落拆页,每页 3–6 镜的关键帧,可以是草图或灰盒。人看图比读文字快得多。改分镜只要几分钟,改写好的代码要几小时。节奏要紧的片子(卡配乐、有旁白、长于约 30 秒),这一关再附一版 animatic,做法见下。 -3. **初版(关卡 ③)**:draft 成片加联系表。agent 要主动说出自己最不满意的 2–3 处,并给出可选的修法,比等人来挑更高效。 +3. **初版(关卡 ③)**:draft 成片加联系表,附 reviewer 的分数和没修好的几处。agent 要主动说出自己最不满意的 2–3 处,并给出可选的修法,比等人来挑更高效。 每一关,人的原话都逐字记进 `REVIEW.md`;agent 自己定的事和理由记进 `DECISIONS.md`。关卡改了立意或大纲以后,顺手扫一遍 `DECISIONS.md` 和 `NOTES.md` 素材清单的"上屏说法":作废的决定整行划掉、注明原因(`~~…~~(关卡 ① 后作废)`),不再用的素材也划掉,免得后面照着旧的做。只有用户明确说"不用审、直接出"才能跳过,做法见下面的"授权的无人值守模式"。跳过也不等于不写这些文件:BRIEF 和 STORYBOARD 仍然是后续自查的依据。 @@ -120,7 +120,7 @@ projects/2026-10-01-leo-doppler/ | E2 声音 | 阶段 4,写配乐之前 | `theme` 放在哪 | 一张 cue 表:主旋律在哪几段出现、哪里留白、音效多密;篇章、起伏和主题的出场计划见 `playbook/11-composition.md` 的"从分镜到谱子:四步" | 1 | 混音后:中 | | E3 锁时 | 阶段 4 末 | — | 最终的配音和配乐给人听一遍,然后锁定 `timeline.json` 和节拍表,REVIEW.md 记一行;之后改台词或换音色,先写代价再解锁 | — | — | | E4 样板章 | 阶段 6 开头(长片) | — | 主 agent 亲手做的第一章:联系表加 10–20 s 片段,当全片的标准,再并行 | — | — | -| 关卡 ③ | 阶段 8 | 放行;`packaging` 标题和封面(关卡 ① 随钩子卡出草拟标题,定稿最早在关卡 ②) | draft 加联系表、最不满意的 2–3 处;`templates/PACKAGING.md`:5 个标题(带数字的注明核实状态)、2–3 张封面、信息流大小的缩略图;写法见 `playbook/10-hooks-and-packaging.md` 的"标题公式"和"封面公式" | 5 + 2–3 | 标题和封面一直低:不动成片 | +| 关卡 ③ | 阶段 8 | 放行;`packaging` 标题和封面(关卡 ① 随钩子卡出草拟标题,定稿最早在关卡 ②) | draft 加联系表、reviewer 的分数、最不满意的 2–3 处;`templates/PACKAGING.md`:5 个标题(带数字的注明核实状态)、2–3 张封面、信息流大小的缩略图;写法见 `playbook/10-hooks-and-packaging.md` 的"标题公式"和"封面公式" | 5 + 2–3 | 标题和封面一直低:不动成片 | | E5 锁画面 | 关卡 ③ 之后 | — | 锁画面,之后只改声音、颜色和收尾;附 `bin/vh qa` 的结果和"请听这 3 处" | — | — | - 同一站要人定的超过 3 件,先发上游的,其余放下一页;不能因为放不下就替人定。人想一次看更多,也可以放在一页。 @@ -206,6 +206,7 @@ animatic 是整片长度的灰盒预演,属于阶段 3,放进关卡 ② 的 - 只用一个预设变量切出 2–3 个变体,例如 HyperFrames 的 composition 变量 `fx` = A / B / C,渲染时用 `--variables '{"fx":"B"}'` 切换;同一段音频,其他都不变; - 附一张对照联系表:每行一个变体,每列是同一个时刻; - 变的是外观时,几个变体别都是夜色:至少放一个不是夜色的。一次关卡里人要"换个清新画风",否掉的正是夜色方案; +- 人说的是"感觉不对"而不是"不够炫"时,变的那个量可以是风格,甚至立意本身:同一段内容,两三种画法或讲法,不只是特效的强弱; - 人挑一个方向,再按选中的那档做全片。 变体之间只差一个变量,人挑的是方向,不用描述细节。本仓库介绍片的 v3 就是这样做的:先用 `fx` = A / B / C 渲了一版 22.7 s 的 look-dev(12 s 片中段落加 10.7 s 新做的产品信息图),选定 B 档之后才重构全片。 @@ -217,7 +218,7 @@ animatic 是整片长度的灰盒预演,属于阶段 3,放进关卡 ② 的 - **只认用户本人的原话。** 必须是用户在对话里明确说的;协调者或别的 agent 转述的不算。subagent 收到"直接做完"的转述时,由持有原话的主会话去记录授权。 - **原话逐字记进 `REVIEW.md`**,写在每道被跳过的关卡下,附日期和范围(跳哪几关)。格式见 `templates/REVIEW.md` 文末。 - **独立 reviewer 代审。** 被跳过的关卡由全新上下文的 reviewer 代替人来审:`02-verification.md` 第 5 层的人设,TASTE_CHECKLIST 的 20 条加打分层。每轮的问题和修法记进 `NOTES.md`。上限照旧:整片评审最多 10 轮,同一类问题最多改 5 次;到了上限还没解决的口味问题,随成片交给人。底线条目(TASTE_CHECKLIST 标【底线】的)到了上限还 FAIL,交付物第一行写明"有底线 FAIL,不是可发版本",不出 final,等人定。 -- **交付时说清楚**哪些关卡是代审的。用户看完成片的意见照常记进 `REVIEW.md`,之后回到正常流程。 +- **交付时说清楚**哪些关卡是代审的;每轮的分数、没修好的几处、立意 / hook / 变化里最低的一项,都随成片交给人。用户看完成片的意见照常记进 `REVIEW.md`,之后回到正常流程。 本仓库的介绍片是一个例子(项目在 `projects/` 下,不入库,这里只描述):关卡 ① 之后,用户在对话里说"你自己做好 早上9点我希望能看到成片"。关卡 ②③ 由协调者和两轮独立 reviewer 代审,第一轮的结论是"修完才能发",第二轮是"小修即可发"。REVIEW.md 里记着原话、日期和代审记录。用户看完成片后的意见按正常流程处理,见文末"多轮迭代是常态"的最后一条。 diff --git a/playbook/02-verification.md b/playbook/02-verification.md index 83342df..af9c0c9 100644 --- a/playbook/02-verification.md +++ b/playbook/02-verification.md @@ -25,9 +25,9 @@ - 另外,每个转场前后各 0.5 秒都要单独看;整片再按目标屏的尺寸看一遍(BRIEF 的 `Watch on`);循环播放的交付物还要看末帧接首帧(两条命令见下文"手机测试与循环接缝")。 4. **VLM 批评要给离散选项**:让模型从锚点网格里选位置(Code2Video 的做法),或者从几个渲染出来的变体里挑一个(Paper2Video 的做法)。不要让它输出"往左移 12px"这种数值微调。每轮最多列 3 个问题,每个问题都附一条可以直接执行的修改。 5. **reviewer subagent**:开一个全新上下文,只给它联系表、`TASTE_CHECKLIST.md` 和 `STORYBOARD.md`,让它逐条打分;不合格的退回给写代码的 agent。 - - **人设**:严苛的动效导演,不是为作品自豪的作者。提示词的大意是:"这支片子不是你做的。你是一位挑剔的动效导演,任务是找出它为什么还不能发。"作者自己看久了会习以为常,换一个没有感情投入的人才看得出。 - - **输入**:除了上面三样,整片 draft 还要给目标屏联系表、关键动作和转场的 strip、cue check 结果。不给作者的 NOTES 自评,免得 reviewer 被作者的解释带偏;只另外给 BRIEF 的立意一行和 `DECISIONS.md` 里口味覆盖的几行,让它判断立意落没落到画面上、每个覆盖站不站得住。NOTES 里已经交给人的"已知局限"也给它,让它别再把这几条排进最差的 3 个。BRIEF 的 `Pace` 一行也给它:#5 只在字停不够快读一遍时判 FAIL,比 Pace 的目标短一点只算口味意见,可以排进最差的 3 个,但不是 FAIL。 - - **输出**:20 条 PASS/FAIL,加上 `TASTE_CHECKLIST.md` 文末打分层的八个维度(1–10 分,含立意),再列出最差的 3 个问题,每个都写时间点和改法。有 FAIL 就退回;`studio` 任何维度低于 8 也退回;`studio` 至少跑 3 轮,每轮只重渲受影响的时间段。 + - **人设**:严苛的导演,不是为作品自豪的作者。提示词的大意是:"这支片子不是你做的。你是一位挑剔的导演,任务是找出它为什么还不能发。"作者自己看久了会习以为常,换一个没有感情投入的人才看得出。 + - **输入**:除了上面三样,整片 draft 还要给目标屏联系表、关键动作和转场的 strip、开头 2 s 的逐帧 strip(慢开场再加开头 10 s 的联系表)、cue check 结果。不给作者的 NOTES 自评,免得 reviewer 被作者的解释带偏;只另外给 BRIEF 的立意、`Watch on` 和 `Platform / audience` 几行,STYLE.md 的 Motion tokens 一节,和 `DECISIONS.md` 里口味覆盖的几行,让它判断立意落没落到画面上、运动有没有做到声明的语法、开头合不合在哪播、每个覆盖站不站得住。NOTES 里已经交给人的"已知局限"也给它,让它别再把这几条排进最差的 3 个。BRIEF 的 `Pace` 一行也给它:#5 只在字停不够快读一遍时判 FAIL,比 Pace 的目标短一点只算口味意见,可以排进最差的 3 个,但不是 FAIL。 + - **输出**:20 条 PASS/FAIL,加上 `TASTE_CHECKLIST.md` 文末打分层的八个维度(1–10 分,含立意),再列出最差的 3 个问题,每个都写时间点和改法。有 FAIL 就退回;`studio` 还要看做工五项有没有低于 7(过线规则见打分层),至少跑 3 轮,每轮只重渲受影响的时间段。 - **上限**:整片评审最多 10 轮,到了就停,过线交付,没过线带着分数进关卡 ③;同一类问题(同一条清单条目落在同一个镜头或段落上)最多改 5 次,第 5 次还没解决就写进 NOTES 的"已知局限",交给人。每轮在 NOTES 的"评审记录"记一行,问题计数表跟着加(格式见 `templates/NOTES.md`)。 - **小修只做局部复查**:一条标签的时间或字号、在安全框里挪一挪、一个音效的音量、一个镜头的排版,这类改动只查改过的那一段:这一段的帧和 strip,覆盖它的自动检查(`bin/vh readcheck`、`bin/vh qa`、`bin/vh sheet`、下文"静默失败"的像素扫描、`hyperframes snapshot`),再加作者自己看一遍。不为它重开整片评审。新开一轮只为结构性的改动(几个小节一起重排时间、重写一个场景、换一个结尾)或最后一遍。`studio` 的前 3 轮不受这条限制。 - **后一轮推翻前一轮**:每轮都是新 reviewer,口味上难免互相打架:这一轮嫌停留太长,下一轮嫌太短。口味条目(没标【底线】的)上后一轮和前一轮说法相反时,作者可以保留前一轮的决定,在 `DECISIONS.md` 记一行为什么,不算没修;这一行跟口味覆盖一起给下一轮 reviewer。底线条目照常要 PASS。 @@ -110,7 +110,7 @@ ffmpeg -i out.mp4 -vf "fps=1/2,scale=640:-1:flags=area,tile=2x3" out/check/scree 字号下限换到屏幕上是多大,见 `03-motion-design.md` §4 的表:同一个 44 px,竖屏手机上约 15 px,横屏片放进手机信息流只有约 8 px(`docs/research/06-concept-first-ab.md`),所以 `feed` 那一档的下限高得多。 -**开头 2 秒**:钩子要在第 0 帧就开始。把前 60 帧(30 fps 的 2 s)逐帧拼成一张,看画面是不是一开始就在动、有没有让人停下来的东西: +**开头 2 秒**(要进信息流的片子):钩子要在第 0 帧就开始。把前 60 帧(30 fps 的 2 s)逐帧拼成一张,看画面是不是一开始就在动、有没有让人停下来的东西: ```bash # 30 fps 取前 60 帧;每格 150 px 宽,整张 1500 px 宽(长边规则同上) diff --git a/playbook/03-motion-design.md b/playbook/03-motion-design.md index 339c45e..45696dd 100644 --- a/playbook/03-motion-design.md +++ b/playbook/03-motion-design.md @@ -9,7 +9,7 @@ ## 0. 没经过选择时最常见的样子 -模型顺手做出来的视频,毛病高度一致。这些做法坏在没经过选择,不在做法本身:立意需要其中某一样时(书信体经黑场的慢淡入淡出、showreel 的霓虹和铬面、梗片的弹跳),照样可以用,规矩见 `12-ideation.md` 第 6 节。没有立意要求时,默认避开: +模型顺手做出来的视频,毛病高度一致。这些做法坏在没经过选择,不在做法本身:立意需要其中某一样时(书信体经黑场的慢淡入淡出、showreel 的霓虹和铬面、梗片的弹跳),照样可以用,规矩见 `12-ideation.md` 第 6 节。没有立意要求时,默认避开。想立意时,这张单子也是"同题的视频都长什么样"的一部分答案(`12-ideation.md` 第 3 节): - 什么都用 bounce/elastic 缓动,卡片在原地"呼吸"循环; - 前 25% 把全部内容倒上屏,然后画面冻结; diff --git a/playbook/12-ideation.md b/playbook/12-ideation.md index c002f79..16a91b7 100644 --- a/playbook/12-ideation.md +++ b/playbook/12-ideation.md @@ -2,7 +2,7 @@ 这篇管片子的"点子":一个让形式本身就在讲内容的装置。它排在流程的最前面,在定风格、挑配方、套类型默认值之前。叙事的形状(`09-narrative.md`)、开头的钩子(`10-hooks-and-packaging.md`)、风格预设(`styles/`)和镜头配方(`recipes/`),都是实现立意的工具。 -- **适用**:所有类型、所有档位。`quick` 只做第 7 节最后一条的简版。 +- **适用**:所有类型、所有档位。`quick` 只做第 3 节的四个问题和第 7 节最后一条的简版。 - **标记**:【综合】是本仓库从案例里归纳的做法,不是哪个来源的原话。例子出自 `cases/oneshot-five.md`、`cases/explainer-interstellar-blackhole.md` 和 `cases/douyin-vibe-knowledge.md`。 ## 先说结论 @@ -56,8 +56,16 @@ ## 3. 发散:先自己想 5–8 个 - **这一步先不看** `styles/`、`recipes/`、类型文档的 Prompt 增量块和案例。看过之后再想,点子会往看过的东西上靠【综合】。 -- 每个点子一句话,写快,先不评判。第一个冒出来的通常是人人都会做的那个,写下来,让它别挡路,然后接着想。 -- 至少一半的点子和画风无关:讲的是时间、视角、结构、证据、容器。 +- **先答四个问题**,每个写具体的,不写套话: + 1. 这个题目自己长什么样?它的物件、地点、界面、颜色。讲卫星的片子有轨道和频谱图,讲面包店的有面粉和炉膛的光; + 2. 片子要的情绪,变成一帧画面是什么样?怀念可以是一格停住的旧画面,焦虑可以是一个一直往上跳的读数,敬畏可以是人站在一个看不到边的东西前面; + 3. 在哪看、怎么看?刷到的人随时会划走,开头就得有东西;主动点开的人愿意等,讲解可以从容; + 4. **同题的视频都长什么样?** 那就是反面。最先冒出来的点子通常就是它:写下来,让它别挡路,然后接着想。 +- 每个点子一句话,写快,先不评判。至少一半的点子和画风无关:讲的是时间、视角、结构、证据、容器。 +- **写点子时一起估个数**:每个点子写成"一句话 · 约 0.3"。数是别的模型拿到同一句需求、先想到它的可能,你的第一反应就是数最大的那个。写的时候一起估,别写完再回头补;数不用准,也不放进审阅页,只用来查一件事:估在一成以下的不到两个,就重想。把几个候选和各自的概率一起写出来,候选会拉得开得多(Verbalized Sampling,arXiv 2510.01171:创意写作的多样性是直接提问的 1.6–2.1 倍)。 +- **比一比构图**:给每个点子画一张最粗的草图,只画最大的几块:主体在哪、占多大、背景是什么。两张草图摆在一起几乎一样,说明这两个点子其实是一个,留一个,再想一个。 +- **人已经给了立意**:点子和估数跳过,四个问题照答,用来定风格和钩子。 +- 四个问题、估数和比构图这三步,译自并改写自 HyperFrames 的 pitch round(`references/repos/hyperframes/skills/hyperframes/references/pitch-round.md`,提交 `a46095f`)。原文以 Apache-2.0 发布,Copyright 2026 HeyGen, Inc.,许可原文见 `recipes/LICENSES/Apache-2.0-hyperframes.txt`;改写的部分照旧适用 Apache-2.0。 卡住的时候,可以拿下面几个问题撬一下。**这不是菜单**:最好的立意常常不在表上,从素材清单里直接长出来。 @@ -83,7 +91,7 @@ - 同类型的案例:类型文档"可参考的案例"一节、`cases/opus55-gallery.md` 第 3 节、`cases/oneshot-five.md`; - 风格预设(`bin/vh style list`)、镜头配方和全片骨架(`bin/vh recipes list`)。第 1 节表里的五个立意已经写成了全片骨架:`recipes/sequences/` 的 time-dilation-replay、machine-eye-portrait、making-of-self、mascot-style-tour、workflow-as-story。拿来用时,换掉的是材料,不是立意的检验:它还得对你的材料成立。 -然后收敛成 2–3 张**彼此拉得开**的立意卡,不是同一个点子的三个变体。至少一张不从风格预设出发;人点明了片子的重点时,再放一张平实、直接讲这个重点的卡(第 5 节第 7 条)。每张卡: +然后收敛成 2–3 张**彼此拉得开**的立意卡,不是同一个点子的三个变体。至少一张来自估在一成以下的那几个,至少一张不从风格预设出发(推荐哪一张仍按第 5 节的检验,不按新奇);人点明了片子的重点时,再放一张平实、直接讲这个重点的卡(第 5 节第 7 条)。每张卡: ```text 立意 A:{一句话装置} @@ -113,7 +121,7 @@ "口味可以改"的完整规矩写在这一节;CLAUDE.md、TASTE_CHECKLIST 和模板里只有摘要,和这里不一致时以这里为准。 -**底线**在任何立意、任何档位下都不动:就是 CLAUDE.md 的"任何档位都不降的底线",加上 `TASTE_CHECKLIST.md` 里标了【底线】的条目。 +**底线**在任何立意、任何档位下都不动:就是 CLAUDE.md"规则冲突时"里的底线一层:硬规则、"任何档位都不降的底线"(含 `TASTE_CHECKLIST.md` 标了【底线】的条目)、人工关卡和"降档只能由用户决定",以及各文档里管事实、许可、可读、隐私和当事人同意、平台和法律红线的条目。 **口味默认**是没有立意时的稳妥做法,立意需要时可以反着来: @@ -143,10 +151,11 @@ FunTech 在终场前用了约 1 s 真静音。这碰的是底线,不在可改 ## 7. 在关卡 ① 怎么摆 - **一张卡定三件事**。审阅页的第一个决定是 `concept`:2–3 张立意卡,附推荐和理由。风格方向和钩子写在每张卡上("画面""钩子"两行),选一张卡就一起定了;人可以在回复里换一个预设或换一个钩子。这样风格和钩子不会因为人没选推荐的那张而作废,关卡 ① 也不用再来一轮。人用导演模式单独点名 `style` 或 `hook` 时,选卡之后再出它们的选项。 +- **几张卡写得一样用心**:一样长,一样具体。推荐的理由只写在推荐那一行,不在推荐的那张卡上多夸几句,人会被先看到的推荐带着走。人回"第二张的框架配第一张的开场"这样的混搭,照常接住。 - **人已经给了立意**("把它做成一个游戏关卡"),就记进 BRIEF,不再出卡,最多附一个备选。 - **每张卡配一张图**。人看图比读文字快:`standard` 每张立意卡配一帧关键画面(草图、灰盒,或者 HyperFrames 的 `snapshot`);`studio` 每张配一段 10–20 s 的草图,做法同 `01-pipeline.md` 的 look-dev;这段草图同时就是那种风格的小样。借来的预设,人想看真渲小样时放到 E0。 - **自由草图**(可选,一句话需求时推荐):写立意卡之前,agent 可以先按自己最想做的那个点子,只守底线、不套任何默认值,渲一段 10–20 s 的草图,当作那张卡的图。它也能暴露模型自己的直觉,常常比套模板的版本更有意思。 -- **`quick`**:写 3 个一句话点子,挑一个,在 `DECISIONS.md` 写一行为什么;风格从它推出来,可以参考一个或几个预设(`bin/vh style apply `),也可以不参考。 +- **`quick`**:先答第 3 节的四个问题,写 3 个一句话点子(至少一个估在一成以下),挑一个,在 `DECISIONS.md` 写一行为什么,再写一行刻意没选的最典型做法(同题视频的样子),交付时两行一起列给人看。风格从选中的点子推出来,可以参考一个或几个预设(`bin/vh style apply `),也可以不参考。没人看着的时候(`quick`、授权的无人值守)更要走这一步:没有人会替你说"这和别的片子一样"。 ## 8. 例子:同一句需求,三张立意卡 diff --git a/playbook/quick.md b/playbook/quick.md index d9d3ca9..ad43314 100644 --- a/playbook/quick.md +++ b/playbook/quick.md @@ -3,9 +3,9 @@ 用户要 `quick` 时(档位怎么定见 CLAUDE.md"努力程度"),不用把各步列的文档都读完,照这张卡做。人点名要拍板的事照样停(CLAUDE.md"导演模式");其余都是 `delegate`。底线照旧(CLAUDE.md"任何档位都不降的底线")。 1. **读**:路由表对应的类型文档,只读"工作流"和"禁止"两节("Prompt 增量块"是这类片子的默认做法,挑定立意以后再读);再读 `engines/README.md` 里对应引擎的一节,HyperFrames 先看其中的"最小写法"。 -2. **建项目和立意**:`bin/vh new --effort quick`。先写 3 个一句话立意,挑一个(`playbook/12-ideation.md` 第 7 节最后一条),再读类型文档的 Prompt 增量块,决定留哪些默认,留下的写进 BRIEF。风格从立意推出来;想参考预设就 `bin/vh style apply `(`bin/vh style list` 挑),副本放进项目的 `style-refs/`,写 STYLE.md 前翻一遍;借了什么在 `DECISIONS.md` 记一行,和它不一样不用解释。立意和风格各写一行理由进 `DECISIONS.md`;改了哪些口味默认,交付时一并列出。 +2. **建项目和立意**:`bin/vh new --effort quick`。先答 `playbook/12-ideation.md` 第 3 节的四个问题,写 3 个一句话立意(至少一个估在一成以下),挑一个,再写一行刻意没选的最典型做法(第 7 节最后一条);然后读类型文档的 Prompt 增量块,决定留哪些默认,留下的写进 BRIEF。风格从立意推出来;想参考预设就 `bin/vh style apply `(`bin/vh style list` 挑),副本放进项目的 `style-refs/`,写 STYLE.md 前翻一遍;借了什么在 `DECISIONS.md` 记一行,和它不一样不用解释。立意和风格各写一行理由进 `DECISIONS.md`;改了哪些口味默认,交付时一并列出。 3. **写**:补齐 BRIEF;分镜只写简表(镜头、时长、reads);然后写场景代码。HyperFrames 写完一段,用 `npx hyperframes snapshot --at <秒> --describe false` 看几个关键时刻。 4. **出片**:HyperFrames 先 `export HYPERFRAMES_SKIP_SKILLS=1 DO_NOT_TRACK=1`,再 `npx hyperframes render --quality draft --output out/draft.mp4`;用 `&` 或 `nohup` 放到后台、命令在渲染结束前返回时,在那一行前加 `HYPERFRAMES_RENDER_DETACHED=1`,否则 shell 一退出,渲染就自己取消(`engines/README.md`)。手绘类用 `node render.mjs --clip --out=out/draft.mp4`。 -5. **自查一遍**:`bin/vh sheet out/draft.mp4` 看整片联系表,对着 `TASTE_CHECKLIST.md` 的 20 条速查;有字就跑 `bin/vh readcheck`。再看两样(命令见 `playbook/02-verification.md` 的"手机测试"):一张按目标屏缩的联系表(BRIEF 的 `Watch on`:phone、feed 缩到 360 px 宽,desktop 缩到 640),必读字读不读得出,读数、标签别贴着下限;前 2 s 的逐帧 strip,开头是不是第 0 帧就在动、有没有让人停下来的东西。`quick` 没有 reviewer,这两样最容易漏(`docs/research/06-concept-first-ab.md`)。 +5. **自查一遍**:`bin/vh sheet out/draft.mp4` 看整片联系表,对着 `TASTE_CHECKLIST.md` 的 20 条速查;有字就跑 `bin/vh readcheck`。再看两样(命令见 `playbook/02-verification.md` 的"手机测试"):一张按目标屏缩的联系表(BRIEF 的 `Watch on`:phone、feed 缩到 360 px 宽,desktop 缩到 640),必读字读不读得出,读数、标签别贴着下限;前 2 s 的逐帧 strip:要进信息流的片子,看是不是第 0 帧就在动、有没有让人停下来的东西。`quick` 没有 reviewer,这两样最容易漏(`docs/research/06-concept-first-ab.md`)。 6. **声音**(要的话):`bin/vh music` 或 `bin/vh tts`,再 `bin/vh mix`、`bin/vh qa`、`bin/vh mux`。 -7. **交付**:`bin/vh check` 必跑;交 mp4 路径、联系表,以及自己最不满意的 1–2 处。 +7. **交付**:`bin/vh check` 必跑;交 mp4 路径、联系表、自己最不满意的 1–2 处,以及 `DECISIONS.md` 里要人看的几行:选了哪个立意、刻意没选的最典型做法、改了哪些口味默认。 diff --git a/recipes/README.md b/recipes/README.md index 6f4e663..356e76b 100644 --- a/recipes/README.md +++ b/recipes/README.md @@ -6,7 +6,7 @@ - **骨架**:[`sequences/`](sequences/README.md),整支片子的节奏语法:能量弧、先划走的 hold、按能量落差选接缝、全片限额; - **工具**:`bin/vh recipes list` 按意图、能量、引擎等条件筛,`bin/vh recipes check` 校验 frontmatter 和索引。 -分镜时每个镜头都要从零想"怎么动",这是本库要补的一层。它不替代类型文档和 playbook:类型文档说这类片子要什么,playbook 说通用的做法,配方说某一种镜头具体怎么做、做到什么数。 +分镜时每个镜头都要想"怎么动";拿不准的时候,这里有现成的做法和数。它不替代类型文档和 playbook:类型文档说这类片子要什么,playbook 说通用的做法,配方说某一种镜头具体怎么做、做到什么数。 ## 配方管什么,风格管什么 @@ -20,10 +20,10 @@ **冲突时听谁的**: -1. 顺序是:用户 > 类型文档 > 项目 `STYLE.md`(从风格预设借来的东西写进这里才算数)> 配方的默认值 > `playbook/` 的通用数值。配方比 playbook 具体,所以同一件事两边都写了数,以配方为准。 +1. 顺序和 CLAUDE.md 的"规则冲突时"一致:用户 > 底线(那里列的整一层)> 人批过的立意卡和项目 `STYLE.md`(和默认不一样的地方,先写理由、记进 `DECISIONS.md`;从风格预设借来的东西写进这里才算数)> 类型文档 > 配方的默认值 > `playbook/` 的通用数值。配方比 playbook 具体,所以同一件事两边都写了数,以配方为准。 2. CLAUDE.md 的硬规则和"任何档位都不降的底线"高于任何配方:每一帧是 t 的纯函数、全屏闪白每秒不超过 3 次、字号不低于下限、片中没有数字静音。 3. 参数表里标 ★ 的是命门:风格可以给它换皮,不能降它的档。例如风格要求一拍二(12 fps),hold 仍按秒数给足,切点取整到 2 帧,而不是把 hold 砍半。风格明确不用某种手法时(例如 `product-keynote` 不用 glitch),换一张配方,不要把这张做残。 -4. 有意偏离配方(降档、改结构、换顺序),在 `DECISIONS.md` 写一句为什么。 +4. 用了配方又有意偏离它(降档、改结构、换顺序),在 `DECISIONS.md` 写一句为什么。 改写外部配方时已经和本仓库的规则对齐过,下面几处和原文不同,每张配方的"来源"一节写了具体改了什么: @@ -36,6 +36,8 @@ ## 怎么挑:先定意图,再看能量 +配方是参照,不是每个镜头的必经一步:先按立意和 reads 自己想镜头怎么动,拿不准、或者想要现成的节奏和数时再来挑。配方和骨架都是默认口味,立意需要时可以反着来(`playbook/12-ideation.md` 第 6 节)。 + 1. **先写 reads**(`playbook/01-pipeline.md`),然后给每个镜头定三样:它在片中的位置(`role`),要观众明白什么(`intent`),手上有什么素材(`needs`)。 2. **套骨架定能量**:从 [`sequences/`](sequences/README.md) 选一条骨架,得到每个位置的目标能量(0–5,和 `playbook/09-narrative.md` 节拍表的能量是同一把尺子)和 hold 预算。叙事的形状(起承转合、好奇缺口、转在哪里)先按 playbook/09 定,骨架管的是能量和停顿。 3. **筛**:条件之间是"并且",同一个条件里用逗号写几个备选。 @@ -47,17 +49,17 @@ ``` 4. **排序,定首选和备选**:意图对得最准的排前面;能量离骨架在这个位置的目标值最近的排前面;一种手法全片只当一次主角,已经用过的往后放。 5. **查全片约束**:`max_per_film`、`conflicts`、整画面冲击不超过 3 处、呼吸位的数量(见骨架的"限额")。 -6. **写进分镜**:STORYBOARD 的"配方"列写 `id`(多式配方写 `id · 变体`),"验收帧"列把配方的 `qa` 换算成片内帧号,"转场出"写接缝配方的 id。没有合适的,写"自创:理由"。 +6. **写进分镜**:用了配方,STORYBOARD 的"配方"列写 `id`(多式配方写 `id · 变体`),"验收帧"列把配方的 `qa` 换算成片内帧号,"转场出"写接缝配方的 id。自己想的镜头空着就行,不用写理由。 7. **写代码前读全文**:读选中配方的全文,再读它"实现"一节指向的代码。只凭名字和印象去写,等于丢掉配方里的调校。 **按努力程度**: | | `quick` | `standard` | `studio` | |---|---|---|---| -| 配方 | 可选;只挑 `battle-tested` 和 `upstream-tested` 的,参数照抄 | 每个镜头写配方 id 或"自创:理由";选中的读全文和实现 | 同左;hook 和高潮两个位置各做两个配方的小样对比 | -| 骨架 | 可选 | 产品片和短视频先套骨架再排镜头 | 同左,按骨架做 animatic | -| 验收帧 | 每镜 1 帧(`peak`) | 每镜 2 帧(`peak`、`settle`) | 同左,外加每个接缝前后 0.5 s 的 strip | -| 回写 | 不回写 | 自创的手法记进 `LESSONS.md` | 值得复用的写成新配方,状态标 `draft` | +| 配方 | 可选;只挑 `battle-tested` 和 `upstream-tested` 的,参数照抄 | 可选:拿不准的镜头再查;用了的写 id,读全文和实现 | 同左;hook 和高潮两个位置各做两个方案的小样对比(配方或自创都行) | +| 骨架 | 可选 | 可选:全片节奏没把握时先套骨架 | 同左;用了骨架就按它做 animatic | +| 验收帧(用了配方的镜头) | 每镜 1 帧(`peak`) | 每镜 2 帧(`peak`、`settle`) | 同左,外加每个接缝前后 0.5 s 的 strip | +| 回写 | 不回写 | 值得复用的自创手法记进 `LESSONS.md` | 值得复用的写成新配方,状态标 `draft` | ## 索引 diff --git a/recipes/sequences/README.md b/recipes/sequences/README.md index 721e8eb..474a166 100644 --- a/recipes/sequences/README.md +++ b/recipes/sequences/README.md @@ -79,7 +79,7 @@ 2. **按段位分帧**:先扣掉开场、主角、收场和呼吸位的固定预算,剩下的给功能段均分。 3. **每一镜先划 hold**(规则 2),剩下的帧才给动作。放不下就加长镜头或删掉一条 read,不要硬挤(playbook/01)。 4. **排能量**:功能段高低交替;信息最密的一镜(文档、报告)放在收场前倒数第 2–3 位。 -5. **按位置挑配方**:`bin/vh recipes list --role feature --energy 4 --have ui-page,ui-element`,选中的读全文。 +5. **按位置挑配方**:`bin/vh recipes list --role feature --energy 4 --have ui-page,ui-element`,选中的读全文。没合适的就自己想;骨架表里写"自创"的位置本来就没有现成配方,分镜里那一格空着。 6. **逐个接缝选一式**(规则 3),写进 STORYBOARD 的"转场出"列。 7. **对一遍限额**(规则 4),再给关卡 ② 出分镜预览图;节奏要紧的片子做 animatic。 diff --git a/templates/NOTES.md b/templates/NOTES.md index 8e7ce91..c90b43c 100644 --- a/templates/NOTES.md +++ b/templates/NOTES.md @@ -9,6 +9,11 @@ |---|---|---|---|---| | 1 | {…} | {数字 / 原话 / 物件 / 矛盾 / 意外} | {…} | {文件、行号、链接、时间} | +## 点子 + +- 同题的视频都长什么样:{…} +- {一句话点子} · 约 {0.3} + ## 待核实的事实 - [ ] {claim} — 来源:{…} — 状态:{待查 / 已核实 / 已删} diff --git a/templates/STORYBOARD.md b/templates/STORYBOARD.md index e4f507f..72487ab 100644 --- a/templates/STORYBOARD.md +++ b/templates/STORYBOARD.md @@ -13,14 +13,14 @@ Animatic: {out/animatic.mp4 · draft 画质的灰盒 · 真实 / 占位音频; ## Shots - + 转场出 = 接缝配方的 id(flash-cut、whip-pan …),或 brush wipe / match cut 这类写法。全片节奏排不顺时,可以套 recipes/sequences/ 的骨架。 --> | # | 时间 | 旁白 / 歌词 | 画面:看到什么 · 发生的事件 · 反应 · 镜头运动 | 焦点 | 配方 | 验收帧 | 转场出 | |---|---|---|---|---|---|---|---| -| A | 0.0–3.6 | {…} | {…} | {…} | {spotlight-hero / 自创:理由} | {f… 峰值 · f… 落定} | {flash-cut / match cut / cut on action / camera carry / iris …} | +| A | 0.0–3.6 | {…} | {…} | {…} | {spotlight-hero,或空着} | {f… 峰值 · f… 落定} | {flash-cut / match cut / cut on action / camera carry / iris …} | ### A 的 reads | 时间 | read | 为什么这样定时 | diff --git a/templates/TASTE_CHECKLIST.md b/templates/TASTE_CHECKLIST.md index dee1ffe..5558653 100644 --- a/templates/TASTE_CHECKLIST.md +++ b/templates/TASTE_CHECKLIST.md @@ -58,29 +58,32 @@ - others PASS ``` -## 打分层:严苛的动效导演 +## 打分层:严苛的导演 -20 条全 PASS 只说明片子没犯错,不说明它好看。本仓库的介绍片 v2 逐条过了清单,用户看完仍然说"不够炫酷"。打分层专门抓这种"正确但不带劲"的片子,在整片 draft 上做,PASS/FAIL 仍是硬门槛。 +20 条全 PASS 只说明片子没犯错,不说明它好看。本仓库的介绍片 v2 逐条过了清单,用户看完仍然说"不够炫酷"。打分层专门抓这种"正确但不带劲"的片子,在整片 draft 上做,PASS/FAIL 仍是硬门槛。它打的是这支片子有没有做成它自己要做的样子(BRIEF 的立意和 `Pace`、STYLE.md 的语法),不是有没有做成某一种风格。 -- **谁来打**:不是作者。开一个全新上下文的 reviewer,扮演严苛的动效导演:它只看帧,不看作者的自评和解释;另外只给它 BRIEF 的立意一行,和 `DECISIONS.md` 里口味覆盖的那几行,让它判断立意落没落到画面上、覆盖站不站得住。人设和输入见 `playbook/02-verification.md` 第 5 层。 +- **谁来打**:不是作者。开一个全新上下文的 reviewer,扮演严苛的导演:它只看帧,不看作者的自评和解释;另外只给它 BRIEF 的立意、`Pace`、`Watch on` 和 `Platform / audience` 几行,STYLE.md 的 Motion tokens 一节,和 `DECISIONS.md` 里口味覆盖的那几行,让它判断立意落没落到画面上、运动有没有做到声明的语法、开头合不合在哪播、覆盖站不站得住。人设和输入见 `playbook/02-verification.md` 第 5 层。 - 为什么不能自评:v0.2.0 时风格库的 26 个样片里,制作方给自己打的分普遍比独立 reviewer 高 1–2 分。例如某个样片自评 7 项全 8,独立评审只给 6。 - **打什么**:八个维度,各 1–10 分。 | 维度 | 问的是 | 主要证据 | |---|---|---| | 立意 | 选定的立意落到画面上没有:一句话说得出吗?换个题材还成立吗(还成立就只是风格)?形式在讲内容吗?看完会转述哪一个画面?`playbook/12-ideation.md` 第 5 节 | 1 fps 联系表 + BRIEF 的立意一行 | - | hook | 前 2 s 有没有让人停下来的东西(运动、反差、问题)? | 0–2 s 的逐帧 strip | + | hook | 开头有没有让人想看下去的东西?要进信息流的片子(BRIEF 的 Platform 是抖音、小红书、视频号、Shorts 这类),看前 2 s 有没有让人停下来的运动、反差或问题;有人主动点开的讲解、书信体、MV,看开头几秒有没有立起一个问题或一个让人想看下去的画面 | 0–2 s 的逐帧 strip;慢开场的片子再加开头 10 s 的联系表 | | 目标屏可读 | 按 BRIEF 的 `Watch on` 缩到那块屏幕的大小,必读字还读得出、主体还认得出吗? | 目标屏联系表:phone、feed 每格 360 px 宽,desktop 每格 640 px 宽 | - | 运动质量 | 缓动、重量、跟随、切点衔接像不像专业动效? | 关键动作和转场的 strip | - | 变化 | 每 2–4 s 有没有新东西:新构图、新运动或新信息?立意本身要慢的片子(书信体、沉思、单镜头),问的是每一次停留有没有新的含义,不按秒数 | 1 fps 联系表 | + | 运动质量 | 运动有没有做到 STYLE.md 的 Motion tokens 声明的语法(平滑的长尾、机械的台阶、卡通的过冲、手持的抖动……;没写的,按 `playbook/03-motion-design.md` §1–2 的默认值判),而且做得干净:重量、跟随、切点衔接对不对?按声明的语法打,不按"像不像专业动效"打 | 关键动作和转场的 strip,STYLE.md 的 Motion tokens | + | 变化 | 每一段有没有新东西:新构图、新运动或新信息?多久算太久,按 #18(短视频 3 s、讲解 8 s);立意本身要慢的片子(书信体、沉思、单镜头),问的是每一次停留有没有新的含义,不按秒数 | 1 fps 联系表 | | 构图与完成度 | 焦点、留白、对齐、细节有没有打磨到位? | 联系表 + crop | | 内容 / 品牌准确 | 事实、数字、产品界面、品牌色和字体是否照实? | crop + NOTES.md 里的出处 | | 声画同步 | 重音、切点、事件是否落拍?停拍时声画是否一起屏息而不是一起停死? | cue check 结果 + 带时间码的 strip | -- **过线**(`studio`):每个维度都 ≥ 8 才算过,不看平均分。`standard` 只做 1 轮,修最差的 3 处,不设分数线。 -- **立意一项分低时**:它打的是"人选定的立意有没有落到画面上",修法是让画面更贴着立意(主体、首尾、那个装置),不是换立意。reviewer 觉得立意本身就弱,写进关卡 ③ 的"最不满意",由人决定;agent 不自己换立意。 +- **过线按档位**: + - `standard`:做 1 轮,不设分数线。reviewer 列出最差的 3 处,作者修掉;分数记进 NOTES,连同还没修好的几处带进关卡 ③(授权无人值守时没有关卡 ③,写进交付说明)。 + - `studio`:做工五项(目标屏可读、运动质量、构图与完成度、内容 / 品牌准确、声画同步)都 ≥ 7 才算过。立意、hook、变化三项按这支片子自己的立意判,不设门槛;三项里最低的一项,连同 reviewer 给的改法,写进关卡 ③ 的"最不满意"(授权无人值守时写进交付说明),由人决定。无声片的声画同步记 N/A,不算进五项;改满 5 次、转进"已知局限"的问题,它压低的那一项不再拿来开新一轮。 + - 不看平均分;任何档位,底线条目 FAIL 都要修。 +- **立意一项分低时**:它打的是"人选定的立意有没有落到画面上",修法是让画面更贴着立意(主体、首尾、那个装置),不是换立意。reviewer 觉得立意本身就弱,写进关卡 ③ 的"最不满意"(授权无人值守时写进交付说明),由人决定;agent 不自己换立意。 - **轮数按努力程度(CLAUDE.md"努力程度")**:`quick` 不做打分层;`standard` 做 1 轮,修最差的 3 处;`studio` 按下面的规则至少 3 轮,最多 10 轮。 -- **至少 3 轮(`studio`)**:每轮 reviewer 只列最差的 3 个问题,每个都写时间点和一条可以直接执行的改法;作者只重渲受影响的时间段,改完开下一轮(换一个全新上下文)。第一轮就全部过线也要跑满,分数在不同 reviewer 手里稳住才算数。跑满 3 轮仍有维度低于 8,可以接着修、接着评,但守下面的上限;到了上限还没过线,就把分数和剩下的问题带进关卡 ③,让人决定。 +- **至少 3 轮(`studio`)**:每轮 reviewer 只列最差的 3 个问题,每个都写时间点和一条可以直接执行的改法;作者只重渲受影响的时间段,改完开下一轮(换一个全新上下文)。第一轮就全部过线也要跑满,分数在不同 reviewer 手里稳住才算数。跑满 3 轮仍有做工项低于 7,可以接着修、接着评,但守下面的上限;到了上限还没过线,就把分数和剩下的问题带进关卡 ③,让人决定。 - **整片评审最多 10 轮**:整片评审指一个全新上下文的 reviewer 看完整片、打满 8 项分;下面说的局部复查不算。到 10 轮就停,不开第 11 轮:过线就交付,没过线就带着最后一轮的分数和剩下的问题进关卡 ③(授权无人值守时,随成片一起交给人)。人在关卡 ③ 退回、提了新的修改意见,轮数和问题计数都从头算;agent 自己决定的重做不从头算。 - **同一类问题最多改 5 次**:同一类问题指同一条清单条目落在同一个镜头或段落上,例如"卫星那段的 #5 读时""结尾的构图"。改一次、查一次算一次,不论是局部复查还是整片评审查出来的。第 5 次还没解决,就不再来回改:写进 `NOTES.md` 的"已知局限",附最后一次的证据(帧、strip 或检查输出),交给人定。底线条目到了上限也交给人,人决定删字、换做法还是接受;人拍板之前不出 final。 - **小修不开整片评审**:局部改动只做局部复查,改了哪段就查哪段。局部改动比如一条标签的时间或字号、在安全框里挪一挪、一个音效的音量、一个镜头的排版。局部复查是三样: @@ -90,14 +93,14 @@ 新开一轮整片评审只为两种情况:结构性的改动(几个小节一起重排时间、重写一个场景、换一个结尾),或者最后一遍。`studio` 的前 3 轮不受这条限制。 - **后一轮推翻前一轮**:不同的 reviewer 会互相打架,这一轮嫌停留太长,下一轮嫌太短;这一轮要更亮,下一轮嫌刺眼。口味条目(没标【底线】的)上后一轮和前一轮说法相反时,作者可以保留前一轮的决定,在 `DECISIONS.md` 记一行为什么,不算没修;这一行和口味覆盖一起给下一轮 reviewer 看。底线条目照常要 PASS。 -- **两层的关系**:任何一条 FAIL 没修,分数再高也不能交付;`studio` 20 条全 PASS 但有维度低于 8,同样要返工。返工都在上面的上限之内。 -- **来源**:社区做法,主要是 Movez 在 X 上的课程 *How to build motion design studio with Opus 5.5* 和 Eian 的中文指南(经社区调研转述):让 agent 扮演严苛的导演而不是作者,按维度打分,多轮返工。原来的七个维度、≥ 8 分和 3 轮都是那边的经验值,原文没能逐条核实。"立意"一项是本仓库 2026-10-02 加的:`cases/oneshot-five.md` 拆的五支片子赢在点子,不在打磨,而原来的七项里没有一项问点子。10 轮和 5 次的上限是 2026-10-04 加的:一支 `studio` 片子跑了 11 轮整片评审,每个新 reviewer 都挑出新的口味小毛病,分数在 7–9 之间来回,小修有时还把别处改坏了。维护者的原话:"每一种问题不超过5次,总共不超过10次,不要为了一个小问题就全部来一遍Review。" +- **两层的关系**:任何一条 FAIL 没修(口味条目可以按 `playbook/12-ideation.md` 第 6 节覆盖),分数再高也不能交付;`studio` 有做工项低于 7,同样要返工。返工都在上面的上限之内。 +- **来源**:社区做法,主要是 Movez 在 X 上的课程 *How to build motion design studio with Opus 5.5* 和 Eian 的中文指南(经社区调研转述):让 agent 扮演严苛的导演而不是作者,按维度打分,多轮返工。原来的七个维度、≥ 8 分和 3 轮都是那边的经验值,原文没能逐条核实。"立意"一项是本仓库 2026-10-02 加的:`cases/oneshot-five.md` 拆的五支片子赢在点子,不在打磨,而原来的七项里没有一项问点子。10 轮和 5 次的上限是 2026-10-04 加的:一支 `studio` 片子跑了 11 轮整片评审,每个新 reviewer 都挑出新的口味小毛病,分数在 7–9 之间来回,小修有时还把别处改坏了。维护者的原话:"每一种问题不超过5次,总共不超过10次,不要为了一个小问题就全部来一遍Review。" 过线按档位是 2026-10-05 改的,维护者同意了这个方案("可以,按这个你来好好改"):`studio` 原来要"8 项都 ≥ 8",本仓库的介绍片 v5 五轮都没达到过(最好的第 4 轮是 8 7 8 7 7 7 9 8),第 5 轮之后由用户叫停、整体提交,这条线一直没守住;hook、变化、运动三项原来按短视频动效的口味问,慢的、手绘的、书信体的片子一律吃亏。现在做工设下限,口味按片子自己的立意和 STYLE.md 判,最低的一项交给人。 每轮整片评审在 `NOTES.md` 的"评审记录"记一行:第几轮、八项分数、改了什么;同一类问题在"问题计数"表里加一次(格式写在 NOTES.md 那一节的注释里)。reviewer 的报告可以附在那一行下面,长这样: ```text -[score round 2 · draft5] fresh-context reviewer, harsh motion director · sheets: out/check/phone_*.png, out/check/sheet.png -concept 8 · hook 7 · phone 8 · motion 8 · variety 6 · polish 8 · accuracy 9 · sync 8 → below 8: hook, variety +[score round 2 · draft5] fresh-context reviewer, harsh director · sheets: out/check/phone_*.png, out/check/sheet.png +concept 8 · hook 7 · phone 8 · motion 8 · variety 6 · polish 8 · accuracy 9 · sync 8 → studio: craft all ≥ 7 · lowest of concept / hook / variety: variety 6 - 0.0–2.0s logo fades in over a static gradient, nothing stops the thumb → open with the t-axis light already moving, first read at 0.3s - 18–26s one slow push-in for 8s → whip at 21.3s on the downbeat, macro crop at 24s - 41.5s CTA under the bloom halo, burnt white at 360 px → move it below the halo, cap bloom under text diff --git a/video-types/02-knowledge-short.md b/video-types/02-knowledge-short.md index f33caf7..c241158 100644 --- a/video-types/02-knowledge-short.md +++ b/video-types/02-knowledge-short.md @@ -119,7 +119,7 @@ ## 审美要点 -- **"Kurzgesagt meets Fireship"** 是现成可用的一句风格描述:扁平矢量图形、一个强调色、冷幽默、100 秒讲清一件事(按 what / why / how / when 组织)。 +- **"Kurzgesagt meets Fireship"**(扁平矢量图形、一个强调色、冷幽默、100 秒讲清一件事,按 what / why / how / when 组织)是这一类常见的做法之一【综合】。没有立意时可以从它起步;想立意时,它就是"同题的视频都长什么样"的答案之一(`playbook/12-ideation.md` 第 3 节)。 - **中文圈可点名的参考**: - 回形针 PaperClip:高信息密度的可视化; - 小 Lin 说:口播加图解; diff --git a/video-types/03-product-promo.md b/video-types/03-product-promo.md index 31c846a..27a68af 100644 --- a/video-types/03-product-promo.md +++ b/video-types/03-product-promo.md @@ -17,9 +17,11 @@ 1. **先有素材清单,再做动画**:产品截图或录屏、logo、真实文案、品牌色和字体、网址、架构图和流程图。**不要用占位 UI,也不要凭印象重画界面。** viggo 的 Applore 宣传片之所以可信,就是因为用了自家库里 17,550 个真实 app 图标。 - 网页和 Web App 用 Playwright(或浏览器工具)按成片分辨率截图,例如 `npx playwright screenshot --viewport-size=1920,1080 assets/ui/home.png`;终端、编辑器等本地界面用录屏或系统截图。 - 全部存进项目的 `assets/`,逐条记进 NOTES.md 的素材台账(文件、来源、许可)。开始写场景代码前,把清单过一遍:片子里要出现的每块界面都要在清单里有对应的文件,清单里没有的就先去截,而不是自己造。 -2. **选语域**:先从立意推(`playbook/12-ideation.md`)。立意没给出更好的答案时,从下面两种里选一种,写进 STYLE.md: +2. **选语域**:先从立意推(`playbook/12-ideation.md`)。立意没给出更好的答案时,可以从下面两种常见做法起步,写进 STYLE.md;立意推出别的语域,就用别的。 - **Apple 系**:黑底或白底,单镜只说一句主张,大面积留白,对真实 UI 做微距裁切,每次揭示 1–2 秒,慢。 - **Linear / Vercel / Stripe 系**:近黑底 `#0A0A0B`,1px 细线,低透明度的蓝图网格,Geist 或 Geist Mono 字体,用真实 UI。 + + 这两种也是发布片最常见的长相,Linear 系尤其是社区里最常见的外观【综合】,和"AI 味"只差在克制和真实 UI(见下文"警惕"一条)。 **同一个产品的每支片子共用一条品牌管线**:第二支片子从上一支的 STYLE.md 起步,沿用色板、字体、强调色、转场和音色,审阅意见也回写进去。本仓库的介绍片就沿用了 showcase 00 的近黑底、发丝线和唯一的琥珀强调色。product-film-skill 用 `videos/BRAND.md` 做同一件事(见文末)。 3. **look-dev**:brief 里只说"炫酷""高级""大片感",却没有说具体是什么样时,先做一轮 look-dev 再定:出 3 张 style frame,或者 2–3 段 10–20 s 的短变体,放在关卡 ② 之前或并进关卡 ②,让人挑。 @@ -104,7 +106,7 @@ Show the product itself: {architecture | workflow | features | case studies} as - `showcase/04-intro-film/`:本仓库的介绍片(Blender 星河开场 + 一镜到底 3D + 代码作曲),每轮评审的分数和改法记在 NOTES。 - `cases/promo-applore.md`:一句话 prompt 做出的 15 秒宣传片拆解。 - `cases/promo-hyperframes-launches.md`:HeyGen 20 支发布片的源码,以及其中值得看的几支。 -- `recipes/sequences/product-film-60s.md`、`launch-15s.md`:发布片的全片骨架(能量弧、先划 hold、按能量落差选接缝、限额);镜头配方在 `recipes/`,分镜时按意图和能量挑(`bin/vh recipes list --type promo …`)。它们改写自 video-shotcraft,拆解见 `cases/promo-video-shotcraft.md`。 +- `recipes/sequences/product-film-60s.md`、`launch-15s.md`:发布片的全片骨架(能量弧、先划 hold、按能量落差选接缝、限额);镜头配方在 `recipes/`,拿不准怎么动时按意图和能量挑(`bin/vh recipes list --type promo …`)。它们改写自 video-shotcraft,拆解见 `cases/promo-video-shotcraft.md`。 - `references/repos/hyperframes/skills/product-launch-video/`:`SKILL.md`,以及 `references/` 下的 `story-design.md`、`visual-design.md`、`motion-language.md`、`cut-catalog.md`。 - `references/repos/hyperframes/_upstream_claude/skills/`: - `motion-doctrine/`:运动总纲,涉及动画时先读; diff --git a/video-types/09-editing-talking-head.md b/video-types/09-editing-talking-head.md index a114ba9..bbb068a 100644 --- a/video-types/09-editing-talking-head.md +++ b/video-types/09-editing-talking-head.md @@ -37,7 +37,7 @@ 6. **吸附与渲染**:每个区间吸附到缺口里的能量谷,再落到帧格和过零点;留 handle;音频接缝交叉淡化 40 ms、画面硬切;一次编码。 7. **验证**:逐接缝指标、重转写对账、按播放顺序连读一遍、接缝 strip。有问题只改受影响的区间重渲。 8. **包装**:避脸字幕、必要的重构图、图解叠层(只用真实截图或录屏)、配乐和声音。 -9. **评审**:**打分层照旧:`TASTE_CHECKLIST` 的 8 项打分(硬规则 4;立意一项问的是这一版的剪辑思路:结构和取舍是不是在讲这段内容)**;再加两两对比,决定新版能不能取代当前版(`engines/editing.md`)。`standard` 做 1 轮、修最差的 3 处,`studio` 至少 3 轮、最多 10 轮、8 项都 ≥ 8 才出片(同一类问题最多改 5 次,小修只做局部复查,见 `TASTE_CHECKLIST` 打分层);再交人,关卡 ③。 +9. **评审**:**打分层照旧(`TASTE_CHECKLIST` 的 8 项,过线按档位,见那里的打分层;立意一项问的是这一版的剪辑思路:结构和取舍是不是在讲这段内容)**;再加两两对比,决定新版能不能取代当前版(`engines/editing.md`)。`standard` 做 1 轮,`studio` 至少 3 轮、最多 10 轮(同一类问题最多改 5 次,小修只做局部复查,见 `TASTE_CHECKLIST` 打分层);再交人,关卡 ③。 10. **导出与交付**:`final.mp4`、`captions.srt`、`edl.json`;按需 FCPXML、OTIO、CapCut 或剪映包;素材台账和授权记录。 **档位**: