竖版短视频工作室(基础版)
一个简单、逐步的流程,用于制作 30–90 秒的竖版视频。
0. 首次运行:向用户询问他们的设置(切勿使用默认值)
在制作第一个视频之前,如果 brand.config.json 缺失、包含 "configured": false 或仍然包含 @yourhandle,
请询问用户(一次一个问题)并将答案保存到 brand.config.json:
- 社交账号:他们使用的 Instagram、Threads、TikTok、X。
- 水印文字(按需显示,例如
@yourhandle或@ig / @x)和位置(bottom-center、bottom-left、top-left、top-right)。 - 行动号召 文本及其提及的账号。
- 语音:他们的 ElevenLabs 语音 ID + 模型 + 语言,或“我将录制自己的语音”。API 密钥仅作为
ELEVENLABS_API_KEY密钥请求。 - 语言和语气;语音应如何说出他们的名字/账号。
然后设置 "configured": true。切勿编造账号,切勿重复使用他人的账号(包括此工具包的作者),也切勿渲染仍然显示 @yourhandle 的水印。
以下占位符映射到 brand.config.json:
| 占位符 | 配置键 | 含义 |
|---|---|---|
{{HANDLE}} | handles.* | 用户自己的账号 |
{{WATERMARK}} | watermark.text、watermark.position | 水印文本和位置,按用户提供的方式 |
{{LANGUAGE}} | language、tone | 语音旁白和字幕的语言和语气 |
{{VOICE_ID}} | voice.voiceId | 用户选择的语音 |
{{TTS_MODEL}} | voice.model | ElevenLabs 模型,例如 eleven_multilingual_v2 |
{{CTA}} | cta.text、cta.handle | 用户的行动号召 |
API 密钥始终来自环境变量 ELEVENLABS_API_KEY。切勿打印它,切勿将其写入提交的文件中。
流程
- 询问用户的设置(首次运行) → 1. 主题 → 2. 调研和事实核查 → 3. 脚本草稿 → 4. 用户批准 →
- 语音旁白 → 6. 时间轴 → 7. 构建场景 → 8. 渲染 → 9. Reels 安全导出 →
- 质量检查 → 11. 封面和字幕 → 12. 交付。 如果用户要求更改,请返回到更改所触及的最早步骤(一行新文本意味着仅对那一行重新生成语音旁白)。
1–2. 主题和调研
- 每个视频只讲一个故事。为初学者撰写。
- 对照主要来源(官方页面、作者自己的帖子、带有日期的截图)检查每个数字、日期、名称和引用。删除任何无法验证的内容。切勿编造事实。
- 保留一个简短的
sources.md文件,包含你使用的链接。
3–4. 草稿,然后等待
- 为前 2 秒提供 2–4 个钩子选项(一个疑问或一个令人惊讶的对比)。
- 编写一个计时表格:
时间 | 屏幕文本 | 语音旁白。目标时长为 45–65 秒,切勿超过 90 秒。 - 暂停并将草稿发送给用户。在获得用户批准之前,不要生成音频或渲染。
5. 语音旁白
- 使用
{{VOICE_ID}}生成已批准的脚本(参见scripts/tts.py)。保留两个文本:显示文本(字幕显示的内容)和 TTS 文本(为语音拼写,例如将“AI”拼写为A.I.,数字写成单词)。 - 听一遍。仅重新生成有错误的行。切勿在音频中留下同一行的两个副本。
- 如果你没有 ElevenLabs 帐户,请录制自己的语音。效果同样好。
6. 时间轴
- 获取单词时间戳(ElevenLabs 对齐,或对音频使用 Whisper)并保存
timing.json:{duration, words:[{w,s,e}], scenes:[{id,start}]}。 - 动画在其单词被说出的帧上开始:
frame = Math.round(seconds * 30)。
7. 构建场景 (Remotion, 1080 × 1920, 30 fps)
- 深色背景,一种浅色文本颜色,一种强调色。每个节拍一个大标题。
- 动态文字: 每个标题单词在其被说出的单词上弹出(缩放 0.6 → 1,带轻微过冲)。
- 每 1.5–3 秒在屏幕上显示一个新内容。数字至少保持 1.5 秒,以便人们可以阅读。
- 钩子文本从第 0 帧开始可见,因此第一帧可以用作静态帧。
- 安全区:将文本保持在 y = 200 和 y = 1500 之间。将
{{WATERMARK}}文本以较小的字号放置在用户选择的位置(底部默认:y ≈ 1430)。 - 使用真实的截图和徽标并注明来源。将模拟图标记为“插图”。
8–9. 渲染和导出
npx remotion render src/index.ts <CompositionId> out/raw.mp4
bash scripts/reels-export.sh out/raw.mp4 out/final-reels.mp4
导出会生成:1080 × 1920,H.264 High ≤ 4.1,yuv420p (TV range),BT.709,恒定 30 fps,8–12 Mbps,AAC 48 kHz,+faststart,-14 LUFS / ≤ -1 dBTP。将视频保持在 90 秒以内。
10. 质量检查(始终执行,在交付之前)
运行 bash scripts/qa-check.sh out/final-reels.mp4 并查看 scripts/contact-sheet.sh 的输出。检查:
- 音频:词语清晰,无剪切,无重复行,响度 ≈ -14 LUFS。
- 视频:无截断文本,无超出安全区的内容,无冻结片段,开头或结尾无空白秒。 在发送任何内容之前修复并重新渲染。
11–12. 封面、字幕、交付
- 2–4 个封面选项,1080 × 1920 以及一个 1080 × 1350 网格版本。一个大钩子,一个主要图像,最多 2–3 个小数字卡片。将关键文本保持在中心 1080 × 1080 区域内。
- 字幕:Instagram(钩子、正文、
{{CTA}}、一些主题标签),Threads(更短,无主题标签),TikTok。 - 交付最终的 MP4 文件、一个小预览文件(< 40 MB)、封面、字幕、
.srt文件和来源列表。
规则
- 切勿发布、上传或购买任何内容。将文件交给用户。
- 无编造事实。注明你展示的每个来源和每个开源作者。
- 仅使用你拥有使用权的音乐、片段和语音。