《我的 AI 工作流》實作篇:從手動改名到 Vision 自動辨識|旅遊照片自動化處理全流程
不用懂 Python,只要學會跟 AI 說清楚你要什麼。這篇完整拆解四支腳本的實作流程:Vision 自動辨識命名、WebP 壓縮、EXIF 旋轉修正、一鍵上傳 Ghost,附真實截圖與數據對比。
每次整理旅行照片,檔名都是
IMG_1039.JPG或506485499_xxxxx.jpg這種看不出內容的名稱嗎?這篇教你用 Python 腳本搭配 AI 的眼睛(Vision),30 秒搞定幾十張照片的命名、壓縮、上傳,一條龍完成。
對應敘述文:《我的 AI 工作流》下指令,按 Enter,收工
📖 本篇目錄
- 🛠️ 工具總覽
- 💡 為什麼要改照片檔名?
- 🎯 下指令:讓 AI 替你睜開眼睛
- 先跑 check_image_sizes.py — 看清楚每張照片的比例
- v1 流程(手動對照表)
- v2 流程(Vision 自動辨識)
- ⏎ 按 Enter:執行自動化腳本
- Step 1:改名
- Step 2:壓縮轉 WebP + EXIF 修正
- Step 3:上傳到 Ghost
- Step 4:Claude 產出 Ghost HTML
- ✅ 收工:成果對比
工具總覽
本篇會用到以下五支腳本,全部放在 AI_VIBECODE/ghost/ 資料夾:
| 腳本 | 功能 | 版本 |
|---|---|---|
check_image_sizes.py |
列出每張照片的寬高比例和方向,輔助排版決策 | v1.1.0 |
vision_rename.py |
Claude Vision 自動辨識圖片內容,產出命名(v2 新增) | v1.0.0 |
optimize_photos.py |
壓縮轉 WebP + EXIF 旋轉修正 | v1.1.0 |
ghost_upload.py |
批次上傳到 Ghost,產出 URL 清單 | - |
rename_photos.py |
舊版手動對照表改名(v1 流程,仍可用) | - |
一鍵安裝所需套件:
pip install anthropic Pillow
為什麼要改照片檔名?
寫旅行文章時,照片管理是最花時間的環節之一。從社群平台下載的照片,檔名往往是無意義的數字:
506485499_122297849572006830_8765432101234567890_n.jpg
508458275_122298012456007830_1234567890123456789_n.jpg
完全看不出哪張是哪張。如果改成有意義的命名:
202501-takayama-wagyu-beef-platter-1.webp
202501-takayama-takayama-old-street-1.webp
202501-shirakawago-shirakawa-light-up-snow-1.webp
好處有三個:排序友善、SEO 友善、後續腳本可以自動解析產生 alt text。
命名規則:{YYYYMM}-{city}-{type}-{id}.jpg
| 欄位 | 說明 | 範例 |
|---|---|---|
YYYYMM |
拍攝年月 | 202501 |
city |
城市代碼 | takayama、shirakawago |
type |
照片類型(AI 辨識產出) | wagyu-beef-platter、old-street |
id |
流水號 | 1、2、3 |
🎯 下指令:讓 AI 替你睜開眼睛
先跑 check_image_sizes.py — 看清楚每張照片的比例
挑圖前先跑一次,列出每張照片的寬、高、比例、方向,決定哪幾張可以並排 gallery:
python check_image_sizes.py "資料夾路徑"

依此決定排版:比例接近的兩張規劃並排,比例差距大的標記單張。
v1 流程(手動對照表)
舊版做法:自己看每張照片,建立對照表,再貼進腳本。
# rename_photos.py 核心設定區
RENAME_MAP = {
"506485499": "202506-towada-museum-exterior-01",
"507540773": "202506-towada-museum-exterior-02",
"506490633": "202506-towada-museum-exhibit-01",
# ...以此類推,完整對照表依照片數量填入
}
缺點:每次都要手動看圖建表,照片多的時候很花時間。
v2 流程(Vision 自動辨識)
v2 改用 vision_rename.py,直接讓 Claude Vision 看每張照片,自動辨識內容後產出命名。
前置需求:
pip install anthropic Pillow
set ANTHROPIC_API_KEY=sk-ant-xxx # 每次開新 CMD 都要重設
⚠️ API Key 安全提醒: 請務必保護好你的
ANTHROPIC_API_KEY。若要將腳本上傳到 GitHub,記得先移除 Key 或改用環境變數設定,避免 Key 外洩。
用法:
# 先 dry-run 確認辨識結果(不實際複製)
python vision_rename.py "資料夾路徑" --prefix 202501-takayama --dry-run
# 確認 OK 後正式跑(copy 到 output/,原檔不動)
python vision_rename.py "資料夾路徑" --prefix 202501-takayama

實際辨識結果(高山篇,27 張):
| 原始檔名 | AI 辨識 slug | 輸出檔名 |
|---|---|---|
| IMG_3981.JPG | wagyu-beef-platter | 202501-takayama-wagyu-beef-platter-1.jpg |
| IMG_4020.JPG | takayama-old-street | 202501-takayama-takayama-old-street-1.jpg |
| IMG_4046.JPG | sake-dispensing-machine-interior | 202501-takayama-sake-dispensing-machine-interior-1.jpg |
| 熟成飛騨牛焼肉GYU-SUKE.JPG | gyusuke-yakiniku-entrance | 202501-takayama-gyusuke-yakiniku-entrance-1.jpg |
27 張全部辨識成功,連中文檔名都能正確處理。
💡 費用: 每 100 張照片約 $0.6 美金,用 Anthropic API(需另外儲值,與 Claude.ai 訂閱分開)
⏎ 按 Enter:執行自動化腳本
Step 1:改名(vision_rename.py 或 rename_photos.py)
跑完 vision_rename.py 後,output/ 資料夾會有所有改好名字的照片,原檔不動。
Step 2:壓縮轉 WebP + EXIF 修正(optimize_photos.py)
python optimize_photos.py "資料夾/output"


.jpg/.png自動轉.webp,平均壓縮 80% 以上- v1.1.0 新增 EXIF 旋轉修正:手機直拍的照片不再橫放
- ⚠️ 原本就是
.webp的檔案不會被處理(需手動旋轉)
Step 3:上傳到 Ghost(ghost_upload.py)
python ghost_upload.py "資料夾/output"
上傳後自動產生三種格式的結果檔:
upload-result.csv(含所有圖片 URL,給 Claude 產出 HTML 用)upload-result.jsonupload-result.html
⚠️ 重複上傳提醒: 若上傳同檔名照片,Ghost 會自動在網址後方加上
-1。建議在正式執行前,先在output/資料夾做最後確認,避免 URL 異動後還要回頭更新 HTML。
Step 4:Claude 產出 Ghost HTML
把 upload-result.csv 貼給 Claude,同時說明:
- 行程內容(景點、餐廳、住宿)
- 哪幾張要並排 gallery(挑圖時依 check_image_sizes.py 的結果決定好)
Claude 直接產出完整的 Ghost HTML,貼入 HTML 卡片即可。
Gallery 排版判斷準則:
- 兩張比例(高/寬)接近 → 可以並排 gallery
- 比例差距 > 20% → 單張
<figure> - 不確定就先貼進 Ghost 預覽確認
✅ 收工:成果對比
改名前後對比
❌ Before
506485499_122297849572006830_876543210_n.jpg
熟成飛騨牛焼肉GYU-SUKE.JPG
✅ After
202501-takayama-wagyu-beef-platter-1.webp
202501-takayama-gyusuke-yakiniku-entrance-1.webp
實測成果
| 地點 | 照片數 | 辨識耗時 | 結果 |
|---|---|---|---|
| 高山(takayama) | 27 張 | 約 2 分鐘 | ✅ 全部成功 |
| 白川鄉(shirakawago) | 16 張 | 約 1.5 分鐘 | ✅ 全部成功 |
手動 vs 自動比較
| 項目 | 手動右鍵改名 | v1 手動對照表 | v2 Vision 自動辨識 |
|---|---|---|---|
| 操作方式 | 一張一張點擊 | 建表 + 跑腳本 | 一行指令全部搞定 |
| 命名時間(27 張) | 約 20 分鐘 | 約 8 分鐘 | 約 2 分鐘 |
| 正確率 | 容易打錯字 | 對照表正確即可 | AI 辨識精準 |
| 重複使用 | 每篇重來 | 改對照表重複用 | 只改 prefix 重複用 |
如果你也是用 Ghost 或 WordPress 寫部落格的程式小白,只要學會跟 AI 說清楚你要什麼,剩下的苦工就交給它吧。
📂 完整腳本領取: 我把五支腳本(尺寸檢查、Vision 辨識、WebP 壓縮、Ghost 上傳)打包整理好了!你可以從我的 GitHub Gist 直接下載 .py 檔使用。
工具:Python 3 + Anthropic API