关于 stagefight
stagefight 是用于制作短篇舞台对决视频的创意技能,会根据选定的对阵设计舞台、角色扮装和现场特效,再以静帧为起点生成视频。
主要功能
- 01根据所选对阵编写提示词
- 02生成主题舞台静帧
- 03生成 10 秒图生视频
- 04采用观众手机拍摄视角
- 05将效果设计为舞台演出
适用场景
- 01为指定的两名角色制作扮装对决视频
- 02将原创对阵制作成舞台表演场景
MCP 相关
使用 Pika MCP 的 generate_image、generate_video 和 task_status 等工具生成静帧与视频,并检查任务状态。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ pika-labs/ pika-plugins --skill stagefight安装后在 Claude Code 中输入/stagefight确认已加载。
详细介绍
stagefight
一个包含两次调用的 pika 流程:舞台静帧(generate_image,gpt-image-2)→ 打斗片段(generate_video,图生视频,约 10 秒,16:9)。片段采用粉丝在现场拍摄的 POV 手机画面,记录主题舞台上的一场编排好的角色扮演表演——两位表演者交锋,现场舞台特效爆发,观众做出反应。每次运行都会为一组对决生成一个片段。
这项技能的核心任务是:弄清楚谁在打斗(询问用户或提出对决组合),然后按照捆绑示例的结构编写全新的提示词并生成新视频。examples/ 中的示例是应遵循的模式,不是固定目录——每次运行都应以相同方式创作一组新的对决组合。画面风格经过校准,安全框架至关重要:保留两个模板中的每句固定语句,只填写标记为 [SLOTS] 的部分。
★ 为什么有效——方法(这是实际研究成果,一项也不要删)
直接使用“两个人打架”这类提示词会被审核拦截。以下四种做法能可靠地生成打斗内容,组合起来也正是这一趋势的美学风格:
- 将其描述为健康向上的舞台表演。 每条片段提示词都必须原样以 "Wholesome theatrical stage performance, choreographed cosplay, advertiser-safe." 开头,并以 "Believable live-stage effects, not cartoon magic." 结尾。这样就把打斗重新定义为特技表演,从而通过安全审核。切勿描述受伤、血液、武器真正击中对方,或“卡通魔法”——应描述编排、道具和舞台烟火效果。
- 粉丝在现场拍摄的观众 POV。 使用 "POV handheld phone footage from the audience, raised above other people's heads filming the stage,",并加上 "a large audience in the foreground — dark silhouetted heads, many holding up phones recording." 这既营造了病毒式传播中“我也在现场”的美学效果,也是安全框架的一部分(画面呈现的是记录一场表演,而非真实暴力)。
- 身着戏服的原创角色——绝不用真人,也不用知名 IP。 使用原型角色(如“一位戴草帽的精瘦武士”、“一位身穿黑袍的长角恶魔”、“一位身穿橙色运动服、留着刺猬式金发的忍者”)。真人面孔会在两个后端都被审核拦截;知名或商标角色容易生成偏差并触发标记。应描述其角色扮演服装(发型、服装、道具),而非品牌。
- 真实可信的现场舞台特效。“惊艳”时刻应采用可信的实景特效——一阵舞台烟雾、绿色舞台火焰和火花、一道水墙/喷泉。两位表演者都要戏剧性地后退/摆出防御姿势;无人受伤。
审核处理:遇到拦截时,重新运行相同调用(不要立即更换服务提供方)。如果视频生成在失败前运行超过约 4 分钟,说明内容已经通过安全审核——失败原因是基础设施问题,只需重试。不要通过 reference_audio 加入音乐——这条路径会触发审核;请在后期添加音乐/音效。如果需要重试,不同的 Seedance 后端(ark/fal)具有不同的审核流程。
前置条件
pika MCP 可用。工具前缀因宿主而异——使用实际提供的前缀。工具:generate_image、generate_video、task_status;可选的后期处理工具:generate_music/音效 + edit_concat/edit_audio_mix。
阶段 0 — 谁在对战?(先确定这一点)— 一组对战 → 一个片段。
-
如果用户已经说出了两位斗士——在
/stagefight参数或消息中(例如“冰霜法师 vs 烈焰骑士”“我的猫 vs 一条龙”“两个机器人”)——就使用他们,跳过菜单,直接进入「编写提示词」。不要再次询问。 -
否则,用一次
AskUserQuestion提问(标题:Matchup)。必须让用户可以提供自己的角色——将其设为第一项,另外正好提供 3 个模板对战:- “自己选两位斗士” — 我来命名 → 选中后,询问“你的两位斗士是谁?”,并使用用户的回答。(自动添加的 Other 字段也可以让用户直接输入对战双方。)
- 忍者 vs 忍者 — 烟雾
- 武士 vs 角魔 — 绿色火焰
- 女巫 vs 吸血鬼(水舞台) — 喷泉 绝不要自动选择模板——关键就是让用户选择或输入自己的对战双方。不要只用文字列出 3 个建议就继续;必须展示包含 4 个选项的真实菜单并等待用户选择。
-
**画面比例:**默认静默使用
16:9(符合潮流的观感)。只有用户提到竖屏/TikTok/Reels 时,才询问是否使用9:16。
确定对战双方后,自行编写提示词(见下一节),用一句话确认(“正在生成你的舞台对战片段——冰霜法师 vs 烈焰骑士……”),然后从头到尾完成流程——不要再设置任何是/否确认环节。
编写提示词(创作步骤,绝不能跳过)
**你正在为用户的两位斗士创作。从他们出发,推导其他所有内容。**忍者/武士/女巫只是公式示例,不是最终输出——如果用户说的是“X vs Y”,视频就要呈现 X vs Y。**绝不要悄悄默认使用某个示例对战,也绝不要换成与用户选择不同的对战。**用户要求其他对战时,却默认使用忍者/武士/水舞台,是这项技能最常见的失败原因。
根据用户选择的斗士推导以下四个变量:
- 舞台 = 适合这两位角色、可信的主题对决场地——他们来自什么世界?——再加上 2–4 件具体道具、背景以及一天中的时段/光线。(巫师 → 石头竞技场;机甲 → 霓虹穹顶;牛仔 → 酒馆街道。除非角色来自寺庙,否则不要使用寺庙。)
- 表演者 A(左侧) / 表演者 B(右侧) = 将两人分别设定为真人角色扮演者:描述头发、服装、道具和姿势。仅使用原型;不要使用真人。将任何命名角色/商标角色转换为可描述的服装(提示词中不要出现品牌名)。
- 标志性特效 = 符合这场对战、可信的现场演出高潮效果(烟雾/彩色火焰 + 火花/水柱/尘土 + 灯笼光/冰晶/余烬/礼花炮……),两位表演者都要对此作出反应。
**推导示例(任意对战,仅用于演示方法):用户要求“机器人拳击手 vs 相扑选手”。 → **舞台:**霓虹灯照亮的夜间竞技场,有全息横幅、拳击台绳、赞助商灯笼,后方可见城市天际线。→ **左侧:**高大的镀铬人形机器人,戴着红色拳击手套,关节发光,摆好防守架势。→ **右侧:**体格魁梧的相扑选手,身穿礼仪兜裆布,压低重心踏地。→ **特效:**拳套与手掌相碰时,尘土和火花形成冲击波。→ 然后将这些内容填入两个模板。(注意:这里没有忍者/寺庙/水——每个变量都来自实际的对战双方。无论用户选择什么,都要这样处理。)
步骤 1 — 舞台静帧(generate_image,gpt-image-2)
将舞台、两位表演者和拍摄的观众一起烘焙进第 0 帧,这样步骤 2 只需为冲突场面添加动画。模板 — 保留每个固定句子,填写 [SLOTS]:
A recording from the audience at an outdoor theater performance at [TIME-OF-DAY/SETTING]. [STAGE: a wooden stage recreating <themed set> — <2-4 concrete set pieces, lanterns/gate/fog/water/etc>, <backdrop>]. On stage, two performers in high-quality live-action cosplay face off several meters apart: on the LEFT, [PERFORMER A — cosplay: hair, costume, prop, stance]; on the RIGHT, [PERFORMER B — cosplay: hair, costume, prop, stance]. A large audience fills the foreground — dark silhouetted heads, many holding up phones recording with glowing screens. The camera films from far back in the crowd, slightly off-center, performers small on the wide stage, slight handheld tilt. Realistic phone-camera look, faint digital noise, [natural light note]. High resolution, no text, no UI.
调用 generate_image。 调用参数: provider: gpt-image-2 · aspect_ratio: 16:9(默认;竖屏时用 9:16)· quality: medium(high 会超出代理超时时间)· output_format: png。不要输入图像,除非用户提供了用于锚定的特定角色设定图/服装参考——这种情况下改为调用 generate_image_edit,将设定图作为 images 传入,并确保文本只描述角色扮演服装,不要提及角色名称。遇到 moderation_blocked:重新生成;如果持续出现,就弱化服装描述(多用“表演者/特技演员”,少用“恶魔/利爪”)。保存返回的 URL → state.still_<n>_url。自检:两位身着戏服的表演者清晰地彼此对峙,前景有人群和手机,画面中没有文字——否则重新生成。
步骤 2 — 打斗片段(generate_video,图像转视频,10s)
将静帧锁定为起始帧,并为冲突场面添加动画。10s 足以容纳更完整的节奏——让 [ACTION] 呈现一个小弧线(对峙 → 交锋 → 舞台特效 → 后退/再次交手 → 观众沸腾),而不是只打一击。模板 — 外层文字逐字保留,仅填写 [ACTION + EFFECT]:
Wholesome theatrical stage performance, choreographed cosplay, advertiser-safe. POV handheld phone footage from the audience, frame slightly unsteady, raised above other people's heads filming the stage. [ACTION: the two performers <sprint/dash in> and <clash — martial choreography or props>, <a believable live-stage effect: stage smoke / green fire + sparks / a wall of water erupts>, then <both recoil / leap apart / brace>]. The crowd in the foreground reacts, phones held up recording. Believable live-stage effects, not cartoon magic. Realistic smartphone recording, slight digital noise, continuous handheld shot, no subtitles, no UI.
调用 generate_video。 调用参数: image:(或 reference_images:)= state.still_<n>_url(起始帧)· duration: 10 · aspect_ratio: 16:9(与步骤 1 一致)· sound 保持默认值(不要强制添加音乐)。如果返回任务 ID,则轮询 task_status。如果在约 4 分钟后失败,说明已通过审核——直接重试;如果很快就失败,则弱化动作描述后重新生成。
步骤 3 — 后期处理(可选)
- 仅在后期添加音效/音乐。 加上观众低语声,以及交锋时的呼啸声/撞击声,会更有说服力。生成或获取音频,并使用
edit_audio_mix混音——绝不要将音乐作为reference_audio传入视频生成(会触发审核)。
示例拆解(仅供说明 — 绝不能用来替代用户指定的对决)
阅读这些示例,了解如何将一场对决拆解为四个变量——然后根据用户的选择自行推导。除非用户选择的正是这场打斗,否则不要粘贴任何示例。生成的静帧位于 examples/(ex1_ninja、ex2_samurai、ex3_snake、hero_pika + _contact_sheet.png)——打开它们,将其作为优质步骤 1 静帧的视觉目标。
| 对决 | 舞台(道具、灯光) | 左侧表演者 | 右侧表演者 | 标志性特效 |
|---|---|---|---|---|
| 忍者交锋 | 黄昏时分的忍者村大门;岩石造景、彩绘门扇、纸灯笼、森林 | 金发刺猬头忍者,佩戴树叶徽记护额,穿橙色运动服 | 黑发刺猬头忍者,穿深蓝色上衣 | 灰尘 + 一团舞台烟雾 |
| 武士对恶魔 | 夜间的寺庙庭院;石灯笼、鸟居、绿色雾气 | 精瘦武士,戴斗笠,穿深色盔甲,手持武士刀 | 高大的长角恶魔,穿黑袍,长有利爪 | 绿色舞台火焰 + 火花 |
| 水上舞台决斗 | 黄昏时分的湖上水舞台;中式亭阁、红柱、灯笼、雾蒙蒙的群山 | 白衣女术士,长黑发,双臂举起 | 面色苍白的吸血鬼,穿黑袍,长有尖牙,双眼发红 | 水墙 → 喷泉 |
| 英雄/吉祥物 | 黄昏时分的木制舞台;岩石造景、灯笼、森林 | 身穿迷你道服、毛茸茸的小型“Pika”吉祥物 | 高大的长角盔甲战士,体型大得多 | 舞台火花迸发 |
每一行 = [STAGE] · [PERFORMER A] · [PERFORMER B] · [ACTION effect]。你的任务是根据用户指定的角色填写相同的四个占位内容,而不是从上表挑选。
一句话总结
身着戏服的表演者 + 主题舞台 + 人群中拍摄的粉丝 + “这只是特技表演”的场景设定 = 能成功生成的打斗影像。一场对决 → 一张舞台静帧 → 一个 10s 图像转视频片段(16:9)。音乐/音效只在后期添加,绝不通过 reference_audio 添加。