Communitygithub.com

kelvinmacaco/short-build

當創作者發送已撰寫好腳本的 Short 旁白 MP3 時使用。自動轉錄並平衡語音、搜尋免費影片(Pexels)和背景音樂(無 Content ID 的 Pixabay)、剪輯片段、編寫使用 lib_short 的場景 generate.py、套用 VHS 特效、檢查畫面、使用 HyperFrames 渲染,並將影片交付到桌面。

short-build 是什麼?

這個技能(Short Build)是「short-start」工作流程的一部分,專為自動化處理 YouTube Shorts 或 TikTok 影片而設計。當創作者提供已撰寫好腳本的旁白 MP3 時,它會自動執行完整的製作流程:從轉錄語音、平衡音量、搜尋並下載 Pexels 的免版稅影片片段與 Pixabay 的無 Content ID 背景音樂,到使用 `lib_short` 庫編寫場景腳本(`generate.py`)、套用 VHS 特效、檢查畫面品質,最後透過 HyperFrames 渲染出最終影片。它支援用戶端工作流程,並遵循嚴格的品質檢查,包括音訊 LUFS 水準、影片循環點檢查,以及最終交付前的審查(`REVIEW.md`)。此技能主要用在命令列環境或支援 HyperFrames 與 FFmpeg 的 AI 編碼代理(如 Claude Code 或 Codex)中。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kelvinmacaco/kit-shorts-virais/tree/HEAD/.claude/skills/short-build

在你喜歡的 AI 中提問

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

說明文件

組裝一個 Short

屬於 short-start 流程的一部分。媒體細節請見 short-media,動畫細節請見 short-animation,審查與渲染細節請見 short-review。支援工具:hyperframes、hyperframes-cli 和 media-use。

請先閱讀 RULES.md 和專案的 ROTEIRO.md。專案的 kit.json 必須包含 handle(創作者選擇的 @ 用戶名)。如果該欄位為空或是 @SEU_CANAL,請先向創作者詢問再繼續。

1. 旁白

  • 將 mp3 複製到 assets\audio\narracao_raw.mp3。
  • 使用 silencedetect=n=-40dB:d=0.6 尋找較長的靜音部分。將落在鉤子(gancho)內的靜音縮短,如果語調是充滿活力的,則將大於 0.8 秒的靜音也縮短。使用 tools\ffmpeg_recipes.md 中的拼接方法。
  • 使用 build\transcribe.py 進行轉錄,生成 assets\audio\narracao_words.json,其中包含每個單詞的時間。
  • 平衡音量:python -I -X utf8 build\level_voice.py <mp3> <words.json> video\assets\audio\narracao.mp3。
  • 將 template\video\ 中的 hyperframes.json、package.json、meta.json、AGENTS.md 和 CLAUDE.md 複製到 video\。調整 meta.json 中的 id。

2. 媒體

  • 在內置瀏覽器中,打開 pexels.com 頁面,使用 tools\pexels_search.js 一次進行多次搜索。
  • 下載縮圖,使用 ffmpeg tile 組合成一張圖片,仔細查看後再選擇。
  • 丟棄包含標誌、品牌、球隊球衣或與語音不搭配的素材。
  • 使用 curl -L -A "Mozilla/5.0" -e https://www.pexels.com/ 下載到 assets\video\stock\。
  • 背景音樂:從 Pixabay 選擇 沒有「Content ID Registered」 的曲目,放置於 video\assets\audio\musica.mp3。
  • 音效:請參閱 tools\sfx\README.md;存放在 video\assets\sfx\。
  • 按照配方(垂直 1080×1920 或電視窗口 1000×750)剪輯影片片段到 video\assets\video\。製作鉤子(gancho)的反向片段以便循環。
  • 不要呼叫名為 cut 的 shell 函數,因為這會遮蔽系統的 cut 命令。

3. 場景(build\generate.py)

  • 從 template\build\generate.py 開始,該檔案附有註解。使用 SCENES = [(名稱, 開始, 結束)] 搭配單詞的時間;在每個場景內,時間是相對的(0 表示場景的開始)。
  • 使用 lib_short 中的元件:
    • 文字:kline / words_js / slam / punch / shake / label;
    • 數字:帶有 onUpdate 的計數器;
    • 按讚與分享:like_block / plane_svg;
    • 互動:comment_card / follow_card / step_badge。
  • 每個場景都有動畫。 如果列表要求進度,則製作一個主題指示器作為疊加場景(例如:庫中的 pavio_scene,一個隨每個項目燃燒並在高潮時爆炸的引信)。
  • 字幕: write_captions(WORDS, TOTAL, SKIP, alt_from, alt_top)。SKIP 涵蓋了場景排版已經顯示語音的段落。
  • 索引: write_index(TOTAL, SCENES, SFX, dur_voz, 0.1, handle=HANDLE)。HANDLE 來自 kit.json,經由 build.ps1 傳入。
  • @ 標誌位於字幕下方(WM_TOP)。請勿手動定位標誌。
  • 循環: 最後一個場景以反向片段結束,對應於鉤子(gancho)的第 0 幀,並帶有相同的標題。
  • 結尾應符合影片的基調: 對於沉重、陰暗且節奏緩慢的影片,不要有爆發性的結尾。
  • HyperFrames 規則:
    • class="clip" 搭配 data-start / data-duration;
    • 不要直接對 clip 本身動畫化 visibility 或 opacity,只對內部元素使用;
    • 在後續的 fromTo 中使用 immediateRender:false;
    • 每個 <audio> 都有自己的 id 和 track;
    • 影片始終設定為 muted;
    • SVG 線條使用 pathLength="1" 以實現繪製效果。

4. 生成、檢查與渲染

  • 在 build\build.ps1 中調整 $alvos:包含有拍攝素材的場景、.fv(全螢幕)和 .tv(電視窗口)。
  • 執行 powershell -ExecutionPolicy Bypass -File build\build.ps1 -Duracao <TOTAL>。絕對不要使用 Select-Object -First 來處理輸出。
  • npx --yes hyperframes@<版本> check --json:修正錯誤。預期可能出現且可以保留的錯誤包括:
    • 半透明標誌的對比度問題;
    • 循環標題過短。
  • 拍攝快照(snapshot -o <資料夾> --no-end --at "...")並查看聯繫表。檢查是否有:
    • 文字超出畫面;
    • 字幕難以辨認;
    • 元素被遮擋;
    • 場景靜止不動。
  • 使用 render --quality standard -o renders\<名稱>_master.mp4 渲染,並使用 ebur128=peak=true 進行測量(目標:大約 −13.5 LUFS,峰值低於 −2 dBTP)。
  • 使用 x264 CRF 19、AAC 192k 和 +faststart 複製到桌面。
  • 檢查循環:第 0 幀和最後一幀並排放置(hstack)時應相同。
  • 撰寫 video\REVIEW.md,記錄所做的決定、測量了哪些項目,以及僅透過目視檢查的項目(「沒有人聽到聲音」)。

5. 交付

發送影片、標題(TikTok 和 YouTube,各附 5 個 #)、描述以及要置頂的留言。提醒發佈時間,並在 48 小時後要求螢幕截圖。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相關技能