Fix My Look

pika-labs/pika-plugins/skills/fix-my-look

作者 pika-labsf27b3ba28a7b無授權條款40 個星標收錄於 2026年10月9日更新於 2026年10月8日儲存庫2 個月前更新

Use when the user asks for fix my look or a task matching the examples below. 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".

僅含說明Design & Creative
AI 產生的概覽

依文字提示編輯影片,同時保留人物臉部、動作與音訊。

功能
接收來源影片與自由形式的修改提示,先用 gpt-image-2 編輯第一個可用影格,再以 Kling 參考影片、以原始片段作為身分錨點,把該效果套用到整段影片。它會正規化並切分來源影片,在編輯影格處暫停等待確認,拼接多段輸出,並可修復或對嘴音訊。最後進行時長、音訊與身分品管,並把結果下載到本機執行資料夾。
適用情境
適用於想更改影片背景、場景、光線、服裝、天氣或氛圍,同時不改變人物身分、動作或語音的情況。適合例如把人物放到海灘、讓片段看起來像夜晚,或依提示重新設計影片風格等需求。
執行需求
需要一個 Pika MCP 工作階段,提供 upload_asset、normalize_video、estimate_cost、generate_image_edit、generate_reference_video、edit_concat、extract_audio_from_video、edit_audio_replace、edit_lipsync 與 task_status 等工具,並能連線這些服務商。需要含音訊的來源影片,且涉及付費生成呼叫。此技能未附帶指令碼,僅為指示文件。

fix-my-look

Edit the source's first usable frame with gpt-image-2 from the user's prompt, then propagate that look across the clip with kling reference-video while locking the original face, motion and audio via the original video + audio as references. All prep happens in one normalize_video call for short clips, or one normalize call per segment for longer clips. The output ratio uses the normalized clip's closest supported output ratio; this skill does NOT reframe the source video.

Inputs

  • <source> — path or URL to a video file with audio
  • <change_prompt> — what to change (e.g. "make it night with neon lights", "change my shirt to a leather jacket", "put me on a beach in Hawaii")

Empty-args menu

  1. "What's the source video path?"
  2. "What do you want to change? (e.g. 'put me on a beach', 'make it night')"

Workflow

Working dir: ~/Downloads/fix-my-look/<run-id>/.

Step 0 — Cost, timer and task IDs

Every tool named below is a Pika MCP tool, written by its bare name. Call it under whatever prefix your session exposes for the Pika MCP.

Start a timer when the source and change prompt are known. Before paid generation, call estimate_cost for the planned generate_image_edit, generate_reference_video, any multi-segment edit_concat, and any optional audio/lipsync repair call. If cost is not surfaced by the host, say Cost not surfaced by this harness in the final report instead of guessing. When any tool returns a task_id, copy the exact value into the run notes and reuse it verbatim; do not hand-type long JWT-style task IDs.

Step 1 — Prepare the clip

Local file? upload_asset it first; an HTTPS media URL passes directly. Decide the source windows before normalizing: use one 14.8s window for sources <=15s, and split longer sources into ordered 14.8s windows. Call normalize_video(video_url=<source>, start_s=<offset>, max_duration_s=14.8, extract_audio=true, extract_face_frame=true) once per window. Use the first window's face_frame_url for the edited still; use each window's video_url as that segment's motion/identity reference. For multi-window clips, also call extract_audio_from_video(video_url=<source>) so the final merged output can be restored to one continuous source audio track.

Wire the result into the rest: face_frame_url is the Step 2 edit target; each normalized video_url is Kling's reference for that segment in Step 4; set aspect_ratio = result.aspect_ratio ?? result.closest_aspect_ratio for each normalize result, then carry that local aspect_ratio through the image and video calls. If neither field is present, stop and report that normalization output is missing an aspect label. Compute duration = max(4, min(15, round(duration_s))) per segment, and use resolution="720p" unless the user asked for high res. If face_found is false, no clear face was found and face_frame_url fell back to the t=0 frame — proceed but warn identity may drift, or re-run with a start_s at a section where the subject faces camera.

Reference-video providers can reject oversized reference assets. If the normalize result or the downstream provider error shows a normalized video is over the provider limit, retry normalize_video once with crf=28 and the same start_s, max_duration_s, extract_audio, and extract_face_frame values. If the reference is still too large, stop before another paid video attempt and report that normalize_video needs a worker-side 1080-edge / reference-size cap. Do not patch this with local shell media commands.

Step 2 — Edit the frame with gpt-image-2 (the "change" stage)

generate_image_edit with provider="gpt-image-2", aspect_ratio=<aspect_ratio>, resolution="2K", images=[<face_frame_url>], quality="high", prompt:

"Modify the reference photograph as follows: <change_prompt>. 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."

Keep the "preserve held objects" clause verbatim on every re-render — without it gpt-image-2 silently drops products/phones the subject is holding.

If gpt-image-2 returns a content-policy false positive for fashion, glam, or beauty prompts, retry once with the same intent but a modest / editorial wording such as "polished event styling, opaque clothing, natural pose, non-sexual fashion portrait". For makeup prompts, explicitly preserve the original eye shape, eyelids, iris color and gaze; heavy eyeliner/eye shadow is a high-risk identity-drift source.

Step 3 — Show the edited frame and wait for approval

Surface the edited frame and STOP. Ask "Approve for video generation, or tweak and re-render?" Do NOT call video generation until approved. For tweaks, re-run Step 2 (locked clauses verbatim) and loop.

Step 4 — Propagate via Kling reference-video

For each normalized segment, call generate_reference_video with 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], prompt:

"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."

Append any extra creative direction (e.g. "very cinematic, soft golden light") after the locked text — never replace it.

Do not pass sound=true to Kling with a video input. Kling rejects that combination with error:1201 sound on is not supported with video input; use sound=false plus video_keep_sounds=[true] to keep the source video's audio.

If the source was split into multiple windows, call edit_concat(video_urls=[<segment outputs in order>]). After concat, run edit_audio_replace(video_url=<concat_url>, audio_url=<full_source_audio_url>, duration_policy="video") when the merged output audio is missing, drifted, or discontinuous.

Only try Seedance if the user explicitly asks for it, or if Kling fails and a second provider attempt is useful. Use the same segmenting rule and record the provider error plainly if Seedance rejects the input or drops speech/action.

Async handling: if any call returns a {task_id, status} envelope, poll task_status({task_id}) in a tight loop until terminal.

Step 5 — Audio, duration and identity QA

Before reporting success, verify the generated video against the source:

  • Duration must not be meaningfully cut off. If output duration differs from the intended source window or merged source duration by more than 0.5s, mark the run as failed / needs follow-up.
  • If the source has speech, audio must be present through the tail and mouth movement must not freeze before the spoken content ends. If words are missing, garbled, silent, or visibly out of sync, do not call the run PASS.
  • The approved frame corrections must persist into the video. If the provider reintroduces a removed artifact such as eyeglass glare, mark it as a propagation caveat or re-render from a stronger approved frame.
  • Compare identity at start, middle, segment boundaries, and end. If Kling preserved motion but changed the face, call that out as a provider limitation instead of a pass.

If the video is visually acceptable but speech audio is missing, incomplete, or drifted, offer one paid repair pass:

  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")

If the model froze the mouth near the end, do not keep escalating to sync-3 automatically; lip-sync cannot reliably recover a face track with no mouth motion. Offer trim / regenerate instead.

Step 6 — Download + return

Download the result to ~/Downloads/fix-my-look/<run-id>/result.mp4 and return that path plus the final report fields: source, edited frame URL, final video URL, provider, job/task IDs, cost estimate or not surfaced, elapsed time, QA notes, and follow-up issue.

Failure modes

SymptomCauseFix
Output face drifts from the originalgpt-image-2 over-edited the face OR the provider under-weighted the source videoRe-run Step 2 with a stronger "keep the face the same" clause; soften change_prompt.
Output looks like the original (no change)Edited image too similar, OR you passed the raw frame not the edited outputRe-run Step 2 with a more dramatic prompt; confirm the edited frame URL.
Output aspect doesn't match sourceSource aspect not in {16:9, 9:16, 1:1, 4:3, 3:4}Step 1 returns aspect_ratio, or closest_aspect_ratio on older worker payloads; use it as the closest supported output label and ask the user for exotic aspects.
Provider rejects the normalized video as too largenormalize output can remain too large for 4K/iPhone sourcesRetry normalize once with crf=28; if still too large, stop and file worker follow-up for a 1080-edge / reference-size cap.
Long source only returns the first short windowThe caller normalized once with max_duration_s=14.8 and skipped segmentingSplit into 14.8s windows, generate each segment, then edit_concat in order and restore full source audio if needed.
Speaking clip loses sound, drops words, or freezes mouth at the tailProvider regenerated speech/audio instead of preserving the source, or the face track has no mouth motion to driveMark as not pass. Offer one edit_audio_replace + edit_lipsync repair pass; if tail mouth motion is frozen, offer trim/regenerate instead.
Approved frame fix disappears in the videoProvider propagation reintroduced the original artifactRe-render from a stronger approved frame or mark provider propagation caveat; do not claim the frame correction shipped.
Kling rejects with error:1201 sound on is not supported with video inputsound=true was passed with a video referenceRetry the Kling call with sound=false and video_keep_sounds=[true]; do not use reference_audio for Kling video input.
Kling output is shorter than the normalized sourceProvider returned a shorter render, or the caller accidentally passed a trimmed referenceDo not mark pass. Compare output duration to the normalized source, then regenerate that segment or ask the user for a shorter window.

來源與署名

來源:pika-labs/pika-plugins位於skills/fix-my-look提交f27b3ba

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架

更多來自 pika-labs/pika-plugins 的技能

Voxel It

pika-labs

把照片變成 Minecraft 風格畫面,人物維持寫實,只將物件、背景或兩者體素化。

Design & Creative402 個月前更新

Viral Hook

pika-labs

透過 Pika MCP 渲染呼叫,為使用者影片前置一段吸睛鉤子和可選標題。

Design & Creative402 個月前更新

Vfx

pika-labs

Use when the user asks for vfx or a task matching the examples below. Turn a plain video clip into a cinematic AI-VFX shot at 1080p by default (or 4K / 720p on request). Give Claude a video and the change you want; it reads EVERY frame via local contact sheets and understands the audio, writes a Seedance-faithful prompt that locks your face, gestures, and camera move, then re-renders the same shot with the VFX baked in via Seedance reference-to-video.

待分類402 個月前更新

Ugc Ads

pika-labs

Use when the user asks for ugc ads or a task matching the examples below. Multi-cut jump-cut UGC product ad — HOOK + 3 JUMP CUTs + OUTRO, 15s, 9:16 vertical (3:4 optional, seedance only), POV first-person talking-head selfie, every beat has spoken dialogue with native lip-sync, 5-act narrative arc (set → name → reveal → twist → punchline). Six category essences (HAUL / APP / FOOD / BEAUTY / FITNESS / TECH) auto-picked from the input URL. Creator-style raw UGC talking-head with multi-beat conversational dialogue. Use when the user asks to "make a UGC ad", "jump-cut product ad", "POV product reveal", "creator-style ad", "haul-style ad", "unboxing ad", "TikTok-style product video", or "talking-head ad about [URL]".

待分類402 個月前更新

Stagefight

pika-labs

產生觀眾手機拍攝的舞台化 cosplay 對戰短片:先用 gpt-image-2 產生舞台靜態畫面,再產生約 10 秒 16:9 的圖生影片對打片段。

Design & Creative402 個月前更新

Podcast

pika-labs

Use when the user asks for podcast or a task matching the examples below. Two-host podcast video for any URL or free-form topic — 1 minute, 4 acts × ~15s, native multi-shot dialogue, optional voice cloning for Host A. Use when the user asks to "make a podcast", "podcast about [thing]", "podcast review of [url]", "two-host explainer", "interview-style clip", "two people talking on camera", "I/me and X talk about Y", or "interview with [persona] about [topic]". Native audio is the deliverable; captions are skipped by default because podcast dialogue mistranscribes domain terms.

待分類402 個月前更新