AUTOMOVIE 操作手冊

🚴 影片 + FIT 檔 → 自動生成 AI 旁白與字幕

單機版工具:把騎乘的第一人稱行車紀錄影片,配上 Garmin / Wahoo 匯出的 FIT 檔, 自動生成有畫面根據、有數據支撐的熱血旁白配音、動態字幕、心率功率驅動的節奏背景音。 全程在你自己的電腦上跑,影片不上傳、不複製,只讀取原檔路徑。

Windows 11 單機執行,無雲端上傳 GPU / CPU 自動切換 可自帶 AI(Claude Code / Codex / Antigravity)

成品範例

這支影片就是用 AUTOMOVIE 產生的:原始素材是一段第一人稱行車紀錄影片加上 FIT 檔, 影片裡的旁白配音、動態字幕、節奏背景音全部由程式自動生成, 內容根據截圖畫面與騎乘數據撰寫,再經人工逐句校對修改。

🎙 旁白:edge-tts 語音合成 💬 字幕:依畫面與數據生成 🥁 背景音:心率+功率驅動 ✍ 人工校對後輸出

在 YouTube 上觀看:https://youtu.be/SApBGdFJeu8

i這是什麼/不是什麼

✔ 是這樣的
  • 單機工具,影片、FIT 檔留在你電腦上原本的位置,程式只記路徑、不複製
  • 旁白內容根據真實截圖畫面與 FIT 數據寫成,不是憑空生成
  • AI 部分是「帶你自己的」——你自己裝好 Claude Code / Antigravity CLI 等 指令列工具,程式呼叫它,額度算你自己的
  • 不需要 AI 也能用:退回數據規則生成(只播數字,沒有畫面劇情)
  • 支援同一趟騎乘的多段影片自動接成一支(相機分段錄影也沒問題)
  • 可疊加儀表盤(速度/功率/心率/迴轉數/高度/坡度/時間), 位置大小顏色都可自訂並存成配置,跟旁白字幕一次轉檔完成
  • 可設定多個 AI 工具依序備援,一個額度用完自動換下一個
✘ 不是這樣的
  • 不是雲端服務,沒有帳號、沒有訂閱
  • 不會把你的影片上傳到任何地方(TTS 配音例外,需連微軟的語音服務)
  • 不保證 AI 寫的每一句都 100% 正確——程式有自動查核機制會標出可疑句子, 但最終還是要你人工確認

1系統需求

項目需求
作業系統Windows 11(Windows 10 未測試)
Python已內建可攜式版本,免另外安裝
ffmpeg已內建(含 GPU 編碼版本),免另外安裝
網路語音合成(edge-tts)需要連線;若有設定 AI CLI,AI 那部分也需要網路
GPU(選用)NVIDIA 顯卡若驅動支援 NVENC 會自動使用,加速轉檔;沒有就自動退回 CPU
AI CLI(選用)Claude Code 或 Antigravity CLI 擇一,用來做「截圖場景辨識」與「旁白撰寫」;不裝也能用,但旁白會比較平淡
關於 GPU / CPU 生成影片畫面的「解析度」下拉選單旁邊會顯示目前偵測到的編碼方式(自動/GPU/CPU)。 NVENC 需要驅動版本配合,程式啟動時會實際測試一次是否可用,不是單看版本號猜測。

2快速開始

整體流程只有五步,畫面上由上到下依序編號:

AUTOMOVIE 完整介面總覽
介面總覽:由上而下依序是「專案」「設定」「提示詞範本」, 接著才是編號 1~5 的主要工作流程。
  1. 選擇素材 — 貼上影片路徑與 FIT 路徑(或用「選擇…」跳出檔案總管挑選), 同一趟騎乘有多段影片可以「+ 新增影片片段」逐段加入,按「建立專案」
  2. 對時 — 讓程式知道「影片的第幾秒」對應「FIT 檔裡的哪個真實時間」, 原始相機檔可以一鍵用檔案本身的錄影時間對時,不用看畫面
  3. 分析截圖 — 抽取畫面、用 AI 描述每張截圖的騎乘情境; 可以手動設定間隔,也可以交給 FIT 數據自動找出高光時段
  4. 旁白 / 字幕 — 按「重新產生旁白」讓 AI 根據截圖說明+數據寫腳本, 逐句檢查修改
  5. 生成影片 — 選解析度、要不要節奏背景音與儀表盤配置, 按「生成影片」,完成後直接在頁面上播放

3Step 1:選擇素材

專案下拉選單
頁面最上方是「專案」下拉選單,之後每次要接續之前做過的專案, 從這裡選就好,不用重新選路徑。

在「1 選擇素材」區塊貼上影片FIT 的絕對路徑,或直接按旁邊的 「選擇…」跳出 Windows 原生選檔視窗(這個視窗是在你自己電腦上開的,不會有任何檔案被傳出去)。

填好路徑並建立專案後的狀態
建立專案後會顯示影片的解析度、長度、FIT 紀錄筆數; 下方「參考附件」可以額外加圖檔/網頁連結/文件檔(見下方說明)。
為什麼是貼路徑,不是上傳檔案? 這是單機工具,影片動輒好幾 GB,透過瀏覽器上傳再複製一份完全沒必要, 也拖慢速度。程式只記錄路徑,實際讀取都是直接對原始檔案操作。

多影片組合(同一趟騎乘的多段錄影)

行車紀錄器有時會自動分段錄影,或某段路你分開錄了好幾支—— 按「+ 新增影片片段」可以依序加入多支影片,它們會依照你加入的順序 自動接在同一條 FIT 時間軸上,最後一次轉檔輸出成一支完整影片, 不需要先用其他軟體剪接、也不會二次轉檔。

四段影片片段的素材選擇畫面,各自有獨立路徑欄位
每個片段各自一列,可各自「選擇…」或用 ✕ 移除; FIT 只需要一份,涵蓋所有片段的時間範圍即可。 上圖是一趟被相機自動切成四段的實際專案。
片段規格要一致 多段合併需要相同解析度與幀率(同一台相機同一次設定通常沒問題)。 規格不一致的話,建立專案時就會直接報錯告訴你哪一段不對, 不會等轉到一半才失敗。
片段之間沒錄到的空檔怎麼算? 完全不影響——每一段各自對時之後,程式會用真實時間戳記把 FIT 數據 正確對應到每一段裡,段落之間沒拍到的時間會自動跳過, 儀表盤上的時鐘、心率、功率等數據到了下一段會正確接續,不會有錯位。

參考附件(選填)

按「+ 新增附件」可以加入三種類型的參考資料,內容會被整理成文字, 在後面「產生旁白」時提供給 AI 參考(例如排行榜截圖裡的名次、對手名字):

類型用途限制
圖檔排行榜截圖、路線圖等;AI 會讀圖描述內容 需要先設定好 AI CLI
網頁連結公開的活動介紹頁、部落格文章 需要登入才看得到的頁面(例如 Strava 活動頁)抓不到, 會被自動偵測並擋下,請改用截圖
文件檔.txt / .md / .csv 直接讀;.docx 也支援

每一筆附件旁邊都有「測試讀取」按鈕,加進去當下就能確認抓不抓得到內容,不用等到跑到一半才發現。

4設定 AI(選填,但強烈建議)

這是整個工具「有沒有靈魂」的關鍵設定。AI CLI 負責兩件事:看截圖描述畫面內容、 根據截圖說明與數據寫旁白。不設定也能用,但旁白會退回純數據播報(沒有畫面劇情)。

AI 指令鏈設定,由上而下依序嘗試多個工具
按「🔍 自動偵測我電腦上裝了什麼」掃描已安裝的工具,再按「全部依序帶入」 一鍵建立整條指令鏈;▲▼ 可調整先後順序。

AI 指令鏈:一個掛了自動換下一個

可以設定多個 AI 工具,由上而下依序嘗試。第一個連不上、額度用完、 或發生任何錯誤,會自動換下一個,全部失敗才報錯(錯誤訊息會列出每個工具各自的原因)。 成功的那個會被記住,之後直接從它開始,不會每次都重試掛掉的那個—— 這點很重要,一次連拍分析可能呼叫數十次,每次都先等一個壞掉的工具逾時會多花好幾分鐘。

目前程式認得並且已經實測驗證過能正常運作的工具:

工具安裝方式備註
Claude Code npm install -g @anthropic-ai/claude-code 用你目前登入的 Claude 額度,不用另外申請
Codex CLI npm install -g @openai/codex 最快:圖片用 -i 直接附加給模型,不是叫它自己開檔。 實測 6 張連拍 10.2 秒,Claude Code 同樣 6 張要 22.6 秒
Antigravity CLI winget install Google.AntigravityCLI Google 出的終端 AI 代理工具, 完整安裝與認證步驟看這裡 →
Gemini CLI 自行安裝並登入 指令範本尚未實測驗證,填入後請按「測試」確認
這格到底要填什麼? 「AI 指令模板」就是「怎麼呼叫你電腦上已裝好的工具」的完整指令。{prompt} 執行時會被換成程式要問的問題,{image} 會被換成一張截圖的實際路徑。 例如填 claude -p "{prompt} 圖片路徑: {image}" --allowedTools Read, 實際執行時就會變成 claude -p "描述這張圖...圖片路徑: C:\...\f_001.jpg" --allowedTools Read。 金鑰、登入額度都是你自己的 CLI 在管,本程式不會儲存任何金鑰,只存這串指令文字本身。
變數作用
{prompt}程式要問的問題文字
{image} 截圖路徑。單獨當成一個參數時會展開成多個檔案, 給 -i a.jpg b.jpg 這種多圖參數用; 純文字呼叫(寫旁白)時會連同前面的旗標一起移除,不會留下沒有值的 -i
{out} 暫存檔路徑。填了就從該檔讀答案而不是讀螢幕輸出—— 適合會在畫面印出工作階段訊息、token 統計的工具(例如 Codex)

5Step 2:對時

對時區塊,用檔案時間一鍵對時的結果
對時完成後會顯示這個時間窗口涵蓋的距離、均速、心率、功率統計, 用來確認對時抓對了範圍。

程式需要知道「影片第幾秒」對應「FIT 檔裡的哪個真實時間戳記」, 才能把心率、功率、速度這些數據跟畫面對上。只需要抓一個對應點, 剩下的時間軸就會自動算出來。三種方式由簡到繁:

常見誤會 輸入框裡的「時:分:秒 (例如 08:57:11)」是灰色的格式提示,不是已經幫你填好的值。 手動輸入時一定要照畫面上實際看到的時間填,欄位空著按確認會被擋下並提示重填。
多片段:一鍵全部對時 相機自動分段的原始檔,每一段自己都帶錄影時間,所以不必一段一段點—— 對時區的「⏱ 全部片段一鍵對時」會依序把每段都對好。 (若要逐段處理,切換「對時片段」下拉選單即可;手動或 AI 對完一段後 會自動跳到下一個還沒對時的片段。全部對完才能進下一步。)

6Step 3:分析截圖

這一步做兩件事:抽取畫面(純本機運算,不花 AI 額度)跟 AI 場景辨識(每張截圖真的會呼叫一次 AI,會花額度跟時間)。

截圖間隔設定區,含透過 FIT 自動分析場景的選項
「透過 FIT 自動分析場景」勾選後截圖間隔改由數據決定, 「每批連拍張數」在兩種模式下都通用。

兩種找截圖時機的方式

每批連拍張數(兩種模式都能用)

設 1 是傳統的「單張看圖說故事」模式;設大於 1(例如 5)時, 連續的幾張截圖會整批一次送給 AI,改問「這幾秒發生了什麼變化」—— 誰從哪一側超車、跟前車距離拉近或拉開、隊形怎麼變化, 這種跨張比較單張截圖天生看不出來,連拍多張後描述會明顯更生動、更連貫。 自動分析場景模式下,每個高光時段就是連拍「每批連拍張數」張、每秒一張。

展開的截圖說明清單,連拍分析產生的動態描述
連拍分析產生的描述會寫在整批的每一張截圖上(清單裡看到重複是正常的), 展開後每一列都有縮圖跟可編輯文字,AI 講錯了直接在這裡改。
換過間隔、換過批次大小,都不會浪費之前的辨識結果 截圖說明是用「時間點」存的快取。已經辨識過的時間點永遠不會重花一次 AI 額度; 「🗑 清除辨識重新分析」按鈕只清描述文字,已經抽好的截圖檔案會保留、不重抽, 省下重新解碼影片的時間。

7提示詞範本庫

提示詞範本庫編輯區
可以編輯「截圖說明」跟「旁白生成」兩種範本, 存成多組、跨專案重複使用;內建預設鎖住不能改,按「另存新範本」複製一份修改。

如果你發現旁白的風格、用詞、規則想要調整(例如想要更活潑、想要固定的收尾格式、 想要主角用特定名字稱呼),這裡就是動手的地方。範本存在本機的 SQLite 資料庫 (app/data.db),每個專案可以各自選用不同範本。

範本作用
截圖說明範本決定 AI 怎麼描述每一張截圖的畫面內容
旁白生成範本決定 AI 怎麼把「截圖說明+騎乘數據+附件+補充背景」 寫成最終的旁白台詞,可用變數如 {"{"}duration{"}"} {"{"}table{"}"} {"{"}scenes{"}"} {"{"}context{"}"}
格式錯誤會直接被擋下 旁白生成範本存檔時,程式會先檢查裡面用到的變數是不是都合法(避免打錯字), 格式有誤會在存檔當下就告訴你哪裡錯了,不會等到跑一半才爆炸。

8Step 4:旁白 / 字幕編輯

旁白編輯區,點選某一列後上方顯示對應畫面預覽
點選任何一句旁白,上方會顯示該時間點最接近的截圖畫面、AI 對那張圖的說明, 並把儀表盤直接畫在畫面上——數值取自該秒真實的 FIT 遙測, 可以直接核對旁白講的功率/心率/時間對不對。
校對畫面與旁白的訣竅 預覽區同時給你三件事:截圖、AI 對那張圖的描述、以及該秒的真實數據。 旁白如果說「功率兩百多瓦硬撐」,就看儀表盤上的功率對不對; 說「超越左側車手」,就看截圖與描述有沒有這件事。三者對得起來才算過關。
補充背景怎麼寫比較有效 可以直接寫:主角要怎麼稱呼、今天的天氣心情、想強調的劇情轉折、 收尾要不要固定格式(例如「Strava 路段完成,平均功率/心率/時間」)。 這欄位會被完整送進旁白生成的提示詞裡,寫得越具體,AI 產出的內容越貼近你要的。
主角名字沒生效?先看工作日誌用了哪份範本 「在範本庫裡選一份」跟「這個專案要用哪一份」是兩件事。若範本裡寫了主角名字 但旁白仍自稱「他」,多半是這個專案當下套用的其實是內建預設。 產生旁白時工作日誌會明寫 AI 生成旁白…(旁白範本:正式版),看那一行就知道實際用了哪一份。

9Step 5:生成影片

生成影片控制項與完成後的網頁內建播放器
轉檔完成後直接在頁面上播放,不用下載。 「📁 開啟檔案所在資料夾」會直接跳出檔案總管並選中該檔案。
選項說明
解析度原始(依來源)/1080p/720p
編碼自動(偵測到可用 GPU 就用 GPU)/強制 GPU/強制 CPU
旁白聲音14 個中文聲音(edge-tts,全部免費),與 Step 4 的選擇連動
節奏背景音心率+功率驅動的節奏底層音效,音量可調
片尾停留(秒)最後一個畫面多停幾秒,讓收尾的旁白唸得完
旁白提前(秒) 整份旁白與字幕一起往前挪,預設 0.5。因為講話需要時間, 在該秒才開口的話,關鍵字唸出來時畫面往往已經過去了; 提前一點可以讓描述正好落在那個畫面上。字幕與語音永遠一起移動, 不會互相錯開

生成過程中有真實的進度條(不是假動畫,是解析 ffmpeg 實際回報的編碼進度算出來的), 右側有「⏹ 中止」按鈕,按下去約 1 秒內就會真的停止轉檔行程並清掉半成品檔案。

📟 儀表盤(從 FIT 數據疊加到畫面)

勾選「儀表盤」後,主流程只需要選一個配置並填標題文字即可。 要調整每個數值的位置、大小、顏色,按「🎛 開啟編輯器」會在新分頁打開專用編輯器。

儀表盤編輯器:左側即時預覽,右側每個項目的位置大小顏色
左邊是即時預覽,右邊是每個項目的開關/X/Y/大小/顏色。 調整後畫面立刻更新,不用等轉檔。
位置與大小都是畫面比例 X/Y 用百分比、大小用倍率,所以同一份配置在 720p、1080p、4K 都適用, 不必為不同解析度各存一份。坡度是 FIT 沒有的欄位,程式用高度變化反推 (25 公尺平滑窗),避免氣壓式高度計逐秒微幅跳動造成坡度數字閃爍。
不用再靠 DJI Studio 二次轉檔 儀表盤跟旁白字幕是同一份 ASS 疊加圖層,在同一次 ffmpeg 轉檔裡一起燒錄進畫面, 不會有先套用儀表盤再匯出、又匯入剪輯軟體轉一次檔的重複轉檔耗時與畫質損失。 多影片組合的專案,儀表盤時鐘也會正確對應到每一段各自的真實時間。

?常見問題

影片會被複製或上傳嗎?

不會。程式只記錄你貼的路徑,讀取都是直接對原始檔案操作。 唯一會離開這台電腦的資料是:語音合成(連微軟的 edge-tts 服務)、 以及你自己設定的 AI CLI 呼叫(連你自己 CLI 對應的服務)。

沒有 AI CLI 可以用嗎?

可以。分析截圖那步把「使用 AI 辨識畫面內容」取消勾選, 旁白生成就會退回純數據規則生成(照時速/心率/功率的變化播報), 不會有畫面劇情內容,但功能完全能跑。

轉檔跑到一半可以中止嗎?半成品會留在硬碟上嗎?

可以中止,每個工作階段(分析截圖/產生旁白/生成影片)進度條旁邊都有中止鍵。 中止轉檔時,半成品的 mp4(打不開的壞檔)會被自動刪除,不會留下垃圾檔案。

旁白內容不準確、憑空編造細節怎麼辦?

三層防護:①提示詞明定「不可編造,時間點誤差不超過 2 秒、方向細節要照抄」; ②程式會自動把單張截圖無法判斷的「超車/被超車」描述先過濾掉, 不讓這種本來就不可靠的資訊進到旁白生成的素材裡; ③旁白編輯區會把「畫面查無根據」的句子標橘色提醒你複查。 即使如此,AI 仍可能出錯,最終請以人工複查為準。

網頁連結附件抓不到內容?

常見原因是那個網址需要登入才看得到內容(例如 Strava 活動詳細頁)。 程式會偵測登入頁的特徵字樣並主動擋下,避免把「請登入」這種無意義文字 誤當成真實資料餵給 AI。遇到這種情況請改用截圖,存成圖檔附件。

換了截圖間隔要重新辨識嗎?

不用。截圖說明用時間點存快取,跟間隔脫鉤——不管你怎麼調整間隔, 已經辨識過的時間點永遠不會重花一次 AI 額度。

多段影片一定要解析度、幀率都一樣嗎?

是的,這是 ffmpeg 直接串接畫面流所必須的限制。 同一台相機同一次設定拍出來的通常沒問題;不一致的話建立專案時就會被擋下, 並告訴你哪一段的規格對不上,不會等轉檔轉到一半才失敗。

「透過 FIT 自動分析場景」會不會漏掉重要畫面?

它只看得到功率/心率/迴轉數/速度的數據波動, 抓不到「純視覺事件」——例如漂亮的風景、路牌地標、單純停等紅燈 (這些時候數據通常很平穩,不會被判定為高光)。 如果這些畫面對你很重要,建議改用手動間隔模式,或間隔調小一點。

轉檔跑到一半網頁斷線/不小心關掉了怎麼辦?

工作是在背景跑的,跟網頁分開。短暫斷線時進度條會顯示「連線中斷,自動重試中」 並持續嘗試最多五分鐘,恢復後自己接回去;重新整理或重開網頁、再載入同一個專案, 也會自動接回還在執行的工作,完成時照樣往下開下一個步驟。

旁白把「心率」唸成「心帥」?

「率」有兩個讀音,語音引擎在「心率」會挑錯。程式會在送去合成之前 把它換成同音的寫法,字幕仍然顯示正確的「心率」——看到的跟聽到的都對。 語音快取是以「實際唸出的文字」為鍵,所以修正後舊的錯誤發音不會被沿用。

GPU 沒有被使用?

程式啟動時會實際測試一次 NVENC 能不能用(不是只看驅動版本號), 設定頁最上方會顯示目前偵測到的 ffmpeg 路徑跟 GPU 狀態。 若你的顯卡驅動版本跟 ffmpeg 要求的 NVENC API 版本不匹配, 會自動退回 CPU 編碼,仍然能正常轉檔,只是速度較慢。