Reel Studio — 影片製作流程
每個風格的製作流程都相同。影片的視覺與聽覺效果由其風格決定;觀看對象、格式、語音以及圖片來源則由工作室的設定決定。通用的 animated-video 技能涵蓋更廣泛的方法(腦力激盪、分鏡板、靜音測試、審閱);如有不同之處,則以此技能和風格的規則為準。提出建議時應附上推薦,以便對方只需回答「是」即可獲得完整答案。構思點子並將其儲存在專案的分鏡板上,則是 content-ideas 技能的工作,應在整個流程開始前完成。
工作區結構
projects/<id>/— 一個專案:創作者為其製作影片的一個頻道(工作室的專案選擇器;提示中會說明目前開啟的是哪一個)。其config/資料夾存放設定(Ajustes):profile.json、voice.json和account.json(其 Instagram 帳號,Mi cuenta);account/則存放從該帳號下載的內容。除非被要求,否則不要碰觸其他專案的資料夾。projects/<id>/videos/<slug>/— 一部影片:從其風格的範本複製而來的 Remotion 專案。包含title.txt(在工作室中的名稱)、style.txt(風格 ID)、audio/vo.txt(旁白,完全按照最終語音輸出的內容)、audio/beats.json(腳本的結構)、src/format.json(尺寸、幀率、音量)、CREDITS.md、caption.md、out/(渲染成品、分鏡板;不進行版本控制)。formats/<id>/format.json— 一種格式:影片的類型(全部由生成的語音或創作者錄製的語音進行動畫;創作者對著鏡頭說話加上動畫……)、螢幕上顯示的內容以及剪輯方式。影片在format.txt中指定其格式(無指定則預設為動畫格式)。skill指向其自身的說明,overlay指向要添加到風格範本之上的檔案;"footage": true表示影片從其在footage/中的錄製內容開始("voiceOnly": true:僅使用其聲音——音訊)。styles/<id>/style.json— 一種風格:調色盤及各顏色代表的含義、字型、外觀、動畫、圖片、應避免的事項。skill指向其自身的說明,template指向新影片要複製的 Remotion 專案。config/(在根目錄下)— 所有專案共享的設定:images.json(圖片來源)、social.json(爬蟲工具)。tools/— 共享腳本。LESSONS.md— 從過去影片中學到的經驗教訓。projects/<id>/inspiration/<account>/— 在專案的 Inspiración 頁面中研究的其他帳號的 Reels:account.json(analysis.text:對該帳號有效的方法)以及每個 Reel 的reel.json(指標、標題)、transcript.json、analysis.json(鉤子、結構、視覺、CTA、可學習之處)、hook.jpg(前 3 秒)和sheet_NN.jpg(1 幀/秒)。在被要求時可使用它們來尋找切入點和鉤子;要根據創作者的個人檔案進行調整,切勿抄襲腳本。
設定來自工作室
Reel Studio 會在每次互動時將個人檔案(語言、平台、觀眾、長度、字幕規則)、影片格式、語音和圖片來源放入提示中。它們的優先級高於此技能和風格的設定。切勿硬編碼語音 ID、設定、尺寸、幀率或音量目標。
API 金鑰存放在工作區的 .env 檔案中(在 Ajustes 中設定,並附有各金鑰的用途說明:Voz, Extracción de datos)。工具會讀取這些金鑰;切勿在聊天中打印金鑰或要求提供金鑰——如果缺少某個金鑰,請要求創作者在 Ajustes 中添加。
Python:僅使用標準庫的工具使用 python3 運行(Windows 上為 python):tts.py、el_words.py、standin_words.py、commons.py、openverse.py、pexels.py、pixabay.py、unsplash.py、generate_image.py。需要使用套件的工具則使用工作區的虛擬環境運行,即 ../../../../.venv/bin/python(Windows 上為 ../../../../.venv/Scripts/python.exe):cutout.py、audio/mix.py 和 sheet.py(snap.sh 使用它,或當沒有虛擬環境時使用 ffmpeg)。需要進行去背的風格需要使用虛擬環境(Ajustes → Requisitos 會安裝它)。以下的路徑都是相對於影片資料夾而言。
開始之前
請閱讀影片的格式:formats/<id from format.txt>/format.json,以及如果有的話,其對應的技能——它會說明此類影片的製作方式,並在與以下步驟衝突時以它為準(例如,使用創作者自己的錄製內容時,就無需編寫腳本或生成語音:剪輯內容會同時提供兩者)。請閱讀影片的風格:styles/<id from style.txt>/style.json,以及如果有的話,其對應的技能。格式永遠不會決定顏色、字型或邊框:那是風格的職責。請閱讀 LESSONS.md(通用部分和該風格的專屬部分)。如果一個風格沒有技能或範本,則會基於預設風格的範本(template/)建構,並根據其 style.json 更改外觀;在開始時請先說明此情況。
步驟
- 新影片 — 工作室會根據第一條訊息建立它(資料夾、標題、風格、格式、尺寸)。從終端機或一般對話中執行:
scripts/new-video.sh <slug> [style] [format]。 - 腳本 — 使用
video-script技能(鉤子、懸念、時機、檢查清單),如果點子來自分鏡板,則從其筆記開始。平台、語言、觀眾和長度來自個人檔案;單詞數 ≈ 語音的測量速度 × 目標秒數。目標:觸及率,除非另有說明。在audio/vo.txt中拼寫出數字(例如「一千零四十二」),並在src/captions.ts的DISPLAY中將其映射回數字。取得批准。撰寫audio/vo.txt和audio/beats.json。 - 圖片 — 使用一個全新的代理為每個拍子腦力激盪一張圖片(animated-video → 尋找圖片)。偏好使用一個貫穿整個影片的、扮演系統角色的實體主題(例如,一個卡片目錄櫃 = 伺服器,抽屜 = 記錄)。這些圖片要保持腳本問題的開放性:第一個畫面提出問題,在旁白講述答案之前,沒有任何圖片或畫面上的標題顯示答案。取得概念批准。
- 語音 — 執行
python3 ../../../../tools/tts.py audio/vo.txt audio/vo.mp3,然後執行ffmpeg -y -i audio/vo.mp3 -ar 48000 public/vo.wav以及python3 ../../../../tools/el_words.py audio/vo.alignment.json public/vo.wav(產生src/words.json、src/vo_env.json)。在語音存在之前:執行python3 ../../../../tools/standin_words.py audio/vo.txt src/words.json(按照語音的速度計時;稱之為臨時替代)。當語音有任何變更時,先製作一個簡短樣本。按原樣使用音訊(除非被要求,否則不要修剪暫停)。每次生成都會消耗字元數:不要無故重新生成。 - 圖像 — 使用可用的搜尋和瀏覽工具在網路上自由搜尋;任何網站都可以是來源。提示會列出可選的 API 整合,但這不是允許清單或強制順序。僅在啟用和設定後才使用這些 API;免費的網路搜尋不需要來源設定。下載的檔案存放在
assets/src/(不進行版本控制);在CREDITS.md中記錄每一張圖片(標題、作者、已知的許可證、原始連結;切勿編造許可證)。當圖庫圖片不適用時,請要求用手機拍攝準確手勢的照片(純色背景、光線良好)。圖片的處理方式由風格決定。 - 建構 — 在
src/lib.ts的ACTS中進行操作(在每個 act 的第一個單詞前約 0.08 秒處剪輯),在src/captions.ts中按語義單位製作字幕(逐詞與轉錄稿比對),在src/film/scenes.tsx中每個 act 一個場景。每個時間點都來自提示(cue('phrase')、at('phrase')),因此更換語音會重新計時整個影片。尺寸和幀數來自src/lib.ts(W、H、FPS、f()),切勿使用字面數字。組件是風格定義的。 - 分鏡板 — 執行
./snap.sh out/board <sec> …渲染靜止畫面及sheet.png。每個拍子顯示一個關鍵幀;取得批准。時間點請直接傳遞(在 zsh 中,一個變數內的空白分隔列表不會自動分割)。 - 音效 — 在
audio/mix.py中的提示表,時間點與場景使用的提示相同;執行../../../../.venv/bin/python audio/mix.py產生public/mix.wav;在src/Root.tsx中設定audio: true。使用哪些音效:由風格決定。在交付時說明哪些音效是合成的。 - 靜音測試 — 在第一個完整剪輯版本之前:執行
ffmpeg -i out/<name>.mp4 -vf "fps=2,scale=270:-1,tile=8x5" out/mute/sheet_%02d.png,並僅將這些表格提供給一個全新的代理(忽略字幕;重新講述;列出困惑點和中斷處)。修正問題,重新檢查靜止畫面。 - 渲染 — 在 macOS 和 Linux 上,先清除孤立的渲染程序:執行
ps -A -o pid=,ppid=,command= | awk '$2==1 && /chrome-headless-shell/ {print $1}' | xargs kill。然後執行CONCURRENCY=3 ./render.sh <name>產生out/<name>.mp4,並歸一化到格式的音量。檢查時長、音量、第一幀和最後一幀。撰寫caption.md,包含個人檔案中的字幕規則和致謝;其開頭應提出鉤子的問題,而不是回答它。如果影片或字幕要求人們留言特定詞彙以獲得某些內容,請撰寫automatizacion.json(Reel Studio → Instrucciones automatización),其中包含要貼到 ManyChat 或 InstantDM 的內容,以字串形式提供:keyword(確切的詞彙)、reply(對留言的公開回覆)、dm(直接訊息)和link。每個欄位會原樣複製,所以不要在裡面放註解;缺失的欄位留空,切勿編造連結。報告檔案路徑、開啟的問題、跳過的檢查、哪些是合成或編造的,以及致謝。
影片完成後
客戶專案、影片、偏好、自訂風格和個人經驗教訓都保留在本地,並被應用程式的儲存庫忽略。請勿將它們提交或推送至該處,包括在渲染之後;切勿強制添加被忽略的資料。需要一個單獨的儲存庫來存放客戶內容,除非創作者明確要求。
將導致修改的內容添加到 LESSONS.md 中,每項原因一行,放在通用部分或該風格的專屬部分下。
當發布的影片數據回來時,使用 video-script → 審閱來讀取它們。從點子到發布的速度很重要,因為許多影片會失敗,而每個影片都會教會一些東西,所以新版本應盡可能少改動:保留已批准的內容,只更改正在測試的部分(新的鉤子、觀眾流失處的剪輯),並且僅為更改過的旁白重新生成語音。不要添加沒人要求的美化。