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)

Motion transfer — beat sheet, provenance sheet, proof call

Percentages are of the finished ad. Segments are cut on the source's shot boundaries, never mid-move. One segment = one generation.

1. Provenance sheet (fill FIRST; G0 — nothing paid runs without Fish's yes on this block)

## Provenance
source_file:        output/motion-transfer/<slug>/source.mp4   (never uploaded to Meta or the hub)
source_type:        own-winner | licensed | organic-viral       (format-ad-clone §5 names; licensed added here)
receipt:            own → ad ID + CPA, or camera-roll origin + who is in it (consent: yes/no)
                    licensed → licence URL/PDF path; AI modification allowed: yes/no; paid ads allowed: yes/no
                    organic-viral → table of ≥5 unrelated accounts: handle | date | play_count | link
                    creator footage → Fish confirmed the usage terms cover AI modification: yes/no
not a competitor:   brand(s) visible in source: none / <name> (any brand → stop, route to format-ad-clone)
not one creator's:  is the move credited to a choreographer or claimed as a creator's routine? no / yes (yes → stop)
taken:              MOTION ONLY (mode T/O third-party)  |  footage + motion + audio (own, mode R)
replaced:           people ✓  set ✓  outfit ✓  audio ✓  text/captions ✓  product ✓
route class:        motion-control (any allowed source) | recast/restyle/edit (own or licensed only)
mouth:              source performer mouths words? no / yes (yes → face away or drop)
wrist:              hand/arm rises to camera or face? no / yes (yes → drop or crop)

2. Mode T — trend hook on a paying body

Runtime = parent runtime − parent hook + transfer hook. Hook 3-8 s (motion-control image orientation caps the source at 10 s; video at 30 s).

# Beat % Source Job Rules
1 Motion hook 0-20 transfer clip The borrowed move, our cast, our set Overlay line 1 (≤10 words) names HER by an observable symptom; no product; no mouthed words; wrists low
2 Turn 20-30 transfer clip tail or first body line The gag is her morning First VO line (hook-only pack, parent's narrator voice), pronoun-first, said-out-loud test; the stake lands on her
3 Root cause 30-50 parent body Why he doesn't wake Fish's ruled line verbatim (sound doesn't reach a deep-sleeping brain)
4 Mechanism + product 50-75 parent body Touch gets through Silent to everyone else; keeps going until he turns it off; wrist rule
5 Payoff 75-92 parent body Relief / vindication on HER Recipe A or B per the parent
6 CTA 92-100 parent body Offer + end card (optional, --end-card; off by default per Fish 10-06) Price/guarantee per live PDP

3. Mode R — refresh our own winner with a new cast

# Beat Rule
all Parent's beats 1:1 Same cuts, same audio, same timing. Only the people change (recast reference_image_urls, one photo per person, left-to-right order)
pass 2 Voice (optional, separate ad) New EL voice over the same words; vo_check
pass 3 Product (optional, separate ad) Only if the source product shot is off-truth: replace it with real footage, the real cutout composite, or a ugc-omni b-roll frame that passed pick --product
any Band-in-hand / band-on-wrist segments Not recast (no product gate in recast); the original real footage stays, or a gated ugc-omni b-roll replaces it
- Recast takes 5-30 s per call with no single shot over 15 s: split longer winners on shot boundaries, recast each, re-join with the original audio track.

4. Mode O — own performance

Fish/team films the gag on a phone: vertical, one person, full or upper body, unoccluded, plain wall, 5-10 s, no speech. That clip is the motion source for mode T (motion-control) and the proof clip for both routes.

5. Segment line grammar (## Segments in plan.md)

N. src 0.0-6.2s → target target.png | orientation video | MOM (ours) walks to the teen-room door, knocks twice, throws hands up, walks out; camera static at hallway height

6. Proof call shape (G-proof only; paid; Fish's go; read schema + price first)

cd ~/.openclaw/workspace
python3 - <<'EOF'
import sys, json; sys.path.insert(0, "scripts"); import fal_api; fal_api._ensure_key(); import fal_client
D = "output/motion-transfer/<slug>"
vid = fal_client.upload_file(f"{D}/motion.mp4"); img = fal_client.upload_file(f"{D}/target.png")
# P1 recast (own/licensed footage only): ~$1.50 for 5 s at 768P (page 10-06: $0.30/s)
r = fal_client.subscribe("minimax/h3-max/recast", arguments={"video_url": vid, "reference_image_urls": [img], "resolution": "768P"})
# P2 motion-control (any allowed source): price from the fal page, cap ~$2
# r = fal_client.subscribe("fal-ai/kling-video/v3/standard/motion-control", arguments={"image_url": img, "video_url": vid, "character_orientation": "video", "keep_original_sound": False})
print(json.dumps(r)[:600])
EOF

7. Structure example (ILLUSTRATIVE — shape only, not shipping copy; real lines come from VOC and Fish's approval)

Mode T, parent = a paying cartoon story body. 1. (transfer, 0-6 s) Our cartoon mom walks to a closed teen-room door, knocks, waits, throws both hands up, walks off; the move mirrors a "fifth time asking" trend. Overlay: "Trip number five. He hasn't moved." 2. (VO, mom) "I've been his alarm clock for three years." → splice into the parent at body_start. 3. (parent body) root cause line → band buzzes on a resting wrist, display dark → he's up before her → end card (optional, --end-card; off by default per Fish 10-06).