Communitygithub.com

raycfu/effects

为说话人头视频添加51种视频特效(轨道、聚光灯、玻璃小组件、时间线、清单、标题墙、评论框、手机扇形、液态玻璃图表、匹配剪辑、iPhone开关、LED标志、过肩缩放、iMessage弹窗、网格放置等)。特效会跟踪说话者的面部并可以置于其头后。当用户输入 /effects、命名某个特效,或要求添加特效、缩放、调色、贴纸或动画到其视频时使用。

effects 是什么?

此技能旨在为非技术用户设计,通过自动化流程为说话人头视频添加51种专业级视频特效。它基于SKILL.md文档,提供完整的安装、参数配置、渲染及问题排查指南。其核心功能包括:自动初始化环境(通过setup.sh脚本自动安装ffmpeg、Python 3.12依赖),支持从用户输入或视频文件路径获取素材,并通过JSON计划文件精确控制每个特效的起止时间(支持基于台词的时间点探测)。渲染过程分两步:先生成关键帧预览(检查画面是否遮挡面部、文字是否可读),确认无误后再输出最终MP4文件(默认1080p,可选4K)。 该技能集成了面部追踪算法,确保所有特效(如轨道、文字、图表、UI元素)始终贴合人物头部运动。它支持多种知名编辑平台(如CapCut、Premiere Pro等),并能通过扩展选项调整特效细节(如卡片播放视频、玻璃透明度、货币格式化等)。特别针对真实拍摄素材优化,提供额外的修复工具(如手部遮挡处理、高质量人物抠图)。所有特效都遵循“不遮挡面部”的核心规则,适合内容创作者快速制作高质量的社交媒体视频。

兼容平台✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/raycfu/claude_design_skills/tree/HEAD/effects

在你喜欢的 AI 中提问

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

文档

特效:51种视频特效(作者:Ray, @raycfu)

用户通常不熟悉技术。回复要简短友好,替用户完成工作,绝不要求用户自己运行命令。

以下所有路径均相对于本技能文件夹(即此SKILL.md所在文件夹)。请在命令中使用其绝对路径。

1. 首次运行:初始化配置(一次)

运行 bash scripts/setup.sh。完成后会输出 READY(首次运行需要1-3分钟)。

  • NEED_FFMPEG:为用户安装ffmpeg。在Mac上:brew install ffmpeg(如果缺少brew,告知用户先从brew.sh安装Homebrew)。在Windows上:winget install ffmpeg。
  • NEED_PYTHON:安装Python 3.12(Mac:brew install [email protected],Windows:winget install Python.Python.3.12),然后再次运行安装脚本。
  • 在Windows上,Python路径为 .venv\Scripts\python.exe 而非 .venv/bin/python。
  • 若Windows无bash:运行 py -3.12 -m venv .venv,然后 .venv\Scripts\python.exe -m pip install -r requirements.txt。可选更清晰的抠像:从 https://github.com/PeterL1n/RobustVideoMatting/releases/download/v1.0.0/rvm_mobilenetv3_fp32.onnx 下载模型文件放入 models/ 目录。
  • NEED_PYTHON_312:默认Python无法安装所需包。请按上述方式安装Python 3.12并重新运行安装脚本。
  • TensorFlow Lite、MediaPipe或OpenCV的INFO、WARNING或W0000日志行属于正常。只有输出Done:或saved才表示成功。

2. 获取视频和特效

  • 视频:用户将文件拖入聊天窗口,或提供文件路径。竖屏手机拍摄的视频效果最佳。
  • 特效:通过 /effects <名称> 命令选择,或根据用户描述匹配。将用户的描述与下方表格对应。不确定时,向用户展示特效列表。
  • 用户名和昵称:需要显示个人资料的特效(如玻璃小组件、评论框、粉彩字、个人资料墙、标题墙等)默认使用Ray / @raycfu。请向用户询问一次其用户名和昵称,并在每个特效中传递 name 和 handle 参数。

3. 确定时间点

  • 如果用户说“在单词X处”或“当我说……时”,运行 .venv/bin/python scripts/words.py <视频路径> 并使用返回的时间点。
  • 如果用户未提供时间,则将特效应用于整个片段,或询问其希望应用的特定部分(一个简短问题)。
  • 短暂的特效窗口效果最佳:每个特效推荐1.5到4秒。

4. 预演、检查、渲染

  1. 在视频文件旁编写计划文件 <视频文件名>_effects.json:
    {"effects": [
      {"fx": "orbit", "start": 3.2, "end": 6.0},
      {"fx": "backdrop-word", "start": 14.0, "end": 16.3, "text": "CLAUDE"}
    ]}
    
  2. 先检查关键帧(快速):.venv/bin/python scripts/fx.py --plan <计划文件.json> <视频> <文件夹>/check.png --still 4.5,15.2,选取每个特效的中间时间点。自行查看生成的PNG图片。如果发现问题(遮挡面部、被边缘裁剪、文字不清晰),调整文字、时间点或选项。
  3. 渲染:.venv/bin/python scripts/fx.py --plan <计划文件.json> <视频> <视频文件名>_effects.mp4。输出文件保留原始音频。默认渲染为1080p;添加 --width 2160 可输出4K(速度更慢)。
  4. 告知用户输出文件的位置。用一行提醒用户在发布前先观看:这是预演版本,需要用户批准。

单个特效无需计划文件:.venv/bin/python scripts/fx.py orbit <视频> <输出.mp4> --start 3 --end 6 --text "..." --opt key=value

51种特效

编号fx 名称效果描述选项(均为可选)
1noise在头后每四分之一秒累积一个Reelimages(截图或剪辑文件夹),size
2lineup带数字的瓦片在头上方扇形展开text(用|连接的瓦片名称)
3locked-on角括号锁定面部,摄像机跟随头部运动zoom(默认1.35),text(标签)
4orbitReel围绕头部旋转:底部在前,顶部在后images,count,speed,size
5lean-in在某个单词上快速推进放大zoom(默认1.45,最大2),speed
6backdrop-word一个巨大的单词从身后落下text,color(十六进制),font(bold或serif)
7spotlight熄灭灯光,只照亮你text(身后发光的单词),color,push
8the-bill像收据一样将指令打印到头上方的墙上text(用|连接的行)
9moody情绪化色彩调色grade(moody,bw,warm,cool,pop)
10swipe前后对比滑块从身上滑过grade(“之后”的外观)
11todo头旁的任务清单卡片,在说话时依次打勾text(用|分隔的项目),ticks(用|分隔的视频秒数),title
12comment-boxInstagram评论栏输入单词并发布text(默认EFFECTS)
13tap关注按钮弹出并翻转成“正在关注”at(翻转的视频秒数),x,y(0到1),color
14pause-point定格画面,用手绘箭头指向你text(标签),color,label_x
15uninstall带有毛刺效果的卸载栏将画面打碎text
16reel-frame视频缩小成Instagram Reel卡片text(用户名)
17shortcut-rain键盘按键在身后如雨般落下text(用|分隔的按键),count
18reject-stamp一个大红印章砸在屏幕上text,color,angle,y
19countdown-flip头上方的3、2、1翻页时钟from
20rabbit-hole画面向内隧道般旋转缩小ratio,speed,spin
21cover-star变成杂志封面,标题位于头后text(标题),lines(用|分隔),issue,color
22scribble马克笔涂鸦在周围绘制text(标签),color
23glass-widgets磨砂玻璃小组件和迷你元素在头周围浮动,外加“Edited by Claude”药丸text(大数字),name,handle,look(simple表示3组件版本)
24red-collage黑白的人像,身后巨大的红色单词,三行文字飞入text(红色单词),lines(用|分隔),tag
25split-headline标题卡片下滑,将你推向画面下半部分text(用|分隔的行),hl(高亮词),pill
26pastel-word薰衣草色房间,身后巨大单词,个人资料卡片被关注text,name,handle
27check-pills网格纸房间,身后Reel展示板,光标点击蓝色药丸text(用|分隔的药丸),images
28timeline深红色调色,带有剪辑时间线、REC时间码和发光播放头text(标题),sub,tc
29headline-box推进放大,附带两行标题,第二行在白色方框内text(用|分隔的行),zoom
30profile-wallReel网格填满身后墙壁,同时计数器递增images,count,label
31tier-list层级列表落下,Claude飞入S级title,item,others
32broll-split上方放置B-roll素材并附带价格标签贴纸,下方为你images,text(标签)
33phone-fanReel像手机扇一样展开,上方有标题images,text(用|分隔的行)
34dot-reveal画面由发光点阵构建,然后呈现完整图像color,cell
35headline-wall自己的标题在头后堆叠,然后总计数出现在面前text(headline::meta|...),total,label
36checklist下巴下方的Claude任务列表:每个步骤旋转,然后变为绿色对勾text(step::meta|...),title
37liquid-glass-graph下巴下方的液态玻璃卡片:绿色图表攀升,数字同时计数text(标签),from,to(例如197K,59%),color
38carousel-spinReel在周围3D旋转木马式转动,然后缓慢停止images,count,size,turns
39match-cut新闻页面在某单词处切换,锁定在头后的红色方框中text(单词,默认Claude),color
40apple-toggles下巴下方的iPhone设置卡片逐行打开开关text(用|分隔的行),ticks(用|分隔的秒数),color
41led-sign灯光熄灭,身后LED标志逐字打出text(用|分隔的行),color,push
42slow-push缓慢的电影推近镜头,背景虚化zoom(默认1.6),blur
43over-the-shoulder-zoom镜头推向一个上角,透明液态玻璃图表在头旁弹出(线条攀升、数字计数),然后拉回,再推向另一上角显示第二个相关条状图。头部保持在前text(两个标签,用|分隔),to(两个数值,用|分隔,如197K|672K),zoom(默认2.0)
44messagesiMessage通知一个接一个弹出,奶油色玻璃材质带有柔和发光,从画面底部向上堆叠text(用|分隔的消息),title(默认Messages),y
45place-in-grid你缩小到磨砂玻璃上3x3个人资料网格的中心瓦片,然后8个Reel一帧帧弹入你周围,每个瓦片显示Instagram观看次数images(Reel或封面文件夹),views(9个计数,用|分隔,第9个是你自己的)
46tape-label一条带有你文字的黄色胶带水平落在你胸口,避开面部text
47select-resize蓝色选择框带手柄抓住头上方的数字,光标将其拉大text(默认2X)
48wave-trim头上方深色面板显示你的语音;两端红色虚线静音部分折叠,直到只剩下你说话的内容无
49huge-strike一个巨大的衬线单词从身后擦入,然后一条红线将其划掉text,at(效果开始后划线的秒数,默认0.6)
50crayon-write红色蜡笔在头后写出单词,然后划线并飞走text
51fan-buildReel封面一张张扇形展开到头后images(封面文件夹),count(默认13)

命名外观(同一特效的更精美版本;不增加特效计数):

  • glitter-spotlight = 带 look=sparkle 的 spotlight:房间变暗,金色光束从头后射出,大字金色单词带有光泽扫光,闪烁的闪光和周围光晕。text(单词),color,push。
  • 带 look=editorial 的 cover-star:柔和的暖色电影风格,头后经典衬线报头,期号和优雅的封面线条。text(报头),issue,lines(3行文字,用\|分隔),right(用\|分隔的行),color,accent,lines_y,right_y。
  • 带 look=bento 的 liquid-glass-graph:爬升的图表移至头后的烟熏玻璃屏幕,面前有玻璃便当盒式瓦片(甜甜圈、KPI、条形图)。text,from,to,donut(29%::label),kpi(672K::label),bars(197\|140\|124::label)。
  • apple-toggles 现在位于头上方,藏于头后,伴随柔和缩放(pos=below 恢复旧的下巴下方卡片;overlap,zoom)。

别名也可用:bill,to-do,follow,stamp,countdown,cover,rain,pause。

规则

  • 绝不遮挡面部。所有元素要么位于人物身后,要么自动避开面部;如果检查帧发现文字仍在面部上,则调整位置(x、y)或缩短文字。
  • 特效按计划文件中的顺序执行。当与其他特效重叠时,将摄像特效(locked-on、lean-in、spotlight)放在最前面。
  • 缩放倍数不超过2倍,以保证视频清晰度。
  • 此技能仅添加视觉效果。声音效果和字幕由用户自行处理(CapCut效果良好)。
  • 这些是基础版本。如果用户将其与他们看过的Reel视频比较,请如实告知。

额外选项(Ray定制版)

以下选项是在基础特效之上添加的,用于修复真实素材中可能出现的视觉问题。像其他选项一样传递(在计划文件中使用"key": "value",或使用--opt key=value)。

特效选项作用
任何卡片/轨道特效play=1播放卡片内images文件夹中的视频而非静态图像
liquid-glass-graphpos=behind将图表置于头后的深色玻璃屏幕而非胸前
liquid-glass-graphsmoke=0.5..0.85使用深色烟熏玻璃而非透明液态玻璃(不显示身体的模糊副本)
liquid-glass-graph,over-the-shoulder-zoomto=$32,000货币前缀和千位分隔符正确计数
checklistsmoke,scale=0.86,bottom=0.95,guard=0深色可读卡片,尺寸更小,位于低位,绝不接触面部
checklistspan=2.9打勾动画持续的秒数,使最后一个勾对应于用户的手势
spotlightflicker=0,lift=0.8关闭霓虹闪烁效果,或降低文字位置使头部遮挡部分文字
cover-starmast_y=0.15固定报头高度(配合更紧凑的裁剪,使头部可重叠)
comment-boxlock=1,avatar_color=#FDB827固定评论面板位置,设置头像颜色(字母来自handle)

手部遮挡卡片时:先渲染特效,然后运行 .venv/bin/python scripts/hands_front.py <原始视频> <带特效视频> <输出>。

抠像质量:如果 models/rvm_mobilenetv3_fp32.onnx 存在,所有特效均使用Robust Video Matting进行人物抠像(更干净的头发边缘,无闪烁)。设置 FX_MATTE=mp 可使用原始的MediaPipe分割器。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能