Video Shotcraft(專案版)
完整上游技能位於 skills/video-shotcraft/(git commit e1d15d9,完整複製;請勿編輯)。此檔案為路由器,非取代品。 在建置之前,請先完整閱讀 skills/video-shotcraft/SKILL.md,然後使用下方的對應表來取用所有功能。除非另有註明,否則所有路徑皆相對於 skills/video-shotcraft/。
專案預設(覆蓋上游的「詢問模式」)
- 模式:自主自由創作(
references/pipeline.md,階段 0–7,無階段性確認)。僅在使用者提出以下要求時才切換:「dùng template」→template/TEMPLATE.md;「cùng làm / duyệt từng bước」→references/guided-free-creation.md;單一鏡頭 → 從references/shots/中選取一張分鏡卡。 - 階段 0–3(產品簡報、視覺方向、鏡頭對應、故事板)已由本專案的
docs/<video>/brief.md+script.md完成;請將其帶入設計規格中,並附上鏡頭表格| # | 時間 | 鏡頭 | 主要動作 |。 - 風格來自簡報,絕不能來自其他影片或 Ink Press 範本。可借用動態語法與調整後的參數;但顏色/字型需重新設計。目標為 9:16 1080×1920,因此 16:9 的配方必須重新佈局,不可逐像素複製。
- 每個影片只渲染一個檔案:
out/<video_id>-<voice-slug>-reel.mp4(含 BGM),透過scripts/pipeline.py render。不渲染無 BGM 版本(使用者決定;覆蓋上游的雙版本規則與最終審查項目 A8)。
功能對應表
| 需求 | 使用方式 |
|---|---|
| 視覺化瀏覽/選取鏡頭 | 圖庫:cd gallery && python3 -m http.server 4178 → http://localhost:4178/library.html(150 支片段已在 gallery/media/ 中;索引位於 gallery/api/library.json) |
| 鏡頭配方(約 124 張分鏡卡) | references/shots/<category>/(camera、data、effects、interaction、opening、outro、rhythm、transition、typography、ui-entrance);掃描 frontmatter,完整閱讀選定的分鏡卡 |
| 調校過的參考程式碼 | demos/<category>/;為每張選定的分鏡卡閱讀確切的示範 TSX(卡片中的「參考實現」)。絕不能僅憑卡片名稱重寫;「已知陷阱/命門」參數不得弱化 |
| 整片影片的敘事弧 | references/sequences/promo-energy-arc.md |
| 可重複使用的元件 | assets/lib/(PageCam、ClipCard、DigitRoll、FlashCut、Caption、FlatPanel、VerticalTicker、helper functions)。複製到 src/ 中,不可跨目錄匯入 |
| 真實頁面截圖(若主題有網站/應用程式) | assets/scripts/capture-template.mjs(2x 全頁紋理 + 元素裁切圖 + layout.json) |
| 美學自我檢查 | references/aesthetic-rules.md(建置時就應檢查,而非只在最後進行) |
| 音效 | references/sound-design.md;音訊位於 assets/audio/(bgm/ 5 首曲目、sfx/<category>/ 149 個檔案;授權說明見 assets/audio/ATTRIBUTION.md) |
| 強節拍 BGM | references/music-beat-sync.md(先分析 BPM,再根據節拍進行故事板) |
| 獨立最終審查 | references/final-review.md(使用乾淨上下文的子代理程式) |
| 工作檯(視覺調整/導出完成影片) | references/workbench.md、node workbench/scripts/open.mjs <project> → http://localhost:5198(需要 src/workbench.ts 清單;請在交付後提供) |
| 剪映草稿匯出 | references/jianying-export.md(僅在要求時提供) |
| 發布至社群平台 | references/publish-upload-post.md(僅在要求時提供;務必先進行試執行,絕不在 unknown 狀態下重新執行) |
| 現成的完整影片 + 主題 | template/(Ink Press、9 種色盤、template/THEMES.md);僅在要求時提供 |
| 不適用於正式生產 | shot-polish/(上游的內部重新設計筆記)、agents/openai.yaml(Codex UI 元資料)、demos/_legacy |
建置循環(專案版)
- 先建立時間軸(
src/<名稱>Timeline.ts):鏡頭時長 = 測量語音長度 + 約 0.5 秒(結尾 +1.4 秒);SFX 偏移量相對於鏡頭開始時間。 - 每個場景:從圖庫/資料庫中選取分鏡卡,閱讀分鏡卡 + 示範 TSX + 所需的
assets/lib元件,並根據簡報風格進行調整。將選定的分鏡卡記錄在docs/<video>/design-spec.md中。 - 每個場景完成後:
npx tsc --noEmit,然後npx remotion still src/index.ts <CompId> out/qa/<id>-<frame>.png --frame=N(每個鏡頭至少 2 幀)並檢查產出的 PNG。在每次風格變更後重新渲染靜態幀。 - 音訊:將選定的檔案從
skills/video-shotcraft/assets/audio複製到public/audio/<video_id>/,並在docs/<video>/assets-manifest.md中記錄來源/授權。根據生產工作流程階段 7 中的目標進行混音(BGM 背景比語音低 12–18 dB,說話時再閃避降低 4–6 dB),而非使用固定百分比。 - 透過
python3 -I scripts/pipeline.py render <video_id>渲染,使用ebur128/volumedetect驗證響度,並製作一份聯絡頁。 - 由擁有乾淨上下文的子代理程式根據
references/final-review.md+skills/viral-tech-video-creator/references/qa-checklist.md進行獨立審查;修正問題後重新渲染。 - 交付後:提供工作檯,以及(僅在使用者要求時)剪映匯出/發布功能。
確定性:禁止使用 Date.now()/Math.random()。安全區域:底部 210px 內不得有文字。上游作者鳴謝與展示邀請為選用項目:最多在交付時提及一次,且僅在使用者表現出興趣時進行。