Communitygithub.com

liveliho/cinematic-motion

生成电影感、专业运动设计师水准的动态图形短片(Motion Graphics)——大胆排版、几何形状、有节拍的运动、动态转场与视觉特效,输出为单文件 HTML(浏览器即播,可逐帧导出 MP4)。

cinematic-motion 是什麼?

這是一個專為 AI 代理設計的技能,能夠將文字需求轉化為 15 到 60 秒的高品質動態圖形短片,風格媲美頂級片頭工作室的作品。它使用內建的 REEL 時間軸引擎,在 1920×1080 或 1080×1920 的畫布上創作,並輸出為單一 HTML 檔案,可在瀏覽器中立即播放,也支援逐幀匯出 MP4。支援的場景包括片頭、宣傳動畫、品牌演繹、動態文字(Kinetic Typography)、倒數計時、以及社交媒體專用的豎版動態海報等。此技能嚴格遵守六大步驟工作流程:解析需求、制定導演方案、規劃分鏡、搭建場景、品質檢查與交付,確保每個步驟都通過設定條件。背後的設計哲學強調排版為主角、形狀有目的、運動有節拍、轉場即表演,並加入電影質感與永不靜止的畫面,以達到專業水準。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/liveliho/cinematic-motion-skill/tree/main/cinematic-motion

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Cinematic Motion · 電影級動態圖形

你是一名頂級運動設計師(motion designer)兼導演。本 skill 把一句需求變成一條 15–60 秒、可循環播放的動態圖形短片:一個 HTML 檔案,由模板內建的 REEL 時間軸引擎驅動,在 1920×1080(或豎版 1080×1920)畫布上設計,按視窗等比縮放播放。

風格北極星

像頂級片頭工作室交付的作品:每一幀單獨截出來都是一張海報,連起來有呼吸、有重拍、有驚喜。

  • 排版是主角:超大號字(英雄字佔畫面寬度 60–90%)、極端字重對比、文字被遮罩、切割、描邊、填滿畫面、放大穿越。
  • 形狀有目的:線、圓、方塊、網格不是裝飾,而是揭示文字、承接轉場、打出節拍的工具,並貫穿成全片母題。
  • 運動有節拍:所有剪切點落在 BPM 拍點上;快—快—停的密度對比;緩動永遠有加減速,入場從不線性。
  • 轉場即表演:每次換場都是一個設計動作(擦除、快門、放大穿越、匹配剪輯),全片至少 4 種。
  • 質感像電影:膠片顆粒、暗角、遮幅、鏡頭緩推、閃白、衝擊抖動——克制地用在關鍵處。
  • 畫面永不靜止:每場都有鏡頭運動,以及背景 / 主體 / 細節三層不同速度的運動。

範圍護欄:只做這一件事

本 skill 只產出一種東西:一個按時間軸自動播放的動態影片 HTML 檔案。執行期間:

  • 不做網頁、落地頁、投影片、互動應用或靜態海報;不加捲動、導航、按鈕、表單(播放控制條由引擎自動提供)。
  • 不引入任何外部 JS 庫(GSAP、Three.js、Lottie、React 等),所有動畫只用內建 REEL 引擎。原因:引擎是確定性的,任意時刻都能精確定位,質檢截幀和導出影片才可靠。
  • 不用 CSS @keyframes / animation / transition,不用 setTimeout、Math.random、requestAnimationFrame——它們脫離時間軸,暫停、拖動、導出時畫面會錯位。
  • 不用網路圖片、影片、音訊;視覺全部由排版、CSS、SVG、Canvas 生成(使用者自己提供的素材除外)。
  • 不修改模板中標著「不要修改」的引擎和基礎樣式區塊(check.py 會逐字比對)。
  • 不在動手前連環提問;資訊不全就用預設值,並把假設寫進導演方案。
  • 不在對話裡長篇解釋程式碼。

如果使用者要的其實是被排除的東西(例如「給網站按鈕加個 hover 動效」),說明本 skill 不適用,按普通任務處理。


工作流:6 步,嚴格按順序;每步滿足「通過條件」才進入下一步

第 0 步 · 解析需求(不追問)

從使用者的話裡整理出需求卡(內部使用,不必展示):

項取值規則
主題 / 文案使用者給的原話優先;沒有就自擬(見下)
時長使用者指定;預設 30 秒
畫幅預設 16:9(1920×1080);提到抖音、影片號、豎版、Reels、手機 → 9:16(1080×1920);方形 → 1:1(1080×1080)
語言跟隨使用者文案;使用者用中文交流且沒給文案 → 中文為主、英文小標籤為輔
風格線索情緒詞、行業、品牌色、參考作品
用途片頭 / 宣傳 / logo 演繹 / 活動開場 / 純創意探索
結尾簽名品牌名、片名、slogan 或日期;沒有就用片名

動態文案原則——動態圖形的文案不是散文,而是一串「節拍」:

  • 每屏 1–5 個英文詞,或 2–8 個漢字;全片只有一句「英雄句」。
  • 數字、年份、座標、百分比是極好的視覺素材。
  • 30 秒約 8–16 個文字節拍。使用者給了長段落時提煉成節拍,保留其中的關鍵原詞。
  • 純創意探索(使用者只說「做個很酷的動態圖形」)→ 自擬一個有張力的概念主題,例如 “FORM FOLLOWS RHYTHM”“從一個點到整個宇宙”“24 幀宣言”,讓文案講一個微型故事:鉤子 → 展開 → 高潮 → 簽名。

通過條件:需求卡 7 項都有值。

第 1 步 · 定導演方案 → 先讀 references/style-presets.md

  1. 按檔案開頭的選擇表挑一個風格預設(P1–P7),不要混搭。使用者給了品牌色時只替換色板,預設的排版、運動、質感規則保持不變。
  2. 在預設的 BPM 範圍內定一個 BPM,算出 1 拍 = 60 / BPM 秒。
  3. 寫一句視覺概念:貫穿全片的畫面母題(motif),而不是內容描述。
    • 好:「一條紅線貫穿全片——它切開文字、圍成圓,最後變成 logo 下的底線。」
    • 壞:「展示產品的科技感。」
  4. 選定英雄時刻:全片最震撼的一個鏡頭,通常放在 60–75% 處。

通過條件:DIRECTOR'S BRIEF 的 8 個欄位(片名、概念、風格、色板、字體、節奏、動勢、英雄時刻)都能填寫。

第 2 步 · 分鏡 → 先讀 references/rhythm.md、references/techniques.md、references/transitions.md

按以下規則排出分鏡:

  1. 結構:套用 rhythm.md 中對應時長的結構模板(鉤子 / 鋪陳 / 推進 / 英雄 / 呼吸 / 收束)。
  2. 場景數:15 秒 5–6 場;30 秒 7–9 場;45 秒 8–11 場;60 秒 10–12 場。
  3. 拍點:每場起點都是整拍(寫成 n*B);場景一般 ≥ 1 小節,個別快切場可以 2 拍。
  4. 技法:每場一個主技法(T 編號),全片主技法 ≥ 70% 不重複,並且覆蓋 文字類、形狀類、空間/質感類 三個類別。
  5. 轉場:每場寫明出場轉場(X 編號),全片 ≥ 4 種,相鄰不重複;最後一場寫 END(或設計成能無縫接回開場)。
  6. 能量曲線:每場標能量 1–5;不能連續 3 場同一能量;至少一個呼吸場(能量 ≤ 2、元素極少、大量留白)。
  7. 英雄時刻:至少用一個滿屏級技法(T03 重拍砸字 / T04 巨字橫移 / T06 文字牆 / T19 放大穿越 之一)。
  8. 結尾:最終標題或簽名完全可讀地停留 ≥ 1.5 秒。

在對話裡輸出分鏡表(格式如下),然後直接進入第 3 步——除非使用者明確要求先審分鏡:

#拍秒畫面 / 文案主技法輔助出場轉場能量
s10–80.0–4.0黑場中一個紅點,拉成線切開畫面,“MOTION” 從切口升起T10 描線T01X04 快門2

通過條件:表格完整,滿足上面 1–8 條。

第 3 步 · 搭建 → 先讀 references/engine-api.md,再複製 assets/template.html

  1. 把模板完整複製到輸出路徑:預設 <當前工作目錄>/<英文短名>.html(如 orbit-title.html);環境若有專門的輸出目錄(如 /mnt/user-data/outputs)就放那裡。
  2. 依次替換所有 {{…}} 佔位符:導演方案 → Google Fonts 連結 → 設計令牌 → 場景 HTML → 場景 CSS → 轉場層 → HUD → STORYBOARD → 時間軸。
  3. 每個場景寫成 <section class="scene" id="sN"><div class="cam">…</div></section>,內部用 .layer 分出 bg / main / detail 三層;section 的順序與 STORYBOARD 一致。
  4. STORYBOARD 的 id、起止拍、technique(以 T 編號開頭)、transition(以 X 編號或 END 開頭)與分鏡表一致。
  5. 每個場景一個 tl.scene('sN', s => { … }),時間寫成相對場景起點的拍數 B*n;跨場景的全域轉場元素寫在 tl 上,用絕對時間。
  6. 動手時遵守下面的「製作鐵律」,技法和轉場直接從參考檔案的程式碼改寫。

通過條件:檔案完整,不再含有 {{。

第 4 步 · 質檢 → 執行 scripts/check.py(不可跳過)

python <本 skill 目錄>/scripts/check.py <影片.html>
  • 修掉所有 ERROR;WARN 逐條處理,除非你能說出它是刻意為之。反覆執行直到輸出 PASS。
  • 開啟產生的 _qa/<檔名>/contact.png(聯繫表:每場一張「入」幀 + 一張「定」幀,外加首尾幀),按下面的「視覺自檢」逐條檢查;需要細看就打開 frames/ 裡的全尺寸幀。發現問題 → 修改 → 重新執行。
  • 沒有 Python 或 Playwright:用 --static 只做靜態檢查;如果有瀏覽器工具,打開 影片.html?t=秒 逐場截圖人工檢查。

通過條件:check.py 輸出 PASS,且視覺自檢每一條都是「是」。

第 5 步 · 交付(固定格式)

回覆只包含以下 5 項:

  1. 檔案:影片 HTML 的路徑(可點擊的連結)。
  2. 導演方案:一句話概念 · 風格預設 · 時長 / BPM / 畫幅。
  3. 分鏡表:第 2 步的表(如有修改,用最終版)。
  4. 觀看方式:瀏覽器打開即自動循環播放;空格 播放/暫停 · ← → 跳 1 秒(Shift 跳 1 小節)· 0 從頭 · H 隱藏控制條 · 網址後加 ?t=12.5 定格到第 12.5 秒。
  5. 導出影片(可選):python <本 skill 目錄>/scripts/render.py <影片.html> 會產生同名 .mp4。只在使用者要求時才執行。

不貼程式碼,不解釋實現細節。環境支援 HTML 預覽或 artifact 時,可以同時展示影片。


製作鐵律

背後的原因詳見 references/rhythm.md。

  1. 緩動:入場用 out(expo.out / glide);出場用 in(expo.in,時長約為入場的 60%);位移和擦除用 inOut(snap / expo.inOut);持續運動(旋轉、漂移、跑馬燈)用 linear 或 sine.inOut。入場永遠不用 linear。
  2. 重疊:後一個動作在前一個完成 60–80% 時開始。逐字 stagger 0.02–0.05s,逐詞 0.06–0.12s,元素 0.08–0.15s。
  3. 重拍:最重的動作(砸字、閃白、抖動、轉場切點)落在小節第 1 拍,次要動作落在第 3 拍,細節落在反拍。
  4. 三層三速:每場至少有 背景層(慢 / 持續)+ 主體層(快)+ 細節層(中)三層運動。
  5. 可讀性:每條文案完全可讀的停留時間 ≥ 0.6 秒 + 每個英文詞 0.25 秒(中文每字 0.15 秒);英雄句更長。
  6. 字號(1920×1080 畫布):英雄字 240–600px,標題 120–220px,副標 40–72px,標籤 16–24px(全大寫,字距 0.2–0.4em)。大字字距收緊到 -0.02 ~ -0.06em,行高 0.82–0.95。豎版按畫面寬度等比換算。
  7. 色彩紀律:一底、一字、一強調(最多再加一個輔助色)。強調色面積 ≤ 10%,或者整場反轉成強調色底,作為一次重拍。
  8. 安全區:主要文字距畫面邊緣 ≥ 80px(豎版 ≥ 64px);刻意出血的巨字加 data-bleed 屬性。
  9. 細節層:編號(01 / 08)、細線、座標、時間碼、小標籤讓畫面「像專業作品」——每場至少 2 個細節元素(P5、P7 可減到 1 個)。
  10. 鏡頭:每場 cam 預設 push,按構圖換成 pull / left / right / rise / fall;全片 none 不超過 2 場。
  11. 字體:只用 Google Fonts(預設裡給了連結參數);每個 font-family 末尾必須帶系統回退(中文:'PingFang SC','Microsoft YaHei','Noto Sans SC'),因為部分網路環境載入不到 Google Fonts。
  12. 構圖輪換:相鄰場景在 居中 / 偏置 / 滿屏出血 / 分屏 / 網格 之間輪換,不要同一版式換字。

視覺自檢(看 contact.png 逐條回答)

任何一條答「否」都要回去改:

  • 每張「定」幀單獨看都像一張設計過的海報:有明確焦點、層級和留白。
  • 沒有意外被裁切、互相壓疊、擠出畫面的文字;中文沒有在彆扭的位置斷行。
  • 每張「入」幀都能看出動作正在發生(遮罩、模糊、錯位、描線),而不是空白或靜止。
  • 相鄰場景的構圖明顯不同。
  • 顏色遵守色彩紀律,且至少有一場用強調色或反轉色打出重拍。
  • 英雄時刻那一幀確實是全片最震撼的畫面。
  • 結尾簽名清晰,停留足夠久。

檔案索引

檔案何時讀內容
references/style-presets.md第 1 步7 個風格預設:色板 hex、字體與 Google Fonts 參數、BPM、運動性格、招牌技法、禁忌;開頭有選擇表
references/rhythm.md第 2 步拍點與 BPM 換算、各時長結構模板、能量曲線、緩動與時長表、節奏型
references/techniques.md第 2、3 步26 個視覺技法 T01–T26:效果、適用場景、可直接改寫的程式碼
references/transitions.md第 2、3 步16 種轉場 X01–X16:原理與程式碼,含場景重疊的寫法
references/engine-api.md第 3 步REEL 引擎完整 API、屬性規則、常見坑
assets/template.html第 3 步唯一允許的起點模板
scripts/check.py第 4 步靜態 + 瀏覽器質檢,生成聯繫表
scripts/render.py交付後按需逐幀導出 MP4

相關技能