Opus 級別動態影片 (Remotion)
目標: 給予 Opus 5.5 與執行此技能的模型相同提示詞,所產出的影片在視覺、動態與音效上幾乎一致,無論主題或風格為何。
差距很少來自品味,而是行為。Opus 會:
- 尊重長提示詞中的每個數值;
- 將模糊詞彙轉化為具體設計決策;
- 妥善設計每個元素,而非僅滿足於佔位符;
- 在編寫程式碼前規劃好整個時間線;
- 建立共享的系統,確保一致性;
- 審視自身輸出並修正。
較弱的模型會跳過這些步驟,除非明確要求。此技能將這些步驟明確化,並採用「開放設計」架構:
| 開放設計要素 | 此處實作 |
|---|---|
| 擁有工作流程的功能性技能 | 本檔案:優先級、階段與元素手冊 |
每個渲染環節都讀取的 DESIGN.md 合約 | 位於 src/spec.ts 頂部的設計合約;design-systems/*.md 為其種子 |
| 模板 | templates/remotion-starter/,已測試(完整原始碼請見 REFERENCE.md) |
| 設計評審團審查關卡 | 階段 6:五位評審,修正至每項評分 ≥ 8 |
| 反粗糙清單 | 階段 6 中的禁止清單 |
| 確定性渲染 | Remotion:每個影格皆為影格編號的純函數 |
優先級順序
當規則互相衝突時,請依此順序處理:
- 提示詞本身的文字:每個數值、節拍、台詞與禁止事項。
- 風格層級的視覺與工藝:構圖、色板、字體,以及妥善設計的每個元素(參見手冊)。紋理與光影也在此範圍。這是觀眾最先評判的項目。
- 連續性:真實的轉變、持續的身份、合理的物理。
- 節奏與音效。
- 帳務記錄:帳目、表格與檢查。它們服務於 1–4,且絕不能取代它們。
輔助工具與範例是機制,而非風格。 motion.tsx 決定物件的位置與動態。它絕不決定物件的視覺外觀。切勿將輔助工具的中立預設值(例如純色方塊或線條肢體)作為設計。切勿將範例的主題、色板或佈局複製到不同的影片中。每個影片都應擁有自身設計的外觀,其豐富程度至少應與沒有輔助工具時相同。
觸發方式
- 任何關於動態作品的請求皆會執行此管線。不需提問:在階段 1 解決差距,並在「解讀」中陳述。
- 每個新提示都是一部新影片,即使對話中已製作過一部,也應從模板重新建構。僅在使用者要求修改時(修改、改一下、在上一版基礎上、fix this)才重複使用先前的程式碼。在具備檔案工具的主機中,為影片建立新的專案資料夾。
- 模式。 預設為建置。只要提示詞 / 擴寫 / “prompt only” 會在階段 2 後停止,並將擴充後的摘要以一個圍欄
text區塊輸出。 - 主機。 僅聊天:以程式碼區塊輸出檔案(階段 7)。具備檔案與 shell 工具:寫入檔案,執行
npx tsc -p .、npm run render與npm run check,檢視靜止畫面,修正,然後回報。 - 若訊息中不包含任何想法,僅回覆:「請給我一句話的創意或一段完整的提示詞。」
階段 0 — 像 Opus 一樣閱讀提示詞:三本分類帳
-
規格分類帳
S01…:每個數值或指示各佔一行,精確引用。這涵蓋持續時間、尺寸、顏色、字型、字重、文案、數量、角度、位置、時機、緩動、禁止事項、循環或結尾、角色,以及每個分鏡節拍。spec.ts中的FILM(持續時間、fps、尺寸)來自這些行;模板的佔位值絕不能保留。截斷的提示詞應以其最後完整段落的語氣與密度完成,並將那些行標記為S##*。 -
轉變分類帳
X01…:每個轉變動詞(變成、化作、收攏、匯聚、展開、becomes、turns into、gathers、dissolves、unfolds、grows into)記錄為來源 → 目標 · 機制 · 開始–結束秒數 · 守恆內容。 -
元素分類帳
E01…:每個被繪製或輸入的物件,附有其手冊(文字、物件、角色、環境、數據、UI、轉場、紋理-光影、音效)並列出:- 三個或以上的結構特徵;
- 尺寸與座標;
- 動態方式;
- 對於角色:設計表與指定姿勢;
- 對於手持物品:隨時間變化的持有者。
每個場景也應有其由後到前的圖層清單。
每個數值都具有約束力:絕不能四捨五入、重新命名、重新著色、重新調整時間或刪除任何數值。長提示詞的最後三分之一與開頭部分同等重要。若兩行衝突,保留更具體的那一行,並在「解讀」中註記。在程式碼中:
- 常數放在
spec.ts中,標記為// S07; - 建構器放在
film.tsx中,標記為// E03; - 節拍放在場景檔案中,標記為
// S31 X02。
階段 1 — 以 Opus 的方式填補空白
僅針對提示詞未指定的部分;絕不能覆蓋分類帳中的任何行。
| 空白 | Opus 般的預設值 |
|---|---|
| 格式 | 1920 × 1080;密集動態為 60 fps,平靜或角色作品為 30 fps。明確指定的格式具有約束力;快速預覽請使用 npm run preview,絕不降低 FILM |
| 持續時間與結尾 | 一個點子 15 秒,精彩回顧或品牌影片 30 秒。精選集與標誌使用無縫循環;故事與宣傳片使用已解決的最終影像或結束卡 |
| 節奏 | 根據情緒決定速度:平靜 60–90 BPM,品牌 110–128,充滿活力 128–140。密集作品每拍一個事件,平靜作品每小節一個事件。密集時停頓 ≤ 0.5 秒,平靜時則與文案所需時間一致 |
| 敘事 | 一個主題或載體貫穿影片;每個場景從前一個場景發展而來;無關的標題卡 |
| 相機 | 鎖定且正面,除非提示詞暗示動態。故事場景以廣角開場,展現整個世界 |
| 構圖 | 依風格的佔有率與留白決定。靜止元素距離左右邊緣至少 150 px,距離上下邊緣至少 90 px |
| 字體排印 | 一個具有特色的字體家族;重點詞或數字使用最重字重與最大字級。拉丁文:Inter、Geist、Space Grotesk、Fraunces;中文:Noto Sans SC、Noto Serif SC |
| 色板 | 3–5 種顏色,各有角色;強調色預示接下來會發生的事 |
| 紋理與光影 | 每個元素有其材質,並依尺寸縮放。光影來自合理的來源 |
| 細節 | 三個重複出現的微細節,讓影片感覺經過精心設計(標籤、刻度、圖例、時間碼、標示)。它們不會增加超出提示詞的新聲明、數字或文案,並在提示詞有提供時使用其措辭 |
| 字幕 | 任何螢幕上的對話、歌詞或字幕:1080p 下 ≥ 40 px,高對比,位於下方三分之一,整行顯示足夠的閱讀時間(約每個中文字元 0.25 秒,每秒約三個拉丁詞) |
| 音效 | 生成符合情緒的配樂,或以環境主導的場景使用環境音;僅在要求時保持靜音 |
階段 2 — 方向:從提示詞推導設計合約
風格的來源:
- 提示詞明確說明了風格(色板、材質、字體、參考)。合約僅來自分類帳。
- 提示詞命名了一種感覺、媒介或參考(「像報紙」、「水墨」、「終端機」、「瑞士海報」、「皮克斯風格」)。從
design-systems/中最接近的種子開始並進行調整。 - 提示詞只是一個粗略的想法。 使用以下方法綜合出一個新的合約。種子是可選的起點,而非預設值。
風格綜合方法(適用於任何主題):
- 主題 → 世界。 這個主題存在於什麼物質世界?紙張、墨水、玻璃、金屬、布料、螢幕、自然、城市、實驗室。選擇一個,加上至多一個對比的世界以進行轉變。
- 觀眾與情緒 → 能量。 平靜或強烈、溫暖或精準、玩樂或嚴肅。這決定了速度、緩動、超調與密度。
- 使其具體化。 將合約寫成數值,而非形容詞:
- 色板: 附有角色的十六進位值。
- 字體: 家族、字重、字級、字距。
- 標記: 線條、填色與形狀的繪製方式,以 SVG 技術表示。
- 紋理與光影: 每個元素皆不同。
- 構圖: 佔有率、留白、邊緣規則。
- 動態特性: 每種移動類型的緩動方式。
- 轉場語法: 哪種機制改變哪個場景。
- 標誌性細節。
- 音效色板。
- 禁止事項。
- 檢查粗糙。 每個選擇都必須可追溯至主題或提示詞。通用的漸層、發光與模板佈局正是合約要取代的東西。
design-systems/ 中的種子:
| 種子 | 適用於 |
|---|---|
drafting-table | 流程、工具、工程 |
swiss-kinetic | 品牌、發布、聲明 |
editorial-ink | 文化、工藝、傳統、東亞主題 |
data-instrument | 解說、金融、科學 |
bold-poster | 音樂、運動、青年 |
riso-halftone | 獨立、復古、玩樂 |
storybook-scene | 角色、故事、MV |
簡短提示詞: 先以 Opus 的密度撰寫完整摘要。它應包含方向段落、合約、結構(速度、命名場景、場景轉變)、角色(若有的話),以及逐場景的分鏡表(含時間戳記與數字)。該摘要即成為分類帳。在僅提示詞模式下,輸出摘要並停止。
階段 3 — 先規劃時間線,再寫程式碼
- 每個場景一行:
開始–結束秒數 · 名稱 · 觀眾學到什麼 · 傳入 → 傳出的元素 · 轉場方式 (X##)。 - 列出每個事件為
t: 元素 (E##) · 動作 · 數值 · id。 - 在
T區塊中命名關鍵時間點。 - 從相同事件推導出音效提示列表。
在繼續之前檢查:
- 節拍落在 60/BPM 的倍數上;
- 每個場景的結束狀態即為下個場景的開始狀態;
- 沒有兩個動作同時驅動一個屬性;
- 所有動態都在結束前完成;
- 對於循環,虛擬時間 t = D 影格等於影格 0,且所有動態皆靜止。
階段 4 — 先設計,再處理動態
- 根據結構特徵,在模組層級建構每個元素的幾何形狀。
- 對於角色,先製作角色表:一張靜止畫面,包含所有角色及其每個命名姿勢,並手持其道具。
- 將關鍵構圖固定為以 px 為單位的精確佈局:影格 0、每個場景或材質的第一個完整影格,以及最終影格。根據合約的佔有率與留白檢查每個佈局。
- 在處理它們之間的動態之前,先編寫這些靜止狀態。不好的靜止畫面永遠無法被動態挽救。在具備檔案工具的主機中,先渲染並檢視它們。
元素手冊
每個請求都由這些元素類型組成。對於每個元素,套用其手冊。
| 元素 | 建構方式 | 動態方式 | 檢查(常見失敗) |
|---|---|---|---|
| 文字 | 一個家族;依字重與字級建立層級;依字級設定字距;大字詞單行顯示,並符合指定的寬度;拆分詞語與字母保留其空格;中日韓文字可垂直排列 | 以 EASE.out 到達;錯開 0.02–0.06 秒;插槽裁剪、軌道滑入、縮放揭示;在退出前可讀的停留時間 | 詞語連在一起、孤兒行、字幕太小或對比度低、重點詞不是最重字重 |
| 物體(圖示、道具、產品、符號) | 真實物品的三個或以上結構特徵;一個陰影面以呈現體積;一致的輪廓策略;作為函數建構一次 | 動態來自其本質:紙張在摺痕處彎曲、液體產生漣漪、金屬繞軸旋轉、燈光切換 | 用符號取代物品、零件漂浮、鏡頭間比例不一致 |
| 角色 | 一個 Body 設計表:剪影、比例、顏色、臉部、標記,全部透過 color、face 與 parts 設計;命名姿勢 | 在命名姿勢之間使用帶有 settle 的 poseMix;行走使用 walk();小到可讀的表演節拍;道具位於 grip() 並在 held 中繪製 | 鏡頭間外觀漂移、手未放在手持道具上、肢體穿過頭部、線條人物預設外觀、腳離開地面 |
| 環境(房間、城市、風景、天氣) | 從後到前的圖層:天空或牆壁、遠景、中景、地面、前景。合理的光源及其光形。天氣以兩個深度橫跨畫面 | 永不停止的環境生命(天氣、燈光、小循環);除非要求,否則相機保持靜止 | 平面背景、天氣穿過固體物體、缺少光影邏輯、邊到邊的雜亂 |
| 數據(圖表、計數器、圖表、地圖) | 首先是軸與單位,值精確來自分類帳,標籤附著在標記上,每個場景一個圖表 | 軸,然後是數據,然後是註釋;計數器與其標記一起滾動;圖表透過共享的插槽互相轉變 | 數字錯誤、軸未標籤、裝飾重於數據、忽略提示詞措辭的標籤 |
| UI / 產品 | 真實螢幕或忠實重建,具有清晰的矩形、真實的比例和真實的層級結構 | 游標驅動或狀態驅動的變化;縮放到變化的區域 | 拉伸的螢幕截圖、假的介面雜訊、不可讀的小文字 |
| 轉場 | 物理機制:變形 (chain)、合併 (converge)、遮罩或擦除 (Reveal)、材質變化 (MaterialLayer 在 Reveal 下使用兩次)、展開、基於共享形狀的匹配 | 硬邊緣,在一拍上規劃,來源消失時目標形成 | 淡入淡出、提示詞未要求的剪輯、元素突然出現、材質變化時身份遺失 |
| 紋理與光影 | 紙張與墨水作為獨立圖層(Paper、InkFilter 搭配 roughFor 縮放);透過圖案實現網點與陰影線;光作為形狀(圓錐體、發光窗戶、反射) | 種子化且穩定,或以固定步進率沸騰 | 所有事物上的統一紋理、裝飾性發光或眩光、未種子化雜訊導致的閃爍 |
| 音效 | scripts/cues.json:音樂使用有音高的背景與主旋律,或以環境主導的場景使用 ambience 背景;每個視覺重點上有一個事件 | 與 T 區塊同步;循環的尾部摺疊回其開頭 | 因遺漏而靜音、將雜訊用作音樂、重點不同步 |
通用規則
- 轉變是真實的。 每個 X 行都逐點變形同一個物體(相等點數;多個形狀使用
chain(),多對一使用converge())。目標形成時,來源消失。目標完全達成:如果提示詞說「變成一個長條圖」,則最終確實是長條。零件在其來源處誕生並旅行。合併與拆分守恆數量。切勿使用疊加、淡入淡出或…
…
[已截斷以利翻譯]