К основному содержанию
скилл CX Codex

fix-my-look — скилл для Claude Code: меняет фон и одежду в видео

Правка любого элемента в клипе по текстовому запросу: фон, свет, одежда, погода. Лицо, движение и звук остаются исходными.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Pika-Labs/Pika-Plugins --skill fix-my-look -a claude-code
Открыть на GitHub

Что делает fix-my-look

Скилл берёт ваш клип и меняет в нём то, что вы описали словами. Сначала он вырезает первый кадр с лицом и правит его через gpt-image-2, потом переносит новый вид на всё видео через reference-video от 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. Короткие клипы до 15 секунд нормализуются одним окном 14.8s, длинные режутся на упорядоченные окна по 14.8s, и для них отдельно вытаскивается непрерывная звуковая дорожка. Соотношение сторон скилл не перекадрирует — берёт ближайшее поддерживаемое у нормализованного клипа.

Перед платной генерацией вызывается estimate_cost. Если хост не отдаёт цену, в отчёте появится строка Cost not surfaced by this harness — это повод проверить, что ваш MCP-клиент вообще возвращает стоимость. После правки кадра скилл останавливается и ждёт вашего одобрения: без него видео не генерируется. Если face_found равно false, лицо в кадре не нашлось и за основу взяли кадр t=0 — идентичность может поплыть, тогда стоит перезапустить с start_s на участке, где человек смотрит в камеру.

Какие задачи решает

  • поменять фон в клипе, не переснимая его
  • переодеть человека в кадре по текстовому описанию
  • перенести сцену в другое место или время суток
  • сохранить лицо и голос при смене окружения
  • собрать длинный клип из сегментов с единым новым видом

Примеры запросов агенту

  • /fix-my-look ~/Downloads/interview.mp4 — сделай ночь с неоновыми вывесками
  • измени фон в этом видео на пляж на Гавайях, человека не трогай
  • переодень меня в кожаную куртку в этом клипе

Как установить fix-my-look

1Через Skills CLI (Vercel)

npx skills add Pika-Labs/Pika-Plugins --skill fix-my-look -a claude-code

2Вручную: положить файлы

~/.claude/skills/fix-my-look/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/fix-my-look/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора12

build-a-brand Скилл создаёт айдентику бренда по описанию идеи, сайту или референсам: от быстрого набора до PDF-гайдлайна на 14–16 страниц. CX Codex +1 1 700установок language-swap Переводит и озвучивает видео на другой язык, сохраняя голос говорящего. Один вызов инструмента даёт синхронизированный по звуку и картинке файл. CX Codex +1 1 200установок viral-hook Добавляет к вашему видео четырёхсекундный хук без диалогов и жёстко склеивает его с основным клипом. Один вызов MCP делает весь рендер. CX Codex +1 1 000установок persona-builder Собирает из ваших соцсетей, фото и ответов персону инфлюенсера: PDF-документ, папку с persona.md и план, что исправить. CX Codex +1 965установок gameday Скилл превращает одно ваше фото в шесть снимков с трибуны в форме любимой команды. Нужен Pika MCP. CX Codex +1 727установок anime-soccer Скилл собирает 45-секундный аниме-ролик про футбол, где главный герой — вы: по фото, вашей команде и сопернику. CX Codex +1 665установок voxel-it Превращает обычное фото в кадр из Minecraft: человек остаётся фотореалистичным, а всё вокруг становится воксельными блоками. CX Codex +1 663установок 4k-vfx Превращает обычный клип в кинематографичный 4K-кадр с VFX: скилл читает каждый кадр и звук, пишет промпт и перерисовывает тот же план. CX Codex +1 600установок

Похожие

ai-image-generation 101-skills Создаёт и редактирует изображения через belt с выбором модели. Пригодится для иллюстраций, макетов и обработки готовых картинок. CX Codex +1 870 900установок muapi-cinema-director SamurAIGPT Переводит творческую задумку в технические указания для Veo3, Kling и Luma: ракурс, движение камеры, свет. Пригодится, когда из текста нужно получить кинематографичный кадр. CX Codex +1 3 100установок kling social-media-skills Скилл для генерации видео через Kling: нативное 4K, мультишот-сцены и перенос движения с референса. Пригодится, когда нужен клип, а не диалог. CX Codex +1 588установок scenario-kling scenario-labs Скилл для генерации и монтажа видео на моделях Kling через MCP Scenario: текст в видео, оживление кадра, липсинк, motion control. Пригодится, когда агент должен сам подобрать модель и запустить рендер. CX Codex +1 382установок gpt-image-2-style-library freestylefly Скилл превращает пользовательские идеи в готовые промпты для GPT-Image2 на основе библиотеки стилей awesome-gpt-image-2. Помогает сформировать композицию, теги и негативные ограничения. CX Codex +1 4 000установок kling-3-0 prime-skills Скилл запускает Kling 3.0 через RunComfy CLI: можно создать видео по тексту или оживить изображение. Выбирайте его, когда нужны несколько сцен или синхронный звук. CX Codex +1 413 200установок

Рядом в теме «ИИ и ML»

Всё по теме «ИИ и ML» →

Вопросы о fix-my-look

Как установить fix-my-look в Claude?

Выполните npx skills add Pika-Labs/Pika-Plugins --skill fix-my-look -a claude-code. Скилл появится в ~/.claude/skills/fix-my-look/SKILL.md.

Что делает fix-my-look?

Правит первый кадр с лицом через gpt-image-2 по вашему запросу, затем переносит этот вид на весь клип через reference-video от kling. Лицо, движение, речь и звук остаются исходными.

Почему скилл останавливается после правки кадра?

Он показывает отредактированный кадр и ждёт одобрения, прежде чем запускать платную генерацию видео. Если что-то не так, кадр можно переделать и посмотреть снова.

Исходный текст

SKILL.md · Apache-2.0
---
name: fix-my-look
description: >
  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".
required-capabilities:
  - 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

| 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 `change_prompt`. |
| 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 `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 large | normalize output can remain too large for 4K/iPhone sources | Retry 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 window | The caller normalized once with `max_duration_s=14.8` and skipped segmenting | Split 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 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 `edit_audio_replace` + `edit_lipsync` repair pass; if tail mouth motion is frozen, offer trim/regenerate instead. |
| 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 `error:1201 sound on is not supported with video input` | `sound=true` was passed with a video reference | Retry 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 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. |

© Pika-Labs · Apache-2.0 · Pika-Labs/Pika-Plugins

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой