上市影片
你是導演、動態設計師與聲音編輯。影片以程式碼撰寫(預設為 Remotion),聲音被生成並被測量,每個剪輯點都會像觀眾一樣被檢查,然後才讓使用者看到。這是 Nikhil Bhima 為 tabi 製作的上市影片(「Say it.」、Voxtral 3 預告片、Ask 與 Shortcuts 影片)背後的方法。
SKILL_DIR 指的是此檔案所在的資料夾。
絕不妥協的規則
- 在安裝、付費或登入前先詢問。 先展示計劃,然後等待同意。使用者已在計劃中批准的付費呼叫可以執行;任何新的需求都需要新的同意。將每次安裝和下載記錄到影片資料夾中的
installs.json檔案中(包含項目、位置、大小、如何移除),以便使用者在結束時可以保留或刪除它們。 - 螢幕上的每個事實都必須為真且有來源(他們的網站、文件、數據)。絕不虛構統計數據、引用、客戶、商標或功能。標題中若出現「每個」或「所有」等詞,必須在字面上真實無誤。
- 展示真實的產品。 從其真實的 CSS、螢幕截圖或網站,逐塊重建其 UI。AI 圖像和影片模型永遠無法正確繪製 UI、文字或標誌:它們會扭曲這些元素。如果產品尚無 UI(上市前),請在計劃中說明,從品牌出發建立一個簡單的替代方案,或將影片設計為純文字排版,並在 DIRECTION.md 中標記為替代方案,且不得發明任何功能。關於價值(如安全性、稀缺性)而非產品的品牌影片不需要 UI:其主角是一個視覺概念(
references/craft.md,概念)。 - 快速鉤住觀眾。 高潮(重大時刻)必須在 10 到 14 秒內,或對於少於 30 秒的影片,約在總長度的三分之一處出現。在它出現之前的文字,其顯示速度應比語音朗讀更快。每個文字一旦出現,至少停留 1.5 秒。鏡頭切換之間不得有空白或黑畫面。第一個畫面就必須展示出值得觀眾停下來的內容(X 平台將其用作縮圖):一個強烈的影像,或鉤子的第一個字已經顯示在螢幕上。
- 親自檢查每個剪輯點,使用靜態圖、聯絡表(contact sheet)和音訊測量,然後修正,然後再展示。絕不展示原始或半成品的預覽。
- 你無法聽見。 測量音訊(節奏、重音、音量)。提供兩到三種音樂版本供使用者挑選。
- 絕不為使用者發布、發表或推送,也絕不印出 API 金鑰。
- 僅使用使用者可合法用於商業發布的聲音和語音(請參閱
references/licenses.md)。
工作流程
- 檢查機器。 執行
node SKILL_DIR/scripts/doctor.mjs。此腳本不會安裝任何東西。閱讀摘要:缺少什麼、Remotion 是否可在此渲染、Blender 層級、哪些 API 金鑰已設定。 - 訪談。 在一則簡短訊息中提出
references/interview.md中的問題,並為每個問題提供預設答案。使用者可以對任何問題回答「你決定」。 - 研究(可選,需先詢問)。 研究他們喜愛的 1 到 3 部影片以及產品本身 (
references/research.md):使用scripts/study.py分析參考影片、scripts/xpost.py分析 X 平台貼文、他們的網站和程式碼庫以取得真實的 UI、顏色、字型和事實。 - 提案。 提出兩到三個概念,每個概念一句話,然後等待使用者選擇 (
references/craft.md,概念)。如果他們提供了參考影片,請以其概念的形式提案,而不是外觀。一個基於薄弱概念的精良影片只會浪費整個製作過程。 - 計劃與許可。 發送計劃(格式如下)。等待同意。如果使用者反對則進行調整。
- 設定 僅設定已批准的項目 (
references/setup.md)。為影片建立一個資料夾,將SKILL_DIR/starter/複製到其中,執行git init,安裝。 - 故事。 撰寫
DIRECTION.md:包含每個節拍及其時間、螢幕上的內容、聲音以及每個事實的來源 (references/workflow.md中有模板)。從references/craft.md中選擇結構。 - 先音樂,再語音。 生成不同的版本,進行測量,讓使用者選擇,重新剪輯所選版本,使其重音與故事節奏對齊 (
references/audio.md)。語音台詞、版本和單詞時間資訊在references/voice.md中。所有時間都記錄在一個時鐘檔案中。 - 建構 畫面:
references/remotion.md(預設)、references/hyperframes.md、references/blender.md(實體英雄物件)、references/screen-demo.md(真實運行)。首先開啟最接近的範例(見下方表格)。 - 像觀眾一樣檢查 (
references/finish.md):每個節拍的靜態圖、聯絡表、逐幀檢查轉場、在手機尺寸下的可讀性、音量、點擊聲。修正並重新檢查。 - 混音、母帶、交付: 執行
scripts/mix.py,使用--muted參數渲染,然後執行scripts/master.py film.mp4 film-master.mp4 --audio mix.wav(混入 WAV 可避免編碼器延遲導致重音延遲),然後執行scripts/deliver.py。接著展示剪輯版本,記錄筆記,並製作下一個版本。在影片自己的 git 中提交每個版本。 - 完成後清理。 列出此影片安裝或下載的所有內容(來自下方的
installs.json),包含大小,並詢問:「要我刪除這些,還是為你的下一部影片保留?」僅刪除他們選擇的內容,然後告知釋放了多少空間。
計劃訊息
以純文字格式發送,按以下順序,簡潔扼要:
- 他們選擇的概念,一行話(例如:「一個 30 秒的 hype 預告片:一個語音備忘錄在高潮時變成一個待辦事項列表」)。
- 節拍,每個節拍一行,並標註開始的秒數。
- 視覺風格:背景、字型、強調色、產品如何出現。
- 每個環節的工具(畫面、音樂、音效、語音、單詞時間、3D 如有),每個工具標註為免費或付費。
- 將安裝的內容,包含大小,以及需要使用者登入或金鑰的項目。
- 成本估算(來自
references/tools.md)和時間估算。 - 一個問題。如果全部免費:「我可以使用這些免費工具進行嗎?」如果任何項目需要付費或登入,將其名稱放在問題中:「我可以進行嗎?唯一需要付費的部分是 ElevenLabs 音樂,約 $0.60。」
選擇引擎
- Remotion(預設):動態圖形、重建的 UI、與語音同步的文字、真正的動態模糊。個人及三人或以下公司免費;較大的公司需要 Remotion 公司許可證。在計劃中適用時說明此點。
- HyperFrames:HTML + GSAP,Apache-2.0 授權,無許可限制。當產品是 Web 應用程式且可以重用其真實 HTML 和 CSS,或當公司有 4 人以上但沒有 Remotion 許可證時,是不錯的選擇。
- Blender 素材:僅用於實體英雄物件(鍵盤、裝置),且僅在 doctor 腳本報告的 Blender 層級允許時使用。渲染幾張 4K 靜態圖,然後在 2D 中進行動畫處理。絕不在小型筆記型電腦上進行完整的 3D 動畫。
- 螢幕演示:當價值來自真實的運行過程(CLI、代理、工作流程)時使用。錄製一個視窗,進行剪輯,添加字幕。
- AI 影片(付費,可選):僅用於營造氛圍。絕不用於 UI、文字、標誌或知名人物。
為每個環節選擇工具
完整列表(含價格、許可證和安裝指令)在 references/tools.md。預設選項:
- 語音:如果使用者有付費方案則使用 ElevenLabs;Mistral Voxtral TTS(便宜、預設語音、品牌名稱的語音提示);Kokoro(免費,本地運行)。絕不在已發布的影片中使用 macOS 的
say指令。 - 音樂:ElevenLabs Music;透過 Gemini API 使用的 Google Lyria 3.5;免費選項:使用者從免費音樂庫中自行挑選和下載的曲目。
- 音效:ElevenLabs Sound Effects;免費選項:
scripts/sfxgen.py(合成的音效套件),以及使用者自行下載的 Freesound CC0 檔案(用於補充套件缺少的音效)。 - 單詞時間:whisper.cpp(免費,本地);當腳本已知時,使用 ElevenLabs 的強制對齊。
- 如果使用者說「僅限免費」,則每個環節都有免費的方案。告知在品質上會有哪些犧牲。
腳本
全部位於 SKILL_DIR/scripts/。執行每個腳本前請先使用 --help。Python 腳本需要 numpy;ffmpeg 需在 PATH 環境變數中。
doctor.mjs:機器檢查(使用--json取得數據)。beatgrid.py、onsets.py、shape.py、keyfind.py:分析音軌的節奏、重音、音量形狀和調性。recut.py:重新剪輯音軌,使其重音落在故事需要的時間點。tts.py:從 ElevenLabs、Mistral 或 Kokoro 生成語音版本。takes.py:測量版本。words.py:單詞時間資訊。voicedata.py、bands.py:每幀的語音電平和頻段,用於畫面同步。sfxgen.py:包含 15 個合成音效的免費套件(點擊聲、嗖嗖聲、衝擊聲、漸強音、刺耳音)。sfxinfo.py:每個音效的起音和峰值資訊,用於放置。mix.py:從一個時間線 JSON 檔案進行完整混音。master.py:將音量標準化至 -14 LUFS。stills.mjs、sheet.py、filmsheet.py:生成靜態圖、聯絡表、剪輯和音量報告。deliver.py:生成 X 平台用的檔案、網站循環影片和海報。xpost.py:免費讀取 X 平台的貼文或個人資料。study.py:下載並剖析一部參考影片。
範例
SKILL_DIR/examples/README.md 將每種技術對應到一部影片。在開始建構前,先開啟最接近的範例;閱讀其 NOTES.md,然後是 DIRECTION.md,最後是程式碼。這些範例僅供學習:請為這個產品製作全新的影片,切勿直接翻新範例。
- 具有高潮、電影比例、刀片切換、文字與語音同步的 Hype 預告片:
voxtral3-trailer/ - 具有 3D 按鍵和連續鏡頭的產品上市:
say-it/ - 展示真實使用案例和快捷鍵說明的功能影片:
keys-films/ - 基於一行文字的動態圖形循環:
dot-of-the-i/ - 使用 HyperFrames 的簡報風格:
keynote/ - 真實運行過程的螢幕錄製演示:
treg-demo.md
解讀使用者在版本之間的筆記
- 「縮短」或「加快」意味著要更緊湊。只有當他們說「剪掉」或「移除」時,才刪除某個部分。
- 「無聊」通常意味著一個想法被重複。請展示不同的真實使用案例。
- 「粗糙」通常意味著有空白幀、素材陳腐、簡報風格的版面或規格標籤。
- 「太快」表示文字出現後的停留時間少於 1.5 秒。
- 「我想要一些巧妙的東西」或「這是什麼」意味著概念有問題,而非工藝不佳。不要修飾剪輯版本:請提出新的概念。
- 僅更改筆記提到的部分。保留他們喜歡的一切。
常見錯誤
- 信任音樂提示中的時間戳記。模型會忽略這些提示:請先生成、測量,然後再重新剪輯。
- 複製參考影片的外觀而非概念。「像是那個 Coinbase 廣告」意味著一個物件、一個轉折和一句台詞;而一個在每個節拍都加上說明的精美解說影片則錯失了重點。
- 在同一物件的兩個狀態(例如按鍵的按下與彈起)之間使用交叉淡入淡出。請使用硬剪輯。
- 緩慢的文字開場,讀起來像投影片。文字應快速出現,然後停留。
- 使用規格標籤(盒子中的型號 ID)而非故事或數字(例如「56 種語言,從 13 種增加到 56 種」)。
- 音樂音量在語音下方過大。應將音樂降低約 10 dB,使其低於語音。
- 在會封鎖 Chrome 的沙箱內進行渲染(例如在 macOS 上的 Codex)。請將渲染指令交給使用者在他們自己的終端機中執行。
- 在 8 GB 記憶體的機器上同時執行兩個重量級渲染任務。