Post

使用 OpenCode + Palmier Pro - AI 自動剪輯旅遊 Vlog — 從粗剪影片到 Final Cut Pro

使用 OpenCode + Palmier Pro - AI 自動剪輯旅遊 Vlog — 從粗剪影片到 Final Cut Pro

最近我用了一套很特別的工具組合來試著剪輯一支日本長崎的旅遊 Vlog —— 整個過程幾乎都是由 AI Agent 自動完成的。從匯入原始影片、建立時間軸、上字幕、修正語音辨識錯誤、移除空白片段,到最後匯出 FCPXML 給 Final Cut Pro 做後續調整,全部透過對話指令搞定。

這篇文章會詳細記錄整個工作流程,以及過程中的技術細節與學到的經驗。

為什麼要用 AI Agent 剪片?

傳統剪輯流程中,有大量重複性高卻又耗時的工作:

  • 把幾十段影片依序排上時間軸
  • 逐段上字幕並調整位置
  • 手動刪除講話間的空白沉默片段
  • 調整解析度與影格率

這些工作並不難,但極度繁瑣。如果有一個 AI Agent 能理解你的需求,並直接操作剪輯軟體的 API,那會怎樣?

這就是 OpenCode + Palmier Pro 做的事。

  • OpenCode:一個 AI 編碼代理工具,能理解自然語言指令並執行複雜的多步驟任務。
  • Palmier Pro:一個具備完整 API 的影片編輯器,支援時間軸操作、字幕生成、特效添加等專業功能。

兩者結合後,你只需要用中文描述「幫我把這支 Vlog 剪好,加上字幕,移除沉默片段」,AI Agent 就會自動完成。

事前準備

開始之前,需要先完成三個步驟:

1. 下載並安裝 Palmier Pro

Palmier Pro 是一套原生支援 macOS 的 AI 影片編輯軟體,內建完整的 API 介面。前往 Palmier Pro 官網 下載安裝即可。

安裝完成後開啟 Palmier Pro,建立一個新專案,建議一開始就設定好目標解析度與影格率(如 1920×1080 29.97fps),避免後續轉換。

2. 在 OpenCode 中新增 Palmier Pro 的 MCP Server

OpenCode 透過 MCP(Model Context Protocol)與外部工具溝通。要讓 OpenCode 能操作 Palmier Pro,需要在 OpenCode 的設定檔中註冊 Palmier 的 MCP Server。

編輯 OpenCode 設定檔 ~/.config/opencode/opencode.json,在 mcp 區塊加入:

1
2
3
4
5
6
7
8
9
{
  "mcp": {
    "palmier": {
      "type": "remote",
      "url": "http://127.0.0.1:19789/mcp",
      "enabled": true
    }
  }
}

3. 重新啟動 OpenCode

設定完成後,需要重新啟動 OpenCode 讓它載入新的 MCP Server。重新開啟後,在對話中輸入 palmier_get_media 等指令,如果正確回傳素材列表,就代表設定成功。

你也可以直接問 OpenCode「你有看到 Palmier Pro 的工具嗎?」,它會列出所有可用的 Palmier Pro API 工具。


設定完成後,就可以開始進行 AI 自動剪輯了。

專案概覽

項目數據
原始素材49 個 MP4 檔案
原始總長度約 58 分鐘
最終剪輯25 分 15 秒
影片段落數94 段
章節4 章(含開場與 3 個章節標題)
字幕數量192 句
移除的空白片段41 段,共 4685 影格

工作流程詳解

1. 素材整理與匯入

原始影片來自 Insta360 相機,存放在 ~/Desktop/insta影片暫存/ 目錄下。共 49 個 MP4 檔案,總長約 58 分鐘,涵蓋從武雄溫泉車站、雙星 4047 觀光列車、長崎市區到哥拉巴園的完整旅程。

AI Agent 的第一步是掃描目錄、取得所有素材資訊,然後依照時間順序開始建立時間軸。

2. 時間軸建立

透過 Palmier Pro 的 add_clips API,OpenCode 一次將所有影片片段依序放到時間軸上。Palmier 會自動處理片段之間的覆蓋關係(新片段覆蓋舊片段的重疊區域),並同時建立對應的音軌。

這一步如果手動做,至少要拖曳 94 次;透過 AI Agent,一個指令就完成。

3. 章節設計與 B-Roll 過場

為了讓影片更有結構,AI Agent 在時間軸上插入了 3 個章節標題(Chapter 1: 雙星4047 觀光列車、Chapter 2: 長崎市區漫步、Chapter 3: 哥拉巴園·夕陽),並在章節之間加入了 B-Roll 片段作為場景轉換。

章節標題使用了雙層設計:

  • 主標題:PingFangSC-Semibold 48pt
  • 副標題:PingFangSC-Medium 32pt,金色

轉場則透過 opacity 關鍵幀製作淡入淡出效果。

4. 自動語音辨識與上字幕

Palmier Pro 內建了裝置端(on-device)的語音辨識功能。透過 add_captions API,AI Agent 一鍵生成了 192 句繁體中文字幕,時間軸定位精準。

字幕設定:

  • 字型:PingFangSC-Semibold 36pt
  • 顏色:白色
  • 位置:畫面下方(centerY=0.9)

5. ASR 校正(最耗時的一步)

自動語音辨識不可能百分之百正確。由於說話者有口音、環境有雜音,辨識結果出現了不少錯誤。以下是實際遇到的幾類問題:

專有名詞錯誤:

  • 「雙清」→ 應為「雙星」(雙星4047觀光列車)
  • 「長期」→ 應為「長崎」(出現了 6 次)
  • 「Pluza」→ 應為「プラザ」

語句分段不當: AI Agent 使用了批次取代的方式來修正,但過程中有個重要的教訓:執行 ripple_delete(移除空白片段)之後,有 8 句修正過的字幕因為時間軸變動而遺失,必須重新修正一次。

這告訴我們:字幕修正應該在移除空白片段之前完成,或者至少修正後要重新驗證一次。

6. 移除空白沉默片段

這是整個流程中效果最明顯的一步。旅遊 Vlog 中經常有說話者停頓、思考、或走路的片段。AI Agent 透過 get_transcript 取得每句話的時間戳記,找出間隔超過 1 秒的空白段落,然後用 ripple_delete_ranges API 一次移除。

結果:

  • 共移除 41 段空白
  • 節省 4685 影格(約 3 分 15 秒)
  • 影片從 28 分 30 秒縮短為 25 分 15 秒
  • 移除後所有字幕自動跟隨時間軸移位,無需手動調整

ripple_delete_ranges 是關鍵 API:它不僅移除指定範圍,還會自動關閉空隙並同步鎖定音軌,確保影音同步。

7. 解析度與影格率變更

最初專案設定為 24fps 736×400,但原始素材全部是 29.97fps 的 1920×1080 影片。這個不匹配會導致匯出到 Final Cut Pro 時出現問題。

解決方案是在 Palmier Pro 中直接變更專案設定。Palmier 會自動將所有片段重新取樣到新的影格率,所有剪輯點、字幕時間碼、關鍵幀都會自動轉換。

1
2
24fps → 29.97fps 轉換係數:30/24 = 1.25
45444 frames @ 30fps = 25:15(與原始剪輯等長)

8. FCPXML 匯出

整個專案的最後一步是匯出成 FCPXML,讓使用者可以在 Final Cut Pro 中進行最終調整。

這裡有幾個重要的技術細節:

影格率處理: 如果使用 NTSC 29.97fps 格式,FCPXML 的時間值必須使用 1001/30000s 的影格時長,不能直接寫 N/30s。最簡單的解決方案是匯出為 30fps(整數影格率),這樣可以完全避免 NTSC 的影格邊界問題。

1
2
3
<!-- 正確的 30fps 設定 -->
<format id="fmt-1080" name="FFVideoFormatRate30" 
        frameDuration="1/30s" width="1920" height="1080"/>

只匯出影片片段: 測試發現,FCPXML 中的字幕片段和透明度關鍵幀在匯入 Final Cut Pro 時無法正確讀取。因此策略調整為只匯出影片片段(V1 軌道),字幕和標題直接在 Final Cut Pro 中處理就好。

資源引用: 每個素材檔案使用絕對路徑的 file:// URI 引用,Final Cut Pro 匯入時會自動關聯到原始檔案。

技術架構

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
使用者 (自然語言指令)
    │
    ▼
OpenCode (AI Agent)
    │  ┌──────────────────────┐
    ├─►│ get_media             │ 列出所有素材
    ├─►│ search_media          │ 視覺/語音搜尋片段
    ├─►│ inspect_media         │ 預覽素材+建立逐字稿
    ├─►│ add_clips             │ 建立時間軸
    ├─►│ add_texts             │ 加入章節標題
    ├─►│ add_captions          │ 自動上字幕
    ├─►│ set_clip_properties   │ 設定字型/位置
    ├─►│ get_transcript        │ 取得逐字稿
    ├─►│ ripple_delete_ranges  │ 移除空白片段
    └─►│ get_timeline          │ 匯出時間軸資料
          │
          ▼
       Python 腳本 → FCPXML
          │
          ▼
       Final Cut Pro

實際體驗與心得

優點

  1. 批量操作極有效率:94 段影片的排列、192 句字幕的生成與修改、41 段空白的移除,全部都是 AI Agent 在背景自動完成。手動操作需要好幾小時的工作,AI Agent 幾分鐘就完成。

  2. 一致性:所有字幕使用相同的字型、大小、位置;所有剪輯點精確到影格;不會有人為的視覺不一致。

  3. 可重複性:整個流程記錄在對話中,隨時可以重新執行或調整參數。如果客戶要修改風格,不需要重新剪輯,只需要修改指令。

  4. 無損編輯:Palmier 的 ripple delete 是非破壞性操作,可以透過 undo 復原。AI Agent 可以隨時檢查結果並修正。

  5. 強大的內容搜尋:Palmier 的 search_media 支援視覺與語音雙重搜尋。視覺搜尋可以透過畫面描述找到對應片段(如「海邊的火車」),語音搜尋則能比對逐字稿中的關鍵字。即使 ASR 將「武雄」誤辨為「五雄」,透過語音搜尋依然能精準定位。這在數十段素材中要找特定畫面或發言時非常實用。

限制與教訓

  1. ASR 需要人工校對:語音辨識對專有名詞、外來語、口音的準確率不夠高。建議的做法是先讓 AI Agent 做完批次取代修正,然後人工快速掃描一遍。

  2. FCPXML 相容性:不是所有 Palmier Pro的功能都能完美對應到 FCPXML。字幕和特效需要在 Palmier Pro 端處理,或是在 Final Cut Pro 中重新製作。

  3. 背景音樂需要額外處理:原本計畫加入背景音樂,但 Palmier Pro 的 AI 音樂生成功能需要額外配額。解決方案是在 Final Cut Pro 中手動加入音樂。

給想嘗試的人的建議

  1. 準備好原始素材:先將素材整理好,確認檔案格式與解析度一致。
  2. 先設定正確的專案格式:開始剪輯前就設定好目標影格率和解析度,避免後續轉換的問題。
  3. 字幕修正要在移除空白前完成:減少重複工作的關鍵順序。
  4. 分段驗證:不要一次下完整個流程的指令。每完成一個階段(如時間軸建立、字幕生成),先檢查結果再繼續。
  5. 保留備份:FCPXML 可以當作備份格式,確保在 Final Cut Pro 中可以繼續編輯。

未來展望

這次實驗證明了 AI Agent + API-first 影片編輯器的組合完全可以處理真實世界的專案。隨著語音辨識技術的進步、以及更多 AI 功能(如自動 B-Roll 挑選、智慧片段裁切)的加入,AI Agent 自動剪輯的能力只會越來越強。

下一步計畫:

  • 加入背景音樂自動生成與時間軸對齊
  • 探索 AI 自動挑選最佳片段的功能
  • 建立可重複使用的剪輯模板

結語

從 49 段原始影片、58 分鐘的雜亂素材,到 25 分鐘結構完整的旅遊 Vlog,整個過程我只做了兩件事:描述需求,然後確認結果。

AI Agent 不是要取代剪輯師,而是要讓剪輯師能專注在創意決策上:選什麼片段、用什麼風格、怎麼說故事。重複性的操作,交給 AI 就好。

如果你也在嘗試 AI 影片編輯,歡迎留言交流。


本文使用的工具:OpenCode(AI Agent)、Palmier(API-first 影片編輯器)、Final Cut Pro(後製調整) 所有素材皆為自行拍攝。

This post is licensed under CC BY 4.0 by the author.

© homedad. Some rights reserved.

Using the Chirpy theme for Jekyll.