video-xoshaka 是做什麼的?
端到端影片製作:訪談、簡報、素材、設計檔案、腳本、分鏡、配音、建置、音樂、驗證、交付,一路設置審核關卡。它最初是為一種影片設計的技能,即 xoshaka(庫德語:「有趣的人」)故事,敘述起來像迷你紀錄片,玩笑起來像迷因頁面。這仍然是現有幾種風格之一。同樣的流程現在也能製作真誠的致敬、產品宣傳、解說、教學、回顧和公告。
讓它們看起來客製化的關鍵是真實素材:使用者自己的影片片段、朋友的相片、他們實際的網站和應用程式、來自他們筆記的自述、真正的商標。看起來像庫存影片是失敗模式。
閱讀時機
references/brief.md:訪談。問題回合、自由回答問題、語言與從右到左的注意事項、回顧格式及如何儲存brief.md。每次開始新影片時閱讀。references/storyboard-and-gates.md:design.md和STORYBOARD.md範本、審核關卡、平行場景工作者和新鮮度檢查。在撰寫腳本前閱讀。references/styles.md:風格(搞笑故事、真誠致敬、宣傳、解說、教學、回顧、公告、純字幕)、每種風格的形狀、語氣、長度和音樂氛圍,以及格式與平台安全區域。緊接在簡報後閱讀。references/story-and-comedy.md:尋找素材與應保密事項、撰寫story.json、將視覺與文字對齊時間,以及搞笑劇本(適用於搞笑風格)。references/production.md:專案設定、元件、格式、螢幕截圖、驗證及已遭遇的陷阱。在開始建置前閱讀。references/music.md:HeyGen 音樂設定(包含 Windows/WSL 登入)、選曲、閃避與靜音。references/toolbox.md:此工作流程使用的每個工具、技能及 CLI,以及使用時機:Remotion 技能、media-use、HeyGen、Kokoro、ElevenLabs、ffmpeg、無頭 Chrome 及隨附的腳本。
工作流程
1. 訪談使用者,然後儲存簡報
使用者的答案決定你建置的內容,因此先提問再做其他事情。遵循 references/brief.md:
- 第一回合,基本資訊 (AskUserQuestion,最多 4 個問題):風格、發布位置(這會設定格式)、長度、語音。
- 第二回合,外觀與感覺: 語氣、螢幕上顯示的內容(照片與影片片段、模型中的螢幕截圖、粗體文字與圖形、地圖或圖表)、顏色與品牌、音樂。
- 第三回合,素材與安全: 是否使用真實姓名、螢幕截圖是否包含姓名、字幕、結尾。
- 自由回答回合,在聊天中: 用一句話說明重點、要包含的真實時刻與事實、真誠的台詞或確切的行動呼籲、應避免或永不顯示的內容、誰是誰、他們喜歡的參考資料,以及檔案位置。
- 語言: 如果影片不只是英文,詢問是哪種語言,並檢查語音及文字渲染是否支援(brief.md,「語言與從右到左的文字」)。
- 總結與確認: 用使用者的話將簡報重述為簡短清單,詢問「有需要更改的嗎?」,然後將其儲存為專案根目錄中的
brief.md。
跳過使用者已經說過的任何內容,為每個問題推薦預設值,根據風格調整選項,並只問你需要的問題。如果他們說「直接做就對了」,只問第一回合,在總結中列出你的假設,並仍讓語音、可能指名或顯示的人,以及屬於私人的內容由他們決定。建立 public/photos/,並告訴他們檔案名稱:me 加上故事中每個人一個名稱。影片片段和 GIF 也可以。
brief.md 是合約。後續每個步驟都遵循它。當使用者改變主意時,先更新 brief.md,再更新工作內容。在交付訊息中,說明結果如何符合簡報,並指出任何不符合的部分。
如果他們提供了一個故事(「X 叫我買它,我和我的朋友 Y 一起做了」)或一個訊息(「推出我們的新菜單」),這就是主幹。其他一切都來自他們的素材。
2. 收集素材
- 他們的筆記 (筆記庫、日誌、專案資料夾、git 歷史紀錄):派遣研究子代理建立帶有日期的時間軸、人物與轉折點,以及一份應排除的私人事項清單(story-and-comedy.md)。不要在影片中包含任何私人事項。
- 他們的媒體: 親自檢視每個影片片段和相片。檢查每個影片片段的數個影格,確認車牌、徽章和螢幕,並決定裁切方式(
focusY)。如果一個影片片段顯示多於一人,詢問誰是誰。 - 他們的工作: 使用無頭 Chrome 擷取動態網站(桌面與手機)的螢幕截圖,以及他們儲存庫中現有的應用程式螢幕截圖。
- 品牌資產: 他們真實的商標,絕不重新繪製(
media-use resolve --type logo可找到官方標誌)、他們的顏色和字型。 - 宣傳或教學的事實: 每個數字、價格、功能和步驟都來自使用者或你已驗證的內容。不要編造聲明。
3. 設計檔案、腳本與分鏡
首先撰寫 design.md(調色盤、字型、商標、動畫與文字規則,根據簡報與使用者的真實品牌資產;範本在 storyboard-and-gates.md 中)。然後依照 story-and-comedy.md 和 styles.md 中選定風格的形狀撰寫 story.json。接著撰寫 STORYBOARD.md:每個場景一行,包含台詞、螢幕上顯示的內容、音效,以及每個視覺效果對應的文字。開頭兩三秒內要有鉤子。關卡: 向使用者展示台詞和分鏡表,在開始建置前等待同意。現在更改文字成本低廉,稍後則昂貴。要求使用者提供任何笑話背後的真實故事,以及用他們自己的話說出真誠的台詞,而不是由你編造。註明發布位置:Reels、TikTok 和 Shorts 需要將字幕放在較高的位置(styles.md,「安全區域」)。
4. 語音
如果是無旁白影片則跳過此步驟(此時字幕承載文字)。否則使用 scripts/voice-samples.mjs 產生範例,開啟資料夾,讓使用者用聽覺選擇(bm_george 在速度 1.1 時適用於喜劇;較平靜的語音適合致敬和教學)。然後執行 scripts/make-voice.mjs。它會印出每個場景的長度和一條「間隔」對齊線。印出文字時間戳,並檢查沒有文字跨度超過一秒(production.md,「陷阱」)。其他語音來源在 toolbox.md 中。
5. 儘早開啟預覽
一旦專案可執行,立即啟動 Remotion Studio(npx remotion studio)並開啟預覽,讓使用者可以在建置過程中觀看並引導。當他們要求檔案或要發布影片時,才渲染 MP4;當他們仍在迭代時,預覽就是可交付成果。
6. 建置
建立基礎結構並複製範本和腳本(production.md)。為每個場景撰寫元件,通常是帶有視覺效果的 BeatScene,從 assets/template/src/story/scenes/(以及當 assets/examples/scenes/ 資料夾存在時從該處)改編。使用 wordAt(...) 將每個視覺效果對應到一個文字。在 StoryVideo.tsx 中維護時間軸:淡入淡出轉場,以及章節變更時的滑入加上咻聲。根據選定格式設定組合大小。根據 STORYBOARD.md 和 design.md 建置,不要憑記憶。當有大約五個或更多獨立場景時,使用每個場景一個子代理平行建置(storyboard-and-gates.md),然後自行組裝並檢查接縫。對於 Remotion 本身,使用 Remotion 相關技能(toolbox.md)。如果使用者在聊天之外編輯了程式碼,請勿覆寫;假設這是故意的或進行詢問。
7. 音樂與音效
使用真實音樂(music.md),採用風格要求的氛圍(styles.md)。如有需要,安裝 media-use 和 HeyGen CLI,讓使用者登入,搜尋幾種氛圍,下載一首主要曲目及兩首替代曲目,測量其長度,設定 MUSIC_GAIN,並根據曲目的自然結尾進行規劃。只有在風格需要時才加入音效。
8. 驗證,然後取得渲染核准
- 檢視靜態圖 :檢查每個關鍵視覺效果和每個場景結尾(
scripts/stills.mjs)。 - 檢查事實 :針對宣傳和教學影片,比對每個數字、名稱和步驟與其來源。
- 預覽關卡: 顯示 Studio 預覽或關鍵靜態圖,並詢問需要更改的內容。只有在使用者核准預覽,或明確要求檔案時,才渲染最終 MP4。
- 渲染 為新的版本化檔案名稱。
- 測量音訊 (
scripts/check-audio.mjs)。 - 檢查最終 MP4 的影格 ,確認是否有任何時效性問題。
- 為使用者開啟影片 。
9. 交付
回報以下內容:
- 檔案路徑、長度與大小
- 如果這是更新,說明變更了什麼
- 你檢查了什麼,以及你無法聽到音訊
- 待解決問題:誰是誰、音樂氛圍、是否要縮短長度
原則
- 真實優於通用。 使用他們的影片片段、他們的朋友、他們實際的螢幕和商標。
- 語氣符合目的。 搞笑只是一種選擇。告別、產品發布和教學各有其所需的語氣;不要在不適合的地方強加笑話。
- 及早鉤住,一個場景一個想法。 重點在前兩三秒內可見,每個場景都值得存在。
- 視覺效果對應文字。 視覺效果在其對應的文字上出現,勝過任何數量的額外效果。當被要求「更好」或「更有趣」時,先調整時間和措辭,再增加份量。
- 一個關鍵節拍。 真誠的台詞、行動呼籲或重點,要直白陳述並留下空間讓它發酵。
- 隱私是一項功能。 使用者的筆記包含他人不應看到的內容。使用者信任你在未經詢問的情況下排除這些內容。
- 不要猜測人物。 讓使用者用聽覺選擇旁白語音,絕不要根據他們的名字來選。確認群體影片片段中誰是誰。不要編造素材不支援的引言、感受或聲明。
- 誠實交付。 說明你驗證了什麼,以及什麼你無法驗證(用耳朵聽音訊)。如果長度超出他們的要求,請告知並指出最簡單的刪減方式。