資訊圖口播影片
位置與交付佈局(架構 v1.11)
- 交付倉根必有
AGENTS.md(如何使用本模板);本技能固定在.agents/skills/remotion-infographic-video/。 tests/在倉庫根(與.agents/同層),屬開發門禁/CI,不屬於技能執行時,不隨「只裝技能」複製。.env只在本技能目錄,不是倉庫根。
使用前準備(複製即用)
- 複製:
- 整倉使用:克隆/複製交付倉庫根並打開(含根
AGENTS.md與tests/)。 - 只裝技能:將
.agents/skills/remotion-infographic-video/複製到目標專案的相同路徑(含scripts/與其下lib/)。 - 技能包本身不需要
pip/npm安裝;scripts/只使用 Python 標準庫,設定好.env後即可執行步驟 0–5。
- 整倉使用:克隆/複製交付倉庫根並打開(含根
- 配置
.env:在本技能目錄執行cp .env.example .env,編輯.env填寫:- 必填:
DOUBAO_TTS_API_KEY=(等號後寫入 Key,不要引號) - 選填:
DOUBAO_SPEAKER=(預設音色請見 VOICE) .env已被.gitignore忽略,不要把 Key 貼進聊天,也不要換其他配音引擎。
- 必填:
- 環境前提(自行安裝,腳本不代裝):Node 18+、Python 3、ffmpeg、ffprobe、網路。
- 開始製作:使用者說「開始製作」或同等意圖時:
- 先跑
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 進入修復。
固定步驟
- 前置檢查:
python3 scripts/check_env.py。退出碼 3 時按上文提示填.env後重跑。 - 收題:確定 topic、slug、畫幅,寫
<slug>/job.json(未提畫幅預設橫屏);使用者點名平台時寫platforms,否則按 PUBLISH 的預設平台。 - 寫稿:寫
script.md(## Sxx 段名+- [01] 文字 {context: … | rate: 0 | pause: 300})和sources.md(結尾 json 塊),執行python3 scripts/validate.py sources <slug>/script.md <slug>/sources.md;無出處的數字必須刪掉或補來源。 - 配音:如果環境中有輸入輸出等同的 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重跑。 - 分鏡:寫
storyboard.json(每句至少被一個鏡頭覆蓋,段轉場與鏡頭入場取列舉值),執行python3 scripts/validate.py storyboard <slug>/storyboard.json --timeline <slug>/voice/timeline.json。 - 素材:用
python3 scripts/fetch_asset.py的add登記每個素材,prune清除未用素材;授權不明的素材不得使用。 - 建專案:
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。 - 自檢:
bash scripts/check_project.sh <slug>;失敗時讀check/report.json修復後重跑,總共最多 3 次,仍失敗就停下報告。 - 渲染:
bash scripts/render.sh <slug>產出成片(<slug>/out/video.mp4)與封面(<slug>/publish/cover_<W>x<H>.png),並自動驗收。 - 發布文案與交付:按 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 中的內容:成片路徑與時長、畫幅、封面、各平台標題與簡介、標籤、素材署名、輸出目錄和備註。