Cover animator (~5s reveal → og_video_url)
Turn a finished launch cover (the one made per references/app-cover.md) into
a short reveal animation for the feed card's og_video_url: the hero scene
moves, the typography and plates fly in, and the last frame lands exactly on
the approved cover.
PERMISSION-GATED. The cover video costs credits. OFFER it when publishing ("want a short cover video for the feed card?") and only generate it after the user says yes — never unprompted. Everything else in the publish gate (cover image, OG, favicon) ships without asking; the video is the one exception (see
references/app-flow.mdpublish gate item 6).
The trick: end-frame reveal
seedance_2_0 accepts an end frame (--end-image). Pass the finished cover as
the END frame and describe the buildup — this guarantees the video finishes
pixel-perfect on the approved cover while the model invents the entrance. Do NOT
pass it as --start-image (that drifts away from the cover instead of revealing
it).
Workflow
1. Read the cover's content
Use the plain full-bleed cover (marketplace_cover_url / <name>_cover.png),
NOT the OG version — the OG's frame and capsule confuse the motion model. (If
only an OG exists it still works; then instruct the model to keep the frame and
dots perfectly static.) Look at the image and note the hero subject, background,
title text, tagline, pill CTA, and logos — you'll reference these concretely in
the prompt.
2. Design the beats (~5s), all derived from the cover's actual content
- 0–1.5s — scene alive, no text yet. The hero scene exists and moves contextually: fur ripples, stars orbit, clouds drift, train lights flicker, camera pushes in slowly. Name the motion that fits THIS cover's subject.
- 1.5–3.5s — text entrance. The title pops/slides/bounces in (match the motion to the typography: pixel type snaps in block by block, chrome bubble letters inflate, condensed uppercase slams down), the tagline fades up, the pill CTA slides in with a soft bounce.
- 3.5–5s — settle. Micro-motion only; everything eases into the exact final composition (the end frame).
3. Generate
--end-image accepts a local file path (the CLI auto-uploads it) or the UUID of
a prior higgsfield upload create, so you can pass the cover file straight in.
Call higgsfield generate create once:
higgsfield generate create seedance_2_0 \
--aspect_ratio auto --duration 5 --resolution 1080p --mode std \
--generate_audio false --count 1 \
--end-image <cover_file_or_upload_id> \
--prompt "<see template>" --wait
--generate_audio false by default (feed cards autoplay muted); set true only
if the user asks for sound. Duration 5 unless the user wants another length
(4–15 supported). If a param is rejected, run higgsfield model get seedance_2_0
and use what it reports.
Prompt template — fill from your beat design, keep the ending anchor sentence:
Premium 5-second motion cover reveal, smooth cinematic easing. The scene starts WITHOUT any text or plates: [SCENE AT START + CONTEXT MOTION — e.g. "the fluffy lime creature slowly rotates, its fur rippling in the light, stars drifting"]. Then the title "[TITLE TEXT]" [ENTRANCE MOTION matched to its typography], the tagline fades up beneath it, and the small rounded pill button slides in with a soft bounce. All elements ease precisely into their final positions and the video ends exactly on the provided end frame, holding still for the last moments. Subtle camera push-in, no flicker, no extra text, no new objects.
If animating an OG cover, append: "The solid color frame, corner dots and capsule shape stay perfectly static at all times."
4. Wire into the app
With --wait the command blocks and prints the result; otherwise poll
higgsfield generate wait <id> / higgsfield generate get <id>. Take the mp4
and set it as og_video_url in app/src/app-meta.json — either the hosted
https URL directly, or download it into app/public/ (e.g.
app/public/cover-video.mp4) and set "og_video_url": "/cover-video.mp4".
Commit + deploy; the feed card picks it up on the next deploy. Review the
result: if the ending visibly drifts from the cover or extra text appears
mid-video, regenerate once naming the flaw (e.g., "the title must not change
after it lands").
For a standalone "animate this cover" request (not a publish), just save the
mp4 as <name>_cover_anim.mp4 and show it.
Deviations
The user's wishes win: other durations, with sound, animating the OG version,
looping intent (then ask for subtle motion and no big entrance), vertical
covers, seedance_2_0_mini for cheap drafts.