Communitygithub.com

LucasLBrito/video-dev

建立關於程式設計與科技的直式解說影片 (9:16,適用於 Shorts/Reels/TikTok),包含動畫圖表、葡萄牙語旁白與背景音樂,全程以 Python 生成,無需任何剪輯軟體。

video-dev 是什麼?

這項技能是一個 AI 代理技能,用於自動化建立關於程式設計與科技主題的直式解說影片 (9:16 比例,適用於 Shorts、Reels、TikTok)。它整合了多個子技能,以 Python 驅動的流程來處理動畫、旁白與音軌合成,無需傳統的影片剪輯軟體。這項技能會引導使用者完成一系列步驟:提問來確定影片類型(概念或終端機教學)、視覺風格、長度與配樂;檢查系統相依性;建立專案資料夾;產生腳本與旁白;渲染動畫;以及混合音軌。最終輸出為一個 1080x1920 的 MP4 檔案,採用 Dracula(暗色系)或奶油色(亮色系)主題,並可選用 Synth、Lofi 等背景配樂。此技能特別注重效率,在渲染前先顯示腳本以進行審查與修正,並提供指令以在完成後進行細部調整,例如更換詞句或調整音樂音量。這項技能支援 Claude Code 等平台,能讓開發者快速將科技概念轉化為具有專業 Lofi 風格的社群媒體影片。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/LucasLBrito/midia-skills/tree/main/skills/video-dev

在你喜歡的 AI 中提問

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

說明文件

開發者影片 (hub)

路徑: ${CLAUDE_PLUGIN_ROOT} 是此外掛的根目錄。若未設定此變數,則根目錄為此技能「Base directory」向上兩層 (<raiz>/skills/<skill>)。若技能檔案是直接複製到 ~/.claude/skills,請使用 ~/.claude/skills 取代 ${CLAUDE_PLUGIN_ROOT}/skills。

此技能記錄了製作 「什麼是 SSH」 與 「Git 與 GitHub 最佳實務」 影片時所學到的經驗。 結果是直式 1080x1920、30 fps 的 MP4 檔,使用 Python (Pillow) 逐幀繪製動畫、免費的神經網路語音 (edge-tts) 以及由程式碼產生的音樂 (numpy)。不需要 After Effects、CapCut 或任何付費軟體。

請使用簡單明瞭的巴西葡萄牙語回覆,先給出結果。

技能地圖

技能使用時機
video-dev (本技能)永遠先使用:提問、準備工作、建立資料夾、最終渲染、交付
video-conceito解釋 某個東西如何運作 (SSH、DNS、HTTPS、Docker、JWT...):圖表、資料包傳輸示意
video-tutorial-terminal教學 要跟著輸入的指令 (Git、Docker CLI、npm、Linux...):含鍵入動作的終端機畫面
narracao-voz撰寫/調整口播腳本、語音、英文術語發音、單字時間點
trilha-video背景音樂及與語音混音 (Ducking)

一旦知道影片類型,請立即閱讀該類型的技能說明。旁白與配樂的部分可以在進行到該步驟時再閱讀。

路徑

SK = ${CLAUDE_PLUGIN_ROOT}/skills   (外掛根目錄;請參閱下方的「路徑」說明)
SK/video-dev/scripts/            motor.py, render.py, novo.py, checar.py
SK/video-dev/exemplos/ssh/       SSH 影片的完整專案 (概念型)
SK/video-dev/exemplos/git/       Git 影片的完整專案 (教學型)
SK/narracao-voz/scripts/         narracao.py, pronuncia_base.json
SK/trilha-video/scripts/         trilhas.py, mixar.py
SK/video-dev/references/         elementos.md (API 與版面配置), licoes.md (曾犯過的錯誤)

步驟 1 — 提問 (在建立任何檔案之前)

使用 AskUserQuestion 工具提問,一次最多 4 個問題,將推薦選項放在第一個。跳過使用者已在要求中回答的部分。如果使用者說「你決定」,請使用預設值 (以粗體表示)。

第一輪 (一定執行):

  1. 影片類型:概念型 (解釋運作原理,含圖表) · 終端機教學 (逐步指令) · 混合型 (先解釋概念再示範指令:使用概念型技能,並從教學型技能借用 Term)。
  2. 視覺:Dracula (暗色系,霓虹色,與最終影片相同) · 奶油色 (紙張底色,白色區塊,類似紙本風格)。
  3. 長度:短版,60 秒內 (5–6 個場景,適合 Shorts) · 中版,1:30–2 分鐘 (8–10 個場景) · 完整版,約 3 分鐘 (12–14 個場景,類似 SSH 與 Git 影片)。
  4. 配樂:synth (極簡科技風,影片中使用的那種) · lofi · ambient · piano · 無配樂。

第二輪 (僅在仍有不清楚之處時):

  • 目標觀眾:初學者 (解釋所有術語) 或已有程式經驗者 (直接切入重點)。
  • 語音:pt-BR-AntonioNeural (男聲,已使用) 或 pt-BR-FranciscaNeural (女聲)。執行 narracao.py --vozes 查看其他選項。
  • 必備重點:不能缺少什麼?有沒有特定的例子、指令或故事?
  • 結尾:總結/核對清單 (預設)、「儲存這支影片」的呼籲,或引導留言的提問。

在繼續之前,用 2 到 3 行確認:主題、類型、視覺風格、長度、場景數量與配樂。

步驟 2 — 準備電腦 (每台機器執行一次)

python SK/video-dev/scripts/checar.py

若缺少項目:python SK/video-dev/scripts/checar.py --instalar (這會透過 pip 安裝 edge-tts, pillow, imageio-ffmpeg 與 numpy;ffmpeg 會包含在 imageio-ffmpeg 套件中,無需在系統層級安裝任何東西)。Bahnschrift 與 Consolas 字型已內建於 Windows 中。

提醒使用者一次:語音功能需要網際網路連線。腳本文字會傳送至 Microsoft 的語音服務。動畫與音樂則完全在本地端電腦上執行。

請注意 Windows 上的長路徑問題:Python 在路徑過深 (例如 Claude 的暫存資料夾) 時會因「File name too long」錯誤而失敗。請在一個路徑較短的資料夾中進行作業。

步驟 3 — 建立影片資料夾

請選擇不在同步資料夾內的路徑 (如 OneDrive, Dropbox, iCloud):因為渲染過程會寫入數千個影格,同步會讓一切變得非常緩慢。建議:~/Projetos/videos/<簡短名稱>/。詢問使用者是否有其他偏好。

python SK/video-dev/scripts/novo.py <資料夾> --tipo conceito --titulo "O que é Docker" --tema dracula --cenas 12

結構 (1 句腳本台詞 = 1 個場景):

<資料夾>/
  video.json     標題、檔名、主題、語音、語速、配樂
  roteiro.json   ["場景 1 的台詞", "場景 2 的台詞", ...]
  pronuncia.json 選用:專案中特定術語 -> 語音的拼寫方式
  cenas.py       def cenas(): return [[場景 1 的元素], ...]
  audio/         cena01.mp3 + cena01.json (每個單字的時間)
  saida/         <名稱>.mp4, <名稱>_trilha.mp4, poster.jpg, preview/

步驟 4 — 腳本 → 展示給使用者 → 核准

根據對應類型的技能 (概念或教學) 以及 narracao-voz 技能的語音規則來撰寫腳本。在製作動畫前先展示腳本:修改文字的成本遠低於修改場景。只有在獲得同意後才繼續進行。

步驟 5 — 旁白

python SK/narracao-voz/scripts/narracao.py <資料夾>
python SK/narracao-voz/scripts/narracao.py <資料夾> --tempos 3     # 場景 3 中每個單字說出的時間點

旁白必須在場景之前產生,因為每個場景的長度取決於台詞長度加上 0.7 秒,且元素應在對應單字說出的那一秒出現。

步驟 6 — 場景 (動畫)

使用 from motor import * (完整 API 請參閱 references/elementos.md) 撰寫 cenas.py。 針對每個場景:執行 --tempos N,選擇要在每個關鍵字出現時顯示的內容,並在元素的 t 中使用該時間點 (或提前 0.2 秒)。

請透過檢視影格來確認,而不只是閱讀程式碼:

python SK/video-dev/scripts/render.py <資料夾> --preview      # 每個場景的最後一個影格
python SK/video-dev/scripts/render.py <資料夾> --cena 4       # 場景 4,每秒鐘一個影格

使用 Read 工具開啟 PNG 檔案並檢查:邊緣無裁切、無重疊、文字夠大可於手機上閱讀、底部 250 像素內無重要內容 (此處為 TikTok/Reels 的字幕與按鈕區域)。

步驟 7 — 最終渲染 + 配樂

python SK/video-dev/scripts/render.py <資料夾>                         # saida/<名稱>.mp4 + poster.jpg
python SK/trilha-video/scripts/mixar.py <資料夾>/saida/<名稱>.mp4 synth  # saida/<名稱>_trilha.mp4

一個 3 分鐘的影片需要幾分鐘來渲染:請在背景執行。

步驟 8 — 檢查與交付

  • 使用 ffmpeg 檢查長度與音軌 (ffmpeg -i 檔案.mp4 會顯示串流資訊)。
  • 從最終的 MP4 檔案中,在不同時間點擷取 3 到 4 個影格並進行檢查。
  • 使用 SendUserFile (display: "render") 交付,並告知使用者資料夾位置。
  • 如果使用者希望有一個頁面來觀看或分享 (類似 SSH 與 Git 影片的頁面),請將其發布為 Artifact,並在 files 中包含 MP4 與腳本。只有在使用者要求時才設為公開。
  • 未經使用者許可,不會上傳至 YouTube/TikTok/GitHub。

完成後的常見修改

需求做法
更換一句台詞編輯 roteiro.json → narracao.py --so N → 調整場景 N 的時間點 → 重新渲染
發音錯誤在專案中編輯 pronuncia.json → narracao.py --so N (詳見 narracao-voz)
更換視覺主題在渲染時使用 --tema creme,或修改 video.json 中的 tema
音樂太大/太小mixar.py ... --trilha 0.25 (詳見 trilha-video)
從長影片製作短版建立新專案,僅複製關鍵場景與精簡腳本

在開始之前,請先閱讀 references/licoes.md:這是前兩支影片的錯誤與成功經驗總結。

Individual skills in this repo

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

相關技能