RAW KINETIQ
歌曲輸入,MP4 輸出。流程已經建置完成;你的工作是執行它,像剪輯師一樣審查時間軸,並修正機器可能出錯的地方。完成的影片應該讓每個字詞在演唱時精準落地,視覺效果與歌曲的能量一同呼吸。
影片是圍繞歌曲設計的,而不是將歌曲塞進既定的風格中。 歌曲的主題、感受、類型和節奏決定了一切:顏色、字型、螢幕上同時出現多少字詞、它們如何出現和消失、位置在哪裡、鏡頭撞擊的力度、背景中放置什麼,以及使用者的圖片放在何處。沒有可供選擇的預設,只有一個可組合的工具包(references/toolkit.md),當歌曲擁有工具包未涵蓋的影像時,你必須為那首歌自行建構。兩首歌不該看起來相似,一部影片應該看起來與 YouTube 上任何人的作品都不同。發揮創意,勇於冒險,然後檢查你的作品(步驟 5),確保冒險成功。
影片中的事件是由歌詞內容驅動的。 一部只有背景和字體變化的影片只是投影片。當歌詞提到「手」時,影片中就會出現一隻手;當歌詞說到「嘴巴」時,嘴會張開,鏡頭進入;當歌詞唱出「我知道每個出口」,出口標誌會飛速掠過。這些時刻由你透過程式碼繪製(SVG 形狀,在 Remotion 中製作動畫;絕不使用圖片生成器),並與歌詞精準對時(步驟 4b)。
以下路徑:SKILL = 此技能資料夾(${CLAUDE_SKILL_DIR}),PY = setup_env.sh 列印出的 Python 路徑(Windows 上為 ~/.raw-kinetiq/venv/Scripts/python.exe,其他系統為 ~/.raw-kinetiq/venv/bin/python)。使用 Bash 工具執行 .sh 腳本(Windows 上使用 Git Bash)。
0. 你需要從使用者那裡取得的資訊
只需要歌曲。取得歌曲(以及歌詞,如果他們有的話),然後 一次性、在最前面、透過單一 AskUserQuestion 呼叫 詢問外觀問題,讓使用者選擇後可以離開,讓分析在背景執行。跳過他們訊息中已經回答的任何問題。如果他們說「直接做」或不在,則使用預設值並說明你使用了哪些。
| 問題(標題) | 選項 | 預設值 |
|---|---|---|
| 格式 | 16:9 (1920x1080)(建議)/ 直式 9:16 適用於 TikTok、Reels、Shorts (1080x1920) / 正方形 (1080x1080) | 16:9 |
| 感覺 | 根據歌曲設計(建議)/ 然後從這首歌自身的影像中提取 2-3 個具體方向,每個用簡單文字描述(例如一首關於發燒的歌:「文字在熱浪中顫抖,汗水般的黃色襯托黑色」)。「其他」讓使用者用他們自己的話描述氛圍 | 根據歌曲設計 |
| 疊加層(多選) | 歌手名稱(左上角)/ 段落名稱(左下角)/ 計時器 + 進度條 / BPM + 節拍計數器。在問題中說明選擇「無」會得到一個乾淨的音樂影片 | 無 |
| 素材 | 「你有想要放進影片中的圖片嗎(封面藝術、照片、標誌、你的照片)?」沒有,根據歌曲設計(建議)/ 有,我會在這裡傳送/ 有,它們在一個資料夾裡 | 無 |
答案對應到 new_project.sh 的標誌:--size 和 --overlays artist,section,timer,bpm(僅選擇的項目)。除非使用者要求,否則始終使用 60 fps。感覺由你在步驟 2b 中設計,根據他們的回答引導。
如果他們有素材, 立即回覆:「請把它們傳過來(或告訴我資料夾位置),並簡單說明每個是什麼或你希望它們出現在哪裡,如果你有偏好的話。」描述是可選的:使用 Read 工具打開每張圖片,自己看看它是什麼。在步驟 2c 中將它們加入。
其他輸入,無需提問:
| 輸入 | 預設值 |
|---|---|
| 歌詞 | 貼上的 > 檔案標籤(Suno 會嵌入) > 你清理後的人工轉錄 |
| 標題 / 歌手 | 檔案標籤;如果標籤標題是垃圾(例如 [Rec] Oct 24 ...)則使用檔案名稱 |
| 背景 | auto:場景根據段落和你的設計進行 |
| 結束卡片 | 標題 + 歌手覆蓋在最後幾秒;當他們不想要時使用 --no-endcard |
1. 設定(每台機器一次,之後即時完成)
bash SKILL/scripts/setup_env.sh
建立共享的 Python 環境(faster-whisper、Demucs、librosa、Pillow;CPU 建構)並輸出其 Python 路徑。需要 Python 3.10+、Node 18+ 和 ffmpeg(含 ffprobe)在 PATH 中;如果缺少任何一個,請告訴使用者要安裝什麼,而不是自己安裝系統軟體。首次執行會下載數 GB(目前是 CPU torch,以及首次使用時的 Whisper 和 Demucs 模型)。
2. 分析歌曲(快取,在背景執行)
專案資料夾:<歌曲資料夾>/<歌曲名稱> 歌詞影片/,除非使用者另有指定。
如果使用者貼上了歌詞,請先將其儲存為 <project>/work/lyrics.txt,保留 [Section] 標籤。
PY SKILL/scripts/prepare.py "<song>" "<project>/work"
對於一首 3 分鐘的歌曲,CPU 大約需要 8-10 分鐘(Demucs,然後 Whisper large-v3 兩次)。每個步驟都會快取其輸出,因此重新執行只會執行缺少的部分。永遠不要刪除這些輸出以「重新開始」;要重做某個步驟,只需刪除該檔案。它會輸出:
- 時長、BPM、小節長度(
240 / BPM)、每秒能量(能量跳躍處是過門點), - 人聲出現 的範圍(間隙 = 純樂器部分),
- 兩種 Whisper 轉錄(完整混音,以及分離出的人聲主幹)。
2b. 為這首歌設計影片
從歌曲開始,而不是從工具包開始。 暫時不要打開工具包:一個現成動作的選單會把每首歌都拉向少數幾個相同的風格。首先弄清楚這首歌是什麼,並將其寫入 <project>/work/design.md:
- 用幾行描述這首歌: 故事、誰在對誰說話、地點、時間、歌詞反覆出現的物體和影像,以及它的感受(緊張、溫柔、麻木、挑釁、頑皮、偏執)。感受比類型更能決定動態。
- 它存在的世界。 閱讀詞彙,而不僅僅是故事:歌詞詞彙會聚集成一個世界,這個集群說明了歌曲所在的世界,通常比標題的日常意義更有說服力。充滿「判決」、「作證」、「判刑」的歌詞存在於法庭;「錨」、「漂流」、「港灣」在海上;「平衡」、「欠款」、「利息」在金錢世界。然後列出標題和主題句的每個含義,包括俚語以及在遊戲、電影、運動和次文化中的意義(「鬼魂」是靈魂、突然消失的人,以及玩家術語),然後選擇詞彙支援的含義,或融合兩個含義。寫下候選項以及你選擇一個的原因。
- 核心影像, 來自那個世界和歌詞本身的詞語,絕不來自類型。一首關於被監視的歌:窗戶一個接一個亮起。一首關於時間耗盡的歌:保險絲在畫面中燃燒。
- 標誌性動態:歌詞文字本身用這首歌的語言做了什麼。 兩個或三個,每個用一句話:一個詞如何出現,如何消失,主題句做了什麼。它們來自核心影像:在一首關於發燒的歌中,文字在熱浪中顫抖出現,然後冷卻靜止;在一首關於未寄出信件的歌中,文字用滲墨的墨水寫成,然後頁面將它們折疊起來。測試: 如果同樣的動態可以套用在隨機的另一首歌上,那它就不是標誌性的。讓它足夠引人注目:一個副歌之後,觀眾應該能夠描述文字做了什麼。一絲微光或一瞬間的模糊等於什麼都沒看到;讓動態在高峰時佔據空間和時間,在主歌中保持低調。
你將把這些寫成這首歌的特效(
video/src/custom,工具包「歌曲自己的片段」)。 - 分鏡表: 每個段落及其場景、攝影機、歌詞佈局、調色板以及它使用哪種動態。核心影像像一部短片一樣在其中演變(如下所示),每個段落的構圖都不同:對同一視圖進行新的色調或添加幾盞燈光並不是一個新的鏡頭。
- 你不會做什麼: 說出你可能為這種類型和情緒選擇的顯而易見的動態,但你正在避免它們,這樣你就不會不知不覺地回到它們。
- 所有時刻將共享的繪圖風格(步驟 4b),來自歌曲的世界:霓虹線條藝術、平面剪紙、墨水和水彩、藍圖線條、粗體剪影、漫畫面板、木刻。整首歌使用一種風格,讓所有時刻看起來像一部電影。
為此需要閱讀的事實:BPM(注意半拍感覺:140 BPM 的陷阱節奏通常感覺像 70)、人聲密度(whisper_full.json 中的每秒字數:快速饒舌需要短爆發;緩慢、持續的演唱可以維持短語)和每秒能量(能量跳躍處,影片會改變:副歌與主歌不同的動態,橋段打破模式,最後的副歌比第一個更強烈)。
現在閱讀 references/toolkit.md 並建構設計:
- 時刻 在時間軸建立後繪製(步驟 4b),但現在就規劃它們:分鏡表塑造了分鏡表,而一個圍繞時刻建構的段落可以在其背後保持簡單。
- 首先處理歌曲自身的片段。 將標誌性動態寫成
effects,核心影像寫成layers(以及當某個時刻需要時,一個線條樣式寫成modes),全部寫在video/src/custom/index.tsx中。在歌曲的高峰處使用標誌性動態(至少是副歌),並將其保持在影片的中心,而不是一次性使用。 - 工具包是配角。 其內建的入場、離場、線條樣式和圖層承擔了過渡歌詞和填充場景。其中許多是為早期歌曲製作的(為一首 phonk 曲調製作的猛擊、斜線、切割和毛刺,被切成兩半的吟唱,隧道),預設使用它們正是導致兩部影片看起來相似的原因。僅在工具包確實符合這首歌的影像時才使用它,並在
design.md中寫明原因。 - 調色板: 顏色來自歌曲的世界或使用者的圖片,並根據段落進行調整。寫出所有顏色;不要從主題開始。
- 字型: 任何 Google Font 用於
display和一個對比的alt,為這首歌的聲音選擇。 - 攝影機、能量和反應: 每個段落一個動態,鏡頭撞擊的力度,以及視覺效果是跟著節奏還是人聲脈動。
- 素材: 每個使用者的圖片放置在哪裡,以及文字如何為它讓路(2c)。
影片是一系列鏡頭,絕不是一張帶有文字的圖片。 一個核心想法是正確的,一個不變的畫面則不是。像一部短片一樣規劃歌曲,一個段落一個段落:觀眾在開頭看到什麼,第一段主歌如何構圖,副歌中打開了什麼,橋段中打破了什麼,如何解決。核心影像應該演變:改變比例、角度或攝影機運動、時間、調色板、畫面中的內容。一個自訂圖層會獲取段落及其進度,因此它可以在不同段落中顯示不同的內容。每個副歌必須看起來與其主歌明顯不同,最後的副歌要比第一個更大。如果兩個相鄰段落共享場景、攝影機、佈局和調色板,請改變其中一個。
改變構圖,而不僅僅是顏色。 當一個自訂圖層承擔了歌曲的主要視覺時,賦予它真實的鏡頭:不同的攝影機位置(從上方、從內部、在地面水平、聚焦於一個細節)、不同的比例、畫面中不同的主體。對同一視圖重新著色或添加燈光,仍然讀起來像一個鏡頭,而檢查會標記出一個佔據了歌曲太多時間的構圖(one-shot)。
將文字與影像結合。 歌詞的位置是設計的一部分:在場景表面、在窗戶中、在主體旁邊、隨著音樂移動到新的位置。整個段落中完全在同一位置的爆發就是字幕。一個特效的 burst 鉤子可以將爆發移動到任何地方(其 transform)。
緩慢不等於靜止。 一首柔和、緩慢或低語的歌曲移動緩慢但從不停止:攝影機飄移或推進,光線隨著人聲膨脹("react": "voice",柔和歌曲的預設值),每個段落都會改變場景。保持感覺(溫柔保持溫柔),同時讓每個段落都是一個新的畫面。給緩慢的歌詞空間變得宏大:一次顯示更少的字詞,設定得大一些,有目的地放置,而不是整首歌都在同一行上作為一個小字幕。
大膽嘗試:跨越類型借鑑(一首靈魂歌曲搭配野獸派字型,一首 drill 曲調使用襯線字體)並承擔風險;自檢(步驟 5)會捕捉到不成功的部分。它也會標記出沒有 design.md 的影片(no-design)、只使用內建動態的副歌(no-signature)、從早期歌曲借用的內建元素(borrowed),以及僅由內建圖層組成的背景(stock-world)。
用兩三句簡單的文字告訴使用者設計理念(「一首關於被監視的歌,所以文字位於一棟夜晚建築物的窗前,窗戶一個接一個亮起;每個字詞在演唱時像窗戶一樣亮起,而副歌將街道調暗到只剩一個亮著的房間」)。
然後設定影片專案(它會重複使用現有專案):
bash SKILL/scripts/new_project.sh "<song>" "<project>" --size 1920x1080 --fps 60 [--overlays artist,timer] [--no-endcard]
並將設計寫入 video/src/data/config.json(顏色、字型、動態、場景、素材)。重新執行 new_project.sh 會保留你放在那裡的所有內容。對於使用此技能舊版本製作的專案,請新增 --update:它會交換目前的範本程式碼,並保留歌曲的資料、其自訂片段和素材。
2c. 使用者的圖片
PY SKILL/scripts/assets.py "<project>" <image files or folder> [--cutout name1,name2 [--person]]
將它們複製到專案中(直立、合理大小),輸出每張圖片的形狀、亮度和主色,並寫入 video/public/assets/sheet.png。查看 sheet。裁剪出應該在畫面中出現但無需背景的主體(--cutout;如果是人,則新增 --person,否則模型可能只保留手或臉)。檢查 sheet 上的每個裁剪;如果邊緣不對,請嘗試其他模型,或改用該圖片作為背景或海報。
根據使用者對每張圖片的說明來使用它們;當他們沒有說明時,根據你所看到的來決定。將它們放置在歌曲需要的地方(工具包,「素材」):一張人像剪影放在主歌旁邊,封面藝術作為背景