Communitygithub.com

netfire222/vfx

Reel VFX 特效包 - /vfx strike、echo、spotlight、freeze-mark、pinned-comment。为人物讲话视频添加说话者身后的动画标题、划词替换、聚光灯、冻结+人脸圆圈和评论卡片(支持希伯来语和英语)。可选的 /vfx showcase 将结果包装成 Claude-app 界面,包含打字命令、音效和行动号召按钮。

vfx 是什么?

这是一个针对讲话人物视频(talking-head reels)的 VFX 特效技能包,特别支持希伯来语和英语,并包含完整的从右到左(RTL)文本渲染支持。它提供多种可组合的视频特效:比如在说话者头部上方显示大字然后被红线划掉并替换新词的“划词替换”(strike)、带有轮廓回声复制放大的“回声标题”(echo)、背景变暗并加上暖色聚光灯与闪烁霓虹标题的“聚光灯效果”(spotlight)、冻结画面并放大加上手绘红圈标注人脸的“冻结标记”(freeze-mark)、以及模拟评论区回复卡的“置顶评论”(pinned-comment)。这些特效可以单独使用,也可以通过 plan.json 组合成多特效的渲染序列。此外还包含一个可选的“展示模式”(showcase),可以将最终剪辑包装成类似 Claude-app 的界面,带有逐字打出的命令、音效和结尾行动号召按钮,非常适合用于制作产品演示或自媒体内容。该技能支持在本地运行,依赖 ffmpeg、Python 和 Node.js,通过命令行脚本 vfx.py 和 compose.py 驱动,并提供了分段渲染、文字检测和多种渲染质量选项。

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

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

/vfx - 讲话人物视频特效包

大标题会绘制在说话者身后(通过人物分割实现)并自动放置在头部上方。完全支持希伯来语/RTL 书写方向。

命令功能说明
/vfx strike头部上方显示大字 -> 红线划过 -> 替换为新词
/vfx echo大标题弹出,并伴随轮廓回声副本爆发散开
/vfx spotlight背景变暗,说话者身上打出暖色灯光,加上闪烁霓虹标题
/vfx freeze-mark冻结画面 + 闪光 + 放大 + 脸部周围手绘红圈(可选标签)
/vfx pinned-comment顶部弹出“回复评论”卡片
/vfx plan在一次渲染中组合多个特效
/vfx showcase将渲染好的剪辑包装成 Claude-app 界面:带打字动画的命令、“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. 展示模式(可选):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),检查它们(文字可读,人脸可见,希伯来语从右到左正确,无被裁切),如有问题修改后重新渲染。然后每个特效给出最终交付物。

相关技能