宣傳影片
路徑約定:
<skill>指本 SKILL.md 所在的目錄,scripts/、references/、assets/、templates/都在它下面;命令裡的<skill>/scripts/…換成這個目錄的絕對路徑再執行。
預設值
- 畫幅 16:9(1920×1080,30 fps)。使用者指定尺寸時按使用者要求,支援
16:9、9:16、1:1、4:5;使用者提到抖音、小紅書、影片號、Reels 等豎屏平台時用9:16。 - 語言跟隨使用者素材。第一階段不做配音;螢幕文字已承載資訊時字幕預設關閉。
- 字體不預設落到 DM Sans / SF Pro / 蘋方:按 references/typography.md 做「字體提案」——官網或品牌手冊的字體 + 按調性挑 3 組配對,用
fonts.py specimen以片子的真實文案出圖給用戶選,選定後寫進選型卡第五行。 - 轉折不硬切、聲音不落數字靜音、文字過細節清單:交付前按 references/detail-pass.md 過一遍(切換點清單 →
rn sheet --around→rn qa/rn cuts→typo_lint.py/font_check.py),使用者發現的「突兀」「音訊有問題」「不夠優雅」大多出在這裡。 - Logo 由使用者提供。未提供 Logo 時用品牌名文字標,並在
brand.disclaimer寫明聲明,例如「範例品牌,僅用於演示」。使用者沒有給出的統計數據一律視為範例,也寫進聲明,不得編造成真實數據。 - 配樂優先級:使用者提供 > 內建曲庫
pick_music.py(預設,自動避開最近用過的曲子)> 線上開源曲庫補充 >synth_bgm.py合成兜底。
依賴:rn(renoise-kit)
畫面與混音由 Remotion 渲染;所有機械、易錯的環節交給 rn:幀精確取幀與接觸表、讀音樂(響度 / 拍點 / 速度)、成片編碼與母帶、交付檢查、硬切 / 無聲 / 爆音審計。render.py 已經接好,手動時直接用 rn <命令> --help 查參數。
brew install ffmpeg-full && export PATH="$(brew --prefix ffmpeg-full)/bin:$PATH" # macOS:rn 呼叫系統 ffmpeg
apt install ffmpeg # Debian / Ubuntu
winget install Gyan.FFmpeg # Windows(裝完新開終端)
uv tool install "renoise-kit[all]" # 提供 rn 命令
macOS、Linux、Windows 通用:skill 的腳本全是 Python,不依賴 bash。下文的 python3 在 Windows 上換成 python(或 py -3);路徑用 / 或 \ 都可以。
| 要做的事 | 命令 |
|---|---|
| 看素材 / 預覽 / 靜幀資料夾 | rn sheet <影片或資料夾> [--fps 4 | --around 幀時間,.. --span 4 --diff] |
| 讀配樂:響度、拍點、BPM(含半 / 倍速候選) | rn listen bgm.wav --json out/music.json |
| 逐幀亮度 / 運動 / 頻段 / 鼓點 / 爆音 | rn signal <檔案> -o out/signal.png --json out/signal.json |
| 成片編碼、母帶、換聲音、出 1080p | rn finish raw.mp4 -o out.mp4 [--audio mix.wav] [--height 1080] |
| 交付檢查(格式、響度、true peak、無聲、電平跳變、爆音、黑幀、凍幀、固定幀率) | rn qa out.mp4 [--accept CHECK@秒] |
| 硬切清單 + 每刀前後幀 | rn cuts out.mp4 --sheet out/audit/cuts.jpg |
| 和上一版 / 參考片對比 | rn compare 新.mp4 舊.mp4 --cuts |
| 畫面文字(審字、讀參考片字幕) | rn text out.mp4 |
選模式與風格路由
每支片先按 references/style-router.md 做四層選型:① 模式 ② 視覺基調 ③ 敘事骨架 ④ 增強層(≤2),再加 ⑤ 字體(typography.md),寫成五行「選型卡」放在分鏡表上方給使用者確認;只讀選中那幾份文件。衝突時:使用者明說 > 路由表裡的口碑記錄 > 行業預設。下表是①模式與各擴展包的入口:
| 使用者要什麼 | 模式 | 先讀 | 範例 |
|---|---|---|---|
| 產品/服務宣傳片、發布片 | 電影級宣傳片(預設) | cinematic.md → motion-craft.md | examples/youware/、examples/renoise/ |
| 快速講解、社媒批量 | 模板片 | storyboard.md、styles.md | storyboard.json |
| 個人介紹、帳號宣傳 | 個人品牌片 | cinematic.md「個人品牌與像素頭像」 | — |
| 手機、設備等硬體概念 | 硬體概念片 | cinematic.md「實體硬體產品」 | — |
| 把多支成片剪成合集 | 作品合集 | recap.md | — |
| 秀動效手藝、片頭、頻道 ID | 動效作品集 | motion-craft.md | examples/motion-reel/ |
| 音樂驅動、液態融合、數據圖表、無限穿越、透視揭示 | 風格擴展包 01(疊加在電影級宣傳片上) | style-pack-01.md(音樂驅動先跑 audio_features.py) | — |
| 一鏡到底、不要硬切、學參考片那種連續感;產品有「輸入→產出→持續運行」鏈路 | 風格擴展包 02:一鏡到底接力(敘事骨架,配旁白) | style-pack-02.md(旁白先跑 narrate_mimo.py,可複製客戶本人聲音) | src/cinematic/relay/ 元件 |
| 圖示會動、動態 emoji、流程節點逐個亮起 | 動效圖示(疊加在任何模式上) | animated-icons.md(emoji 先跑 fetch_noto_emoji.py) | examples/animated-icons/ |
| 品牌調性片、品牌升級、「Claude 那種」官方質感、蘋果式人文感、不演示具體功能 | 風格擴展包 03:概念階梯 · 標本冊(點→線→面→體→場,每章一個價值句,結尾點寫 Logo;60s,鋼琴) | style-pack-03.md(字形標本先跑 glyph_outline.py) | examples/youware-ladder/ |
| 模型/產品發布片、要「既有質感又要證明實力」;名字能做文字遊戲;有官方數量級事實(可數的奇觀) | 風格擴展包 04:十四行詩 · 3D 景深(劇本就是一首詩,一行一小節;規格書 HUD 只引官方原話;68 萬筆畫對齊成品牌星形) | style-pack-04.md | — |
| 「N 種風格」合集、一個產品換多種畫風講、給客戶選風格;綜藝花字 / 貼紙風科普 / 等軸 2.5D 微縮城 | 風格擴展包 05:商用風格庫(風格目錄片模板 + 花字 + 貼紙 + 等軸;也可單獨疊在任何模式上) | style-pack-05.md(Three.js 樣片先預渲染成影片再進目錄片) | examples/style-catalog/ |
| 逐幀手繪 / 一筆畫線條 / 拼貼 / 扁平插畫 / 包浩斯海報 / 液態 / 彌散玻璃 / 3D 軟萌字針陣 / 賽博 HUD / 像素 / 合成波,或要完整 15 種風格合集 | 風格擴展包 06:商用風格庫第二批(11 種畫風元件 + 15 格目錄片 + 按小節延長配樂 / 復古合成配樂) | style-pack-06.md(濾鏡區域與 three 包圍盒兩個坑必看) | examples/style-catalog/(Reel15.tsx) |
| 新模型發布當天的「同題對比」短片:兩個模型的動畫 SVG / 小作品原樣並排 + YouWare 輸入框和模型選單 + 結尾鉤子 | 模型輸出對比片(逐幀確定的 SVG 播放器、命名隔離、同倍率推近、按小節接配樂) | svg-compare.md(先確認模型官方名、推理強度、提示詞原文和生成來源) | examples/svg-compare/ |
| Dribbble 級 UI 動效、一個形狀連續變形講完產品流程 | 單形狀宣傳片(預設 16:9 宣傳片版;純 1:1 循環版可選) | one-shape.md(先要狀態清單、配色、曲子,排好節拍網格再寫程式碼) | examples/morph-promo/、examples/morph-loop/ |
所有模式共用同一套設計原則、動效層、曲庫和音效庫。
設計原則(預設執行)
所有片子按 references/design-principles.md 製作:Apple 式一屏一想法、大字留白、克制用色與可信材質;統一的 lucide-react 圖示(1.75 線寬,功能節點用 IconTile;要動就用 lucide-animated,接觸幀播一次),emoji 只用 Noto 動態版且預設不用,不用佔位圖形;每一幀先定焦點與情緒,運鏡有動機(推軌、焦點轉移、穿越、甩鏡、猛推);聲音落在動作接觸幀。交付前逐條過文中的「大師審片」清單。
內容層搭好後再加「動效層」(references/motion-craft.md):先用官網素材,再把粒子、變形、遮罩疊在這些畫面上(例如粒子在產品截圖上聚成口號)。不要單獨切一段和產品無關的黑底秀。段與段之間寫清轉場(優先匹配剪輯),開場物件在結尾回來。
工作流程
複製此清單並跟蹤進度:
- [ ] 1. 素材分析:產品、行業、受眾、賣點
- [ ] 2. 一次性確認:目的、風格、時長、畫幅、語言、配樂
- [ ] 2b. 字體提案:按調性出 3 組配對 + 品牌現用字體的提案圖(fonts.py specimen)→ 用戶選
- [ ] 3. 腳本分鏡(含每段主手藝與轉場列)→ 等使用者確認
- [ ] 4. 建工程 → 樣幀 → 等使用者確認畫面
- [ ] 5. 配樂:pick_music.py 選曲對拍,時間軸按曲子 BPM 重排
- [ ] 6. 低清預覽 → 修改
- [ ] 6b. 細節審片:切換點清單 + 前後 4 幀(rn sheet --around)+ rn qa / rn cuts + typo_lint.py(給使用者看預覽之前先自己過)
- [ ] 7. 成片交付與校驗
1. 素材分析
讀完使用者給的全部內容(文案、PDF、網址、截圖、Logo)。使用者只給了網址時,按 references/brand-from-website.md 從官網提取 Logo、字體、配色和高清產品圖。提煉:
- 產品是什麼,一句話價值主張(≤ 20 字)
- 3–4 個賣點,每個配一個圖示意象
- 使用者明確給出的數據(只用這些)
- 已有視覺資產:截圖、Logo、品牌色、字體
- 行業分類與受眾:按 references/industries.md 判斷,得到推薦風格、運鏡和配樂情緒
2. 一次性確認
一次問完,只問推斷不出的項,每項把推薦選項放第一位並標註「(推薦)」。宿主有選擇題式的提問工具就用它(這類工具一次能問的題數有限,題多就按重要性分兩輪),沒有就在一條訊息裡列成編號選項:
- 影片目的:產品發布、功能演示、品牌形象、融資路演、社媒廣告
- 製作模式:電影級(真實介面演示 + 3D + 音效,產品發布/品牌片推薦)或模板片(出片快,適合講解、社媒批量)
- 電影級風格:暗場科技 / 剪紙 / 淺色編輯,按行業推薦(見 cinematic.md「風格」)
- 風格:按行業表給 3 個預設,每個附一句畫面描述(預設見 references/styles.md)
- 時長:按目的給檔位(見 references/storyboard.md),提示「時長越短,每屏文字越少」
- 畫幅:只有素材暗示豎屏或多平台投放時才問,否則直接用 16:9
- 語言
- 配樂來源:內建曲庫(推薦,給出 2–3 首候選的曲風描述)/ 自己提供 / 合成
使用者已明確說過的項不再問。
2b. 字體提案
按 references/typography.md §1:定調性 → fonts.py pairs --tone <調性>(官網是商業字體時先 fonts.py similar "<字體名>")→ 用片子的真實標題、副標題、正文、中文 / 日文出提案圖,3 組配對 + 1 組品牌現用字體:
python3 <skill>/scripts/fonts.py specimen --pair warm-soft --pair editorial-italic --pair bold-youth --combo <品牌標題字>+<品牌正文字> \
--title "..." --sub "..." --body "..." [--zh "..."] [--ja "..."] --out <專案目錄>/out/type-proposal.png
發圖給使用者選;選定後 fonts.py fetch <ids> --to <專案目錄>,寫完文案再 fonts.py subset <專案目錄> --text-file copy.txt(中日文)。授權按 typography.md §8:Fontshare 字體不子集化、不隨工程交給第三方。
3. 腳本分鏡
使用者提供了腳本就按腳本拆成場景;否則按 references/storyboard.md 的結構編寫。表格上方先寫選型卡(style-router.md),再以表格給使用者確認:
| # | 時長 | 場景類型 | 畫面 | 螢幕文字 | 運鏡 | 主手藝 / 轉場 |
|---|
未經使用者確認不進入渲染。 使用者修改後更新表格再確認一次。
4. 建工程與樣幀
python3 <skill>/scripts/setup_project.py <專案目錄>
電影級:storyboard.json 只提供品牌資訊,畫面在 src/Film.tsx 裡按 references/cinematic.md 編寫(參考 templates/remotion/examples/youware/),樣幀用 render.py <專案目錄> film-stills <幀號...> 逐段抽查,預覽 film-preview,成片 film(輸出 out/film.mp4 並做響度檢查)。以下 storyboard 校驗與 render.py 針對模板片。
- 把確認後的分鏡寫入
<專案目錄>/storyboard.json(欄位見 storyboard.md)。 - 素材放進
public/:brand/(Logo)、fonts/(fonts.py fetch下載,含fonts.json與LICENSES.md)、images/(截圖)、music/。storyboard.json裡的路徑相對public/。 - 校驗並渲染樣幀(每個場景的中間幀):
python3 <skill>/scripts/check_storyboard.py <專案目錄>/storyboard.json
python3 <skill>/scripts/render.py <專案目錄> stills
ERROR必須修復。WARN 閱讀時長表示文字讀不完:縮短文字或延長場景。- 逐張看
out/stills/scene-N.png(out/stills-sheet.jpg是一頁總覽),按 design-principles.md「大師審片」清單檢查(焦點、留白、溢出、圖示、對比度),修完再把樣幀給使用者看(宿主能發文件就直接發圖,否則給出檔案路徑)。 - 使用者想比較風格時,改
style重新出樣幀,把舊樣幀另存為out/stills-<風格>/以便並排對比。
5. 配樂
按 references/music.md 處理。無論哪種來源都要設定 music.bpm(rn listen 讀出),時間軸會把每個剪輯點對齊到節拍。
需要旁白時按 cinematic.md「旁白配音」用 voiceover.py 生成(小米 MiMo TTS 或本機 say),時間軸改由配音時長驅動。成片響度要改時只重做音軌、不重渲畫面:rn finish out/film.mp4 -o out/film-loud.mp4 --copy-video --lufs -12。
6. 預覽
python3 <skill>/scripts/render.py <專案目錄> preview
半解析度快速出片。把 out/preview.mp4 路徑給使用者,按回饋修改 storyboard.json 後重渲。
6b. 細節審片
給使用者看預覽之前,按 references/detail-pass.md 自己過一遍:
rn sheet out/film-preview.mp4 --around <切換點秒數,...> --span 4 -o out/seam.jpg # 每個掛載 / 卸載 / 參數切換點前後 4 幀(秒數 = 幀號 / 30)
rn qa out/film-preview.mp4 # 黑幀、凍幀、數字靜音、電平跳變、爆音(render.py 已自動跑)
rn cuts out/film-preview.mp4 --sheet out/audit/cuts.jpg # 硬切清單,每刀前後各一幀
python3 <skill>/scripts/typo_lint.py storyboard.json # 或 --ts src/film/*.ts*;--fix 自動修 JSON
python3 <skill>/scripts/font_check.py public/fonts # 光學字號軸、真標點字形
每一條要嘛修掉,要嘛寫進專案根目錄的 qa-accept.txt(一行一個 檢查項 或 檢查項@秒,# 後寫原因)並在交付說明裡寫明「有意為之」;之後的審計不再重複報它。
7. 成片
python3 <skill>/scripts/render.py <專案目錄> final
產出 out/final.mp4、out/cover.png,有 caption 時還有 out/captions.srt。交給使用者的檔案一律是 rn finish 的輸出(render.py 的 film / final 會自動做:畫面單獨渲染、混音另渲 WAV,再由 rn finish --audio 合成)。Remotion 直出的 MP4 在一些播放器和上傳平台裡只顯示一半時長(使用者回饋「發出去 38 秒,打開只有 19 秒」),根因見 references/detail-pass.md「交付編碼」。自己手動渲染 4K 時:
npx remotion render src/index.ts Film out/film-raw-4k.mp4 --muted # 構圖本身是 3840×2160;1080p 構圖加 --scale=2
npx remotion render src/index.ts Film out/mix.wav --codec=wav --config=remotion.audio.config.ts
rn finish out/film-raw-4k.mp4 -o out/<名字>.mp4 --audio out/mix.wav
rn finish out/<名字>.mp4 -o out/<名字>-1080p.mp4 --height 1080 --lufs keep # 給微信 / 社媒
rn qa out/<名字>.mp4 # 任何要發出去的檔案都先過這一步
核對 rn qa 的結果(FAIL 必須為 0;WARN 修掉或寫進 qa-accept.txt)和 out/audit/cuts.jpg 的硬切,查看封面幀,再交付檔案路徑和簡短說明(風格、時長、配樂來源及授權、聲明內容、有意保留的 WARN)。使用者看完給出評價(喜歡 / 不如之前 / 要重做)後,把「組合 → 片子 → 反應」記進 style-router.md 的口碑記錄。
渲染約束
- 所有動畫必須由
useCurrentFrame()推導。禁止 CSS transition/animation、Framer Motion 自動播放、setTimeout、無種子的Math.random(),否則逐幀渲染會閃爍或錯位。GSAP 僅可按幀 seek 使用。 render.py需要在命令沙箱外執行(headless Chrome 要讀取 CPU 核數和 GPU):宿主給 shell 命令加了沙箱時,按宿主的方式對這條命令放開。- 整片渲染(
preview、final、film-preview、film)和首次setup_project.py(npm install)要幾分鐘,會超過多數宿主的單條命令逾時:放到背景跑(宿主有背景執行能力就用它,沒有就用系統自帶的背景方式並把輸出寫到out/render.log:macOS / Linuxnohup … > out/render.log 2>&1 &,Windows PowerShellStart-Process python -ArgumentList '…' -RedirectStandardOutput out/render.log -NoNewWindow,之後看日誌),不要高頻輪詢;stills、film-stills抽幾幀可前台跑,逾時放寬到 10 分鐘。 - 無需全域 Node:
setup_project.py會找已有 Node,找不到就下載可攜版到~/.cache/promo-video/node。ffmpeg 與rn要裝在系統裡(見「依賴」),setup_project.py缺了會提示。 hero3d渲染最慢,一支片保持 1–2 個。- 常用工具:
rn finish(交付編碼:fixed_frame_rate_flag=1、BT.709 TV 範圍、moov 前置、−14 LUFS 與編碼後 true peak ≤ −1 dBTP、--audio換成 WAV 混音、--height 1080出小版本);rn qa(交付檢查 + 黑幀 / 凍幀 / 數字靜音 / 電平跳變 / 爆音,render.py自動跑);rn cuts --sheet(硬切清單);rn sheet(精確取幀拼圖,影片或靜幀資料夾,選鏡和審片都用它,不要用ffmpeg -r 1);rn listen(BPM、拍點、響度);typo_lint.py(螢幕文字的直撇號、三個點、--、全形標點、懸掛分隔符、孤字);font_check.py(字體檔案的軸、特性、真標點字形,缺 opsz 會警告);fonts.py(字體目錄 / 配對 / 提案圖 / 下載 / 子集化 / 商業字體平替,見 typography.md);audio_features.py(配樂逐幀特徵,AudioReactive.tsx讀它的格式);pick_music.py(選曲對拍);narrate_mimo.py(旁白:MiMo 預設音色或複製客戶本人幾秒錄音,輸出逐字時間 timings.json 驅動畫面,--qa回讀校驗)。 - shell 是 zsh:
for t in $LIST不會按空格拆分,把列表直接寫在for t in 1 2 3裡;heredoc 裡有反引號或${}時用<<'EOF',否則會被 shell 展開。
擴展
- 新增場景類型:在
src/scenes/寫元件,加入src/types.ts的Scene聯合類型和src/Promo.tsx的SceneBody,並同步check_storyboard.py的SCENE_TYPES與scene_text。 - 圖片用
<Img>;GIF 裝@remotion/gif;Lottie 裝@remotion/lottie。@remotion/*包版本必須與remotion完全一致。 - AI 素材補充:客戶拍不到的人物和場景,用 Renoise 生成關鍵幀和圖生影片(需安裝 Renoise 插件並登入),畫風取自客戶自己的設計規範;模型按 Renoise 的 model-routing skill 選,每批先
estimate_cost報數量和估價、使用者同意再提交。流程、提示詞規則和底線見 references/ai-footage.md。
參考資料
- references/brand-from-website.md:從官網提取文案、配色、字體、Logo 和產品圖
- references/design-principles.md:設計原則、圖示規範、導演運鏡、聲音與大師審片清單(預設執行)
- references/detail-pass.md:細節審片:連續 / 不空 / 精三條原則,切換點清單流程,明→暗轉折的畫面與聲音配方,
rn qa的判定閾值與豁免,交付編碼,踩過的坑(交付前必做) - references/typography.md:字體系統:字體提案工作流、11 個調性 → 首選字體、17 組配對(中 / 日文對應)、頂級廣告片用什麼字體(已核實)與開源替身實測、字體檔案必須帶 opsz 軸、影片排版規則與 Display 參數、授權(OFL / ITF FFL / 廠商協議)、動效字元件(
src/cinematic/type/:VarType、OutlineFill、HandReveal、TrackIn、Decode)、細節與審片清單 assets/fonts/catalog.json:99 款精選字體(Google Fonts / Fontshare / GitHub 發行版,拉丁 + 中文 + 日文)、17 組配對、商業字體平替表、需手動下載的廠商字體清單;scripts/fonts.py讀取它- references/cinematic.md:電影級 Film 模式:風格、場景元件、產品介面與報告還原、3D、動效與音效設計
- assets/sfx/README.md:可免費商用的音效庫目錄(打字、滑鼠、UI、轉場、紙張、翻頁),
preview.wav可試聽 assets/music/catalog.json:曲庫目錄(情緒、BPM、能量到達點、授權、下載位址與 sha256);曲子不隨倉庫分發,pick_music.py首次使用時從 Mixkit 官方位址下載到~/.cache/promo-video/music/並校驗- references/industries.md:行業分類 → 推薦風格、運鏡、配樂、合規提示
- references/styles.md:4 套風格預設與品牌色覆蓋規則
- references/camera.md:運鏡詞彙、經典手法映射與節奏規則
- references/storyboard.md:
storyboard.json欄位、時長檔位、敘事結構與文案規則 - references/music.md:內建曲庫與
pick_music.py、擴充開源曲庫、BPM 對拍、合成兜底、響度與授權 - references/motion-craft.md:動效層:克制/表現兩個檔位、手藝地圖、轉場設計、動效作品集
- references/recap.md:多支成片剪成合集(Apple 式輪播回顧)
- references/animated-icons.md:動效圖示(lucide-animated 467 個,逐幀替身已對照驗證)與 Noto 動態 emoji(
fetch_noto_emoji.py),節奏規則與授權 - references/style-router.md