Communitygithub.com

editar-criativo

批量製作影片廣告素材(9:16 直式廣告,適用於 Meta/TikTok)。自動建立 offer 目錄、撰寫腳本(鉤子 + 主體)、生成配音(免費神經語音、ElevenLabs 或自備音訊)、依據語速剪輯 B-roll、應用鉤子條、逐字字幕(紫色框或黃色字)、音效與背景音樂,最終匯出至 01_prontos 目錄。

editar-criativo 是什麼?

Editar-criativo 是一個專業的 AI 技能,專為數位廣告創作者設計,能批量產出高轉換率的影片廣告素材。它支援三種模式:全新創作(從頭產生不同角度的腳本)、模擬現有成功廣告(分析結構後複製其框架)、以及鉤子變體(保留原始影片僅替換開頭鉤子)。技能會自動建立標準化的 offer 目錄結構,管理所有素材(B-roll、配音、腳本等),並透過 FFmpeg 進行最終渲染。使用者可選擇免費的 Edge 神經語音、ElevenLabs 或自備音訊,以及紫色框或黃色字逐字字幕風格。該技能適用於 Python 3.10+ 環境,需安裝 ffmpeg/ffprobe,並支援 Windows 系統。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/matheuserick038-crypto/editar-criativo/tree/HEAD

在你喜歡的 AI 中提問

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

說明文件

Editar criativo

工具箱位於 kit/(與此檔案同一層)。所有腳本均使用 Python 3.10+ 並依賴 ffmpeg/ffprobe。 在 Windows 上請使用 python(而非 python3)。如果 ffmpeg 不在工作階段的 PATH 中,腳本會自動從使用者 PATH 中尋找。

KIT = <此 SKILL.md 所在目錄>/kit

1. Offer 與目錄

確定 offer 名稱(若使用者未提供則詢問)。預設根目錄:~/Documents/Ofertas(Windows 上為 %USERPROFILE%\Documents\Ofertas)。

python "$KIT/criar_oferta.py" "聖誕蠟燭"

建立(或補全,不刪除任何內容)以下結構:

目錄內容
_work暫存檔(完成後清除)
01_prontos最終成品 .mp4 + lote_XX_resumo.csv
02_brutosB-roll 與參考影片
03_apresentadoraUGC / 主持人錄影
04_imagens產品照片、頁面截圖
05_audios配音(<id>.mp3 + <id>.palavras.json)
06_efeitos工具箱中的 9 種音效 + 可選的 musica*.mp3(背景音樂)
07_roteiros腳本批次 .json
08_validados已證明能賣的廣告素材(作為模擬/變體的基礎)

讀取 oferta.json。如果 produto/publico/promessa 為空,請詢問使用者(或如果使用者提供連結則讀取銷售頁面)並填入——腳本依賴這些資訊。

2. 四個問題(透過一次 AskUserQuestion 完成)

  1. 模式——「我們要做什麼?」
    • 全新廣告素材——測試新角度和新腳本
    • 模擬廣告素材——從零開始,依據已銷售/擴展的廣告素材結構製作影片 (來自使用者自身或市場)
    • 已驗證素材的變體——重用使用者已驗證的影片,僅更換鉤子

注意——「改善這個已驗證素材並創造變體」: 當使用者提供一個已銷售的影片並要求變體/更好的版本時,預設為模擬模式(全新影片,新的腳本和影像,僅將驗證素材作為結構參考)。僅在使用者明確要求保留原始影片時,才使用「已驗證素材的變體」(重用所傳送影片的影像和音訊)。

  1. 數量——「要多少個變體?」 5 / 10 / 20 / 50

  2. 字幕——「要哪種字幕風格?」

    • 兩者交替(推薦)——在變體之間交替使用紫色框和黃色字
    • 紫色框——正在說的詞彙顯示在紫色框內
    • 黃色字——正在說的詞彙以黃色顯示,無背景
  3. 配音——「我們要如何為新的鉤子和主體進行配音?」

    • 使用免費語音生成(推薦)——葡萄牙語神經語音,無需費用
    • 使用 ElevenLabs 生成——使用使用者帳號及消耗額度
    • 我已有配音——我將音訊放入 05_audios

如果使用者已在請求中回答了某些問題,則不要再次詢問。

ElevenLabs: API 金鑰位於 ~/.config/editar-criativo/.env(ELEVENLABS_API_KEY= 和可選的 ELEVENLABS_VOICE_ID=)。如果缺少,請提議在記事本中開啟檔案讓使用者貼上。切勿顯示金鑰或將其放入 Shell 命令中。

3. 視覺素材

列出 02_brutos、03_apresentadora 和 04_imagens。素材來源,按優先順序排列:

  1. 使用者自身的素材(產品照片/影片、頁面錄影):永遠是最好的選擇。
  2. 免費素材庫(Pexels + Pixabay)——輔助 B-roll,允許商業用途:
    python "$KIT/buscar_midias.py" "<offer_目錄>" "candle making" --qtd 6
    python "$KIT/buscar_midias.py" "<offer_目錄>" "christmas candle" --tipo foto --qtd 4
    
    • 使用英文關鍵字進行 3–5 次搜尋,覆蓋配音中展示的內容(過程、原料、結果、使用場景、情感)。加上 --listar 可在下載前預覽。
    • 優先使用本地庫: 所有下載都儲存在 ~/Documents/Ofertas/_biblioteca(videos/、fotos/、包含庫標籤和已搜尋關鍵字的 indice.json)。每次搜尋都會先查詢本地庫,僅下載缺少的內容——節省 API 請求。檔案透過硬連結(hardlink)加入 offer(不佔用重複空間)。--sem-api 僅使用本地庫;--forcar-api 忽略本地庫。 因此請在各個 offer 之間使用一致的英文關鍵字("stretching"、"back pain"、"yoga mat"……)。
    • 預設:偏好直向影片,以橫向影片補足(工具箱會進行裁剪),影片長度不超過 40 秒,每種 --qtd 項目為新內容。影片放入 02_brutos/,照片放入 04_imagens/,歸屬資訊放入 02_brutos/creditos.csv(origem 欄位:本地庫或素材庫)。
    • 下載後,為每個廣告素材選擇合適的媒體(midias/midias_baixo),而不是隨機分配——與語音匹配的 B-roll 轉換率更高。
    • 不要使用素材庫圖像模擬證詞:可識別的人不應看起來像在推薦產品。
    • 免費 API 金鑰位於 ~/.config/editar-criativo/.env(PEXELS_API_KEY、PIXABAY_API_KEY)。如果缺少,腳本會發出警告;提議在記事本中開啟檔案讓使用者貼上。僅使用一個金鑰也可運作。 (截至 2026 年 11 月,Pexels 暫停發放新金鑰;使用者只能使用 Pixabay 直到重新開放。)
  3. 社群媒體參考資料(用於模擬/變體),附上使用者批准的連結: python "$KIT/baixar.py" "<offer_目錄>" <url1> <url2> ... --pasta 08_validados。 僅使用使用者有權使用的素材。

Web 應用程式/頁面的螢幕錄影:使用者自行錄製(Win+Alt+R)並儲存在 02_brutos。

4. 依模式編寫腳本

使用巴西葡萄牙語(如果 offer 是葡萄牙語則使用葡萄牙葡萄牙語),UGC 口吻,短句。

  • 鉤子(hook):1 句,6–14 個詞彙,口語長度 ≤ 3 秒。打破常規、引發好奇、痛苦或結果。
  • 螢幕鉤子(gancho_tela):紅色橫幅文字,≤ 7 個詞彙,補充(不重複)鉤子。
  • 主體(body):15–35 秒口語(約 40–90 個詞彙):問題 → 機制/示範 → 證明 → 行動呼籲。
  • 螢幕行動呼籲(cta_tela)(可選):最後 3 秒的綠色橫幅簡短文字("連結在描述中")。
  • 在批次中變化角度:痛苦、好奇、前後對比、社會證明、異議、示範、價格/定錨、季節性緊迫感、「常見錯誤」、清單。不要重複相同的開場。
  • 遵守廣告政策:不得承諾治癒、保證收入,或「你是[個人屬性]」。

全新廣告素材: N 個不同角度的腳本。

模擬廣告素材: 參考廣告素材位於 08_validados(或透過連結下載)。轉錄: python "$KIT/transcrever.py" "<檔案>"——如果視覺部分很重要,請使用 watch 技能觀看。 分析其結構(鉤子類型、每個區塊的時長、行動呼籲),然後針對此 offer 編寫 N 個結構相同的腳本。不要複製文字。參考影片的任何畫面或音訊都不會進入新影片。

模擬檢查清單(記錄在批次中的 estrutura_modelada):

  1. 口語時長和區塊——例如:鉤子 0–3.5 秒 → 介紹產品 → 優點 → 含價格的行動呼籲。
  2. 視覺格式——全螢幕或分割畫面;一直顯示的內容(示範、主持人、螢幕)。
  3. 有助銷售的固定元素——使用工具箱複製:
    • 固定在頂部的名稱+價格橫幅 → faixa_fixa(在鉤子之後加入,避免在第 1 秒看起來像廣告);
    • 運動/步驟上的計數器("12 reps"、"8 x lado")→ rotulos;
    • 字幕風格和語音性別 → 與驗證素材相同的 legenda 和 voz。
  4. 價格和優惠 與驗證素材完全相同(這是它賣得好的原因),除非另有要求。
  5. 如果驗證素材點擊率低但銷售良好: 主體有效,開場未能吸引人。保留主體結構,專注於鉤子:緊張感、測試("試著讓手碰到地板……")、數字/計數("117 個練習,不到 R$ 10")、打破信念。鉤子橫幅從 0 秒開始,鉤子專用圖像放在 midias_gancho(硬幣、骨骼、健身房),每隔約 1.8 秒剪輯,當 B-roll 為全螢幕橫向時使用 encaixe: "desfoque"。

已驗證素材的變體(僅在使用者想保留原始影片時):轉錄已銷售的廣告素材,找到原始鉤子結束的位置(第 1 句的結尾,通常 2–5 秒),編寫 N 個新鉤子。每個廣告素材僅包含 hook(無 body)和 "base": {"video": "08_validados/arquivo.mp4", "a_partir_de": <秒數>}——工具箱會組合新配音的鉤子 + 原始主體音訊。

  • 在 a_partir_de 處剪輯,即鉤子後第一個詞之前(跳過靜音——例如:鉤子結束於 3.56 秒,下一個詞在 4.16 秒 → 4.05)。使用 transcrever.py 取得每個詞的時間戳。
  • 使用與原始配音相同性別的語音(更換語音時拼接會顯得奇怪),以及與驗證素材相同的字幕風格(如果有的話)。工具箱會自動將新鉤子的音量調整為與驗證素材相同(LUFS)。
  • 點擊率低但銷售良好 = 主體有銷售力,開場未能吸引人:僅更換前 3–6 秒(鉤子帶緊張感/測試/數字,從 0 秒開始的鉤子橫幅,每隔約 1.3 秒剪輯,"ritmo": 1.3)。

5. 腳本批次

儲存在 <offer>/07_roteiros/lote_NN.json(下一個可用序號):

{
  "modo": "novos",
  "legenda": "variar",
  "narracao": {"motor": "edge", "voz": "pt-BR-AntonioNeural", "velocidade": "+8%"},
  "criativos": [
    {
      "id": "c01",
      "angulo": "curiosidade",
      "layout": "dividida",
      "hook": "沒有人相信這根蠟燭是在家裡製作的。",
      "gancho_tela": "沒有人相信是在家裡做的",
      "body": "我從一個普通鍋子和一個玻璃罐開始……",
      "cta_tela": "連結在個人簡介",
      "midias": ["02_brutos/x.mp4", "04_imagens/y.jpg"],
      "midias_baixo": ["02_brutos/z.mp4"]
    }
  ]
}

欄位:

  • legenda:variar | caixa_roxa | palavra_amarela(每個廣告素材也可接受 legenda)。
  • narracao.motor:edge(免費)| eleven | existente(讀取 05_audios/<id>.mp3 並轉錄)。 Edge 語音:pt-BR-AntonioNeural、pt-BR-FranciscaNeural、pt-BR-ThalitaMultilingualNeural、 pt-PT-DuarteNeural、pt-PT-RaquelNeural。在廣告素材之間交替使用男性/女性語音,可在廣告素材內使用 "voz"。
  • layout:dividida(帶紅線的分割畫面,預設)| cheia。
  • midias / midias_baixo:可選。如果未指定,工具箱會從 02_brutos、04_imagens、03_apresentadora 隨機選取(一半在上方,一半在下方)。當有與語音匹配的媒體時,請手動選擇。
  • ritmo:每次剪輯的秒數(預設 2.2)。sfx:false 關閉音效。musica:false 關閉背景音樂。
  • gancho_duracao:強制鉤子橫幅在螢幕上顯示的時間(預設:直到鉤子口語結束)。
  • midias_gancho(全螢幕):僅在鉤子期間使用的媒體;主體僅使用 midias。避免鉤子的衝擊圖像(硬幣、骨骼)在影片中間再次出現。工具箱總是在鉤子結束時剪輯。
  • faixa_fixa:{"texto": "117 個 活動度與穩定性練習 僅需 R$ 9,90", "cor": "#F97316", "cor_texto": "#111111", "desde": "fim_hook", "y": 0.07, "tamanho": 66, "caixa_alta": false}——從鉤子結束到結束(或直到 fechamento)顯示的橫幅。\n 換行;僅 texto 為必填。
  • rotulos:["12 reps", "8 x lado", "30 seg"]——在鉤子之後的每個剪輯上顯示的小標籤,循環顯示。
  • encaixe:corte(預設,裁剪中心)| desfoque——在全螢幕模式下,橫向影片顯示在一個寬條上,背景為自身模糊版本,不會失去運動感(適用於示範練習)。

ID:全新廣告素材使用 c01…cNN,模擬使用 m01…,變體使用 v01…——在整個 offer 中唯一,因為 05_audios/<id> 和 01_prontos/<id>.mp4 使用 ID。在新批次中繼續編號。

向使用者顯示一個簡短表格(ID、角度、鉤子),然後進行渲染,除非使用者要求事先審查。

6. 渲染

python "$KIT/montar.py" "<offer>/07_roteiros/lote_NN.json"

網路: 免費語音(edge)和 ElevenLabs 需要網際網路。如果 Shell 在沙箱中且配音因 getaddrinfo failed / ClientConnectorDNSError 失敗,請在沙箱外執行命令。免費語音會間歇性失敗;工具箱會重試 5 次,然後才放棄該廣告素材(其餘廣告素材會繼續)。

為尚未配音的內容配音,並將所有內容組裝成 01_prontos/<id>.mp4(1080x1920、30 fps、H.264 + AAC),以及 01_prontos/lote_NN_resumo.csv。大批次需要一段時間(每個廣告素材約 20–60 秒):請在背景執行。--ids c03,c07 僅重新製作部分;narrar.py --refazer --ids c03 重新生成語音。

7. 檢查與交付

從 2–3 個廣告素材中提取 1 幀並使用 Read 檢視: ffmpeg -ss 1.5 -i "01_prontos/c01.mp4" -frames:v 1 "_work/check_c01.jpg" 檢查:鉤子橫幅清晰可讀、字幕同步且在畫面內、剪輯無黑畫面。 交付:01_prontos 目錄、數量,以及用於在管理工具中命名廣告的 CSV 檔案。

相關技能