片段选择
1. 读取材料
- 视频时长不超过20分钟:直接阅读
~/.lumiere/projects/<slug>/source/transcript.txt文件。 - 视频更长:运行
lumiere chunks <slug>(每15分钟为一个窗口,重叠1.5分钟),然后对每个chunk在同一条消息中触发一个clip-scout代理,传入chunk路径、slug以及所需候选数(每个chunk 3-5个)。每个代理返回JSON格式的候选片段。
2. 什么是一个好的片段(你和scout的判断标准)
- 一个完整的想法:以一个能独立成句的开头开始(避免“然后”、“就像我说的”这类衔接词),以一个明确的结尾(结论、笑点、转折)结束。即使从没看过该集的听众也能理解。
- 前3秒内有钩子:争议性陈述、数字、问题、承诺、冲突。如果最佳钩子出现在片段中间,则将其标记为
hook(时长2-6秒)——后期剪辑会用它制作冷开场(cold open)。 - 结果兑现:片段必须兑现钩子所承诺的内容。
- 情感/能量:笑声、说话者之间的分歧、个人经历、令人惊讶的数据。
- 目标时长:约90秒原始素材(剪辑后会缩短10-20%)。最低60秒,最高110秒。
- 避免:依赖于未出现画面的片段、内部笑话、过时信息。
3. 生成clips.json
写入 ~/.lumiere/projects/<slug>/clips.json 文件:
{"clips": [{"id": "c01", "start": "12:31.5", "end": "14:02.0", "title": "简短吸引人的标题(不超过60字符)",
"hook": {"start": "13:10.2", "end": "13:14.8", "text": "钩子句子"},
"reason": "为什么生效(1-2句话)", "score": 8.5, "topic": "主题"}]}
对重叠超过50%的候选片段进行去重——保留评分更高的那个。按评分降序排列。
4. 校验
运行 lumiere clips validate <slug> — 它会把开始/结束时间对齐到句子边界,并列出警告 ⚠(句子被截断、过长/过短、钩子不在范围内)。通过调整时间来修正警告,然后再次校验。
5. 与用户确认
展示表格(id、开始时间、时长、评分、标题、钩子(一行内)),并询问用户批准哪些片段(当候选片段≤4个时,使用AskUserQuestion搭配multiSelect;否则要求用户输入id)。之后执行:
lumiere clips approve <slug> c01 c03 ...(并 reject 其余片段)。