其他
想用自由提示词修改视频背景/场景/灯光/服装/天气/氛围但严…
适用于用户要求 fix my look、change anything in my video、change background/outfit 等:按提示词改视频内容,同时锁定原始人脸身份、动作、语音、音频,并使用归一化片段支持的最接近输出比例。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 39/100 ×0.15
适用场景
想用自由提示词修改视频背景/场景/灯光/特定
解决思路
- 工作目录固定为 `~/Downloads/fix-my-look/<run-id>/`。
- 所需工具均按裸名调用 Pika MCP 工具,并按当前会话暴露的前缀调用。
- 当 source 和 change prompt 已知时开始计时。
- 在付费生成前,对计划中的 `generate_image_edit`、`generate_reference_video`、任何多段 `edit_concat`,以及可选音频/口型修复调用执行 `estimate_cost`。
- 如果宿主没有显示成本,在最终报告中写 `Cost not surfaced by this harness`,不要猜测。
- 任何工具返回 `task_id` 时,把准确值复制到运行笔记并逐字复用;不要手打长 JWT 风格任务 ID。
- 如果 source 是本地文件,先 `upload_asset`;HTTPS 媒体 URL 可直接传入。
- 归一化前决定源窗口:<=15s 的源用一个 14.8s 窗口;更长源按顺序拆成多个 14.8s 窗口。
- 对每个窗口调用 `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` 是 Step 2 的编辑目标;每个归一化后的 `video_url` 是 Step 4 该段 Kling 的参考;对每个 normalize 结果设置 `aspect_ratio = result.aspect_ratio ?? result.closest_aspect_ratio`,并把该局部 `aspect_ratio` 传到图像和视频调用。
- 如果两个字段都没有,停止并报告 normalization 输出缺少 aspect 标签。
- 每段计算 `duration = max(4, min(15, round(duration_s)))`,除非用户要求高分辨率,否则使用 `resolution=720p`。
- 如果 `face_found` 为 false,表示未找到清晰人脸且 `face_frame_url` 回退到 t=0 帧;继续但警告身份可能漂移,或在人物面向镜头的区段用该 `start_s` 重新运行。
- 参考视频提供方可能拒绝过大的参考素材。如果 normalize 结果或下游提供方错误显示归一化视频超过提供方限制,用 `crf=28` 和相同的 `start_s`、`max_duration_s`、`extract_audio`、`extract_face_frame` 值重试一次 `normalize_video`。
- 如果参考仍然太大,在另一次付费视频尝试前停止,并报告 `normalize_video` 需要 worker 侧的 1080 边 / 参考大小上限。
- 不要用本地 shell 媒体命令修补此问题。
- 用 `generate_image_edit` 编辑帧:`provider=gpt-image-2`、`aspect_ratio=<aspect_ratio>`、`resolution=2K`、`images=[<face_frame_url>]`、`quality=high`。
- prompt 必须包含:按用户 `<change_prompt>` 修改参考照片;保持人物脸、身份、头发、身体和姿势与参考完全一致;CRITICAL:保留主体拿着或触碰的每个物体——手机、产品、饮料、包、道具、珠宝——在同一只手、位置、方向和比例;绝不删除、替换或重设风格;只改请求的场景、背景、服装、灯光或环境,不改人物是谁。
- 每次重新渲染都逐字保留“保留手持物体”子句;没有它 gpt-image-2 会静默丢弃主体拿着的产品/手机。
- 如果 gpt-image-2 对 fashion、glam 或 beauty 提示返回内容策略误报,用相同意图但更保守/编辑化措辞重试一次,例如 `polished event styling, opaque clothing, natural pose, non-sexual fashion portrait`。
- 对于 makeup 提示,明确保留原始眼型、眼睑、虹膜颜色和视线;重眼线/眼影是高风险身份漂移来源。
- 展示编辑后的帧并停止;询问 “Approve for video generation, or tweak and re-render?”。
- 在批准前不要调用视频生成。
- 如需调整,重新运行 Step 2(锁定子句逐字保留)并循环。
- 对每个归一化片段调用 `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]`。
- Kling prompt 必须包含:把 <<<image_1>>> 中展示的改变应用到 <<<video_1>>>;保持 <<<video_1>>> 中的人物具有完全相同脸、身份、表情、动作和时序;保留原始视频保留的音轨;新场景/背景/服装/灯光应匹配 <<<image_1>>>;CRITICAL:在 <<<video_1>>> 中每一帧都保留主体拿着或触碰的每个物体——手机、产品、饮料、包、道具——在同一只手和方向;当人物说话时,嘴部运动保持到最后一帧;不要改变人物身份。
- 任何额外创意方向(例如 “very cinematic, soft golden light”)追加在锁定文本之后,绝不替换锁定文本。
- 不要给 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>])`。
- concat 后,当合并输出音频缺失、漂移或不连续时,运行 `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})` 直到终态。
- 报告成功前,对照源验证生成的视频:时长不得被明显截断;如果输出时长与预期源窗口或合并源时长相差超过 0.5s,将运行标记为失败/需跟进。
- 如果源有语音,音频必须持续到尾部,且嘴部运动不得在说话内容结束前冻结;如果词缺失、乱码、静音或明显不同步,不要称该运行为 PASS。
- 已批准的帧修正必须延续到视频中;如果提供方重新引入已移除的伪影,例如眼镜反光,标记为传播警告,或用更强的已批准帧重新渲染。
- 在开始、中间、片段边界和结束处比较身份;如果 Kling 保留了动作但改变了脸,将其称为提供方限制,而不是通过。
- 如果视频视觉上可接受但语音音频缺失、不完整或漂移,提供一次付费修复:先 `edit_audio_replace(video_url=<generated_video_url>, audio_url=<full_source_audio_url or segment_audio_url>, duration_policy=video)`,再 `edit_lipsync(video_url=<audio_restored_url>, audio_url=<full_source_audio_url or segment_audio_url>, variant=v2-pro)`。
- 如果模型在结尾附近冻结嘴部,不要自动继续升级到 `sync-3`;口型同步无法可靠恢复没有嘴部运动的 face track。改为提供 trim / regenerate。
- 下载结果到 `~/Downloads/fix-my-look/<run-id>/result.mp4`,并返回该路径以及最终报告字段:source、edited frame URL、final video URL、provider、job/task IDs、cost estimate 或 `not surfaced`、elapsed time、QA notes、follow-up issue。
- 输出脸相对原始漂移:gpt-image-2 过度编辑脸,或提供方低估源视频权重;重新运行 Step 2,用更强的“保持脸相同”子句;弱化 `change_prompt`。
- 输出看起来像原始视频(没有变化):编辑图太相似,或传了原始帧而不是编辑输出;重新运行 Step 2,用更戏剧化的 prompt;确认编辑帧 URL。
- 输出比例不匹配源:源比例不在 {16:9, 9:16, 1:1, 4:3, 3:4};Step 1 返回 `aspect_ratio`,或旧 worker payload 上的 `closest_aspect_ratio`;把它作为最接近的支持输出标签,并针对异形比例询问用户。
- 提供方拒绝归一化视频为太大:normalize 输出对 4K/iPhone 源仍可能太大;用 `crf=28` 重试 normalize 一次;如果仍太大,停止并提交 worker follow-up,要求 1080 边 / 参考大小上限。
- 长源只返回第一个短窗口:调用方只归一化一次且 `max_duration_s=14.8`,跳过了分段;拆成 14.8s 窗口,逐段生成,然后按顺序 `edit_concat`,需要时恢复完整源音频。
- 说话片段丢失声音、丢词或尾部冻结嘴部:提供方重新生成语音/音频而不是保留源,或 face track 没有嘴部运动可驱动;标记为未通过。提供一次 `edit_audio_replace` + `edit_lipsync` 修复;如果尾部嘴部运动冻结,改为提供 trim/regenerate。
- 已批准帧修正在视频中消失:提供方传播重新引入原始伪影;从更强的已批准帧重新渲染,或标记提供方传播警告;不要声称帧修正已交付。
- Kling 以 `error:1201 sound on is not supported with video input` 拒绝:给视频参考传了 `sound=true`;用 `sound=false` 和 `video_keep_sounds=[true]` 重试 Kling 调用;不要为 Kling 视频输入使用 `reference_audio`。
- Kling 输出比归一化源短:提供方返回更短渲染,或调用方意外传了裁剪参考;不要标记通过。比较输出时长与归一化源,然后重新生成该段或询问用户更短窗口。
适用边界 · 注意事项
- 没有 Pika MCP 工具链、gpt-image-2、Kling 或对应付费生成账号时不要使用。
- 需要改变人物身份、重新构图/改变画幅,或需要精确异形输出比例时不要使用;该技能不重新构图,只使用最接近支持的输出比例。
- 源视频没有人脸且不能接受身份漂移,或需要可靠恢复完全冻结嘴部运动时不要使用;口型同步无法可靠恢复没有嘴部运动的 face track。