Recoup Content — Make Video
Every motion job, one skill. Read the bundled references first:
references/workspace-context.md, references/account-resolver.md,
references/research-context.md, references/content-api.md (the video modes +
async create→poll), references/song-sourcing.md (real audio, no placeholders),
references/analyze-gate.md (verify before claiming done).
Backbone
Resolve the artist (use the account_id, not row id — wrong one 404s), read
context first, layer live signals, generate, analyze-gate (you can't see motion —
analyze and regenerate on failure), persist + commit. Real audio only.
Modes
- short — finished 9:16 of the artist + song. The look is a template
(bedroom/stage/outside/album-record-store; default
artist-caption-bedroom; list
via /content/templates). Fire POST /content/create, poll /tasks/runs?runId=
every ~10s until terminal, read output.{videoSourceUrl,captionText}. The async
path is agent-safe (sync /content/video times out).
- lyric — transcribe for word-level timings (
POST /content/transcribe,
audio_urls array → segments:[{start,end,text}]), generate/use an on-brand
background, burn in synced lyrics, mux full-length. Don't reproduce third-party
lyrics.
- visualizer — seamless loop, no text/logos (Spotify rejects them), 9:16,
3–8s; use
first-last with identical start/end frames; analyze-gate the seam.
- reformat — edit, don't generate: master → genuinely distinct per-platform cuts
(never identical re-uploads — platforms suppress them). Lead 9:16 with the hook
(use recoup-song-find-hook for the in-point); captions clear of UI safe zones.
Guardrails
- Verify before delivery — analyze-gate every render; never claim an unverified
asset is done.
- Real audio only (
references/song-sourcing.md).
- Stop at the asset — no posting.
References
references/workspace-context.md · references/account-resolver.md ·
references/research-context.md · references/content-api.md ·
references/song-sourcing.md · references/analyze-gate.md
1---2name: recoup-content-make-video3description: Make finished short-form video for an artist — a 9:16 TikTok/Reel/Short of the artist + song, a lyric video, a no-text visualizer/Spotify Canvas, or per-platform reformats of existing footage. Use for "make a TikTok/Reel/Short", "lyric video", "visualizer/Canvas", or "reformat this for TikTok". Modes: short, lyric, visualizer, reformat. Verifies the render before claiming done; stops at the asset. For the clip-worthy moment first, use recoup-song-find-hook.4---5
6# Recoup Content — Make Video
7
8Every motion job, one skill. Read the bundled references first:
9`references/workspace-context.md`, `references/account-resolver.md`,
10`references/research-context.md`, `references/content-api.md` (the video modes +
11async create→poll), `references/song-sourcing.md` (real audio, no placeholders),
12`references/analyze-gate.md` (verify before claiming done).
13
14## Backbone
15
16Resolve the artist (use the **`account_id`**, not row `id` — wrong one 404s), read
17context first, layer live signals, generate, **analyze-gate** (you can't see motion —
18analyze and regenerate on failure), persist + commit. Real audio only.
19
20## Modes
21
22- **short** — finished 9:16 of the artist + song. The look is a **template**
23 (bedroom/stage/outside/album-record-store; default `artist-caption-bedroom`; list
24 via `/content/templates`). Fire `POST /content/create`, poll `/tasks/runs?runId=`
25 every ~10s until terminal, read `output.{videoSourceUrl,captionText}`. The async
26 path is agent-safe (sync `/content/video` times out).
27- **lyric** — transcribe for word-level timings (`POST /content/transcribe`,
28 `audio_urls` array → `segments:[{start,end,text}]`), generate/use an on-brand
29 background, **burn in synced lyrics**, mux full-length. Don't reproduce third-party
30 lyrics.
31- **visualizer** — seamless loop, **no text/logos** (Spotify rejects them), 9:16,
32 3–8s; use `first-last` with identical start/end frames; analyze-gate the seam.
33- **reformat** — edit, don't generate: master → genuinely distinct per-platform cuts
34 (never identical re-uploads — platforms suppress them). Lead 9:16 with the hook
35 (use recoup-song-find-hook for the in-point); captions clear of UI safe zones.
36
37## Guardrails
38
39- **Verify before delivery** — analyze-gate every render; never claim an unverified
40 asset is done.
41- **Real audio only** (`references/song-sourcing.md`).
42- **Stop at the asset** — no posting.
43
44## References
45
46- `references/workspace-context.md` · `references/account-resolver.md` ·
47 `references/research-context.md` · `references/content-api.md` ·
48 `references/song-sourcing.md` · `references/analyze-gate.md`