▶成品範例
這支影片就是用 AUTOMOVIE 產生的:原始素材是一段第一人稱行車紀錄影片加上 FIT 檔, 影片裡的旁白配音、動態字幕、節奏背景音全部由程式自動生成, 內容根據截圖畫面與騎乘數據撰寫,再經人工逐句校對修改。
在 YouTube 上觀看:https://youtu.be/SApBGdFJeu8
i這是什麼/不是什麼
- 單機工具,影片、FIT 檔留在你電腦上原本的位置,程式只記路徑、不複製
- 旁白內容根據真實截圖畫面與 FIT 數據寫成,不是憑空生成
- AI 部分是「帶你自己的」——你自己裝好 Claude Code / Antigravity CLI 等 指令列工具,程式呼叫它,額度算你自己的
- 不需要 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 擇一,用來做「截圖場景辨識」與「旁白撰寫」;不裝也能用,但旁白會比較平淡 |
2快速開始
整體流程只有五步,畫面上由上到下依序編號:
- 選擇素材 — 貼上影片路徑與 FIT 路徑(或用「選擇…」跳出檔案總管挑選), 按「建立專案」
- 對時 — 讓程式知道「影片的第幾秒」對應「FIT 檔裡的哪個真實時間」
- 分析截圖 — 抽取畫面、用 AI 描述每張截圖的騎乘情境
- 旁白 / 字幕 — 按「重新產生旁白」讓 AI 根據截圖說明+數據寫腳本, 逐句檢查修改
- 生成影片 — 選解析度、聲音、要不要節奏背景音,按「生成影片」, 完成後直接在頁面上播放
3Step 1:選擇素材
在「1 選擇素材」區塊貼上影片和 FIT 的絕對路徑,或直接按旁邊的 「選擇…」跳出 Windows 原生選檔視窗(這個視窗是在你自己電腦上開的,不會有任何檔案被傳出去)。
參考附件(選填)
按「+ 新增附件」可以加入三種類型的參考資料,內容會被整理成文字, 在後面「產生旁白」時提供給 AI 參考(例如排行榜截圖裡的名次、對手名字):
| 類型 | 用途 | 限制 |
|---|---|---|
| 圖檔 | 排行榜截圖、路線圖等;AI 會讀圖描述內容 | 需要先設定好 AI CLI |
| 網頁連結 | 公開的活動介紹頁、部落格文章 | 需要登入才看得到的頁面(例如 Strava 活動頁)抓不到, 會被自動偵測並擋下,請改用截圖 |
| 文件檔 | .txt / .md / .csv 直接讀;.docx 也支援 | — |
每一筆附件旁邊都有「測試讀取」按鈕,加進去當下就能確認抓不抓得到內容,不用等到跑到一半才發現。
4設定 AI(選填,但強烈建議)
這是整個工具「有沒有靈魂」的關鍵設定。AI CLI 負責兩件事:看截圖描述畫面內容、 根據截圖說明與數據寫旁白。不設定也能用,但旁白會退回純數據播報(沒有畫面劇情)。
目前程式認得並且已經實測驗證過能正常運作的工具:
| 工具 | 安裝方式 | 備註 |
|---|---|---|
| Claude Code | npm install -g @anthropic-ai/claude-code |
用你目前登入的 Claude 額度,不用另外申請 |
| Antigravity CLI | winget install Google.AntigravityCLI |
Google 出的終端 AI 代理工具, 完整安裝與認證步驟看這裡 → |
| Gemini CLI | 自行安裝並登入 | 指令範本尚未實測驗證,填入後請按「測試」確認 |
{prompt}
執行時會被換成程式要問的問題,{image} 會被換成一張截圖的實際路徑。
例如填 claude -p "{prompt} 圖片路徑: {image}" --allowedTools Read,
實際執行時就會變成
claude -p "描述這張圖...圖片路徑: C:\...\f_001.jpg" --allowedTools Read。
金鑰、登入額度都是你自己的 CLI 在管,本程式不會儲存任何金鑰,只存這串指令文字本身。
5Step 2:對時
行車紀錄器的畫面通常會燒錄一個時鐘(角落的日期時間)。程式需要知道「影片第幾秒」 對應「FIT 檔裡的哪個真實時間戳記」,才能把心率、功率、速度這些數據跟畫面對上。 只需要抓一個對應點,剩下的時間軸就會自動算出來。
- 🤖 AI 自動判讀(推薦):設定好 AI CLI 之後,這顆按鈕會叫 AI 讀畫面角落的時鐘文字,自動算出對時,不用自己瞇眼睛看小字
- 手動輸入:看畫面裡的時鐘,照「時:分:秒」格式輸入即可(例如
08:57:11)
6Step 3:分析截圖
這一步做兩件事:抽取畫面(純本機運算,不花 AI 額度)跟 AI 場景辨識(每張截圖真的會呼叫一次 AI,會花額度跟時間)。
截圖間隔怎麼選
間隔越小(例如每 1 秒一張),細節越豐富,但 AI 呼叫次數也越多—— 等待時間跟消耗的額度是等比例增加的。間隔小於預設值(10 秒)時, 程式會先跳出預估視窗告訴你大概要等幾分鐘,讓你確認要不要繼續。
7提示詞範本庫
如果你發現旁白的風格、用詞、規則想要調整(例如想要更活潑、想要固定的收尾格式、
想要主角用特定名字稱呼),這裡就是動手的地方。範本存在本機的 SQLite 資料庫
(app/data.db),每個專案可以各自選用不同範本。
| 範本 | 作用 |
|---|---|
| 截圖說明範本 | 決定 AI 怎麼描述每一張截圖的畫面內容 |
| 旁白生成範本 | 決定 AI 怎麼把「截圖說明+騎乘數據+附件+補充背景」
寫成最終的旁白台詞,可用變數如 {"{"}duration{"}"}
{"{"}table{"}"} {"{"}scenes{"}"}
{"{"}context{"}"} 等 |
8Step 4:旁白 / 字幕編輯
- 旁白最大空白(秒):一句唸完之後最多隔幾秒要有下一句,避免影片出現太長的無聲空白。 設小=密集熱鬧,設大=留白多
- ✨ 重新產生旁白:根據目前的截圖說明(含你手動修正過的)+數據+附件+ 補充背景,重寫整份旁白稿——這一步不會重跑截圖辨識,很快
- 畫面查無標示:如果某句旁白提到的細節(左右方向、機車、超車等) 在該時間點附近的截圖說明裡找不到根據,那一句會被標橘色提醒你複查—— 這是輔助檢查,不是絕對正確的判定
9Step 5:生成影片
| 選項 | 說明 |
|---|---|
| 解析度 | 原始(依來源)/1080p/720p |
| 編碼 | 自動(偵測到可用 GPU 就用 GPU)/強制 GPU/強制 CPU |
| 旁白聲音 | 雲哲(男聲)/曉臻(女聲)/曉雨(女聲),全部免費(edge-tts) |
| 節奏背景音 | 心率+功率驅動的節奏底層音效,音量可調 |
生成過程中有真實的進度條(不是假動畫,是解析 ffmpeg 實際回報的編碼進度算出來的), 右側有「⏹ 中止」按鈕,按下去約 1 秒內就會真的停止轉檔行程並清掉半成品檔案。
?常見問題
影片會被複製或上傳嗎?
不會。程式只記錄你貼的路徑,讀取都是直接對原始檔案操作。 唯一會離開這台電腦的資料是:語音合成(連微軟的 edge-tts 服務)、 以及你自己設定的 AI CLI 呼叫(連你自己 CLI 對應的服務)。
沒有 AI CLI 可以用嗎?
可以。分析截圖那步把「使用 AI 辨識畫面內容」取消勾選, 旁白生成就會退回純數據規則生成(照時速/心率/功率的變化播報), 不會有畫面劇情內容,但功能完全能跑。
轉檔跑到一半可以中止嗎?半成品會留在硬碟上嗎?
可以中止,每個工作階段(分析截圖/產生旁白/生成影片)進度條旁邊都有中止鍵。 中止轉檔時,半成品的 mp4(打不開的壞檔)會被自動刪除,不會留下垃圾檔案。
旁白內容不準確、憑空編造細節怎麼辦?
三層防護:①提示詞明定「不可編造,時間點誤差不超過 2 秒、方向細節要照抄」; ②程式會自動把單張截圖無法判斷的「超車/被超車」描述先過濾掉, 不讓這種本來就不可靠的資訊進到旁白生成的素材裡; ③旁白編輯區會把「畫面查無根據」的句子標橘色提醒你複查。 即使如此,AI 仍可能出錯,最終請以人工複查為準。
網頁連結附件抓不到內容?
常見原因是那個網址需要登入才看得到內容(例如 Strava 活動詳細頁)。 程式會偵測登入頁的特徵字樣並主動擋下,避免把「請登入」這種無意義文字 誤當成真實資料餵給 AI。遇到這種情況請改用截圖,存成圖檔附件。
換了截圖間隔要重新辨識嗎?
不用。截圖說明用時間點存快取,跟間隔脫鉤——不管你怎麼調整間隔, 已經辨識過的時間點永遠不會重花一次 AI 額度。
GPU 沒有被使用?
程式啟動時會實際測試一次 NVENC 能不能用(不是只看驅動版本號), 設定頁最上方會顯示目前偵測到的 ffmpeg 路徑跟 GPU 狀態。 若你的顯卡驅動版本跟 ffmpeg 要求的 NVENC API 版本不匹配, 會自動退回 CPU 編碼,仍然能正常轉檔,只是速度較慢。