关于 clips-studio
面向需要生成短视频的创作者的技能,通过 fal.ai 分阶段制作视频:先构思,再低成本试稿,最后生成成片。它用本地脚本生成文件供审核,不会代为发布。
主要功能
- 01从文本生成视频
- 02为静态图像添加动态效果
- 03为静态图像生成镜头运动
- 04先低成本试稿再制作成片
- 05保存本地视频文件供审核
适用场景
- 01为网页或社交媒体制作短片
- 02将产品或场景照片制作成动态视频
- 03为静态画面添加推近或摇摄效果
- 04先测试动作效果,再生成高质量版本
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ moonlight-lupin/ agent-skills --skill clips-studio安装后在 Claude Code 中输入/clips-studio确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdexamples/example-run.mdreferences/fal-video-models.mdmotion-honesty-guide.mdvideo-prompting-techniques.mdscripts/falvid.pytests/__init__.pytest_falvid.py详细介绍
Clips Studio
通过有计划的阶段生成短视频片段——头脑风暴 → 低成本起草 → 高质量制作成片——使用 fal.ai。这是 image-studio 的动态影像版。分阶段的目的是控制成本和过程:视频是 fal 上最昂贵的内容(约为静态图像的 10–100×),因此先用低成本模型确定创意,再仅针对已确认的片段使用高质量模型制作一次。
此技能会在本地生成文件,供用户审阅和使用。它绝不会发布、公开或发送任何内容作为最终素材。
适用范围与路由
仅在以下条件全部满足时使用此技能:
- 任务属于生成式视频——根据提示词生成片段、为静态图像制作动画,或在静态图像上进行镜头运动;不包括幻灯片/演示文稿制作、绘图表、仪表板或设计模板自动化。
- 用户接受数据传输至 fal.ai 以及付费 API 用量。
- 本地辅助工作流可用,或用户要求你为其准备简报。
以下情况不要使用此技能:
- 静态图像(使用
image-studio)、Canva 风格模板、幻灯片、数据图表、仪表板、流程图或示意图。 - 机密或敏感图像/文档处理。
- 明确要求在当前主机环境中使用原生视频生成工具。
三种模式——先选择模式
选择与用户现有素材及需求相符的模式:
- 文本转视频(
generate)——仅根据提示词生成片段,不使用源图像。最适合概念、抽象/动态图形、品牌氛围或 B-roll 风格的片段,且没有静态图像作为起点。它会凭空创造所有内容,因此绝不能用来描绘真实地点、产品或人物——真实照片应使用animate。 - 为静态图像制作动画(
animate)——让现有图像动起来:产品转动、人物互动、场景、树叶/水/光线。片段会为画面中的内容制作动画。- **将新主体添加到空场景中(将人物添加到房间、将产品添加到布景)需要分两步完成。**视频模型会为它们看到的内容制作动画;它们无法可靠地凭空创造可信的新主体。因此,先使用
image-studio将主体添加到静态图像中(通过指令编辑),审阅后,再在此处为添加了主体的静态图像制作动画。
- **将新主体添加到空场景中(将人物添加到房间、将产品添加到布景)需要分两步完成。**视频模型会为它们看到的内容制作动画;它们无法可靠地凭空创造可信的新主体。因此,先使用
- 镜头运动(
camera)——在静态图像上推演镜头运动:缓慢推进、平移、倾斜、浅幅环绕或拉远(营造“3D”/视差效果;室内“3D 视图”)。主体可以保持静止,移动的是镜头。这种模式最容易产生不真实的内容(会凭空创造不可见的几何结构)——保持轻柔的运动,并先阅读references/motion-honesty-guide.md。
三种模式都使用下方相同的分阶段流程,以及相同的 scripts/falvid.py 辅助脚本(generate / animate / camera)。
开始之前 — 出站数据与预检
生成片段会将提示词(对于 animate/camera,还会将你提供的起始图像)
发送至第三方美国服务 fal.ai,并从其 CDN 下载生成的片段。这会导致数据流向外部。
进行任何 API 调用之前:
- 确认任务符合范围。
- 在会话中首次生成之前,确认用户明确同意向 fal.ai 发送数据并使用付费 API。
- 在更昂贵的 Stage-3 生产运行之前,再次确认用户明确同意——告知预估费用(视频片段每个可能要花几美元)。
- 检查
scripts/falvid.py是否存在、依赖项是否已安装、是否设置了FAL_KEY,以及工作目录是否可写。 - 对于
animate/camera,只能使用用户有权通过 fal.ai 处理的非机密图像。 - 使用
falvid.py打印的确切输出路径;不要根据示例推断文件名。
切勿将机密或敏感图像提交给 fal.ai,例如私人照片、机密文档或任何受 NDA 约束的内容。如果用户要求为敏感内容制作动画,请停止操作并指出数据外传问题,而不要上传。
Stage 1 的头脑风暴只是纯聊天,不会产生数据外传,因此你可以先起草简报,再确认是否发送。
所需准备:一个已开通计费的 fal.ai 帐户,以及 FAL_KEY——可以是环境变量,也可以直接保存在工作文件夹中的文本文件里(任意文件名,例如 fal key.txt)。辅助脚本会自动查找密钥——先查环境变量,再查工作文件夹中的任何小型文本文件,最后查主目录——并根据内容识别密钥(形如 FAL_KEY=your-key 的行,或原始 id:secret 密钥),因此检查之前不要向用户索要密钥;只有找不到时才询问。它使用 fal-client 软件包(pip install fal-client requests)。如果找不到密钥,辅助脚本会显示清晰的错误信息;没有密钥就无法继续生成,但 Stage 1 仍可进行。(密钥文件请保留在本地;切勿提交。)
Stage 1 — 头脑风暴并制定简报(不调用 API)
优秀的片段始于精准的简报,因此请在花费之前投入时间做好准备。采访用户并与其达成一致:
- 素材来源 — 对于
animate/camera,我们要使用哪一张静帧?(如果要对空场景使用animate,是否已通过image-studio添加主体?)对于generate,没有静帧——先确定要描述的场景。保留_workings/中的任何原始素材,不要改动。 - 动作 / 主体 — 说清动作,不要只描述氛围。“一段好看的产品视频”很含糊;“瓶子在底座上缓慢旋转,柔和的影棚灯光扫过标签”就很具体。对于
camera,请用电影摄影术语描述镜头运动(“缓慢推轨推进”“向左摇摄”“浅弧环绕”)。 - 时长 — 默认 5 秒。尽量简短;成本会随每一秒增加。4–6 秒适合作为社交媒体 / 网页循环视频。
- 宽高比与方向 — 根据目标场景确定:网页 / 主视觉用 16:9,短视频 / 限时动态用 9:16,社交媒体用 1:1。对于
animate/camera,输出方向应与素材方向一致,并明确传入--aspect(请参阅下方的检查说明)。对于generate,没有素材来源,因此请选择目标宽高比。 - 音频 — FLUX 3 默认生成音频(原生支持,免费包含)。脚本会自动为 FLUX 3 模型传入
generate_audio=true;传入--no-audio可禁用音频。对于非 FLUX 3 模型(Kling、Seedance、Veo),音频默认关闭;传入--audio可启用。因此,FLUX 3 的创作简述必须涵盖声音,而不只是动作。请与用户确认:- 环境音 — 场景中自然存在的声音(雨声、交通声、鸟鸣、机器嗡鸣)。
- 音乐 — 如果不需要,请说明“不要音乐”;否则请描述曲风 / 感觉(“柔和的氛围钢琴”“轻快的电子乐”)。每个音轨会分别生成。
- 对白 — 只有画面中能看到说话者时,引号中的台词才会生成语音。否则会被渲染为烧录字幕。请引用台词、描述说话者,并添加“不要画面文字,不要字幕”,以避免生成烧录字幕。
- 静音 — 如果用户完全不需要音频,传入
--no-audio(FLUX 3),或不传入--audio(其他模型)。
宽高比与方向——生成前检查素材来源 (适用于 animate/camera)。将源静帧的方向与目标视频画面的方向进行比较(网页视频通常为 16:9,短视频通常为 9:16)。如果两者不一致——例如要将竖屏或方形手机拍摄素材用于 16:9 视频——不要直接生成:
- 首先,请用户提供方向合适的照片——横屏视频使用横屏照片,竖屏视频使用竖屏照片。与目标画面方向一致的素材来源,能带来最干净、最真实的结果。
- 如果用户仍想使用方向不匹配的素材,请先确认采用哪种处理方式——绝不能擅自决定:
- (2) 添加左右 / 上下黑边 — 保留素材原有方向,将视频置于目标画面中,并用侧边 / 顶部填充(添加黑边,或使用同一画面的柔化模糊填充)。真实——没有任何内容是凭空编造的;只是会出现黑边。通常可在用户的视频编辑器中完成此步骤。
- (3) 先生成式扩展(外绘)静帧以适配目标宽高比,再制作动画 — 画面铺满,但模型会编造拍摄范围之外的周围环境。可结合
image-studio使用(在目标--aspect下进行指令编辑)。开始任何视频生成之前,必须完成两项工作:(a) 以真实场景为依据进行扩展——请用户提供主体周围实际环境的参考图,让模型还原真实环境,而不是凭空编造;(b) 在制作动画前让用户确认扩展后的静帧——接受修改意见,重新编辑并获得批准,然后再制作动画。此类画面仅供示意;绝不要将其描述为真实场景。
- 绝不要采用 (1) 强制裁剪到目标宽高比——素材方向不匹配时,模型会从中心裁剪,丢弃主体的大部分内容(高楼的顶部和底部会被裁掉)。不允许采用此方式。
方向匹配时,仍需传入与素材来源相符的 --aspect,以免辅助程序回退到 16:9 并进行裁剪。
将已确认的简报保存到 _workings/(例如 _workings/brief_[slug].md),以便审计本次运行。提示词中不要包含机密细节。此步骤取代了针对该创意的低成本原型——在首次付费调用前,确认简报(以及 animate/camera 的起始图像)。
**提示词撰写技巧。**在本次会话首次生成前,阅读 references/video-prompting-techniques.md——其中介绍了如何为真实主体提供依据、控制音频层、多镜头语法、语音与内嵌文本的区别,以及续写/串接。这些技巧适用于所有 fal.ai 视频模型,而非仅适用于某一个模型。简而言之:用普通文字描述(不要用关键词标签),为任何外观可真实核验的对象提供依据,并明确说明重要事项——未说明的部分由模型决定。对于需要在画面中准确呈现文字(标题卡、海报、带中英双语字样的标牌)的起始帧,先通过 image-studio 的 Layout-controlled generation — MOSS-Image 部分生成静帧,再进行动画处理;该部分见 references/moss-layout.md,由 scripts/moss_compile_prompt.py 编译——视频模型无法使用 JSON 布局,而且文字内嵌效果不可靠。
第 2 阶段——低成本生成草稿
使用 FLUX 3 Draft 渲染草稿(成本低,仅支持 HD,包含原生音频),以不到完整渲染成本的一小部分进行评估——每秒 $0.06,而完整渲染为每秒 $0.17。
-
animate— 默认使用 FLUX 3 Image-to-Video Draft (blackforestlabs/flux-3/image-to-video/draft,约 $0.06/秒 → 5 秒约 $0.30,包含原生音频):python scripts/falvid.py animate \ --prompt "[the agreed motion, including audio description]" \ --image _workings/[source-still].png \ --duration 5 --aspect 16:9 \ --run-log _workings/run-log_[slug].md \ --out-dir _workings --name vid_[slug]_draft -
generate(文本转视频)— 默认使用 FLUX 3 Text-to-Video Draft (blackforestlabs/flux-3/text-to-video/draft,约 $0.06/秒 → 5 秒约 $0.30,包含原生音频):python scripts/falvid.py generate \ --prompt "[the scene to create, including audio description]" \ --duration 5 --aspect 16:9 \ --out-dir _workings --name vid_[slug]_draft -
camera— 默认使用 Seedance 1.5 Pro(保持不变——摄像机控制能力最强);--move提供平缓的预设(push-in、pull-out、pan-left/right、tilt-up/down、orbit、crane-up),--static则完全锁定摄像机:python scripts/falvid.py camera --move push-in \ --image _workings/[still].png --duration 5 --aspect 16:9 \ --out-dir _workings --name vid_[slug]_draft
保存草稿的 seed——它会显示在运行日志和成本日志中。第 3 阶段的 Draft Enhance 需要用它以相同的运动效果重新渲染。
观看草稿时,重点检查运动问题——面部/手部变形(这是所有模型最难处理的问题;参见 references/motion-honesty-guide.md)、摄像机穿过墙壁、物体变形、运动抖动。收到反馈后,首先改进提示词,而不是换更贵的模型:收紧动作描述、减少运动主体的数量、放慢摄像机,然后重新生成草稿。以低成本循环迭代,直到运动效果满意。始终使用辅助程序打印的确切路径。
第 3 阶段——生成最终成片
草稿中的运动效果获批后,再次确认是否继续以及费用——这是主要支出。向用户明确说明预估费用,例如:“最终成片为 5 秒的 FLUX 3 片段,720p,含原生音频,约 $0.85——要继续吗?”
首选:Draft Enhance(相同的 seed 和运动效果,完整画质)
如果第 2 阶段使用 FLUX 3 Draft 生成了草稿,生成最终成片最高效的方式是 Draft Enhance——使用草稿的相同 seed,以完整画质重新渲染获批的草稿,使运动和构图完全保持一致。只需支付完整渲染费用(无需再支付一次草稿加完整渲染的费用):
python scripts/falvid.py enhance \
--prompt "[the same prompt used for the draft]" \
--image _workings/[source-still].png \
--seed [the draft's seed from the run log] \
--duration 5 --resolution 1080p --aspect 16:9 \
--run-log _workings/run-log_[slug].md \
--out-dir . --name vid_[slug]_final
如果使用 FLUX 3 Draft 生成了草稿,这是默认工作流。seed 会锁定运动效果;完整渲染则会提升保真度、修正瑕疵,并升级至 1080p。
替代方案:从头完整渲染
如果你不是用 FLUX 3 起草的,或者想根据锁定的提示词重新生成:
-
animate/generate(人物、产品、一般写实场景) → FLUX 3 (blackforestlabs/flux-3/image-to-video,或…/text-to-video)——对现实世界的理解最佳,免费包含原生音频;$0.17/s(720p)/ $0.29/s(1080p)。最长 20s。 更精简的选择:Kling 3.0 Pro(fal-ai/kling-video/v3/pro/...)。高端选择:Veo 3.1 (fal-ai/veo3.1/image-to-video,无音频 $0.20/s / 有音频 $0.40/s)。 -
camera(镜头移动) → Seedance 1.5 Pro(fal-ai/bytedance/seedance/v1.5/pro/image-to-video) 已经是camera的默认选项——镜头控制最强,并支持真正的camera_fixed锁定;720p/5s 视频片段约 $0.26。 若要高端原生 4K 运镜,可选 Kling v3 4K(fal-ai/kling-video/v3/4k/image-to-video)。
python scripts/falvid.py animate \
--prompt "[the approved motion, including audio]" --image _workings/[source-still].png \
--model blackforestlabs/flux-3/image-to-video --duration 5 --resolution 1080p --aspect 16:9 \
--run-log _workings/run-log_[slug].md \
--out-dir . --name vid_[slug]_final
将完成的视频片段保存到工作文件夹根目录,命名为 vid_[slug]_final.mp4,或使用辅助程序打印的确切文件名。告知用户文件路径,并提醒他们这是供审核的草稿视频片段,不是已发布的素材,也不是对真实地点、产品或人物的实录。
真实性准则
动态视频片段比静态图像更有说服力,因此,主题越真实,就越需要恪守这一准则(详见 references/motion-honesty-guide.md):
- 不要编造真实事物的事实。 不要虚构真实产品或空间并不具备的功能、表面处理、景观或能力;不要暗示并不存在的入住情况、客户群体或人气。文生视频会虚构所有内容 → 绝不能用它来呈现真实且可识别的主题;应对真实照片使用
animate。 - 镜头移动会虚构摄像机从未看到的几何结构。 缓慢推近或锁定镜头几乎不会虚构内容;大幅环绕运镜或飞行穿越则会幻觉生成整片空间。优先选择轻柔运镜,适用时优先使用
--static,绝不要将推演生成的视频片段当作真实漫游或忠实布局来呈现。 - 人物与肖像。 使用生成的、不可识别身份的人物营造氛围;未经同意,绝不要为可识别的真实人物制作动画,也绝不要上传私人照片。
- 需要字面准确时(例如房源信息、规格声明),真实拍摄或正规的 3D 扫描才是忠实呈现的黄金标准——这只是快速制作的第一版营销草稿。
模型选择
该辅助程序默认使用 FLUX 3 进行草稿和完整渲染——对现实世界的理解最佳,免费包含原生音频,视频片段最长可达 20s,并支持 Draft Enhance 工作流,使用相同种子以完整画质重新渲染已批准的草稿。使用 --model [endpoint-id] 覆盖默认值。当前已验证的端点 ID、用途及大致费用列于 references/fal-video-models.md。
fal.ai 的模型目录会不断变化——如果模型 ID 报错,请查阅该参考文档和 fal.ai 模型库,不要猜测。本次构建中,标记为 (verify) 的内容尚未根据实时模型库确认(若干文生视频 ID/费率标记为 (verify)——依赖其费用前请先确认)。除非结果确实不理想,否则请坚持使用经过验证的默认选项;首先应改进提示词或采用更轻柔的运镜,而不是四处寻找模型。
辅助脚本 — scripts/falvid.py
一个脚本,包含三个生成子命令和 costs。它会从环境变量读取 FAL_KEY,将任何本地 --image 上传到 fal 存储,通过 fal_client.subscribe 调用模型(该函数会轮询异步视频队列,并一直阻塞到片段就绪——这可能需要几分钟;请勿中断),将 MP4 下载到本地,并输出保存路径和预估费用。运行 python scripts/falvid.py -h 或 python scripts/falvid.py [subcommand] -h 查看全部选项。
主要标志:
generate(文生视频)—--prompt(必需)、--duration、--resolution、--aspect、--audio、--seed、--model、--out-dir、--name。没有--image。animate—--prompt(必需)、--image(必需),然后是--duration/--resolution/--aspect/--audio/--seed/--model/--out-dir/--name。camera—--move(轻柔预设)和/或--prompt、--static(锁定摄像机)、--image(必需),然后是相同的标志。enhance— FLUX 3 Draft Enhance:--prompt(必需)、--image(必需)、--seed(必需, 来自草稿的运行日志)、--mode(generate或animate,默认animate),然后是相同的标志。 使用相同的种子以完整质量重新渲染草稿——锁定动态效果,提升保真度。costs— 输出当前会话的累计费用,使用--reset清除。recommend— 各模式(generate/animate/camera)的推荐默认模型,并显示实时定价。只读,不产生费用。search "term"— 搜索 fal 实时目录(--category、--limit);每条结果均显示其实时价格、类别和许可。只读。查找默认选项未涵盖的模型——但除非默认模型确实不够用,否则仍优先使用默认模型。--arg key=value/--arg-json '{...}'— 后备方式,用于传递标志未涵盖的原始模型参数(例如--arg negative_prompt='blurry, distorted'、--arg end_image_url=...)。--run-log _workings/run-log_[slug].md— 追加易读的 Markdown 审计日志。--verbose— 流式输出模型自身的进度日志。默认关闭。
该辅助脚本会根据模型映射起始图像参数(image_url,或 Kling v3 的 start_image_url),将 --duration 转换为各模型所需的类型,只向支持的模型发送 generate_audio,并在 Seedance 上为 --static 应用 camera_fixed(对于没有此参数的模型,则添加“static shot”指令)。如果调用因 fal 余额不足而失败,它会给出清晰的指引,而不是原始堆栈跟踪。端到端运行示例见 examples/example-run.md。
费用与余额
视频计费比较复杂——按秒计费(Kling、Veo),或按片段/令牌计费(Seedance、Hailuo);具体金额取决于输出时长、fps、分辨率和音频,而 API 不会返回这些信息。因此,falvid.py 会优先给出注册表中的已验证费率估算(与 references/fal-video-models.md 保持一致),根据请求时长计算,并明确标记为估算值(视频没有实时定价 API 查询)。**fal 控制面板显示的费用才是权威金额。**每次运行都会追加到 ./_falvid-costs.jsonl;运行 python scripts/falvid.py costs 查看会话费用明细。最终渲染前请先报出估算费用,并让草稿保持低成本且时长较短。只有在 FAL_ADMIN_KEY 中设置了 fal Admin 密钥时才会显示余额;普通 FAL_KEY 无法读取账单(HTTP 403)。
原则
- 草稿,而非建议——输出是供人审核的草稿,而不是可直接发布的成品。
- 绝不编造——不得虚构费用、模型 ID、功能或输出路径。如有不确定之处,请如实说明。不得编造片段中真实对象的相关事实。
- 关键之处保持确定性——费用跟踪、文件命名和模型路由均保持确定性;LLM 只负责创意判断。
- 诚实并校准预期——指出不确定之处,不要夸大质量,并展示费用。
- 保持工作区整洁——交付文件放在工作文件夹根目录;中间文件放在
_workings/;已被取代的版本放在_superseded/。
数据处理
发送给 fal.ai 的提示词和任何起始图像都会离开用户的控制,交由第三方工具处理,因此请遵守个人身份信息(PII)/数据外传规则:不得向 fal.ai 发送机密或敏感内容。将真实源文件和输出文件保存在本地计算机上。如有疑虑,请勿外传;先询问用户。
注意事项
- 匹配源素材的方向——模型无法可靠地继承方向;Seedance 默认使用 16:9,并会对纵向或正方形静帧进行中心裁切。传入
--aspect以匹配方向(3:4 的源素材 →--aspect 3:4)。 - 手部和精细的物体交互容易出错——对所有模型来说,拿取、倾倒和握持都是最难生成的动作。应在设计中规避(让涉及物体操作的主体保持不动),不要花更多钱换用更昂贵的模型来修复。
- 屏幕/电视会生成虚构内容——任何让屏幕“动起来”的提示都会使模型剪切或放大屏幕图像;应避免在需求说明中加入屏幕动态,或让镜头运动来掩饰。
- 进入 Stage 3 前先确认——这是主要费用所在;一段带音频的 5s Veo 视频约需 $2。
- 使用实际保存路径——示例路径只是占位符;请使用
falvid.py输出的路径。 - 文本生成视频绝不能用于表现真实主体——它会虚构所有内容;真实照片请使用
animate。 - 视频生成很慢——单个片段可能需要几分钟;fal 渲染期间,辅助程序会一直等待。
- 文本生成视频的费率需(核实)**——首次运行
generate后,请在仪表板上核对费用是否合理。
验证清单
- 任务范围是视频生成,而非演示文稿、图表、示意图或设计模板制作。
- 用户已在首次 API 调用前确认允许将数据发送至 fal.ai,并同意使用付费 API。
- 已检查源素材方向;已传入匹配的
--aspect(或通过加边框或有依据且经确认的扩图处理方向不匹配——绝不强制裁切)。 - 需求说明已保存到
_workings/;先以低成本起草并迭代,再进行高质量渲染。 - 使用的是实际打印的输出路径,而非推断出的路径。
- 用户已确认继续,并在 Stage 3 前查看费用估算。
- 未使用文本生成视频来描绘真实且可识别的主体。
- 最终片段已保存到工作文件夹根目录;已告知用户路径,并提醒这是草稿。
- 已使用
--run-log,或已检查 JSONL 费用日志;已通过falvid.py costs打印费用摘要。