Communitygithub.com

netfire222/vfx

Reel VFX 特效包 — /vfx strike, echo, spotlight, freeze-mark, pinned-comment。為談話頭影片添加說話者後方的動態標題、單字敲擊與替換、霓虹聚光燈、凍結畫面與臉部圓圈,以及留言卡片(支援希伯來文與英文)。可選的 /vfx showcase 將結果包裝在 Claude-app 風格的 UI 中,包含打字命令、音效與行動呼籲。

vfx 是什麼?

此技能提供一套專為直式談話頭(talking-head)短片設計的 VFX 特效工具組,能自動偵測人物並在說話者頭部上方繪製大型標題,支援希伯來文(RTL)。核心效果包括:單字打擊(`strike`)——大字出現後被紅線劃掉並替換為新詞;回聲(`echo`)——標題彈出時伴隨輪廓複製爆炸;聚光燈(`spotlight`)——背景變暗、暖光照人並加上閃爍霓虹標題;凍結標記(`freeze-mark`)——畫面凍結閃白、推近並在臉部畫上紅色圓圈(可加標籤);以及置頂留言卡(`pinned-comment`)。另有 `plan` 模式可在一次渲染中組合多種效果,`showcase` 模式則將成品包裝成 Claude-app 風格的 UI,包含逐字打出命令、音效與結尾行動呼籲按鈕。 為何有用:它讓內容創作者無需離開終端或手動合成,就能為影片加入專業等級的文字特效與動畫,尤其擅長處理希伯來文/阿拉伯文等 RTL 語言。支援平台:可與 Claude Code、Codex 或 Cursor 等 CLI 代理工具搭配使用。運作方式:先透過 `ffprobe` 分析影片,用 `vfx.py words` 取得語音時間點,再以各命令渲染特效,最後可用 `compose.py` 加入 UI 框架。所有腳本皆透過完整的 Python 依賴(OpenCV、pillow、numpy 等)以及 FFmpeg 與 Node.js 工具鏈運作。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/netfire222/vfx-skill/tree/HEAD/vfx

在你喜歡的 AI 中提問

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

說明文件

/vfx - 談話頭短片的 VFX 特效包

大型標題會繪製在說話者後方(人物分割),並自動置於頭部上方。完整支援希伯來文 / RTL 由右至左排版。

命令作用
/vfx strike頭部上方出現大字 → 紅線劃掉 → 替換為新詞
/vfx echo大型標題彈出,伴隨輪廓複製向外爆發
/vfx spotlight背景變暗,暖光照在說話者身上,並有閃爍霓虹標題
/vfx freeze-mark凍結畫面 + 閃白 + 推近 + 手繪紅色圓圈圈住臉部(可加標籤)
/vfx pinned-comment頂端彈出「回覆留言」卡片
/vfx plan一次渲染多種效果
/vfx showcase將已渲染片段包裝成 Claude-app 風格的 UI:打字命令、「Edited with /vfx X」標題、打字 + 效果音效、結尾行動呼籲按鈕

輸入

  • 影片(直式 9:16 談話頭效果最佳),以及每個效果所需的確切文字和時間點。 切勿憑空捏造使用者未提供的文字;若缺少資訊,僅詢問一次。時間點可來自觸發詞(請參閱 words)。
  • 輸出檔案儲存在來源影片旁,檔名為 <名稱>_vfx.mp4。

一次性設定

  • 腳本位於此檔案旁:scripts/vfx.py、scripts/compose.py(請使用完整路徑呼叫)。
  • 需要 ffmpeg、Node/npm(字型與分割模型會透過 npm pack 一次性下載至 ~/.cache/vfx),以及 pip install numpy pillow fonttools python-bidi ai-edge-litert "opencv-python-headless<5"。 選擇性安裝:pip install rembg onnxruntime(可獲得乾淨的頭髮邊緣,會自動使用)、pip install faster-whisper(用於語音時間點)。

工作流程

  1. 使用 ffprobe 分析片段。若頭部上方空間不足 → 標題會自動下移至下方三分之一處;並建議重新構圖。
  2. 從語音取得時間點:python3 scripts/vfx.py words clip.mp4 --lang he → 輸出 {word,start,end} 行。
  3. 渲染:
    python3 scripts/vfx.py strike in.mp4 out.mp4 --text "משעמם" --swap "מרתק" --at 2.1 --strike-at 2.8 --swap-at 3.3
    python3 scripts/vfx.py echo in.mp4 out.mp4 --text "IN-APP BROWSER" --at 5 --dur 2.5
    python3 scripts/vfx.py spotlight in.mp4 out.mp4 --text "AI SLOP" --at 13 --dur 2.5
    python3 scripts/vfx.py freeze-mark in.mp4 out.mp4 --at 9.5 --hold 1.5 --label "תסתכלו כאן"
    python3 scripts/vfx.py pinned-comment in.mp4 out.mp4 --user someone --text "..." --at 17 --dur 4
    python3 scripts/vfx.py plan in.mp4 out.mp4 plan.json      # [{"fx":"strike","text":..,"at":..}, ...]
    
    Strike 變體(僅限 plan.json):"front_first": true 將第一個字放在臉部前方(在說話者前面),第二個字放在頭部後方(例如「מלפנים」→「מאחור」);"overlap": 0.45 可讓更多部分隱藏在頭部後方。 Echo 變體(plan.json):"linger": true 讓輪廓複製持續停留在畫面上(輕輕呼吸動畫)直到效果結束。 選項:--y(固定標題高度,以畫面比例為單位;若頭部遮住文字請調高此值)、--color、 freeze-mark 的 --x --y --r 可圈選其他物體、--seg fast|quality、--crf。
  4. Showcase(選擇性):python3 scripts/compose.py fx.mp4 final.mp4 schedule.json
    {"intro": 2.4, "cta": 3.2,
     "cmds": [{"cmd": "strike", "send": 0.0, "desc": "說出來、劃掉、替換", "sfx": [["swish", 0.9], ["pop", 1.5]]},
              {"cmd": "echo", "send": 2.75, "desc": "大字標題,回聲爆發", "sfx": [["boom", 2.8]]}],
     "cta_lines": ["想要這個技能", "5 道命令的組合?"], "cta_button": "留言「技能」"}
    
    send = 命令被發送的影片秒數(請將每個效果的 at 設為約在此之後 0.05 秒)。第一個命令會在介紹期間打字打出。 音效:key、send、whoosh、swish、pop、boom、shutter、power、ding、chime。
  5. 驗證:每個效果擷取 2-3 幀(ffmpeg -ss T -i out.mp4 -frames:v 1 f.png),檢查(文字可讀、臉部可見、希伯來文由右至左、無裁切),修正後重新渲染。然後以每效果一行的方式交付。

相關技能