Communitygithub.com

片段蒙太奇

將使用者的影片片段剪輯成適合 TikTok、Reels 和 Shorts 的直式捲動影片:選取每個片段的最佳時刻、跟著節拍剪輯、加入字幕、標籤和結尾卡。

片段蒙太奇 是什麼?

這個 AI 技能能將使用者手機拍攝的短影片片段,以及他們提供的音樂或錄音,自動剪輯成一部可直接上傳的 9:16 直式蒙太奇影片。它會自動選取每個片段的最佳時刻,並以說故事的方式排序;影片會跟著音樂節拍剪輯,在第一個鏡頭加入鉤子,為每個鏡頭加上標籤,並在結尾加上行動呼籲。支援多種平台,包括 Claude Code、Codex 等具備檔案系統存取權的 AI 代理。整個處理流程在本地端執行,使用外掛程式內建的 `montage.js` 和 `render.js` 工具,完全免費,且不會將任何資料傳送至外部伺服器。使用者可以反覆編輯腳本,每次修改都會產生新的版本,確保不會遺失之前的編輯成果。此技能專為處理真實影片片段而設計,若使用者只有照片,則會引導至另一項名為 `montage-video` 的技能。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/GreyCatVP/marketing-skill/tree/main/skills/clip-montage

在你喜歡的 AI 中提問

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

說明文件

片段蒙太奇 是做什麼的?

目的

將使用者在手機上拍攝的短影片,以及他們擁有的任何音樂或錄音,剪輯成一部可直接上傳的 9:16 蒙太奇影片:

  • 每個片段的最佳時刻,並以說故事的方式排序;
  • 跟著節拍剪輯;
  • 在第一個鏡頭加上鉤子,為每個鏡頭加上標籤,並在結尾加上行動呼籲;
  • 在重要時刻(有人說話、滋滋作響的聲音、歡呼聲)保留片段的原音,並逐字加上字幕;
  • 使用者的旁白會貫穿整部影片,並有同步字幕。

然後與使用者反覆編輯,直到他們滿意為止(例如:"用她笑的那段"、"廚房先放"、"放大片段音量,不要音樂"),每次產生一個新版本,且不會遺失先前的版本。

這是蒙太奇剪輯的預設選項,而且是免費的。 所有渲染作業都在本機上執行,使用外掛程式的 scripts/video/ 工具(montage.js 根據簡短腳本建立頁面,render.js 產生 MP4 檔案)。不需要帳號、不需要點數,且所有資料都不會離開本機。真實的影片片段也能最真實地呈現一個地方或產品:AI 不會虛構任何東西。

哪些情況需要付費,以及何時提出:

使用者提供的內容處理方式費用
影片(可有可無照片、音樂、錄音)使用此技能免費
只有照片,但可以拍攝幾個片段要求拍攝片段,然後使用此技能免費
只有照片,無法拍攝片段使用 montage-video 搭配本機運鏡(平移、推近、3D 運鏡)免費
只有照片,且希望有真正的相機運鏡(新角度)montage-video 的 "AI 相機運鏡",僅在使用者表示他們有付費方案(Figma Weave 需付費 Figma 方案,Higgsfield)時才能執行,需先報價並獲得批准付費點數

切勿從此技能執行付費的影片模型。除非使用者已表示他們有付費方案且想要使用,否則切勿報價。

逐步流程

外掛程式根目錄: 如果以下路徑仍顯示未展開的 CLAUDE_PLUGIN_ROOT 佔位符(Claude Code 會自動填入;其他代理如 Codex 則不會),請在使用任何路徑前先解析它:取出 printenv CLAUDE_PLUGIN_ROOT 的輸出,如果它印出路徑,則使用該路徑;否則,從此檔案所在的資料夾往上層搜尋,直到找到包含 references/brand-voice.md 的第一個資料夾;如果兩種方法都失敗,請詢問使用者此外掛程式的存放位置。在以下所有檔案路徑和 shell 命令中使用該絕對路徑。下面的 VIDEO 代表 ${CLAUDE_PLUGIN_ROOT}/scripts/video。

  1. 檢查設定狀態。 讀取 ${CLAUDE_PLUGIN_ROOT}/references/brand-voice.md。如果該檔案不存在,或其第一行是 <!-- MARKETING-SKILL:UNCONFIGURED -->,則暫停並詢問使用者此外掛程式的 4 個設定問題(優先任務;要製作的內容類型;目標受眾 + 語調;預設輸出格式 — 與 /marketing-skill:marketing-setup 相同),然後再繼續,接著將答案儲存到該檔案中,並將標記改為 CONFIGURED 並附上今天的日期。 如果檔案尚未設定,但使用者已要求跳過設定或使用預設值,則不要詢問:改用其佔位符預設值執行此次操作,用一句話說明,並保持標記不變。

  2. 選擇客戶。 與 montage-video 步驟 2 (${CLAUDE_PLUGIN_ROOT}/skills/montage-video/SKILL.md) 完全相同:可以是已儲存的客戶(讀取設定檔及其 ## Notes)、新客戶(公司名稱、聯絡方式、所需的免責聲明、標誌、顏色、他們喜歡的音樂),或使用者自己的公司(省略 client:)。設定檔存放在 ${CLAUDE_PLUGIN_ROOT}/state/clients/ 中,且不會被 git 追蹤。

  3. 詢問素材、音樂和旁白。 一次訊息中詢問:

    • 片段(預設詢問項目)。 手機拍攝的短影片,每個 3 到 15 秒,每個房間、角度或時刻一個。如果他們尚未拍攝,請提供 montage-guide.md 中的 "拍攝片段提示":直式拍攝、每個鏡頭穩定持握 3 到 5 秒、緩慢移動、光線充足、細節特寫。
    • 音樂(如果有的話)。 使用者有權在廣告中使用的曲目。來自串流應用程式或廣播的歌曲不算。否則:使用客戶已儲存的音效(免費產生的曲目)、創用 CC 曲目(執行 node VIDEO/media.js search "<情緒>" --type music --out state/videos/assets --count 3),或無音樂,讓他們在發佈時在應用程式中加入熱門音效(TikTok 和 Instagram 的商業帳戶都有商業使用曲庫)。
    • 旁白(如果有的話)。 使用者錄製的旁白(一個檔案即可,手機語音備忘錄也可以),需附上他們所說的逐字內容,以便製作字幕。或是有人對著鏡頭說話的片段。或不需要:大多數蒙太奇影片只有音樂。
    • 參考的蒙太奇影片(如果有的話): 使用者傳送的影片(或 brand-voice.md 中「影片設定」的風格參考)。執行 node VIDEO/reference.js <video>,讀取其 reference.md 並查看其時間表;然後模仿其節奏(pace: 其典型的鏡頭長度,如果剪輯點在節拍上則為節拍數)、其快速剪輯的爆發點、其字幕和感覺,並用一句話說明你正在模仿什麼。模仿其剪輯方式,切勿使用其素材、音樂或文字;要求提供檔案,而非從應用程式下載他人的貼文。
    • 只有照片? 詢問他們是否可以改為拍攝幾個片段(這是免費且最真實的呈現方式)。如果不行,則移交給 montage-video,它會使用免費的本機運鏡來移動照片。僅在使用者要求真正的相機運鏡或新角度時,才提出 AI 照片轉影片,並說明這需要付費方案(Figma Weave 影片模型僅在付費 Figma 方案上執行)。僅在使用者表示他們有付費方案並批准報價後才執行,並遵循 montage-video 的 "AI 相機運鏡" 步驟。
    • 將檔案存到磁碟。 渲染器需要檔案:詢問資料夾(或檔案路徑)。貼到聊天中的影片無法被渲染器讀取。如果它們在 Google Drive 中,且有可用的 Drive 連接器,請使用它將檔案下載到新資料夾中。
    • 僅使用使用者或客戶拍攝或有權使用的素材,以及同意出現在影片中的人員。
  4. 匯入素材。 執行 node VIDEO/montage.js inspect <資料夾> --slug <縮寫>,其中縮寫要簡短且能為影片命名(例如 maple、taco-night)。

    • 它會將每個片段複製到 state/videos/assets/<slug>-01.mp4 等,保留其原始畫面和聲音,但移除元資料(包括手機片段的位置資訊)。原始檔案不會被修改。
    • 它會印出每個片段的大小、形狀、長度,以及是否有聲音,並標記出較長、橫向和低解析度的片段。
    • 它會寫入一個編號的連絡表 <slug>-contact.png,以及一個起始腳本 state/videos/<date>-<slug>.md,每個檔案對應一個鏡頭。
    • 將使用者的音樂複製到 state/videos/assets/<slug>-music.<ext>,將他們的旁白複製到 state/videos/assets/<slug>-vo.<ext>。
  5. 觀看每個片段。 你無法播放影片,所以請查看影格:

    • 對每個片段執行 node VIDEO/montage.js frames <片段> --every 1(對於短暫且忙碌的片段使用 --every 0.5)。它會每秒排列一個影格並顯示其時間,並在片段聲音較大時(有人說話,或值得保留的聲音)印出提示。閱讀每個時間表。
    • 說明每個片段顯示的內容,並選取其最佳時刻:穩定、清晰、光線充足、主體明確。跳過晃動的開頭、手機放下的畫面、模糊以及任何未同意出現的人員。每個選擇都是一個區段,[from: 3.5] [to: 6.5]:對於大多數鏡頭,1.5 到 4 秒是合適的。一個長片段可以提供兩個或三個來自不同時刻的鏡頭。
    • 橫向片段會被裁切為 9:16。在 [focus: x%,y%] 中註明要保持在畫面中的內容(人物、產品、壁爐)。
    • 註明哪些片段的聲音應保留([sound]):有人對著鏡頭說話、笑聲、烤架上的滋滋聲。你無法聽到它們,所以請詢問使用者說了什麼,以便製作字幕,並說明你保留了哪些片段的聲音,以便他們檢查。
    • 說明你省略了哪些片段或時刻及其原因,以便使用者可以推翻你的決定。
    • 使用 ${CLAUDE_PLUGIN_ROOT}/references/montage-guide.md("片段:順序")來排列鏡頭順序:最有力的時刻放在開頭,然後是穿越場所或活動的路線,最後以行動呼籲結尾。
  6. 一次訊息中確認範圍。 提出建議,並讓使用者修正:

    • 長度和鏡頭數: 大約 15、30 或 60 秒,以及哪些時刻會填滿它。
    • 音樂: 他們的曲目、客戶的音效、另一種風格、創用 CC 曲目(先傳送讓他們聆聽),或無音樂。
    • 旁白: 他們的旁白、保留原聲的片段,或無旁白。
    • 畫面文字: 鉤子(從 ${CLAUDE_PLUGIN_ROOT}/references/hooks.md 中選出三個選項,每個來自不同的模式)、每個鏡頭的標籤、任何狀態貼紙、行動呼籲,以及列表或產品的價格和規格。每個事實都來自使用者或客戶。如果缺少某項,則詢問,或將其省略。
  7. 撰寫腳本並建立頁面。 編輯起始腳本。格式和每個標籤都記錄在 VIDEO/montage.js 的頂部:

    ---
    title: taco night
    client: casa-lupe
    hook: tuesday is taco night
    cta: book a table · link in bio
    music: assets/taco-night-music.mp3
    pace: 4 beats
    ---
    3. assets/taco-night-03.mp4  Fresh off the grill  [from: 1.2] [to: 4] [sound]
    1. assets/taco-night-01.mp4  Handmade tortillas  [from: 0.5] [to: 3] [focus: 40%,60%]
    2. assets/taco-night-02.mp4  Meet chef Lupe  [from: 6] [to: 10.5] [sound] [say: Every tortilla is pressed by hand, every morning.]
    4. assets/taco-night-04.mp4  The patio  [from: 2] [to: 5] [move: push-in]
    
    • 片段區段: [from:] 和 [to:] 設定區段。然後鏡頭會配合節拍進行調整(向上取整,因此會播放到 [to:] 之後的片刻)。對片段使用 pace:,單位是拍(beats),而非小節(bars):一個小節會將 3 秒的區段在 96 BPM 下向上取整到 5 秒。
    • 片段原聲: [sound] 會同步播放它,音樂在其下被降低音量。該片段上的 [say: ...] 是其中所說的內容,會逐字加上字幕。不會再次配音。
    • 使用者的旁白: voiceover: assets/<slug>-vo.m4a 和 voiceover-text: <他們的逐字稿>。它會從 0.3 秒開始播放(可用 voiceover-at: 更改),音樂在其下被降低音量,字幕在每個鏡頭上低位顯示,鏡頭會延長以覆蓋旁白。不要同時使用 [say: ...] 語音行。
    • 他們的音樂: music: assets/<slug>-music.mp3。它的節拍會用 beats.js 讀取,剪輯點會落在節拍上。music: none 則保留空間,讓使用者在應用程式中加入熱門音效。
    • 運鏡: 片段保留其自身的動作。[move: push-in]、pull-out 或 drift 會在其上加入緩慢的縮放。平移會滑動縮放後的片段,因為影格旁邊沒有東西可以平移。
    • 混合的照片 會像在 montage-video 中一樣移動(平移、推近、3D 運鏡)。

    然後執行 node VIDEO/montage.js state/videos/<date>-<slug>.md。它會在腳本旁邊寫入 <date>-<slug>.html,印出鏡頭表、聲音、旁白和任何注意事項(片段比其鏡頭短、鏡頭被延長以便閱讀其標籤),並執行 render.js --check。修正檢查中列出的問題,通常是縮短標籤,然後重新執行直到沒有錯誤為止。

  8. 初剪。 自行查看 node VIDEO/render.js <頁面> --slides 的每個影格:主體是否在畫面中(沒有被橫向片段的裁切切掉)、標籤可讀、字幕不與標籤重疊、順序能講述故事。然後:

    • 將幻燈片傳送給使用者,以批准順序和文字。
    • 渲染:node VIDEO/render.js <頁面> state/videos/<slug>-v1.mp4 --cover 0。它會寫入 MP4 檔案(1080×1920,30fps)、一張封面圖片,並且在有旁白或有字幕的片段原聲時,產生一個 .srt 字幕檔。--draft 會快速產生一半大小的版本,以便先檢查時間。切勿發佈草稿。
    • 你無法聽到結果。請要求使用者聆聽:音樂、每個保留的片段原聲,以及對照字幕的旁白。
  9. 編輯直到正確為止。 每個請求都變成對腳本的編輯,切勿編輯頁面,因為 montage.js 會重新計算所有時間:

    使用者說腳本中的修改
    "用她笑的那段"該鏡頭的 [from:] / [to:](在 --every 表中找到它)
    "剪掉晃動的部分"較晚的 [from:],或較早的 [to:]
    "廚房那段長一點"較晚的 [to:],或 [hold: 4s]
    "快一點" / "慢一點"較短的區段、pace:(例如 3 beats),或 length:
    "做成 15 秒"length: 15,並刪除最弱的時刻(說明哪些)
    "廚房先放"、"交換 3 和 5"重新排序編號行
    "保留那個的聲音" / "靜音"加入或移除 [sound]
    "為他所說的加入字幕"在該 [sound] 片段上加入 [say: <他的話,一字不差>]
    "加入我的旁白"加入 voiceover: 和 voiceover-text:
    "換首歌" / "不要音樂"將 music: 改為另一個檔案、一種風格,或 none
    "顯示左側"、"讓她保持在畫面中"[focus: 25%,50%]
    "放大它"[move: push-in](搭配指向該位置的 [focus:])
    "更流暢" / "剪輯更有力"transition: fade,或 cut、slide、zoom、wipe、flash
    "修改文字"標籤、hook:、cta:、price:、specs:
    "慢動作"不支援:無速度變化。使用手機慢動作功能拍攝的片段會以原始速度播放
    "換顏色 / 標誌 / 電話號碼"客戶的設定檔,而非腳本

    每一輪:編輯腳本,再次執行 montage.js,然後對時間變更使用 --draft,或對視覺變更使用 --slides。將下一個版本渲染為 <slug>-v2.mp4、-v3.mp4 等。切勿覆蓋較早的版本,以便使用者可以回到他們喜歡的任何版本。

  10. 定稿。 使用者的核准。然後按照 montage-video 的完成流程("Outro" 步驟)操作:要求他們在貼文中標記您的服務、將影片儲存到 assets/(如果有 git,則提交它),並在 state/videos/ 中記下最終的 -vN。

montage.js 參考資料

  • 鉤子: 一種簡短、以動詞開頭的陳述,吸引觀眾,告訴他們影片中會發生什麼,並出現在影片的開頭。
  • 標籤: 每個鏡頭的簡短體文字,使用客戶的風格。
  • 行動呼籲 (CTA): 最後一個鏡頭。如果客戶有「個人檔案連結」或連結頁面,則為該 URL;如果客戶的帳號上傳了橫幅,則為「個人檔案連結」;如果他們有優惠券或折扣,則為「#連結」;如果他們希望觀眾連結到該頁面,則為「預訂」。不要使用他們沒有的 CTA。
  • 剪輯長度: 最佳配速大約是每個鏡頭 2-3 秒。用您提出的長度與使用者確認。

其他注意事項

  • 此技能和 montage-video 都假設使用者是唯一創作者。 當外掛程式的品牌是合作夥伴時,服務名稱會顯示在標籤和描述中,而非顯示在影片上。
  • 建立蒙太奇影片。不要將其命名為「reel」或「shorts」,除非使用者要求(有些人拒絕,因為這些術語屬於特定平台;蒙太奇影片是通用的)。
  • 不要使用 AI 產生的素材或庫存影片。使用使用者提供的素材。
  • 不要將素材儲存在使用者的專案目錄或外掛程式的根目錄中。使用 state/videos/。
  • 影片中的文字應反映客戶的風格(正式 vs. 休閒等)。
  • 切勿輸出容量超過 10 MB 的影片。如果超出,請使用下一個最高的 --quality 設定(例如 60 → 50)重新渲染,直到低於該限制。
  • 切勿自行發佈影片。
  • 不要在一個鏡頭中混入 [move:] 和 [focus:]。[focus:] 不會移動鏡頭。
  • render.js --slides 輸出網頁,而非影片。它很適合審查順序、標籤和文字,但無法顯示移動或節拍。
  • render.js --draft 會進行 540p 渲染。切勿將其傳送給使用者,除非用於粗略的時間檢查。
  • state/videos/ 中的媒體片段會由 montage.js 重命名為 <slug>-<NN>.mp4。始終編輯那個。
  • montage.js 讀取媒體的比特率以保持高品質。不要混用低解析度片段。
  • 連絡表是一張圖片,包含所有片段的第一個影格。

Individual skills in this repo

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

相關技能