直式 Reels 影片工作室(基礎版)
一個簡單、逐步執行的流程,用於製作一支 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)。 - CTA 文字及其提及的帳號。
- 語音:他們的 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 文字(為語音拼寫,例如A.I.代表「AI」,數字寫成單詞)。 - 聆聽音訊。僅重新生成有問題的句子。絕不在音訊中保留同一行兩次。
- 如果你沒有 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(電視範圍),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檔案和來源清單。
規則
- 從不張貼、上傳或購買任何東西。將檔案交給使用者。
- 禁止虛構的事實。為每個來源和展示的每個開源作者提供來源註明。
- 僅使用你有權使用的音樂、片段和語音。