Loading...
Loading...
Change ANYTHING inside a video — background, scene, lighting, outfit, weather, mood — from a free-form prompt, while keeping the EXACT original facial identity, motion, speech, audio AND closest supported output ratio. Edits the first frame with gpt-image-2, then propagates that look across the clip with Kling reference-video using the original clip as the identity anchor. Triggers: "change anything in my video", "edit my video with a prompt", "change the background of this video", "change my outfit in this clip", "restyle this video without changing the person", "put me on a beach", "make this video at night", "/fix-my-look".
npx skill4agent add pika-labs/pika-plugins fix-my-lookgpt-image-2klingmcp__plugin_pika_pika__normalize_video<source><change_prompt>~/Downloads/fix-my-look/<run-id>/mcp__plugin_pika_pika__*mcp__pika-mcp__*mcp__pika-prod__*mcp__plugin_pika_pika__estimate_costmcp__plugin_pika_pika__generate_imagemcp__plugin_pika_pika__generate_reference_videomcp__plugin_pika_pika__edit_concatCost not surfaced by this harnesstask_idmcp__plugin_pika_pika__upload_assetmcp__plugin_pika_pika__normalize_video(video_url=<source>, start_s=<offset>, max_duration_s=14.8, extract_audio=true, extract_face_frame=true)face_frame_urlvideo_urlmcp__plugin_pika_pika__extract_audio_from_video(video_url=<source>)face_frame_urlvideo_urlaspect_ratio = result.aspect_ratio ?? result.closest_aspect_ratioaspect_ratioduration = max(4, min(15, round(duration_s)))resolution="720p"face_foundface_frame_urlstart_smcp__plugin_pika_pika__normalize_videocrf=28start_smax_duration_sextract_audioextract_face_framemcp__plugin_pika_pika__normalize_videomcp__plugin_pika_pika__generate_imageprovider="gpt-image-2"aspect_ratio=<aspect_ratio>resolution="2K"reference_images=[<face_frame_url>]quality="high""Modify the reference photograph as follows:. Keep the person's face, identity, hair, body and pose EXACTLY as in the reference. CRITICAL: preserve every object the subject is holding or touching — phones, products, drinks, bags, props, jewelry — in the exact same hand, position, orientation and scale; never remove, replace or restyle them. Change only the requested scene, background, clothing, lighting or environment, not who the person is."<change_prompt>
mcp__plugin_pika_pika__generate_reference_videoprovider="kling"reference_videos=[<segment video_url>]reference_images=[<edited_frame_url>]aspect_ratio=<aspect_ratio>duration=<segment duration>sound=falsevideo_keep_sounds=[true]"Apply the change shown in <<<image_1>>> to <<<video_1>>>. Keep the person in <<<video_1>>> with the EXACT same face, identity, expressions, motion and timing; preserve the original video's kept sound track. The new scene/background/clothing/lighting should match <<<image_1>>>. CRITICAL: preserve every object the subject is holding or touching in <<<video_1>>> — phones, products, drinks, bags, props — in the same hand and orientation every frame. Keep mouth motion active through the final frame when the person is speaking. Do not alter the person's identity."
sound=trueerror:1201 sound on is not supported with video inputsound=falsevideo_keep_sounds=[true]mcp__plugin_pika_pika__edit_concat(video_urls=[<segment outputs in order>])mcp__plugin_pika_pika__edit_audio_replace(video_url=<concat_url>, audio_url=<full_source_audio_url>, duration_policy="video"){task_id, status}mcp__plugin_pika_pika__task_status({task_id})PASSmcp__plugin_pika_pika__edit_audio_replace(video_url=<generated_video_url>, audio_url=<full_source_audio_url or segment_audio_url>, duration_policy="video")mcp__plugin_pika_pika__edit_lipsync(video_url=<audio_restored_url>, audio_url=<full_source_audio_url or segment_audio_url>, variant="v2-pro")sync-3~/Downloads/fix-my-look/<run-id>/result.mp4not surfaced| Symptom | Cause | Fix |
|---|---|---|
| Output face drifts from the original | gpt-image-2 over-edited the face OR the provider under-weighted the source video | Re-run Step 2 with a stronger "keep the face the same" clause; soften |
| Output looks like the original (no change) | Edited image too similar, OR you passed the raw frame not the edited output | Re-run Step 2 with a more dramatic prompt; confirm the edited frame URL. |
| Output aspect doesn't match source | Source aspect not in {16:9, 9:16, 1:1, 4:3, 3:4} | Step 1 returns |
| Provider rejects the normalized video as too large | normalize output can remain too large for 4K/iPhone sources | Retry normalize once with |
| Long source only returns the first short window | The caller normalized once with | Split into 14.8s windows, generate each segment, then |
| Speaking clip loses sound, drops words, or freezes mouth at the tail | Provider regenerated speech/audio instead of preserving the source, or the face track has no mouth motion to drive | Mark as not pass. Offer one |
| Approved frame fix disappears in the video | Provider propagation reintroduced the original artifact | Re-render from a stronger approved frame or mark provider propagation caveat; do not claim the frame correction shipped. |
Kling rejects with | | Retry the Kling call with |
| Kling output is shorter than the normalized source | Provider returned a shorter render, or the caller accidentally passed a trimmed reference | Do not mark pass. Compare output duration to the normalized source, then regenerate that segment or ask the user for a shorter window. |