Pipeline Hub

format-motion-transfer

Motion transfer / actor swap: take only the MOTION of a source clip (choreography, camera move, comedic timing) and re-perform it with OUR cast, OUR set and OUR audio, either as a trend-gag hook spliced onto a paying Dawn body or as a new-cast fatigue refresh of our own winner.

Lane: motion-transfer/recast role (NOT BUILT: one-clip proof first) feeding cartoon-h3; photoreal people (target images, spoken lines, talking-head refreshes) = ugc-omni with its G0-G4 gates · not built yet: 6 (see below) · source: /Users/ayden/.openclaw/workspace/skills/format-motion-transfer

SKILL.mdbeat-sheet.mdsources.mdEvals (7)Learnings (11)
1. Read first2. When to use / when not3. The format4. Why it sells5. Beat sheet (full sheet + provenance sheet in references/beat-sheet.md)6. Pack spec7. Visual grammar8. Audio9. Production (free until the proof; the route is NOT BUILT)10. Gates & QA checklist11. Variants & test plan12. Failure modes13. Sources

format-motion-transfer — their motion, our people, our set, our sound

A transform, never a re-upload. The only thing taken from a source is how bodies and camera MOVE. Faces, set, outfit, text, audio and footage never reach our ad, unless the footage is ours.

1. Read first

2. When to use / when not

3. The format

4. Why it sells

5. Beat sheet (full sheet + provenance sheet in references/beat-sheet.md)

Source rules first (narrows format-ad-clone §5; a source failing this never reaches a model):

Source type (ad-clone §5 names; licensed is added here because ad-clone covers reference ads, not reusable footage) Allowed here? Route class Proof of rights (written in provenance.md)
own-winner / own footage Yes, all routes recast, restyle, motion-control Our ad ID + CPA, or the file's origin in our output dir / Fish's camera roll; any person in it consented. Creator footage (Jessica/Kris/Lori, ugc-engine creators): Fish confirms the usage terms cover AI modification (the SOP grants perpetual paid usage, AI edits not stated). NOT charswap outputs (derived from third-party/competitor footage)
licensed / stock Yes, if the licence allows AI modification + paid ads recast, motion-control Licence URL/PDF saved beside the source
organic-viral trend (not an ad) MOTION only motion-control only (generate-from-image) Trend proof: ≥5 unrelated accounts doing the same move in the last 60 days (handles + play counts); no credited choreographer or creator-claimed routine; no brand in it
non-competitor-scaler ad No (its footage is someone's ad) — Use format-ad-clone (structure remix)
lane-leader-competitor Never — Gap map only (ad-clone)
Beat (mode T) % Job Must contain
1 Motion hook 0-20 Stop the scroll with the borrowed move Our cast + our set; overlay names HER symptom; no product
2 Turn 20-30 The gag lands on her Her stake in action (the 5th trip, the late slip); first VO line
3-6 Parent body 30-100 Sell The paying body unchanged from body_start (root cause, mechanism, product, payoff, CTA, end card (optional, --end-card; off by default per Fish 10-06))

Mode R: the parent's beats 1:1; only the cast changes (then voice: one per pass, ad-clone §11). Segments where the band is in a hand or on a wrist are NOT recast: recast regenerates hands and has no product gate (ungated band-in-hand scored 3-4/10, 10-04). They stay the original real footage, or are rebuilt as a ugc-omni b-roll whose frame passes pick --name broll_<id> --product (≥7/10 vs the real pack, display-off wording, worn or resting across a palm).

Shot tiers (core §2b): the transfer hook = tier A (the hook's first 3 s); mode R segments with people acting = B; empty-room or insert segments = C (keep the original footage, no generation). Note the tier per segment in ## Segments.

6. Pack spec

No loader exists for motion clips. Each run writes output/motion-transfer/<slug>/plan.md; the spliced body keeps its own cartoon-h3 pack. - Front matter: core §5 keys plus format_skill: format-motion-transfer, mode: T|R|O, parent: (paying ad + CPA), iteration: (the one variable), source_type: own-winner|licensed|organic-viral, source_receipt: (ad ID / licence path / trend list), motion_source: output/motion-transfer/<slug>/motion.mp4, route_role: motion-transfer/recast, route_model: (the registry candidate under test), keep_source_audio: false (true only for own footage in mode R), hook_secs, body_from: (parent pack + body_start). - ## Provenance: the rights block from references/beat-sheet.md, filled. ## Segments: N. src <in>-<out>s → target <image> | orientation video|image | <who moves, what move, camera>. - Cast: cartoon = our sheets only (text-to-image via python3 -m scripts.cartoon_h3.sheet); photoreal = a ugc-omni avatar from a real creator frame we may use (own/licensed footage or a real creator reference with the genetic change). Never i2i from a third-party source performer's frame. Envs: our plates (kitchen, teen room, hallway, car).

7. Visual grammar

8. Audio

9. Production (free until the proof; the route is NOT BUILT)

cd ~/.openclaw/workspace; S=<slug>; D=output/motion-transfer/$S; mkdir -p $D
# 1 SOURCE (free). Own: copy the file. Trend: tikwm fetch (format-ad-clone §9 command), then the trend proof:
cd ~/tt-creative-sourcer && python3 -c "import sourcer,json; d=sourcer.tikwm_get('/api/feed/search?keywords=<move+keywords>&count=20'); print(json.dumps([[v.get('play_count'),v.get('author',{}).get('unique_id'),v.get('title','')[:60]] for v in d.get('videos',[])],indent=0))"
# 2 TRIM + MUTE + CONTACT SHEET (free): one segment, 5-10 s, one shot
cd ~/.openclaw/workspace && ffmpeg -ss <in> -to <out> -i <src.mp4> -an -c:v libx264 -crf 18 $D/motion.mp4
ffmpeg -i $D/motion.mp4 -vf "fps=2,scale=270:-1,tile=6x4" -frames:v 1 $D/motion-sheet.png
python3 scripts/ad_dissector.py $D/motion.mp4 --slug $S-src --no-scribe     # beat timings (1 Gemini call)
# 3 TARGET IMAGE (paid ~$0.15-0.30, Fish's go): our cast in our set, posed like frame 1
python3 -m scripts.cartoon_h3.sheet $D/target.png $D/target-prompt.txt <cast-sheet.png> <env-plate.png>
# 4 READ SCHEMA + PRICE (free) for the registry candidate, every time
curl -s "https://fal.ai/api/openapi/queue/openapi.json?endpoint_id=fal-ai/kling-video/v3/standard/motion-control" | python3 -m json.tool | grep -A3 '"description"'
# 5 HOOK VO (EL quota): hook-only pack with the parent's voice → vo + vo_check
python3 -m scripts.cartoon_h3.run --pack output/concept-packs/$S-hook.md --stage vo
# 6 GENERATE: only after the proof (§10 P1/P2) passed and the route is wired. Proof call shape in references/beat-sheet.md.
# 7 MUX + SPLICE (free): transfer clip + hook VO (padded to clip length), then + parent body from body_start
ffmpeg -i $D/transfer.mp4 -i output/cartoon-h3/<hook-pack-slug>/vo.mp3 -map 0:v -map 1:a -af apad -shortest -c:v copy $D/hook-final.mp4
ffmpeg -i $D/hook-final.mp4 -ss <body_start_s> -i <parent-final.mp4> -filter_complex "[0:v]scale=1080:1920,fps=30,setsar=1[a];[1:v]scale=1080:1920,fps=30,setsar=1[b];[a][0:a][b][1:a]concat=n=2:v=1:a=1[v][au]" -map "[v]" -map "[au]" $D/final.mp4
python3 scripts/gemini_qa.py --asset $D/final.mp4 --type final --style cartoon   # then Fish watches

10. Gates & QA checklist

11. Variants & test plan

12. Failure modes

NOT BUILT (needs Fish's go)

13. Sources

davidaistar: analysis/gemini_Rf1uHxSWpjU.md + txt/Rf1uHxSWpjU.txt (Kling Motion segment), analysis/ugc_seedance.md (Rqim7SlMtZg motion-swap pipeline, OvAyKctgNE4 omni-ref modes), analysis/gemini_Rqim7SlMtZg.md, analysis/guide_copy_images_shorts.md (5Aj7S-Z4ct8, BHmPSaROT7c, 0jcFpsnuJh0, I0QSg8vOByc; lIu6HLlKDvE has no transcript), analysis/diff_cloning.md, analysis/diff_ai_ugc.md. Ours: skills/format-ad-clone/SKILL.md, scripts/charswap_overnight.py, scripts/charswap_source_refs.py, scripts/charswap_batch2.py, scripts/higgsfield_unlim.py, scripts/seedance_broll_runner.py, output/model-catalog/fal-2026-10-06.json, fal OpenAPI schemas (read 10-06); memory reference_higgsfield_cli_gotchas.md, feedback_higgsfield_credit_discipline.md, corrections-hot.md, feedback_ai_avatar_broll_lane.md. Details in references/sources.md.

Not built yet (needs Fish's go)

Every line in this skill that mentions something not built, roughly de-duplicated. Some items repeat in different words.