
為什麼要做這個作品
我想讓自己養成每天運動的習慣,於是強迫自己用影片記錄每天的運動,發到個人的 IG 限動上。
麻煩的是,每天運動的長度都不太一樣,而 IG 限動一次只能放一分鐘的影片。所以原本每一天,我都得把錄好的運動影片(大概二三十分鐘,有時候甚至三四十分鐘、接近一個小時),透過 AirDrop 傳到 MacBook(這段常常是傳最久的,因為檔案太大,而且有的時候 AirDrop 還會故障、找不到),打開 iMovie 把倍速調到剛好一分鐘,匯出後再 AirDrop 傳回手機。
這樣的土法煉鋼,我每天做,連續做了三百多天。直到後來接觸 Vibe coding、真正開始用 AI 打造小工具和產品,我才想到:那我是不是也能自己做一個,單純解決這個痛點?做完還能順便走一遍上架 App Store、串接 Google AdMob 廣告的完整流程,為未來想走的方向鋪路。
用到的工具與架構
這個 App 是兩個 AI 一起寫出來的,各自分工:
- Claude Code(主力):負責照 TDD 流程開發,從寫測試、寫實作到重構都靠它。
- Codex(第二意見):用來對照、做另一個視角的 code review,避免單一 AI 的盲點。
- SwiftUI(iOS 18):整個 App 的介面。
- AVFoundation:影片變速、多段串接、輸出的核心引擎。
- StoreKit 2:「移除廣告」買斷型的內購。
- Google AdMob:免費版的廣告。
- 完全本機:影片處理全部在 iPhone 上跑,不上傳任何雲端,也沒有我自己的伺服器。
以前怎麼做/現在怎麼做
以前:拍完還要跨裝置搬運,每一步都在佔用我很多的時間。
flowchart LR
A["拍運動影片"] --> B["AirDrop 傳到 Mac"]
B --> C["iMovie 調倍速到 1 分鐘"]
C --> D["傳回手機發 IG"]
D --> E["每天耗時近一小時"]
現在:全程在手機上,不用 AirDrop,轉縮時約兩分鐘,加上 IG po 文不用五分鐘。
flowchart LR
A["拍運動影片"] --> B["開 App 選 1~5 段"]
B --> C["自動壓成 30~60 秒"]
C --> D["存相簿、發 IG"]
D --> E["全程不到五分鐘"]
實際操作一次會發生什麼
1. 打開 App,選 1 到 5 段影片(用系統的 PHPicker,不需要給整個相簿的權限)
2. App 自動算好倍速,把總長壓成你要的長度(30 到 60 秒之間)
3. 選多段時會自動串成一支,還能調整每一段佔的比例
4. 按下產生鍵,幾秒後成品直接存進相簿
5. 每天第一次轉檔免廣告,當天之後才會在轉檔前看一支廣告

從左到右:選 1 到 5 段影片並拉成品長度、多段自動串成一支並微調各段佔比、Day Counter 自動把輸出檔名編上天數。
現在的具體成果
- 已經上架 App Store:速轉縮時 QuickTimeLapse,免費下載,目前 1.1 版。一個原本只是「自己每天要用」的需求,變成真的有人能下載的產品。
- 完全本機處理:影片不離開你的 iPhone,不用上傳、沒有後端、不做數據收集。絕對不做沒必要的隱私權限要求。
- 雙語:繁體中文與英文,跟著系統語言走。
- 核心都有測試守著:影片轉檔、檔名規則、內購、廣告閘門這些核心模組都有測試覆蓋,不是隨手寫完就上架。
- Day Counter 自動編號:適合做「每日運動」這種系列縮時,輸出檔名會自動帶 Day 1 / Day 2…,換手機還能靠 iCloud 同步天數,不歸零。

速轉縮時已經上架 App Store:免費下載、4+ 分級、照片與影片類,從一個自己的需求,變成真的能被下載的產品。
設計時做過哪些取捨與調整
做的過程,有幾個我刻意設定好的原則:
- 廣告是附加價值,不是鑰匙:雖然也會希望透過這個 App 賺一點小錢,所以有設定「每天第一次轉檔免費,第二次以後需要看一次廣告」,但如果廣告載不出來(沒網路、還在載)那就算了,不擋住核心功能。寧願少賺一點,也不能讓人想用的時候用不了。
- 能少要一個權限就少要一個:用系統的 PHPicker 選片,App 只拿到你選的那幾支影片,不要求讀取你整個相簿。
- 完全本機,不蓋伺服器:影片不上傳、我這邊沒有任何伺服器在收資料。處理慢一點點沒關係,但東西留在你自己手機裡。
- 主要功能先上,後續再改版把體驗做更好:第一版上架時還不能選輸出長度,永遠固定一分鐘。第二版就加了一個選項,讓使用者自由選 30~60 秒,還能調整多段影片各自的佔比。
上課的方法,怎麼直接用在這個 App
上課學到的東西,有三個我直接就搬來用在這個 App 上。
第一個,是讓 Claude 和 Codex 在同一個專案裡互相檢查。 以前我都只用一個 AI,它說做好了,我也只能信。雷蒙教了之後我才知道,原來可以在同一個專案裡同時用 Claude Code 和 Codex,一個負責寫,另一個用不同角度幫忙看。兩個 AI 互相挑對方的毛病,做出來的東西嚴謹很多,測試也蓋得比較廣,不會只聽一個 AI 說「沒問題」就上。
第二個,是把常常要重做的事,做成一個個 skill。 開發的時候我發現,有些事每個專案都要重來一遍,像套用我自己的設計風格、開新專案的流程、上架 App Store 的步驟。我就乾脆把這些都做成 skill 存起來,下次要用,叫一聲就好,不用每次再從頭跟 AI 解釋一遍。
第三個,是先用 /brainstorm 把事情想清楚,再讓 AI 動手。 我會先用雷蒙的 /brainstorm,把這個 App 到底要解決什麼、會碰到哪些狀況,先跟 AI 聊到我自己都想清楚為止。等規劃夠完整了,才讓它真的開始寫。先想清楚再動手,真的比邊做邊改省事太多了。
上完課後,我的工作方式有什麼改變
上完課之後,我對「工具」的心態整個變了,有兩件事最明顯。
第一,我不再被單一工具或模型綁住。 以前會需要先研究當下哪個工具 CP 值最高、最好用,花了時間學了之後,結果沒多久又出新的。現在我把這些工具跟模型都當成隨時可以換的夥伴,最近哪個強,我就切過去用哪個,不會死守一個,也不怕換。
第二,我不再盲目去追那些新名詞。 AI 圈每天都在蹦新的 buzz word,什麼龍蝦、harness⋯⋯老實說根本追不完。雷蒙的課程讓我知道:與其一直追最新的技術,不如每天踏實地跟自己的 AI agent 對話,讓它慢慢記住我的習慣跟偏好。一個越來越懂我的夥伴,比任何最新潮的 buzz word 都實用太多了。
最後想對其他同學說的話
不用等到什麼都學會才開始。你每天最煩、最想偷懶的那件小事,往往就是最適合拿來練手的第一個作品。挑一個你自己每天真的會用的,跟 AI 一起把它做到能用、能上架。真的,做出來的那一刻,比什麼都還有成就感。
進一步認識作者
閻威爾,雷蒙課程的愛好者。曾參加過第二屆的 Notion 訓練營,從那時開始認識了 Notion 和雷蒙。真的慶幸自己活在 AI 的時代,可以把好多自己腦中的想法,不用自己寫 code 或是花錢找人來寫 code,就能夠一點一滴的把他們實現出來。速轉縮時就是這樣長出來的第一個小產品,也是我第一個真正解決自己痛點的 App。當我把它 po 上 FB、看到有人留言說這個他也需要的時候,那種成就感,比我自己每天用得順手還要更實在更爽。


