Communitygithub.com

karmazin/simreel

將真實的 iOS 模擬器錄製內容轉換為 9:16 的宣傳影片和 App Store 預覽影片。當使用者要求其 iOS App 的啟動影片、宣傳短片、Demo 影片或 App Store 預覽時使用。

simreel 是什麼?

SimReel 是一個旨在幫助開發者從 iOS 模擬器錄製內容創建 App Store 預覽影片和社交媒體宣傳短片的工具。它會自動生成兩個檔案:一個是帶有手機外殼、漸層背景、場景字幕和結尾卡片的 `reel-1080x1920.mp4`,適合用於 X(原 Twitter)、Reels、TikTok 或 Product Hunt;另一個是符合 Apple 規格的純錄製影片 `appstore-preview-886x1920.mp4`,可直接上傳至 App Store Connect。該工具完全在本地運行,依賴 macOS、Xcode、ffmpeg 和 Python3,無需任何帳戶或付費 API。它提供 `record.sh` 和 `compose.py` 腳本來完成錄製、幀提取、故事板編輯和最終渲染。此工具對任何需要快速為其 iOS App 製作推廣素材的開發者或團隊非常有用。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/karmazin/simreel/tree/HEAD/skills/simreel

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

simreel 是做什麼的?

在 iOS 模擬器中錄製使用者真實的 App,並將其剪輯成兩個檔案:

  • reel-1080x1920.mp4:將錄製內容嵌入帶有漸層背景的手機框架中,每個場景附帶一個字幕,並包含一個結尾卡片。適用於 X(原 Twitter)、Reels、TikTok、Product Hunt。
  • appstore-preview-886x1920.mp4:純錄製內容,調整尺寸和編碼以符合 App Store Connect 的要求。

所有操作都在本地使用 Xcode 和 ffmpeg 完成。無需帳戶,無需付費 API。

規則

  • 僅展示 App 的真實功能。字幕應描述螢幕上的內容;切勿添加錄製畫面未顯示的主張、數據或評論。
  • 避免私人資料入鏡。使用全新的模擬器或 Demo 資料,並在交付前檢查每一幀畫面。
  • 僅操作指定的模擬器。其他正在啟動的模擬器可能屬於其他人的工作;當有超過一個模擬器在運行時,切勿使用 booted。
  • 除非使用者另有指示,否則在錄製期間拒絕追蹤和 Cookie 對話框。

步驟

  1. 找到模擬器。 xcrun simctl list devices booted。如果 App 尚未安裝,使用使用者自己的工具來建置和安裝。
  2. 先不錄製,走一遍 App。 挑選 3 到 5 個展示主要功能的時刻。現在就清除引導、權限和 Cookie 對話框,讓它們在正式拍攝時不出現。
  3. 錄製一次。
    scripts/record.sh start work/raw.mp4 <UDID>
    # 驅動 App:使用你的模擬器工具、專案中的 XCUITest,或請使用者手動操作
    scripts/record.sh stop <UDID>
    
    在每個你想保留的畫面上停留約一秒鐘。如果在模擬器啟動後立即點擊失敗,請等待 20 秒後重試。
  4. 檢查錄製內容。 檔案會在最後一次螢幕變化時結束,因此一個靜止的最終畫面會被截斷,而一個從未改變的畫面錄製內容幾乎是空的。根據檔案時間來標記場景時間,而不是憑記憶。
    python3 scripts/compose.py frames work/raw.mp4 work
    
    打開 work/contact-sheet.png:每行 8 個方格,方格的編號 N 代表第 N 秒。
  5. 編寫 storyboard.json。
    {
      "app_name": "MyApp",
      "background": ["#0B1020", "#3B2AA8"],
      "scenes": [
        {"start": 0.3, "end": 5.8, "caption": "此畫面功能"},
        {"start": 8.0, "end": 10.0, "speed": 0.8, "caption": "下一步"}
      ],
      "end_card": {"title": "MyApp", "subtitle": "App 本身的標語"}
    }
    
    start/end 是錄製內容中的秒數。speed 低於 1 會減慢場景,高於 1 會加速。hold 會將場景的最後一幀凍結指定的秒數,用於在結果畫面上停留。background 可以是一個顏色或一個由上到下的漸層;text_color 和 caption_size 是可選的。省略 end_card 則在最後一個場景結束。清除載入中的轉圈動畫。所有場景的總時長必須在 15 到 30 秒之間,否則 App Store Connect 會拒絕預覽。
  6. 渲染。
    python3 scripts/compose.py render work/raw.mp4 storyboard.json out
    
    它會輸出 out/report.json,並在預覽時長超出範圍時發出警告。
  7. 交件前再次檢查。 從每個場景中提取一幀畫面(ffmpeg -ss <t> -i out/reel-1080x1920.mp4 -frames:v 1 f.png)並檢查:字幕是否與畫面相符,是否包含私人資料,畫面是否被截斷。

備註

  • 需求:macOS、Xcode(用於 simctl 和 swift)、ffmpeg、python3。
  • record.sh 會將狀態列設為 9:41,並顯示滿格電量和訊號。之後使用 xcrun simctl status_bar <UDID> clear 清除設定。
  • 此處使用的 App Store 預覽規格(886x1920,15-30 秒,30 fps,H.264 High 4.0,立體聲 AAC)來自 Apple 的 App 預覽規格。如果上傳被拒絕,請查閱該頁面。
  • 音軌是靜音的。如需音樂或人聲,請在編輯器中添加。

相關技能