media-use
Agent Media OS — resolve any media need (BGM, SFX, image, icon) into a frozen local file + ledger record. One verb (`resolve`) handles the full cascade — project cache, global cache, HeyGen catalog search, freeze, register. Keeps search noise on disk, hands the agent a path. Use when a composition n
By calesthio · 550 installs
npx skills add calesthio/openmontage --skill media-use
Source repository · Upstream listing
media use
Resolve media needs into frozen local files. One verb, four types, zero context noise.
When to use
Call resolve whenever a composition needs media — background music, sound effects, images, or icons. media use searches the HeyGen catalog, downloads the best match, freezes it locally, and registers it in a manifest. The agent gets back one line; all search noise stays on disk.
Resolve
Returns one line: resolved <id → <path (<type , <metadata )
Types
Type What it finds Provider
bgm Background music HeyGen audio catalog (10k+ tracks)
sfx Sound effects Bundled 19 file library + HeyGen catalog
image Photos, backgrounds HeyGen asset search (75k+ vectors)
icon Icons, logos HeyGen asset search (type=icon)
Examples
Flags
Flag Description
type, t Media type: bgm, sfx, image, icon
intent, i What you need (natural language)
entity, e Entity name for cache matching (optional)
project, p Project directory (default: .)
adopt Bulk import existing assets/ into manifest
json Output JSON instead of one line result
How it works
1. Check project .media/manifest.jsonl for exact prompt match
2. Scan existing assets/ directory for unregistered files matching the need
3. Check global cache ~/.media/ for reusable asset
4. Search via provider (HeyGen audio catalog, HeyGen asset search)
5. Freeze file to .media/<type / , register in manifest, regenerate index.md
The agent gets back one line . Candidates, scores, provenance stay on disk.
Adopt existing projects
Most HyperFrames projects already have assets in assets/ . media use adopts them:
ffprobe extracts real duration and dimensions. During resolve, unregistered files in assets/ matching the intent are adopted on the fly.
Reading the inventory
After resolve or adopt, read .media/index.md for the full inventory:
Cross project reuse
Assets are cached automatically on resolve. Subsequent resolves for the same prompt hit the global cache at ~/.media/ — no re download, no provider call. Promote an asset explicitly with organize promote <id to make it reusable across all projects.
Files
.media/manifest.jsonl — machine SSOT, one JSON record per line
.media/index.md — agent readable table (id, type, dur, dims, path, description)
~/.media/ — global cross project reuse cache (content addressed, SHA 256)
CLI tools used
Tool Purpose Required?
ffprobe Probe duration, dimensions, codec on adopt Yes
heygen Audio catalog, asset search For providers
Install the heygen CLI (single static binary, no runtime) and authenticate:
Requires heygen = v0.1.6 — the providers tag requests with the allowlisted headers 'X HeyGen Client Source: media use' flag, added in v0.1.6. asset search is a pre launch command hidden from heygen help , but it runs. Without a heygen on PATH (or a valid key) the providers print a one line diagnostic to stderr and resolve falls through to "no provider could resolve".