Communitygithub.com

SergeoDev01/voiceover-glass-reel

將任何旁白(及可選的腳本)在單一請求中轉換為 After Effects 完成的 16:9 紀錄片風格短片:裁剪停頓與呼吸聲、編寫視覺故事、免費取得所有圖片,並原生建構編輯並渲染 1080p H.264 MP4。

voiceover-glass-reel 是什麼?

這個技能可將用戶提供的任何旁白檔案(音訊或視訊,長度最長約 3 分鐘)以及可選的文本腳本,自動轉製成一部完整的 16:9 紀錄片風格短片,完全在 After Effects 中完成。它會自動偵測並移除停頓與呼吸聲,根據語音內容編寫視覺故事,並從 Pixabay MCP、Wikimedia Commons 以及 thesvg MCP 等免費來源取得所有圖片素材,包括照片、片段與標誌 SVG。它還利用 ffmpeg 產生 Ken-Burns 效果,從靜態圖片創造動態。最終輸出為 1080p H.264 MP4 檔案,具有特定的視覺風格:深色檔案紀錄片外觀、每個片段置於浮動的圓角玻璃框中,帶有發光邊框與平滑推入效果;一個移動的透視網格,關鍵字在對應的詞上變色;大型口白字幕;打字機 / 大字 / 照片卡片頁面;閃爍和合成音效。此技能在 macOS 上運作,依賴 After Effects 2024 或更新版本,並包含多個自訂腳本 (reel.py, build.sh, render.sh) 來處理轉換、故事規劃與最終渲染。使用者只需提出一個請求,例如「從我的旁白製作一支影片」或「製作一個玻璃框編輯」,即可獲得完整輸出,無需手動操作。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/SergeoDev01/voiceover-glass-reel/tree/HEAD

在你喜歡的 AI 中提問

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

說明文件

旁白 → 玻璃框短片

一個請求輸入,一個完成的 MP4 輸出。使用者提供一個旁白檔案(任何音訊或視訊格式,長度最長約 3 分鐘)和選擇性的腳本文字、主題註記或參考連結。您將完成所有其他工作,並且只會停止:

  • 一次為了下載,例如標誌。沒有信用額度預算:所有素材都是免費取得 (參見 references/higgsfield.md - 經過測試的 Pixabay / Wikimedia / thesvg 配方)。回報每個素材的來源,但除非使用者明確要求付費附錄,否則絕不談論金錢。

在聊天中以使用者的語言工作。螢幕上的所有內容都使用旁白的語言。

它製作了什麼

將任何旁白(及可選的腳本)在單一請求中轉換為 After Effects 完成的 16:9 紀錄片風格短片。它會裁剪停頓與呼吸聲、編寫視覺故事、免費取得所有圖片(Wikimedia Commons 檔案照片、Pixabay MCP 片段與人像、透過 thesvg MCP 取得的標誌 SVG、從靜態圖片產生 ffmpeg Ken-Burns 運動),並在 After Effects 中原生建構編輯。外觀:深色檔案紀錄片,每個片段置於一個浮動的圓角玻璃框中,帶有細微的發光邊框和流暢的推入效果,一個移動的透視網格,關鍵字在對應的詞上變色,大型口白字幕,打字機 / 大字 / 照片卡片頁面,在剪接處有閃爍和負片翻轉效果,合成音效。它會渲染一個 1080p H.264 MP4。每當有人提供旁白、語音備忘錄、敘述或播客片段,並要求從中製作短片、影片、短影音、解說或編輯時使用:「從我的旁白製作一支影片」、「將這段敘述變成短片」、「玻璃框編輯」、「從旁白剪輯一段」、「從我的錄音製作一支短片」、「剪輯一支配合我聲音的影片」、「玻璃框和網格」。即使他們完全沒有任何素材,此規則也適用。

開始之前(每台 Mac 檢查一次;如果任何項目失敗,明確告訴使用者要修復什麼)

  1. macOS 26 或更新版本(裝置端轉錄)搭配 After Effects 2024 或更新版本,並已開啟。在 AE 中,開啟設定 → Scripting & Expressions → 允許腳本寫入檔案和存取網路。
  2. Xcode 命令列工具 (swiftc)。執行 scripts/build_tools.sh。它會編譯 scripts/bin/{to_wav,transcribe,facebox,frames}。 如果腳本失敗並出現「permission denied」(上傳的技能可能會失去可執行位元),請在此技能的資料夾中執行一次 chmod +x scripts/*.sh。
  3. 免費素材來源已就緒:pixabay 和 thesvg MCP 工具(search_pixabay_images、 search_pixabay_videos、search_icons、list_variants、get_icon_url、get_icon)加上 curl 和 ffmpeg(兩者已被引擎使用)。Wikimedia Commons 僅需要網際網路
    • 一個正確的 User-Agent。無需信用額度、無需帳戶、無需檢查餘額。
  4. 第一次執行 transcribe 可能會要求語音辨識權限。它也可能會下載一次裝置端模型。
  5. 如果另一個 AE 專案已開啟且包含未儲存的變更,build.sh 會拒絕執行。請使用者儲存該專案。絕不要捨棄他們的工作。 建構日誌會在其關閉使用者已儲存的專案時列印 PREVIOUS_PROJECT <路徑>。在最終渲染完成後,重新開啟它: 撰寫一行 jsx app.open(new File("<路徑>")); 並使用 scripts/ae_run.sh 執行它。

S = 此技能的資料夾。PY = /usr/bin/python3(或任何 Python 3.9+,僅限標準函式庫)。

流程

1. 專案資料夾和語音

  • 在旁白檔案旁邊建立一個名為 <旁白名稱>_reel 的新資料夾 <proj>。
  • 執行 PY S/scripts/reel.py prep <旁白檔案> <proj>。它會轉換音訊,在 Mac 上進行裝置端轉錄,並移除所有停頓和呼吸聲。 結果是 work/voice_cut.wav 和 work/words.json(單字索引 → 節目時間)。
  • 然後執行 PY S/scripts/reel.py words <proj> 並閱讀整個索引後的轉錄稿。
  • 如果使用者提供了腳本,將其與轉錄稿進行比較。記下聽錯的名稱以便使用 spell 修正(例如 "28": "Grok")。

2. 故事(閱讀 references/story.md,然後撰寫 <proj>/story.json)

  1. 決定符合腳本的 世界:時代、地點、2–5 個角色的重複班底、3–6 個地點、黑白或彩色。
    • 預設:一個黑白 1950–60 年代的檔案紀錄片,抽象的主題轉變為人物和地點。
    • 挑選一個主持人造型。當使用者希望自己出現時,使用他們的照片作為主持人參考。
  2. 將轉錄稿剪輯成多個鏡頭。每個鏡頭從一個單字索引開始。
    • host(對著電視上的攝影機說話):3–6 個鏡頭,每個 2–6 秒。在鉤子、轉折點和行動呼籲時使用它們。它們總共佔用約 15–20 % 的執行時間。
    • clip(在玻璃框內產生的素材):大多數鏡頭,每個 1.5–3 秒。
    • type(打字機頁面):開場問題或章節標題,最多 6 個字。
    • giant(一個巨大的詞,帶有紅色標籤和襯線子行):一個已命名的概念。
    • cards(2–4 張照片卡片,帶有標誌徽章,每個詞上有一個名稱):當語音列出人物、產品或品牌時。 標誌僅在被說出時出現。
    • list:當語音列出 2–4 個要點時,標記該詞的範圍。其關鍵字會在該詞上翻轉成強調色。
    • keys:每個句子最多一個。
    • hits:在 3–6 個戲劇性剪接處使用 invert,在最多 2 個「事情變得更瘋狂」的時刻使用 strobe,在最多 2 個高峰使用 burn。
    • 絕不重複顯示同一個片段時刻。
  3. 從鏡頭撰寫 素材清單:
    • 每個故事片段是 8–12 秒的庫存素材(或從取得的靜態圖片進行 Ken-Burns 平移),覆蓋連續的鏡頭, 因此一個片段透過不同的 in 時間為數個鏡頭提供素材;
    • 卡片人像、地點和任何主持人素材 – 全部免費取得;
    • 一個可選的音樂背景(或無:建構會在 music 不存在時跳過它)。

3. 取得素材(閱讀 references/higgsfield.md)

  1. 按此順序取得素材:故事片段 → 卡片人像 → 地點 → (如果保留)電視畫面 → (如果保留)主持人片段。根據經過測試的配方驗證每個下載(HEAD content-type + content-length,帶有 -A UA 和重試機制的 curl,Commons 提供的 SHA-1)。在 work/SOURCES.md 中記錄檔案 → 來源 URL → 授權 → 作者。
  2. 故事片段:Pixabay search_pixabay_videos(video_type: "film",匹配方向, 持續時間 8–15 秒)或 Commons filetype:video(imageinfo → 使用 curl 配方下載 → 將 Talks .ogv/.webm 轉碼為 MP4)。靜態圖片使用 ffmpeg 配方變成 Ken-Burns .mp4。
  3. 主持人片段(僅當使用者本人出現在鏡頭上時):
    • PY S/scripts/reel.py chunks <proj> 將每個主持人鏡頭的對應音訊區塊寫入 work/host/host_NN.wav;
    • 將該區塊音訊合成到他們的網路攝影機片段上,並儲存為 assets/host/host_NN.mp4 (ffmpeg -map 0:v:0 -map 1:a:0 -shortest)- reel.py align 然後會精確匹配文字;
    • PY S/scripts/reel.py align <proj> 測量每個片段相對於文字的偏移量。 沒有自己的素材 → 將這些主持人節拍重組為 type / giant / cards 頁面。
  4. 如果使用了電視畫面,執行 PY S/scripts/reel.py screen <proj>/assets/tv_plate.png <proj>。 它會找到綠幕。如果未找到,則重新繪製它(ffmpeg drawbox,參考資料的第 2 節) 或將主持人鏡頭切換為 full 模式 – 無需畫面。
  5. 執行 PY S/scripts/reel.py sfx <proj> 以合成音效(無需授權)。
  6. 音樂:省略 music(預設)、使用使用者的曲目、或將 Commons 音訊檔案轉換為 MP3。

4. 建構和檢查

  1. 執行 PY S/scripts/reel.py plan <proj>。它會撰寫 work/plan.json 並列印檢查結果。修復 story.json 中的每個 ERROR。 認真對待 WARN:重複的片段、主持人口形同步問題。
  2. 執行 S/scripts/build.sh <proj>。對於一個 70 秒的短片,它會在大約 1 分鐘內建構 <proj>/reel.aep(合成 REEL)。閱讀日誌: 使用的字體、警告。
  3. 執行 S/scripts/render.sh <proj> --half 進行快速檢查(約 2 分鐘)。然後檢查影格:
    • S/scripts/bin/frames <proj>/out/reel_half.mp4 <proj>/work/check.jpg 4 <約 16 個鏡頭的中間秒數>;
    • 檢視 check.jpg:字幕可讀且未覆蓋臉部、主持人在電視內嘴唇在動、玻璃框存在、沒有黑色間隙、 頁面不為空白。 在 story.json 中修復,然後重新執行 plan、build 和檢查。
  4. 最終: 執行 S/scripts/render.sh <proj>。它會寫入 <proj>/out/reel_1080.mp4(1920×1080,25 fps,約 40 Mbps,含聲音)。
  5. 傳送 MP4。回報:
    • 其長度;
    • 您無法驗證的內容;
    • 可以手動調整的地方(reel.aep:每個鏡頭在 02_SHOTS / 03_PAGES 中都是自己的合成,字幕在 CAPTIONS 中)。

規則

  • 版權:
    • 所有素材皆免費取得:Pixabay MCP、Wikimedia Commons(檢查每個檔案的授權)、用於標誌的 thesvg MCP, 以及本地合成(ffmpeg Ken-Burns、reel.py sfx)。預設情況下不使用付費服務;Higgsfield 附錄僅在使用者明確要求時使用。
    • 絕不抓取電影、影集、廣告或其他人的社群媒體貼文。
    • 標誌僅來自 thesvg MCP 或 Wikimedia Commons,且僅在使用者同意後使用。
    • 音樂是可選的(省略、使用使用者自己的曲目、或將 Commons 檔案轉換為 MP3)。
    • 音效由 reel.py sfx 合成。
  • 語音是時鐘。
    • 每個剪接都落在一個詞上,在其前一影格。reel.py 負責處理。
    • 絕不改變速度或文字。
    • 字幕精確顯示所說的內容,但使用 spell 修正聽錯的名稱除外。
  • 人物:
    • 穿著符合時代的樸素服裝;
    • 寫實的成年人;
    • 不以真實公眾人物作為角色;
    • AI 模型和公司以虛構角色呈現,僅透過字幕和標誌命名。
  • 重新執行成本低廉。 plan 和 build 是確定性的,並從頭開始重建 reel.aep。修改 story.json 而不是手動編輯 reel.aep, 除非使用者要求手動編輯。一旦他們自己編輯了 reel.aep,在未經詢問的情況下,絕不重新建構覆蓋它。
  • AE 一次僅執行一個腳本。
    • 僅使用 scripts/ae_run.sh、build.sh 和 render.sh。
    • 退出碼 4 表示 AE 仍在忙碌:請等待,絕不重新發送。
    • 退出碼 6 表示 AE 未啟動腳本:是否有對話方塊開啟?

檔案

路徑說明
scripts/reel.pyprep / words / chunks / align / screen / sfx / plan(僅限標準函式庫)
scripts/build.sh, scripts/ae/build_reel.jsx, scripts/ae/reel_lib.jsxAfter Effects 建構
scripts/render.shaerender 轉 H.264(--half 用於檢查)
scripts/ae_run.sh將一個腳本傳送到執行中的 AE 並等待
scripts/tools/*.swift → scripts/bin/音訊轉換、裝置端轉錄、臉部邊界框、影格表
references/story.mdstory.json 格式、鏡頭規則、完整範例
references/higgsfield.md免費素材來源手冊:經過測試的 Pixabay / Wikimedia / thesvg 取得和驗證配方,按素材對應,付費生成附錄
references/look.md建構會繪製的內容(尺寸、時間、顏色)以及如何調整
references/troubleshooting.md錯誤和修復
references/example_story.json一個完成的 70 秒短片的 story.json(EXPERIMENT 測試)
PROMPT.md如何安裝技能以及要傳送的單一提示

相關技能