Communitygithub.com

紙拼貼動畫影片

製作撕紙拼貼風格動畫影片,長度5–30秒(YouTube片頭或頻道預告、品牌或商店宣傳,16:9),每秒12幀的停格動畫,以程式碼建構;AI僅用於照片剪裁。適用於拼貼/剪貼簿/剪裁/雜誌剪報/撕紙/混合媒材/Zine風格影片,或當有人提供紙拼貼參考並要求「像這個參考一樣做」時。不適用於靜態照片拼貼、情緒板、分割畫面剪輯網格或單一轉場。

紙拼貼動畫影片 是什麼?

此技能名為「紙拼貼動畫影片」,專為生成帶有撕紙拼貼美學的動態影片而設計,主要應用於YouTube片頭、頻道預告、品牌或商店宣傳等場景。它採用每秒12幀的停格動畫技術,並透過程式碼驅動整個動畫流程,AI僅用於處理照片剪裁輸出。此技能支援從5到30秒的影片長度,並以16:9格式輸出,完全相容於現代網頁瀏覽器環境。其核心工作流程包含幾個階段:首先建立專案並載入參考資料,接著分析參考影片的動作語法,然後編寫節拍表並生成所需的照片剪裁輸出,最後透過程式碼編輯場景、合成音樂並渲染最終影片。此技能的獨特之處在於,它將參考影片中的動作語法複製到新品牌的故事中,而非直接複製故事情節,從而實現高度客製化。它還提供了完整的工具鏈,包括字型選擇、調色盤映射、綠幕去背和渲染腳本,讓使用者能快速調整並產出專業品質的拼貼動畫。

相容平台✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/rfrossard/motion-director/tree/HEAD/paper-collage-film

在你喜歡的 AI 中提問

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

說明文件

paper-collage-film

一部拼貼電影 = 一段連續的停格動畫鏡頭旅程,穿越撕紙世界,配合音樂剪輯,最終以標題、翻頁揭開標誌和行動呼籲作結。除了照片剪裁,一切都是程式碼。assets/template/ 是一個完整的10秒影片(kaye.creatives YouTube發佈版),可直接渲染使用 — 請在此基礎上調整,而非從零開始。

使用此技能的使用者期望(詳見 references/lessons.md)

  • 先看參考資料。 開啟收到的每個連結,以每秒12幀的速度擷取畫面,並閱讀相關文件。若有多個參考,找出他們最喜歡的那個。
  • 從參考中學習技巧,從品牌中發掘故事。 複製動作語法,絕不複製情節(不做一一對應的映射)。
  • 優先使用程式碼;僅生成照片剪裁。 除非要求,否則不生成背景、人物或AI角色,也不使用影片生成。
  • 以渲染的文件而非猜測來做出選擇:標題字型 → tools/font_sheet.sh,顏色 → tools/palette_sheet.sh;使用者以數字作答。
  • 快速且可見:儘早發送節拍表、剪裁表和草稿,提供實際時間預估,使用並行代理(請參閱 references/agent_workflow.md)。
  • 使用使用者的語言交談;除非要求,否則螢幕上的文字使用英文。避免全畫面閃爍(光敏感性)。

0 · 接收階段(僅詢問一次,在一則訊息中,且只問無法推斷的資訊)

  • 確切的品牌/帳號拼寫和每個螢幕上的文字
  • 影片長度
  • 格式(見下方說明)
  • 文字的語言(西里爾字母會影響字型選擇)
  • 行動呼籲(CTA):訂閱/追蹤/造訪
  • 標誌檔案或文字標誌
  • 音樂:合成音軌或他們自己的曲目
  • 是否願意花費約 N×2 的點數在剪裁上

格式。 拼貼版面僅為 1920×1080 繪製(collage.js 和 scenes.js 使用絕對座標)。若要製作9:16的Reels但不重新規劃版面:渲染16:9的影片,然後將其全寬放置(1080×608)在一個1080×1920的頁面上,並在頂部和底部加上撕紙條帶,這些條帶上包含標題、帳號和行動呼籲。真正的垂直影片意味著需要重新放置每個座標 — 請將其視為額外時間並報價。

1 · 專案(1分鐘)

<skill>/scripts/new_project.sh <output_root> <slug>             # 新品牌:關閉調色盤(使用原始紙張顏色)
<skill>/scripts/new_project.sh <output_root> <slug> --example   # 重現已發佈的 kaye.creatives 影片(夜間調色盤)
cd <project>                                                    # 從專案目錄執行以下所有命令(代理:每次呼叫前加上 `cd <project> &&`)

建立 comp/、audio/score.html、tools/(包含已編譯的 extract/encode/mux/greenkey)、cutouts/、refs/、review/ 等目錄。需要 macOS(Swift、AVFoundation、afconvert)、Chrome/Brave、Node ≥ 22(NODE_BIN=/path/to/node 可強制指定;若有備用連結,則使用 export PATH="<project>/tools/bin:$PATH" 以便直接呼叫 node — tools/*.sh 會自行處理)。需要網路連線以載入 Google Fonts。 缺少的剪裁會渲染為帶標籤的灰色卡片,因此即使是在生成之前,草稿也能正常運作。範例載入的剪裁有:cam_side cam_front car helmet phone plane_front plane_side clap reel laptop headphones midi phone_gimbal cassette cloud_1..4 rocks_a/b/c tree_a/b grass_strip。

2 · 參考資料(10–15分鐘)

下載參考影片(Pinterest:解析 pin.it 連結 → 前往 pin 頁面 → 使用 v1.pinimg.com/videos/…/720w.mp4 或 /mc/720p/ H.264 URL;GIF:使用 ImageIO/Swift 分割畫面 — 不要用 ffmpeg)。使用 tools/extract ref.mp4 refs/f 12 960 0.85,然後使用 tools/sheet.mjs 生成聯繫表(標題 = 幀數/12 秒;tools/strip.sh 假設為24 fps,因此其標籤在12 fps幀上會是實際時間的一半)。仔細觀看。撰寫 refs/analysis.md,內容需包含 references/reference_san_diego.md 的標題:剪輯時機、動作曲線、調色盤十六進位碼、相似字型、必須複製的清單 — 並將每個參考中的裝置映射到 CL/CLX 裝置或標記為「新裝置」;列出需要刪除的 San Diego 裝置。使用者的參考資料會覆蓋下方 San Diego 的數值。

動作語法(San Diego 測量數據 — 請參閱 references/reference_san_diego.md)

  • 所有動作採用 雙幀模式(每秒12個繪圖):動作時間 q(t) = floor(t*12)/12,每個繪圖有1–2像素的圖層抖動。
  • 在標誌出現前沒有硬剪輯:使用縮放穿越、翻頁、撕紙過場、萬花筒中的六邊形孔洞、在條帶火箭後方傾斜上移。
  • 掉落:3個繪圖(邊緣進入 → 半空中 −8° → 著陸)+ 1個穩定繪圖(1.03→1);彈出則在1–2個繪圖內完成。
  • 推入細節:約1秒內指數縮放從1倍到6倍,縮放中心點線性插值到細節上。
  • 萬花筒:鏡像環,不旋轉,縮放每約0.35–0.38秒加倍;重複的貼紙僅作為一個環出現。
  • 標題從上方落下,使用指數淡出,持續9個繪圖,無過衝,白色紙張輪廓加上透視擠壓效果。
  • 翻頁約0.42秒,帶有深色捲曲的背面 → 帶有文字標誌的撕紙條帶;另一種風格是閃爍,持續2-1-2-3-2-2幀,位於條帶內部。

3 · 故事 + 節拍表(約15分鐘內發送)

撰寫 script.md:時間 | 音樂 | 看到的畫面 | 螢幕上的文字(逐字),以120 BPM網格為基礎(節拍0.5秒,24 fps)。選擇長度:

10秒(已發佈的範例)

時間節拍
0–1.0拼貼頁面;▶ 掉落(0.5秒著陸);頻道標籤;游標在0.875秒按下 ▶
1.0頁面從中央撕開 → 世界1(F1賽車穿越對角線條帶,中心點1.75秒;頭盔撞擊2.0秒;標籤)
2.5撕紙過場 → 膠捲攝影機,加速推入鏡頭,2.9–3.4秒紙製光圈(標籤)
3.5–4.5萬花筒環,4.2/4.3/4.4秒飛行物,六邊形孔洞 → 桌面
4.5–5.5桌面:4.5秒筆電,4.75/5.0/5.25秒裝備,提示輸入,5.15秒「generate ✦」→ 結果
5.5–5.95傾斜上移,條帶火箭帶走 ▶
6.0標題「KAYE / CREATIVES」(Fraunces Black Italic字型),放射狀爆發,雙翼飛機穿越
7.5–7.92翻頁 → 標誌條帶
8.0–8.5條帶內部的標誌閃爍
8.5–10SUBSCRIBE 出現,9.0秒點擊 → SUBSCRIBED ✓,9.15秒鈴鐺,緩慢推近

6秒片頭(每個影片前播放:無翻頁、無桌面、無行動呼籲):0–0.5秒主要物件掉落 · 0.75–1.5秒推入細節,1.0–1.42秒光圈 · 1.5–2.5秒萬花筒,2.17/2.33秒飛行物,2.33–2.5秒孔洞 · 2.5–2.96秒火箭傾斜上移 · 3.0秒標題(3.75秒著陸)+ 爆發 · 4.5–4.92秒翻頁 · 5.0–5.5秒條帶閃爍 · 5.5–6秒最後一擊並保持。配樂:持續時間6,下降0.5,中段1.5,鋪墊2.5,結束2.95,升起3.0,結尾5.5。標誌在螢幕上停留 ≥ 1.0秒。

15秒宣傳片(模仿15秒的參考):0–0.5秒主要物件掉落 · 0.5–2.5秒彈出 · 2.5–3.5秒推入 + 光圈 · 3.5–5.5秒萬花筒,5.33秒孔洞 · 5.5–7.5秒世界2,由飛行物引領的爆發 · 7.5–9.5秒世界3 / 產品時刻 · 9.5–10.5秒火箭 · 10.5秒標題(11.25秒著陸) · 12.5–12.92秒翻頁 · 13.0–13.5秒閃爍 · 13.5–15秒行動呼籲。

30秒:請參閱 assets/examples/kaye_30s_scenes.js 和 kaye_30s_score.html(手機廣告、勒索信字型、縮圖牆)。

為其他品牌重新換皮

裝置kaye(YouTube)例如咖啡店
主要物件掉落▶ 播放按鈕杯子 / 咖啡豆袋(使用 CL.sprite + CL.drop)
彈出相機道具可頌、咖啡豆
撕紙 → 世界1F1賽車穿越條帶烘焙機滾筒、農場
推入 + 光圈相機鏡頭(cam_front)杯中的咖啡油脂(在精靈像素中測量中心點和半徑;光圈公式請參閱 api.md)
萬花筒環汽車、膠捲咖啡豆、杯子(每個環一個貼紙)
桌面 + 螢幕提示 UI櫃檯 + 訂單票(使用 CLX.tag / CLX.ransom)— 或者刪除此部分
火箭條帶上的 ▶杯子在條帶形成的煙霧上
標題 / 條帶頻道名稱 / kaye.creatives店名 / 標誌或 @帳號
行動呼籲SUBSCRIBE + 鈴鐺 + 游標帳號 + 地址晶片(CLX.tag),營業時間星星(CLX.star)
CLX.play、subscribe、thumb、screen 和 cursor 是YouTube專屬裝置。collage.js中的背景使用固定的剪裁名稱(CL.page:grass_strip + rocks_;CL.diag:rocks_ + cassette;CL.cloudsky:cloud_1..4):零程式碼的換皮方式是生成相同名稱的替代物品(grass_strip = 一條撕碎的咖啡豆條帶,rocks_* = 黑白半色調的麻布袋);否則將 pageLayers 複製到 scenes.js 中。更新 warm() 中的 cuts: 清單以包含新名稱。

4 · 剪裁(5分鐘,每個約2點數)

僅處理程式碼無法繪製的部分 — 提示詞範本、範例集和去背請參閱 references/cutouts.md。使用 tools/greenkey keyframes/raw/x.png cutouts/x → 輸出包含alpha通道的PNG,多物件圖層會自動分割。在彩色背景上渲染檢查表並發送。 真正的標誌檔案 → 放到 cutouts/logo.png,使用 CL.sprite 在翻頁效果的 drawUnder 內部繪製;閃爍效果的外觀 = logoBand 樣式背景 + 該精靈。對於文字標誌,設定大小為 min(190, 0.78·W / measured width)。

5 · 以程式碼編輯

comp/scenes.js 即為影片:包含 COPY(螢幕上的文字)、場景函式(pageScene、f1Scene、camScene、kalDraw、deskScene、titleBg、titleScene、endScene)、轉場(wipe、ripDraw、tearDone)、K.setup({bars}) 的推近縮放。COPY之外的文字:提示UI的「PROMPT」/標題(CLX.screen o.title)、「posters」閃爍效果中的海報字形(collage_fx.js)— 請一併檢查。API:請參閱 references/api.md;範例的實際時間和潛在問題:請參閱 references/edit_notes_10s.md。 修改時間軸的方式是重新映射時間點,而非直接編輯文字值:使用 Cut(a, b, (ctx, t) => titleScene(ctx, t + (6.0 - a)))。確保偏移量為 1/12 秒的倍數。繪製相鄰場景的區塊會一起移動(kalDraw→deskScene 透過 drawNext,titleBg→deskScene 在 71/12 之前,endScene→titleScene/titleBg)。然後更新 K.setup({bars})、配樂提示和靜止畫面的時間。超過影片時長的時間將被限制到最後一幀。 標題字型存在於4個地方:comp/index.html 中的 <link>(載入字型家族中的一種樣式)、comp/film.js 中的 fonts() 列表(否則精靈會使用備用字型渲染)、COPY.titleFont,以及 comp/font_sheet.html 中用於候選字型的 <link>。西里爾字母文字:Ultra、Fraunces、Cinzel、Bevan、Abril Fatface、Shrikhand、Chango、Rye、Lilita One、Bungee、Chewy 和 Gluten 不支援西里爾字母 — 請使用 Rubik / Rubik Spray Paint、Unbounded、Yeseva One、Lobster、Playfair Display、Russo One 作為標題和 logoBand o.font,並檢查勒索信字型晶片。 靜止畫面:使用 node tools/capture.mjs comp/index.html review/st --stills 0.5,1.75,…。

6 · 音樂

audio/score.html 在瀏覽器中合成配樂(無需樣本):放克律動 + 紙張擬音(拍擊、撕扯、呼嘯、爆裂、打字、點擊、鈴聲)、限制器。在其第一個 <script> 中設定 window.SCORE_CONFIG {dur, drop, mid, build, vac, lift, end},數值來自節拍表,並使用 window.SCORE_CUES = {…} 移動提示點;刪除 paper() 中影片不需要的事件行(搜尋 CUE.car、CUE.plane、CUE.type、CUE.gen、CUE.subClick、CUE.ding)— 將提示設為 null 會引發錯誤。使用 ?lv_<name>=0 靜音特定圖層。

node tools/render_audio.mjs "<project>/audio/score.html" audio/score.wav
afconvert -f m4af -d aac -b 256000 audio/score.wav audio/score.m4a
python3 tools/music_window.py audio/score.wav --hits 0.5:0.35,1.0:1.0,6.0:1.0,7.5:0.45,8.5:1.0   # 每個大節拍在其視窗中音量最大
python3 tools/music_window.py audio/score.wav --timeline 0.25

如果使用他們自己的曲目:執行 python3 tools/music_window.py track.mp3 --len <dur> → 選擇一個視窗 → 執行 python3 tools/cut_audio.py track.mp3 <start> <dur> audio/score.m4a → 根據曲目的節拍重新調整畫面的時間(網格 = 曲目的 BPM)。你無法聽到音頻 — 請透過數值驗證(請參閱 references/music_notes_10s.md)並告知使用者。

7 · 草稿 → 選擇 → 最終版本

tools/render_film.sh draft                       # 10秒影片約需30秒 → 產出 <slug>_draft.mp4(以及 .frames_draft)
tools/strip.sh .frames_draft review/strip.png 1
tools/font_sheet.sh "LINE1|LINE2"                # 在實際處理和影片的調色盤中顯示編號的標題字型
tools/palette_sheet.sh 0.75 3.75 6.9 8.75        # 在關鍵幀上顯示 comp/grade.js 的每個調色盤(0 = 原始顏色)
tools/render_film.sh final audio/score.m4a <slug>_final.mp4   # PNG 幀,30 Mbps

在 comp/index.html 中使用 window.PALETTE = '<name>' 套用所選的調色盤(null = 原始顏色)。grade.js 會重新著色每個像素,包括照片和標誌:若要使用品牌顏色,請在角色中新增一個包含品牌十六進位碼的 PALS 條目(紅色 → 主色),並檢查產品照片和標誌是否仍然正確 — 或者設定為 null 並直接編輯 CL.C / CLX.PAL。

發送前進行品質檢查(親自查看畫面)

  • 同步:畫面事件與 --hits / --timeline 峰值對齊,誤差 ≤ 1 幀。
  • 雙雙幀模式:幀對的哈希值僅在刻意的1幀事件處不同。
  • 連接:無空白/跳動幀;除標題/標誌停留外,無靜止超過約1秒的內容。
  • 無任何元素遮蓋主要物件、標題、按鈕標籤、URL(需注意游標路徑!)。
  • 標籤在紙張晶片上 ≥ 36 像素,每個顯示 ≥ 0.8 秒;標題 ≥ 1.5 秒;標誌 ≥ 1.5 秒(對於 ≤ 8 秒的影片,≥ 1.0 秒)。
  • 無全畫面閃爍;條帶閃爍的亮度步進方向一致。無遺留的灰色「缺少剪裁」卡片。
  • 時長精確(透過 afinfo 檢查),音頻存在,峰值 ≤ −1 dBFS。
  • 每個專案一次只進行一個渲染(render_film.sh 會清除其幀資料夾)。

檔案

需求位置
測量到的 San Diego 語法、鏡頭、調色盤、字型references/reference_san_diego.md
CL / CLX APIreferences/api.md(以及 collage.js / collage_fx.js 的標頭註解)
剪裁提示詞、範例集、去背說明references/cutouts.md
配樂提示圖與測量數據references/music_notes_10s.md
編輯注意事項與陷阱references/edit_notes_10s.md
代理工作流程references/agent_workflow.md
拼貼 JavaScript 引擎comp/collage.js
拼貼效果(閃爍、海報、勒索信字型)comp/collage_fx.js
主要影片邏輯與場景comp/scenes.js
調色盤(色調映射 LUT)comp/grade.js
頁面版面配置定義comp/collage.js
影片渲染腳本tools/render_film.sh
字型選擇表生成器tools/font_sheet.sh
調色盤選擇表生成器tools/palette_sheet.sh
從網頁捕捉靜止畫面tools/capture.mjs
音頻渲染tools/render_audio.mjs
音頻裁切tools/cut_audio.py
音頻窗口分析tools/music_window.py
綠幕去背tools/greenkey
生成聯繫表tools/sheet.mjs
生成條帶圖tools/strip.sh
參考資料分析範本references/reference_san_diego.md
剪裁提示詞與範例references/cutouts.md
配樂提示點references/music_notes_10s.md
編輯注意事項references/edit_notes_10s.md
代理工作流程references/agent_workflow.md
10秒範例場景assets/examples/kaye_10s_scenes.js
10秒範例配樂assets/examples/kaye_10s_score.html
30秒範例場景assets/examples/kaye_30s_scenes.js
30秒範例配樂assets/examples/kaye_30s_score.html
10秒範例影片assets/examples/kaye_creatives_10s.mp4
30秒範例影片assets/examples/kaye_creatives_30s.mp4

相關技能