$npx -y skills add heygen-com/hyperframes --skill media-useAgent Media OS, the single skill for every media need in a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, resolve); generate via TTS / music / image models when
| 1 | # media-use |
| 2 | |
| 3 | The media OS for HyperFrames: resolve · generate · operate · remember — every media type, one skill, zero context noise. |
| 4 | |
| 5 | First run: install and sign in to the `heygen` CLI (the free-usage path), then verify with `node <SKILL_DIR>/scripts/resolve.mjs --doctor`. Setup and providers: `references/setup-providers.md`. |
| 6 | |
| 7 | ## Resolve — the one verb |
| 8 | |
| 9 | ```bash |
| 10 | node <SKILL_DIR>/scripts/resolve.mjs --type <type> --intent "<description>" --project <dir> |
| 11 | ``` |
| 12 | |
| 13 | Returns one line: `resolved <id> → <path> (<type>, <metadata>)`. All search noise stays on disk. |
| 14 | |
| 15 | | Type | One-line intent | |
| 16 | | ------- | ----------------------------------------------------------------------------------- | |
| 17 | | `bgm` | background music (HeyGen catalog, 10k+ tracks) | |
| 18 | | `sfx` | sound effects (bundled 19-file library + catalog) | |
| 19 | | `image` | photos, backgrounds (HeyGen asset search, 75k+ vectors) | |
| 20 | | `icon` | icons, symbols (transparent) | |
| 21 | | `logo` | official brand marks (svgl → simple-icons → GitHub avatar → favicon; never redrawn) | |
| 22 | | `voice` | TTS voiceover (HeyGen free-usage path; optional local Kokoro) | |
| 23 | | `grade` | paste-ready HyperFrames `data-color-grading` block | |
| 24 | | `lut` | reusable validated `.cube` file | |
| 25 | |
| 26 | Before resolving fresh, list reusable candidates with `--candidates` and judge fit yourself — reuse rules, all flags, ingest (`--from`), and adopt are in `references/resolve.md`. |
| 27 | |
| 28 | ## Be proactive — run a media opportunity pass |
| 29 | |
| 30 | The human usually can't tell which media would lift the piece. You can. When you build or review a composition, do **one** grounded scan and then **ask once** — don't silently add, and don't nag per asset. |
| 31 | |
| 32 | Surface an opportunity only when a concrete signal is present: |
| 33 | |
| 34 | | Signal detected | Offer | |
| 35 | | ------------------------------------------------------ | ------------------------------------------------------------------------------------------- | |
| 36 | | On-screen text / a script with no voiceover | TTS voiceover (audio engine) | |
| 37 | | Emoji or a `<div>` styled as an icon | resolve real `icon`s | |
| 38 | | Image that is a placeholder, tiny, or upscaled-looking | a better `image` (and/or upscale — see `references/operations.md`) | |
| 39 | | Hard scene cuts / transitions with no sound | transition `sfx` | |
| 40 | | A piece over ~10s with no music bed | `bgm` | |
| 41 | | Footage that reads under/over-exposed or color-cast | a corrective `grade` (analyze with `grade --for`, preview with `hyperframes grade-compare`) | |
| 42 | |
| 43 | Rules that keep this a help, not nagware: **grounded, not generic** (no signal → no suggestion); **opinionated + concrete** (propose the specific fix with defaults chosen — the human approves **all / some / none**); **once per project** (one consolidated ask; respect "leave it"); **surface, never silently mutate** (color grades especially: propose and preview — a gray-world "correction" ruins an intentional sunset or neon look). |
| 44 | |
| 45 | ## Where to look — read only the file your task needs |
| 46 | |
| 47 | | Task | Read | |
| 48 | | ------------------------------------------------------------------------- | ------------------------------- | |
| 49 | | resolve / reuse / adopt / ingest, flags, cascade, inventory | `references/resolve.md` | |
| 50 | | color grading, LUTs, smart grade (`--for`), grade-compare | `references/grading.md` | |
| 51 | | voiceover / TTS, music, SFX, captions, transcription (audio engine) | `references/audio.md` | |
| 52 | | cut / ref |