mcpField
F
fix-my-look

fix-my-look

github.com/pika-labs创意与媒体41957 次安装14 周前更新
代码仓库

关于 fix-my-look

用于修改视频外观的工作流技能,面向希望改变场景、服装或光线,同时保留人物身份、动作和原音频的用户。先编辑首帧并等待确认,再将效果传播到视频片段。

主要功能

  1. 01编辑源视频首个可用画面
  2. 02通过参考视频传播画面风格
  3. 03保留人物身份、动作与音频
  4. 04长视频按片段处理并合并
  5. 05检查时长、音频和身份一致性

适用场景

  1. 01将视频背景改为夜景或海滩
  2. 02更改人物服装并保留其身份
  3. 03分段处理较长视频并保留连续音频

MCP 相关

使用 Pika MCP 工具完成视频规范化、图像编辑、参考视频生成及检查;具体调用前缀由会话提供。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pika-labs/pika-plugins --skill fix-my-look

安装后在 Claude Code 中输入/fix-my-look确认已加载。

详细介绍

fix-my-look

根据用户的提示词,使用 gpt-image-2 编辑源视频中第一个可用帧, 然后使用 kling 参考视频将这一外观扩展到整个片段,同时通过将原始视频 + 音频 作为参考来锁定原始人脸、动作和音频。短片的所有准备工作都在一次 normalize_video 调用中完成;较长片段则每个分段调用一次 normalize。输出比例采用标准化片段最接近的受支持输出比例;此 技能不会重新构图源视频。

输入

  • <source> — 带音频的视频文件路径或 URL
  • <change_prompt> — 要进行的更改(例如:“把场景改成有霓虹灯的夜晚”、 “把我的衬衫换成皮夹克”、“把我放到夏威夷的海滩上”)

参数为空时的菜单

  1. “源视频的路径是什么?”
  2. “你想进行什么更改?(例如:‘把我放到海滩上’、‘把场景改成夜晚’)”

工作流

工作目录:~/Downloads/fix-my-look/<run-id>/。

步骤 0 — 费用、计时器和任务 ID

下方提到的所有工具都是 Pika MCP 工具,使用其裸名称。通过当前会话为 Pika MCP 提供的任意前缀调用这些工具。

源视频和更改提示词确定后,启动计时器。在付费生成之前,对计划调用的 generate_image_edit、 generate_reference_video、任何多片段 edit_concat,以及任何可选的音频/口型同步修复 调用,调用 estimate_cost。如果宿主未提供费用信息,请在最终报告中注明 Cost not surfaced by this harness,不要猜测。 任何工具返回 task_id 时,都要将其准确值复制到运行记录中,并逐字复用;不要 手动输入很长的 JWT 风格任务 ID。

步骤 1 — 准备片段

本地文件?先用 upload_asset 上传;HTTPS 媒体 URL 可直接传入。在标准化之前确定源视频窗口:源视频不超过 15 秒时,使用一个 14.8 秒 窗口;更长的源视频则按顺序拆分成多个 14.8 秒窗口。每个窗口调用一次 normalize_video(video_url=<source>, start_s=<offset>, max_duration_s=14.8, extract_audio=true, extract_face_frame=true)。 使用第一个窗口的 face_frame_url 作为编辑静帧; 使用每个窗口的 video_url 作为该分段的动作/身份参考。对于 多窗口片段,还要调用 extract_audio_from_video(video_url=<source>),以便 最终合并后的输出能恢复为一条连续的源音轨。

将结果传递给后续步骤:face_frame_url 是步骤 2 的编辑目标; 每个标准化后的 video_url 都是步骤 4 中 Kling 的参考视频; 对每个标准化结果,设置 aspect_ratio = result.aspect_ratio ?? result.closest_aspect_ratio, 然后在图像和视频调用中传递该局部 aspect_ratio。如果这两个字段都不存在,就停止并报告标准化 输出缺少宽高比标签。对每个分段计算 duration = max(4, min(15, round(duration_s))),并使用 resolution="720p" 除非用户要求高分辨率。如果 face_found 为 false,说明没有找到清晰的人脸, face_frame_url 已回退到 t=0 的帧——继续处理,但要警告身份可能发生漂移;或者使用主体 面对镜头的片段重新运行,并设置相应的 start_s。

参考视频提供商可能会拒绝过大的参考素材。如果标准化结果或下游提供商错误表明标准化视频 超过了提供商限制,请使用相同的 start_s、max_duration_s、extract_audio 和 extract_face_frame 值,再次调用 normalize_video,并设置 crf=28。如果参考素材仍然过大,请在再次尝试付费视频生成之前停止,并报告 normalize_video 需要在 worker 端限制 1080 边长 / 参考素材大小。不要使用本地 shell 媒体命令来绕过此问题。

步骤 2 — 使用 gpt-image-2 编辑画面(“更改”阶段)

使用 generate_image_edit,参数为 provider="gpt-image-2"、 aspect_ratio=<aspect_ratio>、resolution="2K"、 images=[<face_frame_url>]、quality="high",提示词:

“按以下要求修改参考照片:<change_prompt>。人物的面部、身份、头发、身体和姿势必须与参考照片完全一致。 关键:保留人物手持或触碰的所有物品——手机、产品、饮品、包、道具、珠宝——确保它们仍在同一只手中,位置、方向和比例完全相同;切勿移除、替换或重新设计这些物品。仅更改要求的场景、背景、服装、光线或环境,不要改变人物身份。”

每次重新生成时,都要逐字保留“保留手持物品”条款——若不加这条,gpt-image-2 会悄悄移除人物手持的产品或手机。

如果 gpt-image-2 针对时尚、魅力或美妆提示词错误触发内容政策限制,请用相同意图重试一次,但改用得体、偏编辑风格的措辞,例如“精致的活动造型、不透明服装、自然姿势、非情色时尚肖像”。对于妆容提示词,请明确保留原有的眼型、眼睑、虹膜颜色和视线方向;浓重的眼线或眼影是导致身份漂移的高风险来源。

步骤 3 — 展示编辑后的画面并等待批准

展示编辑后的画面,然后停止。询问:“批准生成视频,还是要调整后重新生成?”获得批准前,不要调用视频生成。若需调整,请重新运行步骤 2(锁定条款逐字不变)并循环执行。

步骤 4 — 通过 Kling 参考视频传播更改

对于每个标准化片段,调用 generate_reference_video,参数为 provider="kling"、reference_videos=[<segment video_url>]、reference_images=[<edited_frame_url>]、aspect_ratio=<aspect_ratio>、duration=<segment duration>、sound=false、video_keep_sounds=[true],提示词:

“将 <<<image_1>>> 中所示的更改应用到 <<<video_1>>>。<<<video_1>>> 中人物的面部、身份、表情、动作和时间节奏必须完全一致;保留原视频中保留的音轨。新的场景/背景/服装/光线应与 <<<image_1>>> 一致。关键:保留 <<<video_1>>> 中人物手持或触碰的所有物品——手机、产品、饮品、包、道具——确保每一帧中它们都在同一只手中,方向也保持一致。人物说话时,嘴部动作应持续到最后一帧。不要改变人物身份。”

任何额外的创意指导(例如“极具电影感,柔和的金色光线”)都应追加在锁定文本之后,切勿替换锁定文本。

输入视频时,不要向 Kling 传入 sound=true。Kling 会拒绝这种组合,并返回 error:1201 sound on is not supported with video input;请使用 sound=false 加 video_keep_sounds=[true],以保留源视频音频。

如果源视频被拆分为多个时间窗口,请调用 edit_concat(video_urls=[<segment outputs in order>])。 拼接后,如果合并输出的音频缺失、不同步或不连续,请运行 edit_audio_replace(video_url=<concat_url>, audio_url=<full_source_audio_url>, duration_policy="video")。

只有在用户明确要求使用 Seedance,或 Kling 失败且值得尝试第二个提供方时,才尝试 Seedance。使用相同的分段规则;如果 Seedance 拒绝输入或丢失语音/动作,请明确记录提供方错误。

异步处理:如果任何调用返回 {task_id, status} 信封,请持续紧密轮询 task_status({task_id}),直到任务进入终止状态。

步骤 5 — 音频、时长与身份 QA

报告成功之前,请将生成的视频与源素材进行核对:

  • 时长不得出现明显截断。如果输出时长与预期源片段时长或合并后的源素材时长相差超过 0.5s,则将本次运行标记为失败 / 需要跟进。
  • 如果源素材中有人声,音频必须持续到片尾,且口型不得在人声内容结束前冻结。如果有词语缺失、含混不清、无声或明显不同步,则不得将本次运行标记为 PASS。
  • 已批准的帧修正必须保留到视频中。如果提供方重新引入已移除的瑕疵(例如眼镜反光),则将其标记为传播方面的注意事项,或从更完善的已批准帧重新渲染。
  • 在开头、中间、片段边界和结尾处比较身份。如果 Kling 保留了动作却改变了面部特征,应指出这是提供方的限制,而不能判定为通过。

如果视频在视觉上可以接受,但语音音频缺失、不完整或发生漂移,则提供一次付费修复:

  1. edit_audio_replace(video_url=<generated_video_url>, audio_url=<full_source_audio_url or segment_audio_url>, duration_policy="video")
  2. edit_lipsync(video_url=<audio_restored_url>, audio_url=<full_source_audio_url or segment_audio_url>, variant="v2-pro")

如果模型在结尾附近冻结了口部动作,不要自动继续升级到 sync-3;口型同步无法可靠地恢复没有口部动作的面部轨迹。建议裁剪 / 重新生成。

步骤 6 — 下载并返回

将结果下载到 ~/Downloads/fix-my-look/<run-id>/result.mp4,并返回该路径以及最终报告字段:源素材、编辑后帧 URL、最终视频 URL、提供方、作业 / 任务 ID、费用估算或 not surfaced、耗时、QA 备注和后续问题。

故障模式

症状原因解决方法
输出中的人脸与原始人脸不一致gpt-image-2 对人脸编辑过度,或提供商对源视频赋予的权重不足使用更强的“保持人脸不变”要求重新运行 Step 2;减弱 change_prompt。
输出看起来和原始内容一样(没有变化)编辑后的图像与原图太相似,或你传入的是原始帧而非编辑后的输出使用更明显的提示词重新运行 Step 2;确认编辑后帧的 URL。
输出画幅比例与源内容不匹配源内容的画幅比例不属于 {16:9, 9:16, 1:1, 4:3, 3:4}Step 1 会返回 aspect_ratio,较旧的 worker 负载则会返回 closest_aspect_ratio;使用它作为最接近的受支持输出标签,并就特殊画幅比例询问用户。
提供商以文件过大为由拒绝规范化后的视频对于 4K/iPhone 源内容,规范化后的输出仍可能过大使用 crf=28 重试一次规范化;若仍然过大,则停止并提交 worker 后续处理请求,限制为 1080 边长/参考尺寸。
较长的源内容只返回了第一个短片段调用方只使用 max_duration_s=14.8 规范化了一次,没有进行分段将内容拆分为 14.8 秒的窗口,分别生成各个片段,然后按顺序执行 edit_concat;必要时恢复完整的源音频。
说话片段丢失声音、漏掉词语,或结尾处嘴部静止提供商重新生成了语音/音频,而非保留源内容;或者人脸轨迹没有可用于驱动的嘴部动作标记为未通过。提供一次 edit_audio_replace + edit_lipsync 修复;如果结尾处嘴部动作静止,则改为提供裁剪或重新生成。
视频中已批准的帧修复消失提供商传播过程重新引入了原始瑕疵使用更强的已批准帧重新渲染,或标注提供商传播方面的注意事项;不要声称帧修正已交付。
Kling 因 error:1201 sound on is not supported with video input 拒绝请求将 sound=true 与视频参考一同传入使用 sound=false 和 video_keep_sounds=[true] 重试 Kling 调用;Kling 视频输入不要使用 reference_audio。
Kling 输出比规范化后的源内容短提供商返回了较短的渲染结果,或调用方误传了经过裁剪的参考内容不要标记为通过。比较输出时长与规范化后源内容的时长,然后重新生成该片段,或请用户提供更短的窗口。

评论

支持 Markdown