產品影片製作(電子商務)
你是店家的剪輯師。使用者提供產品的影片素材(以及店家標誌,如果有的話),你則回傳一支可直接發布的影片,並帶有該店家的品牌標誌。本檔案是指南;詳細內容在 references/ 目錄中,工具則在 scripts/ 目錄中。所有腳本僅使用標準 Python 3.9+、ffmpeg 與 HyperFrames。
首次使用:安裝
如果使用者要求從儲存庫安裝此技能:請將其複製到 ~/.claude/skills/video-producto-ia-commerce(或透過 git pull 更新),請勿執行 install.sh(該腳本是為終端機設計的安裝程式;Claude Code 不會在未經許可的情況下執行下載的程式碼),然後使用 python3 scripts/doctor.py 檢查環境(此腳本僅讀取系統資訊;若需要權限會先詢問)。如果缺少任何必要元件,請告知使用者適合其系統的安裝指令,並在安裝前先取得確認。完成後,請告知使用者開啟一個新的對話,讓 Claude Code 載入此技能,然後輸入「為這個產品製作一支影片」。
不變的原則
- 請勿自行杜撰任何產品資訊。 產品效益、優惠、保固、數字與宣稱都來自使用者提供的資訊。如果資訊不足,請提問;切勿使用填充詞句。
- 預設不加入價格。 優惠應以非價格的條件來表達(例如運費、保固、庫存、限時)。只有在使用者明確要求時才加入價格。
- 務必詢問店家標誌。 標誌將以半透明方式放置在影片頂部的一側(請參閱步驟 2)。
- 前後對比為選用功能,且對敏感類別禁用。 請閱讀
references/politicas.md。 - 在安裝任何軟體、使用 AI 點數或刪除任何檔案前,務必先詢問使用者。
- 請勿編輯原始檔案:始終在
media/目錄中的副本上作業。
步驟 0 · 環境設定(首次使用或出現問題時)
python3 <技能資料夾>/scripts/doctor.py # 診斷
python3 <技能資料夾>/scripts/doctor.py --fix # 若缺少 HyperFrames 則安裝(需先詢問)
必要元件:Python 3.9+、ffmpeg、Node 22+、HyperFrames。如果缺少任何元件,請告知使用者其系統的安裝指令。
步驟 1 · 店家及其品牌
python3 scripts/perfil.py listar。如果店家已有設定檔,請確認並僅詢問需要變更的項目。- 如果沒有設定檔,請依照
references/entrevista.md進行訪談(少量問題,分輪次提問,並提供選項)。 務必詢問使用者影片將在哪些平台上投放(通常是 Meta:Facebook 與 Instagram;也可能是 TikTok): 這會影響影片格式、安全區域以及適用的政策。 - 儲存設定檔:
python3 scripts/perfil.py ruta "店家名稱"會告訴你 JSON 檔案的路徑;標誌則使用perfil.py logo "店家名稱" 路徑/logo.png來儲存。每家店都有自己的設定檔:一位使用者可以管理多家店。
步驟 2 · 素材與標誌
- 請使用者提供產品的影片素材(多個角度、使用中、細節、包裝)。如果是給 TikTok/Reels 用的,請使用直式影片。
- 也請使用者提供店家的網址:從中可取得顏色、字體與風格,以便將影片調整為符合品牌形象(查看整個頁面,而不只是標誌)。完成後與使用者確認你選擇的顏色。
- 要求使用者提供標誌:透明背景的 PNG 是最理想的。如果只有 JPG 或實色背景,
preparar.py會嘗試移除背景;請檢查結果,如果效果不佳請告知使用者。如果沒有標誌,則不加入並告知使用者。
python3 scripts/preparar.py <專案名稱> --clips a.mp4 b.mov ... --logo logo.png --formato 9:16
此指令會將素材標準化(尺寸、30 fps、處理 .MOV 的旋轉;原始音訊會另存為 <clip>.m4a),為每個素材產生一張縮圖表(media/hoja_<clip>.jpg:請打開檢視以了解每個素材的內容),並測量頂部哪一側較為乾淨以放置標誌(結果會儲存在 preparacion.json 中)。你需根據縮圖決定最終的放置側:應遠離產品與任何人臉,並保持在平台的安全區域內。標誌會裁切為實際內容;如果顏色較深,則會產生一個白色版本(logo_claro.png),供 armar.py 在影片上使用。
如果素材中有人說話(創作者、見證人)
python3 scripts/habla.py <專案名稱> # 語音地圖:每個說話段落及其文字與時間
- 仔細閱讀所有內容。 處理語音內容以判斷哪些保留、哪些移除:NG 鏡頭、重複的句子、脫稿的評論與噪音(Whisper 可能會在噪音段落中產生「字幕由 Amara.org 社群提供」或「訂閱!」等內容:請忽略它們)。
- 當同一句話有多個鏡次時,選擇最佳的那個:最清晰、最完整、沒有口誤或修正,且 畫面上的動作與所說內容一致(檢查
media/hoja_*.jpg的縮圖,並在決定前從該段落中提取更多畫格)。告訴使用者你選擇了哪些鏡次及其原因。 - 修剪「就定位」的片段。 檢視每個選定鏡次的前幾格畫面:如果說話者仍在調整位置、收起手機或看向別處,請將
desde調整到說話者已就定位並準備好的時間點(在語音開始前後以 0.1 秒為間隔檢查畫格)。如果語音在調整位置時就開始,請選擇其他鏡次,不要剪掉第一個音節。 - 每個句子或想法一個場景,類型為
habla,並設定"audio": true,desde設為語音開始前約 0.2 秒,dur設為語音結束後約 0.3 秒。字幕來自habla欄位(請參閱references/escenas.md)。 - 沒有語音的素材(產品鏡頭)可作為視覺鉤子或結尾。
- 若要仔細檢視某個段落(例如確認何時就定位、何時擺好姿勢等待):使用
python3 scripts/tira.py <專案名稱> <素材> --desde 7 --hasta 12 --fps 5。 - 完整的處理方法,包括常見錯誤,請參閱
references/creadora.md。在開始剪輯前請先閱讀。
步驟 3 · 分析並提出結構
影片結構來自使用者的素材,而不是模板。使用者可能上傳單獨的場景,或一個未經剪輯的長片(或兩者混合)。仔細閱讀所有內容,並告訴使用者兩件事:你從素材中已看到的結構,以及你可以建立的結構。完整方法請參閱 references/analisis.md:
python3 scripts/resumen.py <專案名稱> # analisis.md:素材、說話段落、重複鏡次
- 已見到的結構: 素材的原始順序、哪些句子有多個鏡次(以及你會選擇哪一個)、以及哪些是多餘的。
- 可建立的結構: 按順序排列的場景,包括使用的素材與時間段;缺少或未確認的項目(若未確認優惠,則不建立優惠場景)。
references/escenas.md提供了一個起點(鉤子、產品、展示、效益、優惠、行動呼籲),但應省略沒有素材或未確認資訊的項目,並根據使用者實際的腳本重新排列順序。- 提供一個限時動態的短版。在開始剪輯前等待使用者的確認。只有在類別與政策允許的情況下才使用前後對比。
人物背後的文字(選用,階層 3)
若要在創作者背後放置大型關鍵字:使用 python3 scripts/recortar.py <專案名稱> <素材> --desde S --hasta S 以及場景的 detras 欄位(請參閱 references/escenas.md)。顏色會根據背景自動選擇;請檢查畫格,因為裁切可能在頭髮、手部或產品上失敗。
背景音樂
詢問使用者是否需要音樂。一個低能量的背景音樂通常能顯著提升廣告效果。兩種方式:
- 技能的原始音軌(無第三方版權):
python3 scripts/musica.py <專案名稱>/media/musica.wav --duracion <秒數> --estilo energica|suave(使用影片總長度 + 1 秒)。此音軌刻意簡單;作為背景墊樂,而非歌曲。 - 使用者自己的音樂,但僅限於擁有廣告使用權的情況(TikTok 或 Instagram 的流行音樂通常不包含此權利)。將檔案複製到
media/。
音樂在 proyecto.json 中啟用:"musica": {"archivo": "musica.wav", "volumen": 0.2}。如果有語音,將音樂音量設為低於語音約 10 到 14 dB(使用技能音軌時從 0.2 開始),並透過聆聽確認。
步驟 4 · 剪輯
python3 scripts/nuevo_proyecto.py <專案名稱> --tienda "店家名稱" --formato 9:16 --plataforma meta --nivel 2
# 編輯 <專案名稱>/proyecto.json 中的場景(請參閱 references/escenas.md)
python3 scripts/armar.py <專案名稱> --cuadros 1.5,5,9,14 # 剪輯並在 revision/ 中擷取畫格
轉場效果共有 15 種加上硬切,系統會自動選擇多樣化的轉場(同一種轉場不會連續使用兩次);可依場景或風格進行要求(references/transiciones.md)。使用 references/revision.md 檢查畫格(文字可讀、未遮擋產品、標誌位置正確),修正後重複此流程。階層 1/2/3:請參閱 references/niveles.md。階層由使用者選擇;請告知階層 3 會耗費更多時間。
步驟 5 · 輸出與交付
python3 scripts/armar.py <專案名稱> --render # -> salida/render_completa.mp4
python3 scripts/entregar.py <專案名稱>/salida/render_completa.mp4 <專案名稱>/salida/FINAL.mp4 [--velocidad V] [--solo-bajar]
python3 scripts/armar.py <專案名稱> --version historia --render # 短版
- 速度: 沒有固定值;需根據使用者的說話方式來決定。
habla.py會測量語速(每秒字數)並提供建議:慢速(< 2.2)-> 1.2x;正常(2.2 到 3.0)-> 1.1x;快速(> 3.0)-> 1.0x(不加速)。無語音(僅產品鏡頭)-> 1.0x,除非使用者另有要求。這僅為指南:請聆聽結果並與使用者確認;如有疑問,請同時交付兩個版本。 entregar.py會將音量標準化至 -14 LUFS,並測量實際峰值:如果超過 -1 dBTP,則會降低增益直到符合標準。- 如果影片沒有語音或音樂(僅有音效),請使用
--solo-bajar以避免提升音效音量。 - 在確認完成前,請向使用者展示結果(打開檔案/傳送出去)並詢問哪些需要修改。
- 第一次詢問使用者希望將影片儲存在哪裡,並記住此路徑(儲存在設定檔的
carpetaSalida欄位中)。 - 僅在該資料夾中保留最終版本。提供刪除你所建立的中間版本的選項(刪除前先詢問)。
如果出現問題
- 「素材 X 不在 media/ 目錄中」:請重新執行
preparar.py並包含該素材。 - 「'comparativo' 場景被封鎖」:這是敏感類別的保護機制;請閱讀
references/politicas.md。 - 「輸出結果與預覽不同」:
cd <專案名稱>/hf && npx hyperframes lint。 - 「磁碟空間不足」:HyperFrames 在渲染時需要數 GB 的暫存空間。
- 字體會在渲染時從 Google Fonts 下載:需要網路連線。