Communitygithub.com

Riffumi 本地版

一个视频导演技能——用你自己的剪辑和照片,规划并制作出原创、有质感的视频(B-Roll、动态图形、节奏同步音乐)。适用于广告、产品展示、社交媒体短片、教程、活动回顾等场景。

Riffumi 本地版 是什么?

Riffumi 是一款专为 AI 代理(如 Claude Code、Cursor 等)设计的视频导演技能,专注于从用户提供的剪辑、照片或仅凭一个想法,制作出具有专业质感的视频。它遵循一套严格的创意与生产流程,强调“想法先行”、以“动态影像”为载体、并严格将剪辑与音乐节拍对齐。该技能包含一系列 Python 脚本(如 beats.py、preflight.py、render.py),用于检测环境、生成节拍网格、检查合规性并最终渲染视频。它支持本地渲染(需要 ffmpeg、numpy 等依赖),也可与图像/视频生成模型或连接的视频设计工具协作。Riffumi 通过一个可量化的“制作标准”(要求 50% 以上的动态影像时长、多个字体家族、视觉特效等)确保输出质量,并内置素材检查、B-Roll 规划和概念生成环节。其核心在于产生“有想法”的作品,而非模板化的幻灯片。

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

在你喜欢的 AI 中提问

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

文档

Riffumi 本地版 是做什么的?

你是导演、剪辑师和动态设计师。目标是完成一段感觉像是为这个主题量身定做的成品视频,看起来有制作感:移动的镜头、音乐驱动的剪辑、动态文字、真实的图形和一个令人难忘的想法。一组带有淡入淡出字幕的产品照片幻灯片,无论多么干净,都是失败的作品。

本文档是工作流程。按顺序执行步骤,并生成每一项必需的输出。详细信息在 references/ 中,可运行的脚本在 scripts/ 中。

0. 规则

  1. 想法先于外观。 每个视频都有一个概念:一个想法、一个结构和一种标志性手法(references/creative-system.md)。字体和转场是之后的事。
  2. 动态镜头承载视频。 B-Roll(首选素材片段,当素材没有合适内容时再生成)是默认的骨干。只有当用户自己的素材涵盖了所有节奏点,或者动态镜头不适合主题时,才跳过它,并说明原因。
  3. 根据音乐剪辑。 每个有音乐的视频都有一个节拍网格(scripts/beats.py);场景是节拍的整数倍;揭示效果落在 Drop 或最强烈的鼓点上。
  4. 屏幕上只出现真实信息。 宣称、数据、评分、价格、引用都必须来自用户或你阅读的页面。绝不捏造;绝不将素材片段中的人呈现为真实客户(references/honesty-and-policy.md)。
  5. 达到制作标准(见下文)。scripts/preflight.py 会对其进行评估,并判定简单的剪辑为不合格。
  6. 审视自己的作品。 在规划之前查看素材的缩略图;在最终渲染之前查看成片的静帧和缩略图。描述你看到了什么。
  7. 先承诺,再展示。 简单需求:制作一个有信心的初剪。有模糊需求的实际简报:只问一次(最多 3 个简短问题),然后开始制作。

制作标准(粗体为默认级别;wild 级别提升所有数值)

一部 bold 或 wild 级别的视频必须具备以下所有条件。Preflight 会对其进行评分(bold 级别及格线 65,wild 级别 80)。

要求BoldWild
动态镜头占总时长的比例(用户剪辑 + B-Roll + 合成镜头)50%+60%+
每个静态照片场景都有摄像机运动或叠加层;每个色块/渐变卡片都有动画图层是是
带有节拍网格的音乐;场景长度以节拍为单位是是
使用已获取的显示字体(绝不使用后备字体)2 个字体家族2-3 个字体家族
不同的文字入场方式,与时机相匹配4+5+
重点转场类型(其余硬切对齐节拍)2+3+
每 10 秒内的屏幕事件(文字、色块、贴纸)2+3+
第 0 帧为钩子行(字号 110+,无入场动画)是是
承载真实信息的信息图表/产品抠图2+3+
带有特效或叠加层的场景1+3+
一个标志性镜头(分屏、手机揭秘、文字位于主体后方、贴纸 slam、速度变速、冻结标签等)是是
在规格文件中写明 meta.concept 和 meta.device是是

Safe 级别(品牌锁定、平静)将这些视为建议。

1. 了解你在这里能做什么

运行 python3 scripts/check_env.py。它会报告 ffmpeg、库、字体、网络状态以及是否设置了素材 API 密钥,并将结果保存到 .riffumi_env.json 供 preflight.py 使用。如果提示缺少 numpy 或 Pillow,则运行 python3 scripts/setup.py(它会为你当前的 Python 环境安装这些库,并打印适用于本平台的 ffmpeg 安装命令),然后再次检查。

你拥有...选择路径
Shell + Python + ffmpeg本地渲染 使用 scripts/render.py。这是主要路径。
图像生成模型制作你缺乏的静帧(场景、背景、标题图、基于真实照片的产品场景图)。
视频生成模型为素材 API 无法覆盖的节拍生成 B-Roll(3-8 秒的镜头,每个提示使用一个风格块)。
连接的视频/设计工具使用此技能的概念、节拍表、资源和检查在该工具中构建。
以上都没有交付制作包(references/routing-and-generation.md)。
完全没有 Shell(手机、无代码执行的聊天应用)将用户引导至托管在 riffumi.com 的 Riffumi 连接器:由同一导演执导,在 Riffumi 服务器上渲染,提供库和分享链接。

离线环境? 当没有资源服务器响应时(沙箱中没有网络),check_env.py 会打印 offline。此时字体和素材 B-Roll 无法获取:请使用已安装的字体和用户自己的文件、合成镜头和生成的镜头,preflight 会将字体和素材相关行视为警告而非错误。向用户说明这一点(一行即可)。

B-Roll 需要素材 API 密钥。 如果显示 stock API keys 无可用,请向用户索取一次免费的 Pexels 密钥(pexels.com/api,只需两分钟),并设置 PEXELS_API_KEY。严禁爬取素材网站或规避其防爬保护。

2. 简报

从请求、对话和任何链接中提取信息;用默认值填补空白并说明哪些是默认值。

  • 主题和目标(购买、学习、分享、记忆)。平台和格式(未知:社交平台使用 9:16 15-30 秒;网页、演示文稿、市场列表使用 16:9 - references/formats-and-platforms.md)。
  • 受众和世界:描述风格类型的词汇(家居、科技、美妆、美食、户外、奢侈品、儿童、B2B...)。
  • 事实:特性、数据、优惠、评分、CTA、品牌色、字体、Logo 文件。只有这些可以出现在屏幕上。
  • 创意级别:默认为 bold;当用户提到 creative, wild, exciting, scroll-stopping, epic, fun, high-energy 时升级为 wild;只有当用户明确表示要 plain 或 brand-locked 时才使用 safe 级别。永远不要劝说用户降低级别**。

对于产品链接或 ID:打开页面,收集标题、卖点、评分、评价数量和最大尺寸的图库图片。

3. 概念 - 必需:提出三个概念,并进行评分

撰写三个概念,使用三种不同的结构(一个理性、一个感性、一个有趣或令人惊喜)。对每个概念:标题、用一句话描述的想法、结构、标志性手法、以及观众在前两秒和最后两秒看到的画面。根据惊喜度、对主题的专属性、视觉回报、能量曲线对每个概念进行 1-5 分评分;拒绝任何可以套用到竞争对手上的概念。完整方法、22 种结构、60 多种手法:references/creative-system.md。

  • 有真实简报:展示三个,让用户选择。
  • 简单需求:采用评分最高的概念进行制作,并在预览后提及其他两个概念。

4. 收集素材

  1. 检查用户的素材:python3 scripts/inspect_media.py <文件或文件夹> --out sheet.jpg。查看缩略图;记录可用的镜头及其时间戳。
  2. B-Roll 计划 - 必需(除非规则 2 的例外适用)。编写 broll_plan.json,每个素材节拍包含一条记录:镜头必须展示的内容、具体的搜索短语(名词 + 光线 + 动作:如“霓虹灯卧室夜晚”、“双手在笔记本电脑上打字 昏暗”、“朋友在客厅派对跳舞”)、1-2 个替代短语以及最短时长。然后执行:
    python3 scripts/stock_search.py --plan broll_plan.json --orientation portrait --sheet broll_sheet.jpg --out broll.json
    
    它会为每个短语向 API 请求 15 个结果,对结果进行排序(根据方向、时长、分辨率),并为每个节拍保留最佳 6 个结果,生成一张联系表。查看联系表,根据内容、光线和动态(拒绝含有 Logo、错误氛围、静态镜头的内容)为每个节拍选择一个镜头和一个备用镜头。然后执行 python3 scripts/stock_search.py --pick broll.json --choose hook:2,problem:1,payoff:4 --to broll。如果一个节拍没有好的结果,尝试两个新短语;然后生成该镜头;永远不要降级为静态图片。规则、许可、后备方案:references/assets-and-licensing.md。
  3. 产品图片 将被处理成抠图、贴纸和文字后方镜头:python3 scripts/matte.py product.jpg --out cut.png --outline 14:#ffffff --shadow。
  4. 合成镜头 使用一条命令完成:分屏、手机揭秘、产品在色块上等:python3 scripts/compose.py split|phone|field|still ...(查看 --help)。
  5. 字体:为概念选择两个字体家族(references/motion-and-type.md 中的搭配,或品牌的官方字体):python3 scripts/get_fonts.py "Bungee" "Space Grotesk:700"。
  6. 音乐:使用用户提供的曲目,或根据能量和时长匹配的无版权曲目;然后运行 python3 scripts/beats.py track.mp3 获取 BPM、偏移和 Drop 点(references/sound-design.md)。

5. 规划剪辑 - 必需:导演工作表

在编写任何规格文件之前,先写 plan.md:

  1. 概念 - 想法、结构、手法、级别、平台、宽高比、时长。
  2. 能量曲线 - 音乐在哪里推进、Drop、Breakdown、高潮;每个幕落在哪个节拍上。
  3. 节拍表 - 每个场景一行:节拍数、镜头(文件 + 入点,或合成镜头)、使用的配方(references/scene-recipes.md)、屏幕上的文字、入场方式、摄像机运动、转场、声音提示,以及是什么让这个时刻令人惊喜。
  4. 手法时刻 - 标志性手法首次出现的位置以及它何时产生效果。

经验法则:第 0 帧是缩略图和钩子;交替使用镜头和产品图片(连续静态图片不超过两个);变化停留时间,关键时刻停留最长;每个文字节拍 3-7 个词;遵守平台的安全区;用证据而非形容词来展示。

6. 构建

编写规格文件(references/spec-format.md),从 references/scene-recipes.md 中提取场景,并研究 examples/reference-wild-16x9.json 看真实规格文件的制作标准(不要复制其结构)。在规格文件中写入 meta.level、meta.concept、meta.device、meta.facts。

python3 scripts/preflight.py spec.json                 # 修复每个 FAIL;制作分数必须达到及格线
python3 scripts/render.py spec.json --sheet 24         # 查看整个剪辑的缩略图
python3 scripts/render.py spec.json --stills 0,4.2,9.8 # 在最繁忙的时刻生成全尺寸帧
python3 scripts/render.py spec.json --preview          # 生成半尺寸带音频的草稿
python3 scripts/render.py spec.json                    # 最终渲染
python3 scripts/render.py spec.json --only 3           # 在修改场景 3 后仅重新渲染该场景

如果缩略图看起来很平淡,那它就是平淡:回到工作表,在最终渲染前加强最弱的节拍。生成式和连接工具路径:references/routing-and-generation.md。特殊工作流程(说话人头、屏幕录制、循环、前后对比、批量、重新剪辑):references/workflows.md。

7. 审核与交付

  1. Preflight 通过,缩略图和静帧已被检查,并且 references/review-checklist.md 中的检查清单成立:第 0 帧为钩子,在安全区内有可读的真实文字,镜头承载大多数节拍,匹配调色,音乐对齐节拍并干净结束,时长符合承诺,标志性手法可见。
  2. 使用定向重新渲染(--only)进行修复,不要重新构建整个项目。
  3. 交付:文件、关于概念和手法的一句话说明、制作分数、来源和许可(来自 broll/manifest.json),以及下一版本的一到两个方向。

脚本

脚本用途
check_env.py检测当前机器可以做什么(ffmpeg、库、字体、网络、素材 API 密钥);写入 .riffumi_env.json
setup.py为当前 Python 安装 numpy 和 Pillow;打印 ffmpeg 安装命令(--extras 添加可选包)
inspect_media.py生成剪辑和照片的联系表及清单
stock_search.py通过 Pexels/Pixabay API 获取 B-Roll:逐节拍搜索、排序、联系表、下载并记录许可
compose.py合成镜头:分屏、手机揭秘、产品在色块上、静态图片转剪辑
beats.py分析曲目的节奏、节拍网格、Drop 点、响度曲线
matte.py从静态图片中剪切主题;制作贴纸轮廓和阴影
get_fonts.py将开源字体下载到 fonts/ 目录
fetch_asset.py下载用户可能使用的任何文件并记录其许可
transcribe.py为字幕和说话人头剪辑生成逐词时间戳(需要 whisper 包)
preflight.py检查规格文件:文件、时长、平台、声明、B-Roll 占比、制作标准得分;--offline 放宽字体和 B-Roll 要求
render.py渲染规格文件:静帧、联系表、预览、最终版本、单场景重新渲染

要求:Python 3.8+、numpy、Pillow、ffmpeg。可选:scipy(更快抠图)、rembg(从复杂照片中抠图)、faster-whisper(字幕转录)。B-Roll 需要免费的 Pexels 或 Pixabay API 密钥。

相关技能