我第一次用 Claude Code 做一支真人剪輯的 Reels:從腳本到抓 bug 全紀錄

這篇要記錄的,是我第一次讓 AI(Claude Code)從頭到尾參與一支 Instagram Reels 的實際製作。不是生成一段素材,而是拿真實拍攝的舞蹈影片,從腳本文案、剪輯邏輯、程式化合成到抓 bug,全部在對話裡完成。主角是舞者 Latiifah(IGMedium),題材是一支「同一個女生,5個不同男舞伴」的計數懸念型 Reels,用意是介紹 Salsa Social 換舞伴的文化給完全不懂 Salsa 的人看。

這篇不會逐行貼程式碼,重點放在怎麼跟 AI 溝通、它在哪些地方會犯錯、我怎麼發現問題、又是怎麼一起把問題連根拔起,這個過程比最後那支 23 秒的影片本身更值得記錄。

會想動手試這件事,是因為網路上這陣子太多人在講「用 Claude 就能做出影片」,我卻沒有真的自己實驗過。而且看了一輪之後發現,這些貼文大多是留言就送教學,實際私訊過去,教學最後都會導向要付費的課程。與其一直看別人講,不如自己實際做一次,真的卡關的地方在哪、AI 又能幫上多少忙,做完就知道了。

這篇文章分兩部分:先照實際發生的順序,講一次整個實作過程,包含反覆試錯、走過的彎路;最後我會整理一份「如果重來一次,我會先把這些事情告訴 AI」的清單,給想做類似專案的人一個可以直接參考的起點。

先講幾個數字:原始素材有 16 支不同影片,Composition.tsx 前前後後渲染了超過 20 個版本,最後成片長度是 23.8 秒。

成品實際發布在 IG 上,可以直接看:

同一位舞者跟五位不同男舞伴分別跳舞的畫面拼接,示意這支影片的核心概念

先讓 ChatGPT 發想,再交給 Claude 執行

影片的點子最一開始不是在 Claude 裡想出來的,而是先丟給 ChatGPT。發想這個階段,以這次專案的體感來說,我覺得 ChatGPT 的效果比較好,天馬行空的點子丟出去,它接得住、也會反問一些方向。等發想得差不多,我請 ChatGPT 直接產出一份拍攝用的 MD 檔(一種排版簡單的純文字筆記檔),把整支影片的畫面結構寫下來。因為這份 MD 檔裡本來就寫了要用到 Salsa Social(社交舞會)的畫面,所以我後來跟 Latiifah 要素材的時候,才會很明確地說我需要她的 Social 場合影片,而不是隨便要一批素材再回頭想能拍什麼。

這個發想階段有件事我覺得蠻值得一提的:我全程是直接用中文、用講話聊天的方式跟 ChatGPT 討論,不是丟關鍵字或英文提示詞,效果真的很好,對話很順、也很自然。不過聊久了之後,話題會慢慢開始發散、跑題,一開始我以為這是 ChatGPT 的極限,後來才發現是我自己沒用對方式:ChatGPT 裡面分成「chat 模式」跟「work 模式」,在 chat 模式裡自由聊到一定程度之後,可以直接跟它說要切到 work 模式,切過去之後收斂效果會變得很好,也就是靠這個方式,才把前面天馬行空的討論收斂成那份定稿的 MD 檔。如果你也想用 AI 幫忙發想內容,這個「先用 chat 模式聊、聊夠了再切 work 模式收斂」的順序很值得自己試一次。

MD 檔定稿之後,我才把執行的部分交給 Claude。原因是 Claude 拿到具體的腳本之後,會很穩定地照著既定方向做,不會像自由聊天那樣慢慢跑題,適合接手已經收斂好的具體產出,繼續往下執行。

先把腳本文案磨到不會被誤解

動手剪片之前,我先跟 Claude 來回改了好幾輪腳本文案。這支影片最容易踩雷的地方,是「同一個女生、換了很多舞伴」這件事很容易被誤讀成在講女生的感情觀,所以逐句檢查用詞變得特別重要:

  • 不能寫「一個晚上」,因為素材其實跨了好幾個不同場地和服裝,這樣寫會跟畫面對不上。
  • 不用「規則」,改用「通常」,因為換舞伴是常見文化,不是硬性規定。
  • 不寫「不是花心」,這種寫法等於還是在對女生的行為做道德評價,乾脆整句拿掉,只保留「不是約會、不是聯誼」這種場景排除的說法。
  • 不寫「每一晚都能跳滿」,太像效果保證。

這些修正大多不是我一次講清楚的,而是我看過一版文案覺得「怪怪的」,跟 Claude 討論「怪在哪裡」之後才慢慢逼近精確的說法。這些決策跟理由,Claude 自己整理成一份文件留了下來,之後做同系列影片時,不管是我自己還是換一個 AI 接手,都能直接查到「這句話為什麼不能這樣寫」,不用每次重新踩一次雷。

Remotion:Claude 自己把剪輯邏輯寫成程式,也自己改了校對方式

實際合成影片用的是 Remotion,一個用程式碼寫動態影片的框架。這裡要說清楚:程式碼從頭到尾都是 Claude 自己寫的,我沒有打算自己去寫。整支片我的角色比較接近判斷創意方向、看畫面抓違和、決定文案怎麼寫、驗收 AI 做出來的結果,還有讓兩個 AI 交叉校對,而不是自己下去寫程式或剪接。

沒多久畫面就開始出狀況:字卡疊在一起、對白跟畫面對不上。我只從畫面回報現象,抓了幾次這種 bug 之後,我直接跟 Claude 說:

2.30 跟 2.85 哪裡有一個重複的片段,會有一個抖動感,我覺得你應該要重寫你的 tsx。

Claude 照著這句話把底層寫法整個重寫過,之後同一類的 bug 就沒再出現。這整個判斷跟改法完全是它自己決定的,我只丟了那句話,實際上是怎麼改的我其實沒有概念。

但這種靠「看畫面抓 bug」的方式,本身就有一個根本限制:影片做出來之後,我看到的是一段連續畫面,很難精確講出「哪一秒的哪個地方該怎麼調整」,回饋常常只能停在「感覺怪怪的」這種模糊程度,跟上面那句「2.30跟2.85有重複片段」算是我少數講得夠精準的一次,大部分時候沒辦法這麼具體。於是後來我們換了一個做法:先不急著把影片做出來,退回去純粹討論那份 Remotion 的程式碼,也就是 Composition.tsx 這個編輯用的文字檔,因為文字是可以逐行指出問題、逐行討論的,畫面不行。

具體做法是把 Composition.tsx 交給 ChatGPT,請它幫忙看這份剪輯邏輯有沒有問題,這個檔案本身我沒有打開看過。ChatGPT 收到之後,自己回頭去找出它先前發想階段生成的那份拍攝腳本 MD 檔,把兩者對照比較,檢查 Claude 寫的片段長度、順序、字幕切換是不是符合腳本原本的設計。它抓出意見之後,Claude 直接拿去修改,改完再讓 ChatGPT 對照一次,這樣來回好幾輪,我在中間做的事只是叫兩邊「換你去看一下」,實際校對的內容全部是這兩個 AI 自己你來我往,不是我自己在中間看懂內容、轉手傳話。這整段來回都還沒有真的把影片做出來,純粹是文字稿層級的討論。等 ChatGPT 確認 Composition.tsx 跟拍攝腳本對得起來了,才真正請 Claude 把它做成影片,那一次的成果明顯好很多。

回頭看,這算是這次合作最重要的一個心得:影片剪輯這種需要精準對時間的工作,先把「文字化的編輯邏輯」討論到位,比一開始就急著看畫面更有效率,因為文字稿改起來快,也比較容易找另一個人(或另一個 AI)幫忙校對,等邏輯確定了再花時間轉出影片,才不會每次為了看效果而浪費大量時間等待。

真人配音,用 Whisper 對回畫面時間軸

配音一開始想用 AI 語音(ElevenLabs)念稿,聽起來語氣不夠自然,換了幾個聲音候選都不滿意。後來換了個做法:請本人先錄一小段自己的聲音,再上傳到聲音克隆工具裡,讓 AI 用她真實的音色念完整份稿子(聲音樣本的上傳、克隆、成片使用,事先都取得 Latiifah 本人同意)。這個階段也試了兩家:ElevenLabs 跟 DeepVid AI。中文的部分,DeepVid 生成出來的語調明顯更自然、更像真人在講話,之後如果要做中文配音,會優先選 DeepVid。

不管是哪一種方式生成的配音,最後都會遇到同一個問題:一整段連續的語音,要怎麼精準切成每一句對應到畫面的時間點?

答案是本地跑 Whisper(OpenAI 的開源語音辨識模型),把整段錄音丟進去,會回傳每一個字詞的時間戳,精確度足以對齊到畫面的秒數。有了這份資料,就能把錄音切成一句一句的音檔,再回頭對齊每個畫面片段該撐多長。後來又換過一版語氣更好的配音,同樣流程重跑一次,整條時間軸(哪個片段撐多久、字幕什麼時候切換)就跟著新錄音的語速重新對過一輪。因為前面 Claude 已經把底層寫法整理過,這次重新對時反而變得很輕鬆,不用再一格一格重新手動對一次。

跟另一個 AI 協作找素材

這支片需要在同一支手機拍攝的素材夾裡,挑出「同一個女生、五個不同男舞伴」的乾淨鏡頭,還要避開場地 Logo、避開跟已用過片段重複的時間點。素材夾裡有十幾支長度不一的原始影片,光靠對話一支一支描述根本記不住哪支能用、哪支有問題。於是我自己先把整個素材夾整理成一份「素材索引表」,逐支影片標記可用區間、適用情境(Hook 開場鏡頭、互動、換舞伴等)、畫質或遮擋限制,同時手上也已經有先前發想階段那份拍攝腳本(也就是前面提到請 ChatGPT 產出的 MD 檔)。接著請 ChatGPT 桌面版把這份素材索引表拿去對照拍攝腳本,逐一標出腳本裡每個畫面需求該對應到素材索引裡的哪一段。這份索引跟對應結果後來變成整個剪輯過程真正的共同工作底稿:不是我一個人在腦中記素材,而是兩個 AI 都在讀寫同一份文件。

目前的剪輯需求是 Claude 寫進這份文件的,接著 Claude 自己切換到電腦上的 ChatGPT 桌面應用程式(用它的電腦操作能力),把文件更新的事告訴 ChatGPT,我這邊只是定期看螢幕截圖、確認它的進度。ChatGPT 會直接在同一份文件裡補上自己查到的候選片段、建議的時間碼、對現有安排的意見,Claude 再回頭讀這份被 ChatGPT 更新過的文件,繼續下一輪剪輯。整個過程,Claude 跟 ChatGPT 都是在讀寫同一份 txt/Markdown 編輯文件,等於是兩個 AI 輪流編輯同一份稿子,而不是即時對話,我在旁邊看進度就好,這個模式對「需要人工還要盯進度」的任務其實蠻實用的。

抓 bug 最花時間的一次:畫面「抖一下」

影片剪到後期,我回報「12-13秒那裡,畫面會抖一下」,就這麼一句話,剩下的排查完全是 Claude 自己一步步做的,我沒有另外提示方向。這個問題最後花了好幾輪來回才真正解決,過程很值得記下來,因為它示範了 AI 在「表面上技術檢查都過關,但問題確實存在」時是怎麼自己往下挖的:

  1. 先懷疑素材本身:Claude 把該片段單獨切出來、不加任何字幕配樂,讓我直接看原始素材,我確認素材本身沒問題,這個方向排除。
  2. 檢查影片檔案的時間戳:Claude 用 ffprobe(一個可以檢查影片檔案技術細節的工具)檢查轉出來的成片,每一幀的時間戳完全平均,沒有掉幀、沒有重複時間戳,技術上「看起來」完全正常。
  3. 關鍵線索:重新轉一次影片,抖動點換了位置。這是 Claude 自己抓到的突破口:如果問題出在素材或程式邏輯,同一份程式碼、同一批素材,理論上每次轉出來的結果應該完全一樣。抖動點會「亂跳」,代表問題出在轉檔過程本身帶有隨機性,而不是輸入內容有問題。

Claude 最後查到根因:Remotion 裡有兩種放影片的元件,<Video> 是設計給互動預覽用的,把畫面轉存成影片檔的時候,其實是叫瀏覽器真的把影片播放、跳轉到指定畫面再截圖存成那一幀。而這支片畫面上同時疊了好幾個影片(例如前五位舞伴的快速閃回,一次疊五個),瀏覽器來不及把每一個都跳轉完成,截圖工具就先按下快門,於是重複截到上一幀的內容。這種重複不會讓輸出檔案的時間戳出錯,只有畫面內容本身在跳動,而且發生在哪一幀帶有隨機性,正好解釋了「時間戳查不出來」加上「每次抖動點不一樣」這兩個現象。Remotion 官方其實建議轉出影片時改用另一個元件 <OffthreadVideo>,直接用 ffmpeg(一套很常見的影音處理工具)精準抽幀、不靠瀏覽器播放時序,Claude 換掉之後問題就沒再出現過。

這次的心得是:「技術檢查都過關」不等於「沒問題」,尤其當我描述的現象每次都不太一樣時,那個「不穩定」本身就是最重要的線索。整段排查我幾乎沒有介入,只是負責回報「哪裡怪怪的」,真正順著線索一路往下追、排除掉每一個不成立的假設的,是 Claude。

安全區也會被 AI 一開始忽略的細節

另一個很實際的問題:畫面上的「1、2、3、4、5」數字牌,一開始是固定貼在畫面右側同一個位置,但不同鏡頭裡舞伴出現的位置差很多,數字牌常常沒有真的貼在舞伴旁邊。改成每個鏡頭各自的座標之後,我又回報「有時候會超出 Safe Zone」,還附了 IG Reels 官方的安全區規格圖:上方 250px、下方 420px、左側 70px、右側扣掉按鈕欄大約 190px,這塊區域以外的內容會被平台自己的介面(頂部欄、按讚留言分享按鈕)蓋住。

對照座標一查,確實有好幾個數字牌的位置跑到這個安全框以外。修正的做法是把所有座標收進安全框內,同時還要注意數字牌彼此之間、跟其他字卡之間不能互相重疊(例如第五位舞伴的數字牌,要避開同時出現的「5個不同男舞伴」大字卡)。修完之後用程式在畫面上疊一個紅框做安全區的視覺輔助線,逐一擷取每個舞伴出現當下的畫格檢查,確認全部收在框內才算過關。

五個舞伴出現當下的畫格,各自疊上紅色安全區框驗證數字牌位置

封面圖也踩了類似的坑,而且踩了三次:第一版文字放在最上方,超出 Reels 播放時的安全線;改到安全線以下之後,又沒注意到 IG 大頭貼、貼文格會用置中的 1:1 正方形去裁切整張圖,文字被裁掉一角;改進正方形安全區之後,這次直接把文字疊在兩個人的臉上。最後一版才把文字挪到臉部下方、比較單調的服裝區域,加上一層半透明底色維持可讀性。這幾次修正沒有一次是我一開始就想到的,都是做出來看了才發現不對,一步步收斂到真正沒問題的版本。

封面圖三次疊代對照:文字超出安全線、文字壓在臉上、最終版文字移到下方

為下一支影片先把檔案整理好

影片定案之後,我們花了一點時間整理專案資料夾,因為接下來還會有其他舞者、同一個舞者也會有好幾支不同集數的影片。最後採用的架構是「先分舞者、再分集數」:每個人有一份自己的素材索引(因為原始素材夾是跟著人走的,之後每一支新影片都會回頭延伸同一份索引,而不是每支片重開一份),每支影片各自有獨立的腳本、審查記錄、Remotion 專案跟輸出資料夾。開新影片的程式專案時,也順手換了一個更省硬碟空間的安裝工具 pnpm,不用每支片都重複占用好幾百 MB 的安裝檔案空間。

這件事本身沒有技術難度,但值得先講清楚:如果沒有先想清楚「以後同一個人會有好幾支片、以後會有好幾個不同的人」,資料夾很快就會變成看檔名猜內容的狀態。趁專案還不多的時候把慣例定下來,比事後回頭重新分類省事很多。

配樂故意不放進匯出檔,留到手機上再加

最後匯出的檔案裡沒有任何背景音樂,只有畫面、VO 旁白、Title 字卡跟 CC 字幕(畫面下方那種逐句顯示的字幕)。背景音樂留到上傳前,再用手機上的剪輯 App 另外加。這是討論配樂方向時決定的,原因有兩個:第一,這支片幾乎全程都有 VO 在講話,配樂只能當很小聲的節奏底,很難兼顧「有 Salsa 氣氛」又「不蓋過旁白」;第二,也是比較關鍵的一點,IG Reels 上傳後可以直接用平台內建的音樂庫加官方授權的音樂,版權風險比自己混音樂進檔案低很多(實際使用範圍還是要看帳號類型、地區、商業用途,以 Instagram 官方說明為準),用「趨勢音樂」也有機會多一點被看到的機會,但這不是平台保證的效果。如果直接把版權歌曲混進匯出的 mp4 檔案裡,之後上傳反而容易被下架或限流。所以做法是匯出檔維持純畫面加旁白,上傳到 IG 後再用內建音樂庫另外加一軌,音量調到很小聲,純粹當氣氛底。

如果重來一次

上面是實際發生的過程,很多坑是做到那一步才踩到的。如果是現在的我,要重新開始做一支類似的影片,有兩件事會不一樣:一開始就先把某些事情講清楚,還有整個流程的順序會重新設計過。

1. 我會先跟 AI 講的事

這些是具體的限制或偏好,一開始就講清楚,AI 從第一版就不會踩到,不用等做出來才回頭改:

  • IG Reels 的安全區規格:這次採用的檢查模板是上方 250px、下方 420px、左側 70px、右側扣掉按鈕欄約 190px(1080×1920 畫布),數字牌、字卡、封面圖的位置從第一版就不會超框。這組數字是當時的介面狀態,平台後續可能會調整,正式發布前最好用實際帳號預覽再確認一次。
  • IG 大頭貼/貼文格會用置中 1:1 裁切:畫布中央 y:420–1500px 那個正方形範圍,是封面圖唯一保證兩種顯示方式都看得到文字的地方。
  • Remotion 轉出影片一定要用 <OffthreadVideo>,不要用 <Video>:這件事我們是繞了一大圈、抓了一次很難查的抖動 bug 才發現的,其實一開始就講清楚就能避開。
  • 如果要做中文配音、克隆真人聲音,直接先用 DeepVid AI:中文語調明顯比 ElevenLabs 自然,不用每次都兩家重新比較一遍。
  • 每支影片、每個人各自獨立一個資料夾/專案:素材檔名容易撞名、版本容易搞混,一開始就照人物、集數分好,之後省下大量整理時間。

2. 整個流程會怎麼重新設計

這些是做事的順序,跟這次實際發生的順序不完全一樣,是把繞過的彎路拉直之後的版本:

  1. 先用 ChatGPT 的 chat 模式自由發想,聊得差不多之後主動切到 work 模式,收斂成一份具體的拍攝腳本 MD 檔。
  2. 腳本定案之後才跟舞者要素材,直接講清楚需要哪些場景(例如 Social 場合),不要先要一批素材再回頭想能拍什麼。
  3. 素材到手,先建一份素材索引表,請 ChatGPT 拿去對照拍攝腳本,標出每個畫面需求對應素材的哪一段,這份對照表就是後續剪輯的底稿。
  4. 每次改動先讓另一個 AI 校對文字稿層級的剪輯邏輯,確認沒問題再下指令做成影片,不要一開始就急著看畫面來回猜。
  5. 配音先定版本、用 Whisper 切好時間軸,再開始剪,減少中途換版本重跑一次的狀況。
  6. 遇到奇怪的畫面問題,回報可觀察到的現象、時間點、預期結果,以及問題是不是每次都出現在同一個位置,先不要把自己的猜測當成根因,讓 AI 根據這些線索自己排查。
  7. 配樂留到最後,上傳前用手機 App 加,不要一開始就想把它烤進匯出檔。

整體感想

這次合作讓我比較清楚感覺到,AI 在影片製作這件事上真正省下來的時間,不是「幫我生成畫面」,而是把大量瑣碎但容易出錯的對齊工作接手處理掉:精確切音檔時間點、重算幾十個片段的幀數、逐格比對安全區座標。這些事人工做很花時間又容易出錯,但也因為這樣,過程中真正需要我盯著的,反而是那些「感覺不對但說不出哪裡不對」的時刻,一段畫面抖了一下、一句文案讀起來怪怪的、一個數字牌好像貼歪了。這些直覺上的違和感,還是要靠人來抓,AI 負責的是抓到問題之後,把根因一路挖出來、確實修好,而不是頭痛醫頭。


本文整理自與 AI 助手(Claude Code)協作、為 Latiifah 製作 Salsa Reels 短影音的過程紀錄。