Agent 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 the catalog misses; produce voiceover, transcription, captions, and background removal through one shared audio engine; operate on media (cut / reframe / transform); and reuse assets across projects. Also use for vague feedback that real footage looks dark, flat, boring, should feel retro/camcorder/print/ASCII, needs privacy, or needs a media reveal.
$npx -y skills add heygen-com/hyperframes --skill media-useInstalls into the current project.
Run `npx skills use "https://github.com/heygen-com/hyperframes" --skill "heygen-com/hyperframes/media-use"` and follow the generated skill instructions now. Read its complete output, redirecting it to a temporary file first if necessary. Resolve relative paths from the supporting-files directory it provides.
Use the skills in "https://github.com/heygen-com/hyperframes" that are relevant to the current task. Run `npx skills add "https://github.com/heygen-com/hyperframes"` and select the relevant skills, then follow their instructions.
| 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` | measured correction candidate; broad polish/stylization follows Media Treatments | |
| 24 | | `lut` | user-provided or explicitly chosen 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 | ## Treat broad visual feedback as media intent |
| 29 | |
| 30 | When a user explicitly asks to fix, polish, stylize, obscure, emphasize, or |
| 31 | reveal photographic media, read `references/media-treatments.md` even if they |
| 32 | do not name color grading or an effect. Inspect the real `<img>`/`<video>`, |
| 33 | choose one primary intent, then use deterministic persistence and verification. |
| 34 | Use a matching recipe as an optional tested seed, or inspect |
| 35 | `hyperframes media-treatment --capabilities --json`, then request one relevant |
| 36 | family/effect with `--capability <id>` and assemble a custom treatment from |
| 37 | canonical controls. Never load `--all` for ordinary authoring. A treatment may |
| 38 | compose correction, a preset, finishing, compatible shader effects, supported |
| 39 | keyframes, and optional Registry overlays. Add only source-justified bounded |
| 40 | tuning and compatible parts, never effects merely to make the result look more |
| 41 | sophisticated. Persist the final combined payload with |
| 42 | `hyperframes media-treatment`. |
| 43 | |
| 44 | Use one progressively escalating workflow. For video, inspect one labeled |
| 45 | early/middle/late contact sheet rather than reading frames separately. Apply one |
| 46 | candidate and inspect one after-sheet for ordinary correction or polish. |
| 47 | Escalate to individual frames or moving draft evidence only when the result is |
| 48 | ambiguous, temporal, stylized, LUT-based, HDR/LOG-sensitive, private, or |
| 49 | brand-critical. |
| 50 | |
| 51 | For ordinary correction or polish, persist the final treatment's |
| 52 | preset/adjustment JSON. |
| 53 | Do not generate a `.cube` LUT merely to encode exposure, shadows, contrast, or |
| 54 | warmth. Use a LUT only when the user supplies one or the selected treatment |
| 55 | explicitly owns one. `resolve --type grade --for ... --analyze` is measurement |
| 56 | evidence, not permission to replace the chosen treatment with a generated LUT. |
| 57 | Do not recreate supported vignette, grain, blur, pixelate, color, or treatment |
| 58 | effects with CSS/SVG overlays; that bypasses Studio controls and the canonical |
| 59 | preview/render shader path. |
| 60 | |
| 61 | ## Be proactive — run a media opportunity pass |
| 62 | |
| 63 | 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. |
| 64 | |
| 65 | Surface an opportunity only when a concrete signal is present: |
| 66 | |
| 67 | | Signal detected | Offer | |
| 68 | | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | |
| 69 | | On-screen text / a script with no voiceover | TTS voiceover (audio engine) | |
| 70 | | Emoji or a `<div>` styled as an icon | resolve real `icon`s | |
| 71 | | Image that is a placeholder, tiny, or upscaled-looking | a better `image` (and/or upscale — see `references/operations.md`) | |
| 72 | | Hard scene cuts / transitions with no sound | transition `sfx` | |
| 73 | | A piece over ~10s with no music bed | `bgm` | |
| 74 | | Footage that reads under/over-exposed or color-cast | a corrective grade (inspect it with `hyperframes media-treatment --selector '#hero' --analyze --json`) | |
| 75 | | Photographic media that feels visually flat or off-topic | one specific source-appropriate preset or custom treatment, with the intended target named | |
| 76 | | A meaningful media entrance/reveal that feels static | one supported seek-safe treatment animation; preserve color unless the request also justifies a preset | |
| 77 | |
| 78 | 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). |
| 79 | |
| 80 | ## Where to look — read only the file your task needs |
| 81 | |
| 82 | | Task | Read | |
| 83 | | ------------------------------------------------------------------------- | -------------------------------- | |
| 84 | | resolve / reuse / adopt / ingest, flags, cascade, inventory | `references/resolve.md` | |
| 85 | | color grading, LUTs, smart grade (`--for`), grade-compare | `references/grading.md` | |
| 86 | | voiceover / TTS, music, SFX, captions, transcription (audio engine) | `references/audio.md` | |
| 87 | | cut / reframe / transform existing media, exact error diffusion, HEVC | `references/operations.md` | |
| 88 | | source-aware creative treatments, realtime effects, overlays, reveals | `references/media-treatments.md` | |
| 89 | | install + auth, provider table, RAM ladders, `--local-only`, `--provider` | `references/setup-providers.md` | |
| 90 | | remembered preferences + frozen recipes (user memory) | `references/memory.md` | |
| 91 | | ownership matrix, usage stats, telemetry, privacy (maintainer-facing) | `references/meta.md` | |