← 回作品牆

速轉縮時:把任何長度的影片,一鍵壓成 30~60 秒 IG 縮時

我用「每天運動完拍一段影片、發成 IG 限動」來逼自己養成運動習慣。但原本要把影片壓成 60 秒發 IG,都得先 AirDrop 到 Mac、用 iMovie 調倍速,輸出後再 AirDrop 回手機,光來回傳檔和匯出至少就要十幾分鐘,有時候甚至更久。於是我用 Claude Code 開發、搭配 Codex 做 review,做出一個可以直接在 iPhone 上選 1 到 5 段影片、一鍵壓成 60 秒以內、直接存相簿的縮時 App。完全本機處理,把發限動的時間成本縮短了至少十倍。現在這個 App 已經上架 App Store。

個人創作工具個人工作流影片創作iOS App 開發Vibe CodingClaude CodeCodex
作者:閻威爾0 次觀看
速轉縮時:把任何長度的影片,一鍵壓成 30~60 秒 IG 縮時 封面

為什麼要做這個作品

我想讓自己養成每天運動的習慣,於是強迫自己用影片記錄每天的運動,發到個人的 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. 每天第一次轉檔免廣告,當天之後才會在轉檔前看一支廣告

速轉縮時的三個主要操作畫面:選影片設定長度、多段合成調佔比、Day Counter 自動編號

從左到右:選 1 到 5 段影片並拉成品長度、多段自動串成一支並微調各段佔比、Day Counter 自動把輸出檔名編上天數。

現在的具體成果

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

速轉縮時在 App Store 的上架頁面

速轉縮時已經上架 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、看到有人留言說這個他也需要的時候,那種成就感,比我自己每天用得順手還要更實在更爽。