旁白 → 玻璃框短片
一個請求輸入,一個完成的 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 檢查一次;如果任何項目失敗,明確告訴使用者要修復什麼)
- macOS 26 或更新版本(裝置端轉錄)搭配 After Effects 2024 或更新版本,並已開啟。在 AE 中,開啟設定 → Scripting & Expressions → 允許腳本寫入檔案和存取網路。
- Xcode 命令列工具 (
swiftc)。執行scripts/build_tools.sh。它會編譯scripts/bin/{to_wav,transcribe,facebox,frames}。 如果腳本失敗並出現「permission denied」(上傳的技能可能會失去可執行位元),請在此技能的資料夾中執行一次chmod +x scripts/*.sh。 - 免費素材來源已就緒:
pixabay和thesvgMCP 工具(search_pixabay_images、search_pixabay_videos、search_icons、list_variants、get_icon_url、get_icon)加上curl和ffmpeg(兩者已被引擎使用)。Wikimedia Commons 僅需要網際網路- 一個正確的 User-Agent。無需信用額度、無需帳戶、無需檢查餘額。
- 第一次執行
transcribe可能會要求語音辨識權限。它也可能會下載一次裝置端模型。 - 如果另一個 AE 專案已開啟且包含未儲存的變更,
build.sh會拒絕執行。請使用者儲存該專案。絕不要捨棄他們的工作。 建構日誌會在其關閉使用者已儲存的專案時列印PREVIOUS_PROJECT <路徑>。在最終渲染完成後,重新開啟它: 撰寫一行 jsxapp.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)
- 決定符合腳本的 世界:時代、地點、2–5 個角色的重複班底、3–6 個地點、黑白或彩色。
- 預設:一個黑白 1950–60 年代的檔案紀錄片,抽象的主題轉變為人物和地點。
- 挑選一個主持人造型。當使用者希望自己出現時,使用他們的照片作為主持人參考。
- 將轉錄稿剪輯成多個鏡頭。每個鏡頭從一個單字索引開始。
- 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。 - 絕不重複顯示同一個片段時刻。
- 從鏡頭撰寫 素材清單:
- 每個故事片段是 8–12 秒的庫存素材(或從取得的靜態圖片進行 Ken-Burns 平移),覆蓋連續的鏡頭,
因此一個片段透過不同的
in時間為數個鏡頭提供素材; - 卡片人像、地點和任何主持人素材 – 全部免費取得;
- 一個可選的音樂背景(或無:建構會在
music不存在時跳過它)。
- 每個故事片段是 8–12 秒的庫存素材(或從取得的靜態圖片進行 Ken-Burns 平移),覆蓋連續的鏡頭,
因此一個片段透過不同的
3. 取得素材(閱讀 references/higgsfield.md)
- 按此順序取得素材:故事片段 → 卡片人像 → 地點 → (如果保留)電視畫面 →
(如果保留)主持人片段。根據經過測試的配方驗證每個下載(HEAD
content-type+content-length,帶有-AUA 和重試機制的 curl,Commons 提供的 SHA-1)。在work/SOURCES.md中記錄檔案 → 來源 URL → 授權 → 作者。 - 故事片段:Pixabay
search_pixabay_videos(video_type: "film",匹配方向, 持續時間 8–15 秒)或 Commonsfiletype:video(imageinfo→ 使用 curl 配方下載 → 將 Talks.ogv/.webm轉碼為 MP4)。靜態圖片使用 ffmpeg 配方變成 Ken-Burns.mp4。 - 主持人片段(僅當使用者本人出現在鏡頭上時):
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頁面。
- 如果使用了電視畫面,執行
PY S/scripts/reel.py screen <proj>/assets/tv_plate.png <proj>。 它會找到綠幕。如果未找到,則重新繪製它(ffmpeg drawbox,參考資料的第 2 節) 或將主持人鏡頭切換為full模式 – 無需畫面。 - 執行
PY S/scripts/reel.py sfx <proj>以合成音效(無需授權)。 - 音樂:省略
music(預設)、使用使用者的曲目、或將 Commons 音訊檔案轉換為 MP3。
4. 建構和檢查
- 執行
PY S/scripts/reel.py plan <proj>。它會撰寫work/plan.json並列印檢查結果。修復story.json中的每個 ERROR。 認真對待 WARN:重複的片段、主持人口形同步問題。 - 執行
S/scripts/build.sh <proj>。對於一個 70 秒的短片,它會在大約 1 分鐘內建構<proj>/reel.aep(合成 REEL)。閱讀日誌: 使用的字體、警告。 - 執行
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和檢查。
- 最終: 執行
S/scripts/render.sh <proj>。它會寫入<proj>/out/reel_1080.mp4(1920×1080,25 fps,約 40 Mbps,含聲音)。 - 傳送 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合成。
- 所有素材皆免費取得:Pixabay MCP、Wikimedia Commons(檢查每個檔案的授權)、用於標誌的 thesvg MCP,
以及本地合成(ffmpeg Ken-Burns、
- 語音是時鐘。
- 每個剪接都落在一個詞上,在其前一影格。
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.py | prep / words / chunks / align / screen / sfx / plan(僅限標準函式庫) |
scripts/build.sh, scripts/ae/build_reel.jsx, scripts/ae/reel_lib.jsx | After Effects 建構 |
scripts/render.sh | aerender 轉 H.264(--half 用於檢查) |
scripts/ae_run.sh | 將一個腳本傳送到執行中的 AE 並等待 |
scripts/tools/*.swift → scripts/bin/ | 音訊轉換、裝置端轉錄、臉部邊界框、影格表 |
references/story.md | story.json 格式、鏡頭規則、完整範例 |
references/higgsfield.md | 免費素材來源手冊:經過測試的 Pixabay / Wikimedia / thesvg 取得和驗證配方,按素材對應,付費生成附錄 |
references/look.md | 建構會繪製的內容(尺寸、時間、顏色)以及如何調整 |
references/troubleshooting.md | 錯誤和修復 |
references/example_story.json | 一個完成的 70 秒短片的 story.json(EXPERIMENT 測試) |
PROMPT.md | 如何安裝技能以及要傳送的單一提示 |