# AUTOMOVIE 原始碼

騎乘影片自動旁白字幕產生器。把第一人稱行車紀錄影片 + Garmin/Wahoo 的 FIT 檔
丟進去，自動產生 AI 旁白配音、動態字幕、心率功率驅動的節奏背景音、
以及可自訂版面的遙測儀表盤，全部在**同一次 ffmpeg 轉檔**裡燒錄完成。

操作手冊： https://segaa.net/automovie/

## 這包裡有什麼

```
app/main.py          FastAPI 後端（所有 API）
app/core/            ai_cli 轉接、FIT 解析、抽圖與場景辨識、旁白生成、
                     TTS、節奏音、儀表盤、ASS 字幕與轉檔、SQLite
app/static/          index.html 主流程、dash.html 儀表盤編輯器
deploy/automovie/    這份線上操作手冊
spikes/              驗證用的實驗腳本（不是程式的一部分）
```

## 沒有包進來的東西（要自己準備）

| 項目 | 說明 |
|---|---|
| `app/tools/ffmpeg/` | 建議用 **ffmpeg 8.0.1**。8.1.x 需要 NVENC API 13.1（驅動 610+），8.0.1 只要 550+，較不容易踩到顯卡驅動版本問題。程式啟動時會實際跑一次極短的編碼測試來判斷 NVENC 可不可用，不是看版本號猜的，不能用會自動退回 CPU |
| `app/fonts/` | 字幕用 `Microsoft JhengHei`。Windows 內建即可，**不要**散布字型檔（授權問題）。程式刻意不指定 `fontsdir`，交給系統解析最快也最乾淨 |
| `app/config.json` | 你自己的 AI CLI 設定，見下方 |
| `app/data.db` | 首次啟動會自動建立並寫入內建範本 |
| Python 套件 | `pip install fastapi uvicorn fitparse edge-tts` |

## 啟動

```bash
cd app
python main.py        # http://127.0.0.1:8765
```

## AI 設定（選填但強烈建議）

不設定也能跑，但旁白會退回純數據播報，不會描述畫面內容。

在網頁的「設定」區按「🔍 自動偵測我電腦上裝了什麼」→「全部依序帶入」，
就會建立一條**依序備援**的指令鏈：第一個連不上或額度用完會自動換下一個。

指令模板可用的變數：

- `{prompt}` — 要問的問題
- `{image}` — 截圖路徑；**單獨當一個參數時會展開成多個檔案**（給 `-i a.jpg b.jpg` 這種多圖參數用），
  純文字呼叫時會連同前面的旗標一起移除
- `{out}` — 暫存檔路徑；填了就從該檔讀答案而不是讀螢幕輸出（適合會印出工作階段訊息的工具）

實測可用的模板：

```
claude -p "{prompt} 圖片路徑: {image}" --allowedTools Read --output-format text
codex exec --skip-git-repo-check --color never -s read-only --ephemeral --ignore-user-config -o {out} -i {image} -- "{prompt}"
agy -p "{prompt} 圖片路徑: {image}" --dangerously-skip-permissions
```

金鑰與額度都在你自己的 CLI 裡，本程式不儲存任何金鑰，只存這串指令文字。

## 設計原則

**單機工具**：影片與 FIT 檔留在原地，程式只記路徑、不複製也不上傳。
唯一會離開這台電腦的是語音合成（連微軟 edge-tts）與你自己設定的 AI CLI 呼叫。

## 授權

個人專案，未附授權條款。

要跑起來需要自備 ffmpeg 與 Python 套件（見上表），`spikes/` 內的腳本
是開發過程的驗證紀錄，直接執行不一定有意義。
