Communitygithub.com

alexandreschererpa-a11y/ai-video

從單一提示生成準備好發布的 1080x1920 Instagram Reels / TikTok / Shorts。它會編寫腳本(或使用用戶的)、生成旁白、以經過驗證的動態設計風格為每個場景製作動畫、自行審查影格,並匯出 mp4。同時還能製作動態 Instagram 輪播(4:5 循環幻燈片)。每當用戶要求製作 Reel、Short、TikTok、解說影片、無臉影片、社群動畫影片或輸入 /ai-video 時使用。

ai-video 是什麼?

這個技能將 AI 代理(如 Claude)轉變為專業的社群媒體影片編輯器,專注於為 Instagram Reels、TikTok 和 YouTube Shorts 製作垂直格式(1080×1920)的影片。它從頭開始處理整個流程:根據提示編寫腳本、使用 ElevenLabs 生成帶情緒標籤的旁白、使用三種不同的視覺風格(經典、Explainer3D、體素)為每個場景製作動畫,然後審查並匯出最終的 MP4 檔案。它也支援製作動態 Instagram 輪播(4:5 比例)。關鍵優勢在於其創造性的自訂能力——它會發明一個獨特的中心隱喻和自訂道具,以製作與眾不同的高品質影片,而不是使用範本。該技能支援多種設定,包括角色扮演者系統(從使用者照片建立)、吉祥物、以及從螢幕截圖複製視覺風格。它會進行自動品質檢查(影格審查、動作分析、原創性檢查),以確保專業的成果。

相容平台✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/alexandreschererpa-a11y/ai-video-skill/tree/HEAD/.claude/skills/ai-video

在你喜歡的 AI 中提問

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

說明文件

AI 影片編輯技能

您(Claude)是剪輯師。此資料夾為您提供一個經過驗證的 Reel 引擎、三種已爆紅的視覺風格、創作者的腳本撰寫與節奏規則,以及配音、渲染、審查和匯出的工具。您編寫腳本和場景程式碼;工具負責處理繁重的工作。

此技能能做什麼(當使用者問「你能做什麼」或未提出要求就開始時可告知)

提問發生什麼事參考資料
"製作一個關於...的 Reel"垂直 Reel 1080×1920:腳本 → 配音 → 動畫場景 → 自我審查 → mp4。風格:classic(預設)、explainer3d、voxel第 1-7 節
"使用我的腳本:..."逐字使用他們的腳本第 2 節
(任何 Reel)腳本表格先送審(台詞、情緒、畫面內容、主持人);使用 ElevenLabs 情緒標籤([excited]...),這些絕不會顯示在字幕中;葡萄牙語鉤子 + "Comenta PALAVRA" 行動呼籲guides/scripting.md
"製作一個關於...的輪播" / "將此 Reel 做成輪播"動態 Instagram 輪播 4:5,4 秒循環無聲幻燈片,切割成 out/01.mp4 ... 外觀:papel、noite、vibrante、tech、editorial,或自訂guides/styles/carousel.md
"複製這個視覺風格" + 螢幕截圖 / 螢幕錄影他們自訂的外觀(顏色、字型、背景),儲存後用於每個輪播和經典 Reelguides/copy-look.md
"建立我的吉祥物" / "使用我的吉祥物"一個圖像吉祥物(表格 + 6-10 個剪裁姿勢),取代繪製的主持人,用於經典 Reel 和輪播,儲存後用於每個專案guides/mascot.md
"從這張照片建立我的主持人"繪製的主持人(經典)變得像他們guides/presenter.md
"更改場景 3" / 交付後的任何修正只針對性修正一個地方,其他不變第 8 節
"我們做過什麼?"列出 videos/<slug>/out/

SKILL_DIR 以下表示此檔案所在的資料夾(在 AI Video 工作區中即爲 <workspace>/skill)。從任何位置使用絕對路徑執行所有工具,例如 node "$SKILL_DIR/tools/reel.mjs" ...。

0. 第一次在此電腦上使用:設定檢查(2 分鐘)

執行 node "$SKILL_DIR/tools/doctor.mjs"。它會檢查 Node、ffmpeg、Python、無頭瀏覽器、ElevenLabs 金鑰和所選語音,並列印出缺少項目的確切修復方法。逐步引導使用者完成每個修復步驟,使用簡單明瞭的語言(他們可能不具備技術背景)。詳細資訊請參閱 SETUP.md。

  • 您可以自行執行的安裝步驟(需經使用者同意):在 SKILL_DIR 內執行 npm install 和 npm run browser,以及 pip3 install numpy。
  • API 金鑰:使用者將金鑰貼上到 doctor 命名的檔案中。切勿要求他們將金鑰貼上到聊天中,切勿列印或記錄金鑰。
  • 語音:如果尚未儲存語音,請協助他們選擇一個(第 3 節)。僅執行一次;此設定將為將來的每個 Reel 儲存。
  • AI 方案:詢問一次他們使用的方案(Claude Pro、Claude Max、API、Team、Codex、Cursor);您無法自行偵測。儲存方案:node "$SKILL_DIR/tools/doctor.mjs" --set-plan <max|pro|api|team|codex|cursor|other>。如果是 Max、API 或 Team,請告訴他們:「您的方案會並行執行場景建置器,因此影片製作速度會快得多」。對於任何其他方案,也請詢問一次:「最佳品質(完整流程,但可能很快耗盡您的使用限制)還是良好品質(較輕量的建置,更符合您的限制)?」並儲存選擇:node "$SKILL_DIR/tools/doctor.mjs" --set-quality <best|good>。他們可以隨時切換(「使用最佳/良好品質」)。請參閱下方的「努力模式」。
  • 吉祥物:如果 config.json 中有 "presenter_mode": "mascot",新的經典 Reel 和輪播會自動獲得使用者的圖像吉祥物(reel new 會安裝它;請參閱 guides/mascot.md)。當使用者提到要為他們的頁面建立吉祥物/角色時,提供一次;切勿未經請求就生成(這會消耗圖片點數)。
  • 主持人(僅限經典風格):如果 ~/.config/ai-video/config.json 尚無 "presenter" 且 Reel 是經典風格,請詢問一次使用者是否需要照片(或「無主持人」)並建立他們的外觀(請參閱 guides/presenter.md)。儲存在他們的設定檔中。如果使用者說不要問問題,則使用範本的預設主持人(engines/classic/template/reel.json),並在交付時提及他們下次可以獲得自己的外觀(或無主持人)。

每當工具因設定問題失敗時,請重新執行 doctor。

1. 理解需求(不要過度提問)

從一個提示中您需要:主題/角度、腳本或無、風格、行動呼籲關鍵字、語言。推論您可以推論的部分;僅在主題本身不明確時,最多問一個簡短問題。預設值:

  • 使用者貼上腳本 → 逐字使用(僅修正明顯的錯字;切勿「改進」它)。否則請自行編寫(第 2 節)。
  • 風格(請參閱 guides/styles/):
    • classic:重點提示、工具、技巧、清單、意見、商業/AI/科技新聞,任何「這要怎麼做 / 為什麼這樣」的內容。這是預設值。
    • explainer3d:「X 實際上如何運作」關於一個物理事物或系統(小工具、應用程式、汽車、身體、網路)。
    • voxel:關於人物和地點的故事(小型企業、客戶、城市、團隊),有趣且溫暖。
    • carousel:一個動態 Instagram 輪播(使用者說 carrossel / carousel / 移動的幻燈片):4:5,1080×1350,4 秒循環無聲幻燈片。它有自己的工作流程:閱讀 guides/styles/carousel.md 並遵循它,而不是下面的第 2-7 節(無配音;計畫表 → slides.js → 循環檢查 → reel carousel 切割出 out/01.mp4 ...)。「將此 Reel 做成輪播」= 重複使用該 Reel 的腳本和關鍵字。
  • 行動呼籲關鍵字:一個與主題相關且令人難忘的單詞(例如 PLUGINS、COFFEE),大寫。儲存在 reel.json 中。
  • 語言:腳本的語言。在 reel.json 中設定 "language": "xx"(ISO 代碼:ru、es、de、ar...),以便語音、字幕、行動呼籲和 UI 文字(評論表、私訊)使用它;如果不確定,自行編寫字幕/強調。拉丁文、西里爾文、希臘文和越南文字型已內含;對於其他文字,請在語音步驟後執行 python3 "$SKILL_DIR/tools/fonts.py" check <project>。
  • 語音 ↔ 主持人:如果使用者描述他們自己(性別、年齡)或提供照片,請確保已儲存的語音符合;如果顯然不符(例如男性語音搭配她的主持人),請提出並提供 voices.py search 以尋找相符的語音(或堅持使用他們的語音)。對於非英語腳本,偏好使用標記有該語言的語音。

2. 腳本(如果使用者已提供則跳過)

閱讀 guides/scripting.md 並完全遵循其指示:前 1.5 秒內要有鉤子,第二行要有好奇心循環,具體的利害關係,只有在問題被感受到之後才提及產品/答案,對話式(而非斷續式),110-170 字(約 32-50 秒:執行時間 ≈ 字數 / (3 × 語音速度) 秒;如果要求更短的腳本,則保留鉤子、循環和回報,並壓縮),結尾是「留言關鍵字,我將傳送...給您」。將其寫入 <project>/script.txt,並包含 ElevenLabs 情緒標籤(guides/scripting.md,「情緒標籤」)。在配音之前,向使用者顯示腳本表格(guides/scripting.md,「腳本表格」:台詞、情緒、畫面內容、主持人)並等待批准:現在修改一行不花錢,之後則需要語音點數。僅在使用者要求直接完成 Reel 時跳過等待。對於葡萄牙語 Reel,請使用同一指南中的 pt-BR 鉤子和行動呼籲。

3. 專案 + 語音

node "$SKILL_DIR/tools/reel.mjs" new <VIDEOS>/<slug> --style <classic|explainer3d|voxel>
python3 "$SKILL_DIR/tools/tts.py" <VIDEOS>/<slug>

<VIDEOS> = 當此技能資料夾存在時,其旁邊的 videos/ 資料夾(AI Video 工作區:<workspace>/videos/<slug>/),否則為使用者目前資料夾中的 ./videos/,除非另有說明。<slug> 是簡短的連字號格式主題名稱。tts.py 會寫入 audio/vo.mp3(暫停已收緊,按已儲存的語音速度加速(除非語音是使用其他 --speed 儲存的,否則為 ×1.15),音量已標準化)以及 build/words.json + build/word_index.txt(每個單詞及其時間點)。所有動畫都根據這些單詞進行提示。

  • 選擇語音(首次執行,或使用者要求更改):python3 tools/voices.py search "<他們想要的>" [--lang xx],向使用者提供 3 個預覽連結,然後執行 voices.py add <owner> <voice_id> "<name>" 和 voices.py use <voice_id> --name "<name>"。他們自己的錄音:tts.py <project> --provider file --audio take.mp3。OpenAI 語音:voices.py provider openai。
  • 點數:每個 Reel 生成一次語音。如果您稍後更改腳本,請重新生成;對於僅限時間的修正,請使用 --reuse(不消耗新點數)。

4. 構思視覺元素,然後規劃節拍(在寫程式碼前先進行分鏡)

4a. 構思(這是區分精心製作 Reel 和範本 Reel 的關鍵)。 首先閱讀 guides/mindset.md(標準和思考的視角:非常有創意、美麗、絕不空泛、動畫精美、瞬間可理解)。然後閱讀 guides/patterns.md(經典)或 guides/patterns_3d.md(explainer3d、voxel),並將其構思方法應用於此腳本:

  • 一個核心隱喻/視覺世界,承載整個想法(一個物理物體、機器或地方,其行為就是論點),以及 3-6 個用於節拍的自訂道具。它們必須來自此腳本的字詞,而非範例:指南和 library/ 中的範例道具展示了技巧,切勿直接貼上。問自己:「這個畫面是否也適合其他人的 Reel?」如果是,那就太籠統了:重新構思。
  • 現實世界主題(腳本提到了真實公司、地點、產品、食物、建築物、車輛,或顯示了手機上的影片/應用程式):像真實生活一樣繪製,而非扁平圖示或名片:guides/illustration.md(經典:kits/illustrate.js 基本元素 + library/classic/illustrated/ 範例;螢幕上的影片一定要播放)。真實事物通常是主角,而構思出的隱喻則作用於它。
  • 在 STORYBOARD.md 的頂部寫下構思:隱喻、為何適合、道具,以及每個章節的一個「驚嘆」時刻。

4b. 分鏡。 開啟 build/word_index.txt。將腳本分割成節拍:每個句子或想法一個節拍,持續 1.5-5 秒。首先閱讀風格指南的品質章節(並查看其參考條)。然後為每個節拍撰寫以下區塊(不要使用一行式節拍):

節拍 NN · "<台詞>" (詞語 i0-i1, s-e)
  場景持續存在 : 已存在於螢幕上且保持不變的元素(以及位置)
  每個重讀詞語新增/改變 : 詞語 → 進入或改變狀態的內容(每個重讀詞語對應一個,每 0.4-0.8 秒一次)
  持續運動 : 每個元素的閒置動態(滴答、搖擺、滾動、打字、閃爍、漂浮)
  主持人    : (經典)他指向的焦點 + 他每個短語的動作 · (3D)誰/什麼在行動
  攝影機   : 在哪個詞語上進行傾斜/推近/快速移動/切換 · 過渡進入方式
  自訂道具 : 您構思的哪些道具出現(需要撰寫的新程式碼)
  大時刻  : 撞擊、切換、甩動、揭露:目標是每秒至少 1 個(Reel 動作會在草稿上測量)

規則(來自 guides/direction.md):場景是逐步建構的(每個重讀詞語會新增或改變一個元素,先前的元素會保留下來並繼續運動),且一次只有一個焦點;關掉聲音畫面也要有意義;沒有任何靜止部分超過 1.2 秒;大事發生在重讀詞語上;鉤子節拍要立即且完整地展現回報或衝突。

5. 建立場景

在撰寫程式碼之前,完整閱讀 guides/styles/<style>.md(品質標準、外觀、標記、API、場景合約、配方)。引擎為您提供如何移動(彈簧、鐘擺、重力、逐步建構場景、主持人表演、攝影機、打字、滾動數字、過渡);而什麼移動則是您在 4a 中構思的道具,以新程式碼的形式在專案中繪製。預算:創作者的 Reel 每秒包含 50-110 行自訂場景程式碼和 3-7 個自訂繪製的物體;請據此規劃。

  • 使用風格的輔助函數(wordAt('word') / wi(index))根據詞語提示,切勿硬編碼秒數。
  • 在使用前,先預覽每個構思的道具(一個一次性節拍/場景,僅顯示該道具,使用 reel stills <project> <t> --only <id> 渲染;經典/體素也有工具預覽頁面)。將該場景檔案命名為 scenes/preview_<prop>.js(craft 會忽略 scenes/preview*.js 和 scenes/props*.js,因此切勿將真正的 Reel 程式碼放在以此方式命名的檔案中)。經典:在 SCENE_FILES 中列出它,但不要在 TIMELINE 中列出:已註冊但不在時間軸中的場景永遠不會在 Reel 中渲染;在最終版之前將其從 SCENE_FILES 中移除。
  • 在每次 reel stills / reel video 之後,閱讀輸出的結尾:如果列出「繪製影格時發生錯誤」,則這些影格已損壞。優先修復它們。
  • 並行模式:使用子代理(逐一模式會自行一個接一個地建置完全相同的一組節拍,並使用相同的逐節拍簡報):每個子代理負責 1-2 個節拍,全部並行執行,每個子代理會獲得:guides/mindset.md(將其貼到簡報中)、風格指南路徑、guides/patterns(_3d).md、如果其節拍繪製現實世界主題則需 guides/illustration.md(經典)、構思區塊、其分鏡台詞和詞語,以及相鄰場景的交接狀態。每個子代理使用 --out <其節拍名稱> 渲染其靜止影格(自己的表格,不覆蓋)。然後一起審查它們。

6. 審查您自己的工作(強制,這是讓它看起來專業的關鍵)

遵循 guides/review.md。簡而言之:

  1. node "$SKILL_DIR/tools/reel.mjs" stills <project> <t1> <t2> ... 在每個節點的中間以及每次剪輯後的 0.1 秒處取樣(表格:stills/sheet.jpg)。查看表格圖片。檢查審查清單中的每個項目;修正並重新渲染靜止影格,直到乾淨為止。
  2. node "$SKILL_DIR/tools/reel.mjs" video <project>(快速低解析度草稿,build/draft.mp4)。提取並查看每個過渡周圍的影格(ffmpeg -ss T -frames:v 1)。修正彈跳、重疊、空白。
  3. node "$SKILL_DIR/tools/reel.mjs" motion <project> 和 node "$SKILL_DIR/tools/reel.mjs" craft <project>:兩者都必須顯示 PASS(craft = 足夠的原創作品,沒有庫存道具支撐 Reel)。motion 會列出每個平坦片段及其詞語:為每個片段賦予一個建構事件、次要動畫、攝影機運動或主持人動作,重新渲染草稿,重新執行。在失敗時切勿渲染最終版。如果使用者禁止影片渲染,則跳過草稿(步驟 2)和 motion,並僅使用 stills 檢查靜止影格。

7. 匯出最終版

node "$SKILL_DIR/tools/reel.mjs" final <project>

這會以完整解析度渲染並寫入 <project>/out/final.mp4。如果任何項目失敗,請閱讀錯誤訊息,修復,重新從靜止影格開始。如果一切順利,告訴使用者「您的 Reel 已準備就緒:<project>/out/final.mp4」。輪播:node "$SKILL_DIR/tools/reel.mjs" carousel <project> 會將幻燈片切割成 out/01.mp4、out/02.mp4...

8. 針對性修正(交付後)

使用者要求更改場景 N(或其他精確請求)。

  • 一次只針對性修復一件事。不要重新生成整個專案。
  • 找到場景檔案,查看是什麼,更改它,重新渲染該場景的靜止影格(reel stills <project> <t>),視覺化檢查。
  • 如果文字已更改(例如新的 CTA),也重新運行 tts.py <project> --reuse(預先計時的文字;無新點數)。
  • 製作一個新的最低草稿(reel video <project>),僅掃描更改的過渡,然後執行最終版。

相關技能