Communitygithub.com

every-app/video-skills

製作一個簡短的產品預告片(無旁白),從真實產品截圖創建 HyperFrames 組合(HTML 和 GSAP,透過 npx 渲染)。適合功能發布、社群短片或推廣影片。

video-skills 是什麼?

這是一個 AI 代理技能,用於建立不需要旁白的產品預告影片(約 10-30 秒)。它專注於使用產品的真實螢幕截圖,透過 HyperFrames 框架(HTML 和 GSAP)產生動態效果,例如場景緩慢移動、從截圖中切割出的行、3D 翻頁效果、簡短標題(2-3 個單詞)以及品牌結尾卡。影片節奏配合音樂重拍。此技能支援 Claude Code、Cursor 和 Codex 等代理平台。流程包含確認簡報、擷取截圖、組合場景、檢查快照、同步音樂、渲染影片和反覆審閱。關鍵是使用真實截圖,並嚴格遵守擷取品質、驗證同步和避免機密資料洩露等規則。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/every-app/video-skills/tree/HEAD/skills/teaser-video

在你喜歡的 AI 中提問

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

說明文件

預告影片

預告片以幾個節奏展示一個功能,每個節奏有一個明確焦點,並配以音樂。每個畫面都是產品的真實截圖;動感來自鏡頭移動、從那些截圖中切割出來的行各自就位,以及剪輯與音樂節拍的配合。整支影片都是程式碼(一個 HTML 頁面和一個時間表,由 HyperFrames 渲染),因此新的截圖、更改的標題或不同的音樂剪輯只需重新執行即可。

人員負責指導品味,並會反覆迭代。在完整渲染之前先展示連絡表格,保留每一次渲染,並記錄更改了什麼以及原因。從 references/taste.md 中的預設值開始:它們是第一輪審查後收斂的結果。

設定

  • Node 22+ 並安裝 npx(HyperFrames 透過 npx [email protected] 執行;無需安裝),ffmpeg 在 PATH 中(HyperFrames 製作快照和渲染也需要它),uv(Python 工具聲明自己的依賴項),以及產品專案中用於擷取的 Playwright 和 Chromium。渲染會從 CDN 載入 GSAP 和 Inter 字體,因此需要網路連線。
  • SK=<此技能目錄>/scripts。
  • 在任何儲存庫的追蹤檔案之外的工作資料夾中操作(一個被 gitignore 的 .logs/<video>/,或一個暫存資料夾):
<work>/
  assets/<theme>/    每次擷取傳遞的截圖和 boxes.json
  capture/           此產品的擷取腳本
  video/             index.html 和 timeline.js(從範例複製);assets/ 存放截圖、品牌圖示、音樂
  NOTES.md           每個版本及其更改原因、重建指令

1. 簡報

用一次簡短的交換確認,提供預設值:

  • 長度:除非另有要求,否則 10 秒。在硬性上限內,減少節奏,絕不加快動作。
  • 節奏:三或四個,每個工作在一個畫面上(輸入 URL、檢視發現的結果、查看結果、品牌)。每個節奏有一個 2-3 個單詞的標題,不包含數字。
  • 範例資料應一目了然:一個知名的網站,這樣結果(競爭對手名稱、favicons)容易辨識。
  • 外觀:產品自己的主題 token(暗色模式是預告片的好預設)及其真實的品牌圖示,取自其即時網站,而不是您繪製的標誌。
  • 音樂:檔案,以及任何 10 秒的片段是否可行(參見步驟 5)。
  • 哪個分支或工作目錄具有每個畫面的最新 UI。在擷取前檢查它是否落後於遠端。

2. 擷取

以 1440x900、2x 解析度,使用 $SK/capture.mjs(與 narrated-video 相同的輔助工具)擷取真實截圖:輸入文字時的輸入幀、鏡頭向下平移時的高截圖(2400 px)、場景框架、切割行或點擊的每個元素的測量框。為暗色模式傳遞 { colorScheme: 'dark' } 給 cap.page()。絕不繪製 UI 或編輯像素。詳細資訊,包括凍結動畫幀以及在不支付請求費用的情況下擷取載入狀態:references/capture.md。在使用前檢查每個截圖。

3. 組合

將 examples/openseo-ai-visibility/video(index.html、timeline.js)複製到工作資料夾中,將截圖、品牌圖示和音樂放入 video/assets/,然後重寫 timeline.js:時間表、標題、調色板、截圖路徑和高度、測量框、每個場景的相機關鍵影格以及指標。index.html 根據該檔案構建每個場景:行使用測量框從其截圖中切割出來。各部分如何運作以及重要的數字:references/composition.md。

4. 草稿和檢查

cd video
npx --yes [email protected] lint                                           # 必須報告 0 個錯誤
npx --yes [email protected] snapshot --at 0,1.2,2.4,2.6,3.4,4.4,6.0,8.2,9.5 --no-end   # 放入 snapshots/

快照只需幾秒鐘,因此用它來代替草稿渲染。快照每個場景開始、點擊、標題進入以及每個溶解的中間,並檢查它們(每次執行也會寫入聯絡表):每個影格一個焦點且居中,標題清晰可見、不遮擋焦點物體,頁面平坦時沒有空白頁邊,揭示結束時沒有缺失的行。然後檢查每個場景的全解析度影格,確保文字清晰。

5. 音樂

uv run $SK/beats.py song.mp3                     # 節奏、每秒響度、每個重拍
uv run $SK/beats.py song.mp3 --window 51.9 10    # 候選剪輯在影片時間內的重拍

挑選剪輯,將其開始時間寫入 index.html 中的 <audio> 元素,並將其重拍時間寫入時間表,然後將剪輯對齊到這些重拍上:主要的點擊落在重拍上,每次場景切換落在重拍上,標誌落在最強的重拍上。選擇剪輯並映射它:references/music-sync.md。

6. 渲染和驗證

npx --yes [email protected] render -o renders/<video>-vN.mp4 --fps 60 --crf 14 \
  --video-frame-format png --experimental-fast-capture=false            # 10 秒影片約耗時 15 秒
uv run $SK/verify-sync.py renders/<video>-vN.mp4 <計劃的重拍時間...>   # 每個重拍在一個影格內;否則退出 1
uv run $SK/sheet.py renders/<video>-vN.mp4 renders/sheet-vN.png <時間...>

按版本命名渲染並全部保留;人員會進行比較。用於分享的靜態圖片(社交圖片、縮圖)是指定時刻的 4K 快照:npx --yes [email protected] snapshot --at 7.3 --no-end --zoom 0,0,1920,1080 --zoom-scale 2 -o stills 會寫入一個 3840x2160 的 PNG。

7. 審查和迭代

提供 mp4 路徑(以及如何打開它)、節奏及其時間,以及任何與請求不同之處。在 NOTES.md 中記錄每一輪。工作範例的第一版歷經七輪;每一輪的更改記錄在 examples/openseo-ai-visibility/NOTES.md。

嚴格規則

  • 僅限真實螢幕。行揭示時,可能在真實行落下之前短暫覆蓋帶有表格自身背景(從截圖取樣)的行;一旦行落下,畫面就是原始截圖。
  • 在渲染前檢查截圖中是否有機密和個人資料(金鑰、電子郵件、其他人姓名、localhost URL)。
  • 音樂和截圖保留在人員的機器上;未經要求請勿發布任何內容。
  • 恢復產品儲存庫中因建置或預覽而重新產生的任何追蹤檔案。

最耗時的錯誤記錄在 references/gotchas.md。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能