Communitygithub.com

短影格動態圖像製作 (Reel Motion Graphics)

將腳本或概念轉換為符合品牌風格的 9:16 解說短影格(reel),內含動畫與講者頭像,產出 HyperFrames 專案、MP4 影片及可互動的 HTML 播放器。

短影格動態圖像製作 (Reel Motion Graphics) 是什麼?

此技能專為 Claude Code 等 AI 代理設計,能將使用者的腳本、轉錄稿、論文摘要或概念,自動生成一支符合品牌風格的 9:16 解說短影格。技能以「30 秒升級再造」短影格為模板,複製其 HyperFrames 專案結構,再依據新腳本替換內容與動畫。使用者只需提供腳本,代理便會規劃分鏡(title card、步驟、結果)、修改資料檔案(index.html 及各 composition)並維持嚴格的視覺規範:4px 網格、特定字型 Bodoni 與 Instrument Sans、玻璃擬態面板、金色光澤、接近黑色的暖色背景。若遇到圖庫未涵蓋的圖形(如圖表、地圖),代理會暫停並請求使用者提供 HyperFrames 目錄連結,安裝後重新調整樣式並擴充圖庫。最終產出包括完整的 HyperFrames 專案、渲染後的 MP4 檔案,以及可直接在瀏覽器播放的 HTML 播放器。此技能支援 Claude Code 與其他可執行 shell 命令的 AI 代理平台。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jamesisbuilding/App-Building-Skills/tree/main/skills/reel-motion-graphics

在你喜歡的 AI 中提問

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

預覽

來自技能 README

說明文件

短影格動態圖像製作 (Reel Motion Graphics) 是做什麼的?

此技能用於製作符合品牌風格的短影格,其樣式首創於「30 秒升級再造」短影格。template/ 即為該短影格的可運作 HyperFrames 專案,因此未經修改的副本可直接正確渲染。你的任務是在保留以下所有規則的前提下,將其中的內容替換為新腳本的內容。

在撰寫 composition HTML 之前,請先載入 /hyperframes-core 以取得 composition 合約。只有在需要使用 references/primitives.md 中未涵蓋的動畫模式時,才載入 /hyperframes-animation。

1. 閱讀腳本並規劃節拍

收集或推斷以下資訊,僅針對會改變影片的項目提問:

  • 腳本或概念。 必填。
  • 講者影片(MP4)或靜態圖片。若無,則保留模板中的佔位圖片。
  • 來源標記,用於標題上方的斜體文字,例如 ICLR 2023 · Author et al.。
  • 目標長度。 預設 30 秒;20–60 秒皆可。

將腳本劃分為:標題卡(約 4 秒)、2–5 個步驟(每個約 4.5–6 秒),以及一個可選的結果/結尾(約 5.5 秒)。為每個步驟撰寫:

  • 標題:以純文字加上 1–2 個字的斜體強調(例如「複製 MLP 八次」),字數不超過約 22 個字元,以便在 656px 寬度、60px 字級下顯示;
  • 說明文字:第一行為一句話,不超過約 34 個字元(Bodoni 斜體 40px),第二行為支援句,不超過約 40 個字元;
  • 圖表動作:使用 primitives 詞彙表中的動作(references/primitives.md → "Writing a new diagram")。

如果說明文字與旁白同步,則以每秒約 2.5 個口語單詞的節奏安排。將規劃寫入專案的 STORYBOARD.md(包含節拍、時間範圍、標題、說明文字、視覺動作),展示給使用者,待其核准後再進行建置。使用者已核准的簡短腳本可直接進行建置。

2. 初始化

此技能位於 Reel Creator 專案中(.claude/skills/reel-motion-graphics/)。請在專案根目錄執行命令,並將每個新短影格放入 reels/<slug>/。下方指令碼路徑(如 scripts/solve-fold.py)均以此技能資料夾為相對路徑。

.claude/skills/reel-motion-graphics/scripts/new-reel.sh reels/<slug> [presenter.jpg|.mp4]

對於講者影片,請將 index.html 中的 <img id="presenter"> 替換為: <video id="presenter" class="clip" src="assets/presenter.mp4" data-start="0" data-duration="<D>" data-has-audio="true" playsinline></video> #presenter 的 CSS(cover、20% 錨點、--fold 下方)保持不變。

3. 建置:先編輯資料,再撰寫圖表

檔案需要修改的內容
index.html根元素及 host 的 data-start/data-duration,使其符合規劃。Host:背景(整體)、標題(0–4)、標題和圖表(4–結束)、結果(其視窗區間)、說明文字(整體)、講者(整體)。
compositions/title.html斜體來源標記、兩行顯示文字、兩行論點文字,以及微型圖表(若概念並非「1 → 多」)。
compositions/headings.html僅 STEPS 陣列(host 本地秒數)。條狀進度條和「第 N 步,共 M 步」由此推導。
compositions/captions.html僅 CAPS 陣列(全域秒數)。每條說明文字在其步驟開始後約 0.35 秒進入,並在步驟結束時離開。
compositions/diagram.html根據新主題重寫整個 world,使用 primitives。保留 lens/world/drift 結構、token-clock 模式及背景衰退效果。
compositions/result.html統計標籤、數值、計數器和元資料行;若腳本無數字,則刪除該 host。
compositions/bg.html通常無須變更。調整其 yoyo 重複次數,使其在根元素持續時間內完成。

當圖庫中無合適圖形時:向使用者索取 HyperFrames 連結

圖庫位於 references/primitives.md。當某個節點需要一個 primitives 未涵蓋的視覺元素(圖表類型、地圖、時間軸、比較圖或任何未列出的項目)時,請勿憑空創作。暫停並向使用者索取連結:

「第 3 節點(「自 2021 年以來營收成長三倍」)需要一個成長圖表,但圖庫中沒有。您能否提供一個您喜歡的 HyperFrames 目錄連結?我會將其重新調整為我們的品牌風格。」

為協助使用者選擇,您可透過 npx --yes [email protected] catalog "<關鍵字>" 列出 2–4 個候選項目,但讓使用者決定。等待的同時,繼續建置其他節點,並在空缺處留下標記的佔位符。

收到連結後:

  1. 安裝它。 註冊項目的名稱為目錄連結的最後一個路徑片段。從專案根目錄執行 npx --yes [email protected] add <名稱> --no-clipboard --json。對於非來自註冊庫的連結,請閱讀頁面或原始碼並重建。
  2. 根據規範重新調整樣式:
    • 將顏色替換為品牌 token,面板替換為 .glass;
    • 使用 Bodoni 和 Instrument Sans 字型及 opsz-18 檔案;
    • 將所有間距值設為 4px 的倍數;
    • 使其符合內容欄位和區域;
    • 添加光澤、反光和漂移效果;
    • 移除任何不符合品牌的元素,例如平面亮色填充、其他字型或陰影樣式。
  3. 將其嵌入,作為圖形軌道上的子 composition host,或在其需要與連續 world 共享時,將其動畫合併至 diagram.html。然後照常檢查、截圖並修正。
  4. 將其加入圖庫。 在 references/primitives.md 的「Restyled from HyperFrames」標題下新增一個條目:名稱、來源連結、顯示內容及其關鍵參數。將重新調整樣式後的檔案複製到 template/compositions/library/,以便下一個短影格可直接使用,無須再次請求。

4. 規範(每個短影格皆須遵守,無例外)

  1. 摺線等距。 摺線位於最低動畫內容(說明文字底部,約 y 900)與講者頭頂之間的中點。使用 scripts/solve-fold.py <講者靜態圖片或影格> 900 求解,並在 brand.css 中將 --fold 設為 4 的倍數。使用 scripts/measure-fold.py <截圖> <摺線> 驗證。若為影片,則檢查頭部位置最高的影格。
  2. 4px 網格。 所有內邊距、間距、偏移、尺寸和行高皆為 4 的倍數。容器應均勻內縮且尺寸由其內容決定;切勿為卡片設定固定高度。執行 scripts/audit-grid.sh <專案>;唯一允許的例外是極細邊框、發光半徑和補間動畫偏移。
  3. 穩固襯線字型。 僅使用 fonts/ 中的 *-opsz18.woff2 Bodoni 檔案。變數字型的自動光學尺寸會選取極細的顯示尺寸,在 H.264 編碼和手機縮放後會消失。切勿切換回可變檔案或 Google 的 6..96 範圍。
  4. 區域。 應用程式欄 0–175(保持淨空),動畫區 192–780,說明文字帶 812–904,講者頭部位於 --fold 下方,內容欄位 x 172–828(避開右側導軌)。說明文字僅存在於一個軌道。
  5. 一個連續的圖表 world。 跨步驟持續存在的元素應位於 diagram.html 中並移動。它們不得在新的場景檔案中重新進入。
  6. 確定性。 僅使用註冊於 window.__timelines["<id>"] 的暫停 GSAP 時間軸。使用帶種子的 rng() 或 hh() 取代 Math.random,且不得使用 requestAnimationFrame、時鐘或網路請求。動畫計數器和粒子效果為代理補間數值的純函數。
  7. 符合 lint 規範的撰寫方式。
    • 使用 document.querySelector('[data-composition-id="<id>"]:not([data-composition-src])') 定位子 composition 自身的根元素,切勿使用 #root(組合後多個根元素共享該 ID)。
    • 元素 ID 前綴應包含 composition 名稱(dg-、hd-、rs-、ti-)。
    • 每個元素-屬性對應一個 fromTo,其後再使用 to。
    • 切勿對 letterSpacing、width、height、top 或 left 進行補間;應使用變形和透明度。
    • 錯開單獨的標籤,使其在靜止時不重疊。
  8. 視覺風格。 接近黑色的暖色背景,帶有漂移光線和顆粒感;每個面板使用 .glass;重點處使用金色光澤;每個停頓點帶有微小的相機漂移;每個完成的狀態至少維持 1 秒。

5. 驗證與交付

在專案目錄中執行以下命令:

npx --yes [email protected] check
npx --yes [email protected] snapshot --at <每個節點的中間時間點>
  • check 必須通過,無任何錯誤。檢視所有警告。
  • 檢視線上截圖集。對任何密集的影格進行裁切和放大:檢查是否有重疊、文字被裁切、token 落點錯誤以及內邊距不均等問題。
  • 執行 measure-fold.py 和 audit-grid.sh,並修正其標記的任何問題。
  • 使用 npx --yes [email protected] render 進行渲染;結果輸出至 renders/。製作一個低於 30 MB 的分享版本,適合手機觀看: ffmpeg -i renders/<檔案>.mp4 -c:v libx264 -crf 23 -preset slow -pix_fmt yuv420p -movflags +faststart renders/<slug>-share.mp4
  • 即時播放器:從專案根目錄執行 node viewer/build.mjs。它會重新建置每個短影格的即時播放器(reel/ 及每個 reels/<slug>/),並寫入輪播頁 viewer/index.html,每個短影格在 viewer/reels/ 中各有一個副本。將 viewer/index.html 發布至短影格圖庫成品 https://claude.ai/artifact/Joet84qdr6Kb47vYZzc8YR,並在 files 中傳遞所有 viewer/reels/*.html。使用者偏好即時 HTML 播放器而非內嵌影片。對於單一短影格,在其資料夾中執行 node build-preview.mjs 會寫入 dist/preview.html。
  • 回報執行時間、已檢查的項目(影格、摺線間隙、稽核),以及任何尚未驗證的事項。

參考資料

  • references/primitives.md:所有視覺建構模塊,附帶實作該模塊的檔案。
  • template/:完整的升級再造短影格。此為品質標竿;請將新作品與之比較。

Individual skills in this repo

This repo contains 6 individual skills — each has its own dedicated page.

app-icon-design

Create, revise, and audit app icons using Apple's Human Interface Guidelines, with a clear visual identity and production-ready deliverables.

app-keyword-research

Validate an app idea against the App Store before building it. Turns the idea into search phrases, measures demand (App Store autocomplete) and competition (current top-10 apps) for each, ranks keywords by opportunity, and maps which apps own the market. Use when the user wants keyword research, ASO, "is there demand for…", "who are the competitors for…", "what should we call it / which keywords", or to validate or compare app ideas.

app-offer

Designs one opinionated "Grand Slam Offer" for any app idea, new or already shipped, by running Alex Hormozi's $100M Offers method adapted to app stores. It covers the market and niche, the commodity check, a value-equation audit, the problem inventory, delivery vehicles, the trimmed value stack, pricing and tiers, scarcity, urgency, bonuses, the guarantee, naming, the paywall per placement, the onboarding fast win, a test plan and a ship plan. It works within App Store and Google Play rules. For a shipped app it reads the code and notes first and produces a before/after. Use it when the user says "/app-offer", "run app-offer on <idea>", "make a grand slam offer for my app", "Hormozi my app", "price my app" or "design my paywall offer", or asks how to package, price, name, guarantee or paywall an app. It writes offer/grand-slam-offer.md (or ./<app-slug>-grand-slam-offer.md for a new idea).

brand-reference-pack

Build or refresh a shortform brand reference pack for any app from its real surfaces — website, App Store listing and reviews, socials, the live app (driven end to end on the simulator) and its code tokens — plus a status check of the upstream foundations (ICP, voice of customer, brand voice). Produces the context that content formats and design decisions are made from, as markdown, tokens.json and a PDF. Use for "build a brand pack for <app>", "refresh the brand pack", "capture the site/app/socials for shortform", "/brand-reference-pack".

deep-work

Timekeeper and scribe for the user's own timeboxed build session, default 90 min, also 1h / 1.5h / 2h (Orient, Build, Verify, Harden, Close, scaled to the block). Use when the user says "start a session", "deep work", "90 min block", "work block", or invokes /deep-work. Subcommands: status, park <note>, close, abort.

new-app-info

Builds the information pack Apple asks for when App Review replies "We need additional information to better understand the app". It covers all six required items: (1) a screen recording on a physical device, as a shot list the user records; (2) the app's purpose and target audience; (3) setup and main features, with any login credentials or sample files; (4) the external services the app uses; (5) regional differences; (6) regulated industry or protected third-party material. It also runs Apple's "Prevent common issues" checks. Every answer comes from the app's own code (accounts, user-generated content, in-app purchases, SDKs, locales, screen-capture blocking, data deletion). It reads the connected iPhone's iOS version and checks it is the latest. It ends by telling the user to paste the reply into App Review Information → Notes. Use it when the user pastes that App Review message, says "/new-app-info", "we got rejected, they want more info", "answer App Review", or "make the App Store review pack". It w...

相關技能