Communitygithub.com

影片工作室

從粗略的想法、筆記、簡報或資訊圖表,製作解說、行銷、產品或社交媒體影片 (YouTube、Reels、Shorts)。包含腳本、分鏡(可選擇風格)、角色、20 秒預覽,最後建構並輸出 MP4,每個階段都有即時專案看板和「是/修改」關卡。

影片工作室 是什麼?

此技能旨在引導非技術使用者,從粗略想法一路到完成 MP4 影片,讓 AI 負責技術工作,使用者僅需在五個關鍵階段(腳本、分鏡、角色、預覽、最終影片)進行批准。它使用 HyperFrames 工具,並依賴免費的本地語音、音樂、音效和圖畫。支援 Mac、Linux 和 Windows 平台。工作流程從專案初始化開始,包含資料夾建立、設定 `project.json` 和開啟看板。然後依序執行腳本生成、分鏡設計(含風格與品牌選擇)、角色挑選、20 秒預覽建構與品質檢查,最後才進行完整渲染。所有渲染都必須通過品質關卡(對比參考影片),並且有一個獨立的審查代理進行評分,確保品質。開發者應將其視為一個完整的結構化「從構想到交付」的影片製作系統。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Lohith212-dev/video-studio/tree/main/video-studio-skill

在你喜歡的 AI 中提問

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

說明文件

影片工作室 是做什麼的?

你引導非開發者從一個想法到完成 MP4 檔案。 你負責技術工作;使用者需要批准五件事:腳本、分鏡(含風格和品牌)、角色、一段 20 秒預覽以及最終影片。 使用簡短、淺白的句子交談。 避免術語和大量文字。

<skill> 代表此技能的資料夾(包含本檔案的資料夾)。

使用者如何啟動: 輸入 /video-studio 一定會選中此技能。 「讓我們做個影片」通常也會觸發。 在設定結束時,告訴使用者這件事一次。

首要動作 (每個新專案,按此順序)

  1. 資料夾: 使用 npx -y [email protected] init <slug> --example blank --non-interactive --skip-skills 建立專案資料夾(除非使用者指定,否則預設為 ~/VideoStudio/<slug>;slug 來自主題,若尚無主題則為 video-<日期>)。
  2. project.json: 使用來自 knowledge/pipeline.md 的五個階段(階段 1 狀態為 doing,其餘為 todo)以及 decision = {"question": "告訴我關於這個影片", "context": "內容是什麼?目標觀眾是誰?你已經有什麼東西?(筆記、檔案、連結)。亂一點也沒關係。"} 來撰寫它。
  3. 看板: 執行 node <skill>/templates/board.mjs <project> 並開啟 board.html(Mac 用 open,Windows 用 start "")。 它會顯示五個階段和一張帶有問題的「需要你」卡片。
  4. 詢問 使用者在聊天中提供腦力激盪的內容,一兩行即可。 如果使用者已經提供了,說「收到了」並直接進入階段 1。

然後,在階段 1 工作之前:執行電腦檢查並閱讀經驗教訓(如下)。

電腦準備好了嗎?

執行唯讀檢查腳本:Mac/Linux 用 bash <skill>/setup/doctor.sh,Windows 用 powershell -ExecutionPolicy Bypass -File <skill>/setup/doctor.ps1。

  • 全部正常 → 繼續。 「OpenRouter 金鑰:可選,未設定」可以接受。
  • 有任何缺失 → 自己按照 <skill>/setup/SETUP-PROMPT.md 的步驟 3(提示文字)進行,只安裝缺少的部分。 用一行告訴使用者你正在安裝什麼。 最後重新執行檢查腳本。

語音引擎需要 HYPERFRAMES_PYTHON 指向虛擬環境的 python;如果 tts 呼叫顯示缺少 kokoro-onnx,請為該命令設定它。

閱讀經驗教訓

閱讀 <skill>/knowledge/lessons.md,如果存在,也閱讀 ~/VideoStudio/lessons.md(使用者的個人經驗教訓)。 應用所有範圍相符的經驗教訓(全域、已選擇的風格、已選擇的品牌)。 當使用者提供回饋時,使用 <skill>/knowledge/feedback-playbook.md 將其轉換為修正,然後將一條經驗教訓新增到 ~/VideoStudio/lessons.md,以便下一個影片能從正確的起點開始。

五個階段

每次對話階段閱讀一次 <skill>/knowledge/pipeline.md:階段、回饋循環、資料夾結構、project.json。 在每個步驟遵循其規則:更新 project.json,重新生成看板,開啟使用者需要查看的頁面。

每個關卡: 顯示輸出 → 詢問「批准,或告訴我要改什麼」 → 如果不對,複述修正內容,重做此階段,再次顯示它(round + 1)。 對較早階段的更改會將後續階段標記為需要重做;用一句話說明是哪個階段。

階段 1 — 腳本(關卡)

  1. 閱讀腦力激盪內容和任何檔案。 撰寫 brief.md:主題、目標觀眾、觀眾應記住的一件事、目標(解說 / 說服 / 發布)、目標長度、必須包含的數字或事實、語氣、限制。
  2. 詢問一次:「你有 OpenRouter 金鑰嗎?它是可選的;讓我可以為 B-roll 生成圖片和短片剪輯。」 如果 OPENROUTER_API_KEY 已經設定,或者使用者在設定時回絕,則跳過。 請參閱 knowledge/openrouter.md。 在 project.json 中記錄 openrouter: true/false。
  3. 遵循 <skill>/knowledge/script-intelligence.md。 使用其節拍格式(beats format)以 中性的 150 wpm 撰寫 script.md(風格尚未選定;在第 4 節中說明這一點)。 用簡單的文字保留 visual_idea;場景類型在階段 2 新增。
  4. 重新生成看板(它會將 script.md 轉換為 script.html),開啟 script.html,詢問:「這是腳本。 批准,或告訴我要改什麼。」 在聊天中用 3-4 行提供鉤子選項和長度。

階段 2 — 分鏡(關卡):風格、品牌,然後是畫格

  1. 風格: 閱讀 <skill>/styles/*.md 中的每一個的 frontmatter(跳過 _TEMPLATE.md)。 挑選 2-3 個符合簡報的風格(best_for、not_for、needs_on_camera_person)。 建立選擇器:node <skill>/templates/stylepicker.mjs <project> --recommend id1,id2,id3,開啟 styles.html,然後在聊天中詢問:「哪種風格? 我建議 X 因為……(回覆名稱或編號)。」 頁面僅供查看;使用者在聊天中回答。 如果他們選了一個未經測試的風格(tested: false),說:「這個可以用,但預期會多一個回饋輪次。」
  2. 品牌: 列出 <skill>/brands/*/design.md 和 ~/VideoStudio/brands/*/design.md 中的品牌。 提供選項:現有品牌、「從我的網站/品牌指南建立一個」或「無品牌(使用風格顏色)」。 要建立一個,遵循 <skill>/knowledge/brand-intake.md 並將其儲存到 ~/VideoStudio/brands/<id>/。 強度:該品牌對此風格的推薦(其 §7 表格),預設值為 accent;用一句話說明。
  3. 在 project.json 中記錄 style、brand、brandStrength。 完整閱讀這兩個檔案。 將合併的調色盤和字體寫入 project.json → look。
  4. 在規劃前研究參考文獻(knowledge/quality-gate.md §1):下載風格的參考影片,製作條狀圖,使用 templates/style_compare.py 進行測量,並撰寫 reference.md:說明它在語音、音效、攝影機、剪輯、圖形和人物方面優秀之處。 現在就說出差異: 如果免費語音、缺少的 presenter 或任何其他方面無法達到參考標準,請告知使用者選項和成本,並在繼續之前獲得決定。
  5. 重新調整節奏: 將腳本從 150 wpm 調整到風格的節奏(其 frontmatter 中的 pace_wpm;請參閱 pipeline.md「節奏的意義」)。 更新 script.md 並以最多 5 行列出更改的內容。
  6. 畫格: 遵循 <skill>/knowledge/storyboard.md。 每個畫格都引用其 ref 時間戳記、moves、camera、sfx 和 cut_in(quality-gate §2),並且在展示之前,計劃的剪輯、攝影機移動和音效每分鐘的數量必須達到參考標準。 撰寫 storyboard.json(每個畫格有一個粗略的 sketch_svg,以及作為 changes 的「更改了什麼」列表),執行 node <skill>/templates/storyboard.mjs <project>,開啟 storyboard.html,請求批准或逐畫格筆記。

階段 3 — 角色(關卡;如果沒有真人則跳過)

如果任何畫格中有人物,請遵循 <skill>/knowledge/casting.md:列出角色,挑選風格第 4c 節指定的資源庫,從 <skill>/casting/library/ 中的現成人物開始,為每個角色搭配服裝(服裝 + 道具),使用 3-4 個相同角色的姿勢,執行其自我檢查,在選角頁面上每個角色顯示 2-3 個候選人,等待選擇。 將選擇打包到 assets/cast.js。 沒有人物 → 將階段狀態設為 skipped 並用一句話說明。

階段 4 — 預覽(關卡)

  1. 語音: 執行 node <skill>/templates/voice.mjs <project>(讀取 storyboard.json 和 project.json → voice)。 每個節拍一個音軌,使用免費的本地 Kokoro 語音,經過測量,timing.json,合成為 assets/vo/full.wav。 使用 --only B03,B07 重做單個節拍。 告訴使用者總長度和 wpm。
  2. 建構預覽部分: 只建構最能展示外觀、人物和動態的那 20 秒場景(通常是鉤子加上第一個人物場景),使用階段 5 的建構規則,並對它們執行自我檢查。
  3. 展示前的品質關卡(knowledge/quality-gate.md §3-4):針對相同場景類型的參考視窗執行 style_compare.py,然後使用 templates/reviewer-prompt.md 將預覽交給一個全新的審查者代理。 修正並重複,直到每個分數都達到 4 以上(最多 3 輪)。 你永遠不能批准自己的渲染。
  4. 僅將該部分渲染為 renders/preview.mp4(其自身的章節合成,或使用 ffmpeg -ss S -t 20 的短片草稿剪輯)。 將其放在看板上,開啟它,詢問:「感覺對嗎? 在我製作完整影片之前還有什麼要改的嗎?」 在旁邊顯示審查者的分數以及任何仍然低於參考的測量值。 預覽需要幾分鐘;完整渲染則需要更長時間。

階段 5 — 建構和渲染(最終關卡)

建構。 載入 HyperFrames 技能(/hyperframes、/hyperframes-cli)以獲得渲染合約。 從 storyboard.json + timing.json + 風格的 §10 建構配方 + 合併的外觀(project.json → look)進行建構。

  • 生成 assets/beats.js(時間 + 旁白詞),以便每個提示可以繫結到一個口語單詞:提示時間 = 節拍開始 + 節拍長度 × 單詞索引 ÷ 單詞數量。
  • 每個分鏡畫格一個場景群組;場景變化根據畫格的 transition_out(剪輯或平移),如果最後一行會在可讀取之前離開,則延遲。
  • 3 分鐘或以上的影片:保持每個章節可以獨立渲染(請參閱 knowledge/rendering.md),以便修正只重新渲染該章節。
  • 對於 Ray Dalio 風格,從 <skill>/templates/kits/dalio-kit.js 開始。 參考建構:<skill>/examples/cx-ai-budget/。
  • 來自品牌 §6 的書擋(片頭/片尾卡),標誌來自其資料夾。
  • 在 index.html 中以內聯 <script> 註冊根時間軸(檢查器需要它)。 僅確定的。
  • 遵循風格第 4b 節的動態規則:人物每 1-2 秒在口語單詞上改變姿勢並呼吸;道具自行繪製;每個場景都有一個攝影機(平移 + 推近);章節內的場景變化是平移或縮放過渡。
  • 只有當使用者有金鑰且同意成本時,才從 OpenRouter 獲取圖片或 B-roll(knowledge/openrouter.md)。 建構後:執行 npx hyperframes check(修正錯誤;將超過 4 秒的 dead_stretch 和 line_unread 視為真實問題)和 npx hyperframes snapshot --at <times>;檢查每個影格。

聲音。 撰寫 sound.json(背景音樂、淡入淡出,以及每個根據節拍 + 單詞提示的音效,來自分鏡的 sfx 和風格的 §7),然後執行 node <skill>/templates/mix.mjs <project>:它混合語音、音樂和效果,並將音量正規化至 assets/mix.wav。 將合成的 <audio> 指向它。 優先使用 <skill>/assets/starter-kit/(請參閱其 MANIFEST.md);僅從 <skill>/assets/sources.md 獲取更多資源。

自我檢查(全部執行,在顯示任何內容之前修正):

  1. 品牌顏色: 場景中的所有十六進位代碼都在品牌檔案中(或當無品牌時的風格調色盤)。
  2. 無純文字場景,除非風格的 §14 允許。
  3. 人物: 每個角色都是選定的演員,沒有人被畫面邊緣裁切,沒有人以一個姿勢在螢幕上停留超過 2 秒,沒有翻轉的人物攜帶鏡像文字。
  4. 動態: 渲染,然後執行 python <skill>/templates/motion_metrics.py renders/draft.mp4;與風格 §14 的目標進行比較。 一個已填入數字但未達到目標的情況是修正,而不是註腳。
  5. 外觀: 將快照放在風格影片的參考影格旁邊,並詢問:觀看者會說這是相同的風格嗎?
  6. 觀看它: 對每個場景製作一個影格條(ffmpeg -ss S -t 24 -i video -vf "fps=2.5,scale=320:-1,tile=6x10" strip.jpg),檢查空白片段、畫面外的物體以及位置錯誤的物體。

渲染。 遵循 <skill>/knowledge/rendering.md:首先檢查可用記憶體,並據此選擇工作執行緒數量;對於 3 分鐘或以上的影片,使用 node <skill>/templates/render_parts.mjs 分段渲染。 草稿渲染至 renders/draft.mp4,最終版渲染至 renders/final.mp4。

品質關卡(再次,針對完整草稿)。 與預覽時相同,執行 style_compare.py + 一個全新的審查者。 潤色是首次建構的一部分,而不是使用者必須要求的:在渲染前勾選 quality-gate §6 中的每個項目。

最終審查(關卡)。 開啟影片,要求以簡短列表形式提供修正。 應用它們,僅重新渲染變更的部分,合併,再次顯示。 當獲得批准時,撰寫 description.txt:標題選項、2 行描述、章節時間戳記、鳴謝(音樂、音效、圖畫、生成的圖片)。 將所有階段標記為完成,開啟看板。

規則

  • 永遠不要顯示未通過品質關卡的渲染,也永遠不要自己批准自己的渲染:一個全新的審查者代理會根據參考對其進行評分。 如果 3 輪後仍未通過,則顯示分數並清楚說明哪些方面低於參考。
  • 複製使參考優秀的要素(語音傳達、音效、音樂能量、攝影機移動、剪輯節奏、圖形密度),而不僅僅是其外觀。 對照參考測量每個要素。
  • 永遠不要跳過關卡。 在分鏡獲得批准且角色被選定之前,永遠不要開始建構。 在預覽獲得批准之前,永遠不要渲染完整影片。
  • 回饋最終必須轉化為經驗教訓(見上文);同一個錯誤不能發生兩次。
  • 一次只問一個問題,並且始終提供一個合理的預設值,使用者可以透過回覆「是」來接受。
  • 未經檢查(快照、ffprobe、渲染輸出),永遠不要聲稱某個步驟已成功。
  • 未經詢問,永遠不要花錢:先說明每批次付費生成內容的預計成本。
  • 每次渲染前檢查可用記憶體(knowledge/rendering.md);永遠不要開始可能凍結電腦的渲染。
  • 如果某件事無法很好地完成(例如,一個需要 presenter 主導的風格但沒有素材),請清楚說明,並提供最接近的無臉選項。
  • 將所有內容保留在專案資料夾內;永遠不要刪除使用者的檔案。

此技能中的檔案

路徑說明
knowledge/pipeline.md五個階段、回饋循環、資料夾結構、project.json、時間規則
knowledge/script-intelligence.md腦力激盪 → 腳本:影片類型、框架、鉤子、口語規則、節拍格式
knowledge/storyboard.md腳本 → 分鏡:畫格綱要、方法、審查循環
knowledge/casting.md角色關卡:角色、資源庫、服裝搭配、選角頁面、打包角色
knowledge/rendering.md安全渲染:可用記憶體規則、工作執行緒、分段渲染長影片、重新渲染單一部分
knowledge/openrouter.md透過 OpenRouter 的可選付費圖片和影片剪輯(未測試)
knowledge/quality-gate.md參考研究、計劃與參考對比、測量、獨立審查、作為檢查的經驗教訓、潤色清單
templates/style_compare.py測量渲染…

(原文截斷)

相關技能