Communitygithub.com

atlantis-mk/remotion-video-template

根據一個主題,全自動製作深色資訊圖風格的雙語口播影片:撰寫口播稿、豆包配音、分鏡與素材、Remotion 動畫、渲染成片、封面與發布文案。支援橫屏與豎屏。

remotion-video-template 是什麼?

此技能透過 Remotion 自動化工作流程,將使用者提供的單一主題轉換為深色資訊圖風格的解說影片。它支援橫屏 (1920×1080) 與豎屏 (1080×1440) 格式,並遵循一系列嚴格的規範以確保品質與一致性。流程包含腳本寫作(需附資料來源)、基於豆包 TTS 的配音(僅讀取本機 .env 檔案的 API 金鑰,杜絕洩密)、以結構化 JSON 表示的分鏡與素材獲取、Remotion 專案搭建與渲染,以及最終的發布文案(標題、描述、標籤)生成。此技能專為 Claude Code、Cline 或 Cursor 等 AI 代理設計,腳本依賴 Python 標準函式庫,無需額外套件安裝,但需 Node 18+、ffmpeg 與 Python 3 環境。其強制性的檢查機制(如退出碼 3 要求填寫金鑰、退出碼 4 處理驗證失敗)確保了執行順序與錯誤處理的可靠性,適合需要高品質、自動化影片產出的內容創作者或團隊。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/atlantis-mk/remotion-video-template/tree/HEAD/.agents/skills/remotion-infographic-video

在你喜歡的 AI 中提問

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

說明文件

資訊圖口播影片

位置與交付佈局(架構 v1.11)

  • 交付倉根必有 AGENTS.md(如何使用本模板);本技能固定在 .agents/skills/remotion-infographic-video/。
  • tests/ 在倉庫根(與 .agents/ 同層),屬開發門禁/CI,不屬於技能執行時,不隨「只裝技能」複製。
  • .env 只在本技能目錄,不是倉庫根。

使用前準備(複製即用)

  1. 複製:
    • 整倉使用:克隆/複製交付倉庫根並打開(含根 AGENTS.md 與 tests/)。
    • 只裝技能:將 .agents/skills/remotion-infographic-video/ 複製到目標專案的相同路徑(含 scripts/ 與其下 lib/)。
    • 技能包本身不需要 pip / npm 安裝;scripts/ 只使用 Python 標準庫,設定好 .env 後即可執行步驟 0–5。
  2. 配置 .env:在本技能目錄執行 cp .env.example .env,編輯 .env 填寫:
    • 必填:DOUBAO_TTS_API_KEY=(等號後寫入 Key,不要引號)
    • 選填:DOUBAO_SPEAKER=(預設音色請見 VOICE)
    • .env 已被 .gitignore 忽略,不要把 Key 貼進聊天,也不要換其他配音引擎。
  3. 環境前提(自行安裝,腳本不代裝):Node 18+、Python 3、ffmpeg、ffprobe、網路。
  4. 開始製作:使用者說「開始製作」或同等意圖時:
    • 先跑 python3 scripts/check_env.py(可用 --skill-dir <本技能包絕對路徑>;預設即本目錄)。
    • 退出碼 3:提示在 .agents/skills/remotion-infographic-video/.env(或本技能絕對路徑下的 .env)填寫 DOUBAO_TTS_API_KEY,等使用者回覆「填好了」後重跑;此前不配音、不建專案。
    • 通過後:訊息裡已有選題則直接進入固定步驟;否則只問一句選題(可註明「豎屏」;預設橫屏 1920×1080,豎屏 1080×1440,規則見 LAYOUT)。平台名不影響畫幅。

硬規則

  • Key 只從本技能目錄 .env(交付倉為 .agents/skills/remotion-infographic-video/.env)的 DOUBAO_TTS_API_KEY 讀取;不讓使用者在聊天裡貼 Key,不換配音引擎,不在任何輸出裡顯示 Key。
  • 不發布、不上傳:只產出成片、封面和文案檔案。
  • 數字必須有出處;上螢幕數字帶來源角標;示意圖標「示意」。
  • 每個腳本 stdout 最後一行是 JSON 摘要;按退出碼處理:3 缺 Key(提示填 .env,停止)、4 鑑權失敗(停止)、5 修正上游產物、6 只重跑失敗項、7 進入修復。

固定步驟

  1. 前置檢查:python3 scripts/check_env.py。退出碼 3 時按上文提示填 .env 後重跑。
  2. 收題:確定 topic、slug、畫幅,寫 <slug>/job.json(未提畫幅預設橫屏);使用者點名平台時寫 platforms,否則按 PUBLISH 的預設平台。
  3. 寫稿:寫 script.md(## Sxx 段名 + - [01] 文字 {context: … | rate: 0 | pause: 300})和 sources.md(結尾 json 塊),執行 python3 scripts/validate.py sources <slug>/script.md <slug>/sources.md;無出處的數字必須刪掉或補來源。
  4. 配音:如果環境中有輸入輸出等同的 MCP 配音工具(tts_synthesize)可用就使用它,否則執行 python3 scripts/tts_doubao.py <slug>/script.md --out-dir <slug>/voice;兩者產出的 timeline.json 用同一 Schema(assets/schemas/)校驗:python3 scripts/validate.py timeline <slug>/voice/timeline.json。失敗句用 --only 重跑。
  5. 分鏡:寫 storyboard.json(每句至少被一個鏡頭覆蓋,段轉場與鏡頭入場取列舉值),執行 python3 scripts/validate.py storyboard <slug>/storyboard.json --timeline <slug>/voice/timeline.json。
  6. 素材:用 python3 scripts/fetch_asset.py 的 add 登記每個素材,prune 清除未用素材;授權不明的素材不得使用。
  7. 建專案:python3 scripts/scaffold_project.py --job <slug>/job.json --out <slug>/project 生成專案,按範例寫各段場景(assets/example/),再執行 python3 scripts/build_timeline.py --timeline <slug>/voice/timeline.json --storyboard <slug>/storyboard.json --subtitles <slug>/voice/subtitles.json --manifest <slug>/assets-manifest.json --project <slug>/project,然後在專案內 npm ci。
  8. 自檢:bash scripts/check_project.sh <slug>;失敗時讀 check/report.json 修復後重跑,總共最多 3 次,仍失敗就停下報告。
  9. 渲染:bash scripts/render.sh <slug> 產出成片(<slug>/out/video.mp4)與封面(<slug>/publish/cover_<W>x<H>.png),並自動驗收。
  10. 發布文案與交付:按 PUBLISH 為每個目標平台各寫一套 publish/<平台>/title.txt、description.txt,標籤按平台寫 publish/<平台>/tags.txt(一行一個),執行 python3 scripts/validate.py publish <slug>、python3 scripts/validate.py deliverable <slug>、python3 scripts/validate.py leak <slug>,再用 python3 scripts/fetch_asset.py credits-diff --manifest <slug>/assets-manifest.json --slug-dir <slug> 覆核署名。

風格硬規則摘要

  • 配色、字型大小、動效數值只來自 assets/tokens.json,背景色基調 #070A0F;場景程式碼不寫色值(STYLE)。
  • 入場統一彈簧,段轉場 5 種、鏡頭入場 3 種,取 storyboard 列舉(MOTION)。
  • 元件只使用註冊表內的 15 個,清單外的在專案內新寫並使用 tokens + useLayout()(COMPONENTS)。
  • 只有四層 background / scene / hud / subtitle,沒有片尾署名畫面;片長 = 配音長度。
  • 亂數只用 random(seed),禁止 Math.random。
  • 佈局從畫布寬高推導,src/ 中只有 src/layout/presets.ts 可寫畫布尺寸(LAYOUT)。
  • 稿件寫法見 SCRIPT,配音參數見 VOICE,素材授權與署名見 ASSETS。

禁止事項

  • 不發布、不上傳到任何平台。
  • 不洩露 Key:不顯示、不寫入產物,不讓使用者在聊天中貼 Key,不換其他配音引擎。
  • 不使用授權不明的素材;署名、簡介、標題不放連結。
  • 不編造資料:沒有出處的數字不進稿件、不上螢幕。
  • 選題之後到交付之間不向使用者提問,也不索要任何素材。

交付

一次性回報 deliverable.json 中的內容:成片路徑與時長、畫幅、封面、各平台標題與簡介、標籤、素材署名、輸出目錄和備註。

相關技能