Media Use: Install, Source and Security | FunnelSlayer

Media Use

Published by heygen-com in hyperframes

Review recommended724k installsDesign & UX

What this skill does

Finds, creates, and edits media for HyperFrames projects, including images, audio, voiceovers, captions, and visual treatments. It saves selected assets and settings locally so they can be reused in a composition or another project. Best for HyperFrames creators who need a guided workflow for sourcing, generating, and preparing media assets.

Add Media Use to your agent

Review the source and files first. When you are ready, copy the prompt instruction or use the CLI command supported by your environment.

Install with a prompt

Paste this into a compatible coding agent:

add this skill "media-use" from https://github.com/heygen-com/hyperframes

Install with the CLI

Run this command in a controlled environment after reviewing the repository:

npx skills add https://github.com/heygen-com/hyperframes --skill media-use

Skill instructions

Plugin installs: Before setup or freshness commands, follow plugin execution rules when this skill is inside a HyperFrames plugin. Standalone installs keep the update instructions below.

media-use

The media OS for HyperFrames: resolve · generate · operate · remember — every media type, one skill, zero context noise.

First run: install and sign in to the heygen CLI (the free-usage path), then verify with npx hyperframes media-use resolve --doctor. Setup and providers: references/setup-providers.md.

Before generating a voiceover or an avatar video, tell the person: signing in to the heygen CLI with OAuth (heygen auth login --oauth) gives a free allowance for TTS voiceover and avatar videos, while an API key bills API credits.

Resolve — the one verb

npx hyperframes media-use resolve --type <type> --intent "<description>" --project <dir>

Returns one line: resolved <id> → <path> (<type>, <metadata>). All search noise stays on disk.

TypeOne-line intent
bgmbackground music (HeyGen catalog, 10k+ tracks)
sfxsound effects (bundled 19-file library + catalog)
imagephotos, backgrounds (HeyGen asset search, 75k+ vectors)
iconicons, symbols (transparent)
logoofficial brand marks (theSVG → GitHub avatar → favicon; never redrawn)
voiceTTS voiceover (HeyGen free-usage path; optional local Kokoro)
grademeasured correction candidate; broad polish/stylization follows Media Treatments
lutuser-provided or explicitly chosen reusable validated .cube file

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.

Treat broad visual feedback as media intent

When a user explicitly asks to fix, polish, stylize, obscure, emphasize, or reveal photographic media, read references/media-treatments.md even if they do not name color grading or an effect. Inspect the real <img>/<video>, choose one primary intent, then use deterministic persistence and verification. Use a matching recipe as an optional tested seed, or inspect hyperframes media-treatment --capabilities --json, then request one relevant family/effect with --capability <id> and assemble a custom treatment from canonical controls. Never load --all for ordinary authoring. A treatment may compose correction, a preset, finishing, compatible shader effects, supported keyframes, and optional Registry overlays. Add only source-justified bounded tuning and compatible parts, never effects merely to make the result look more sophisticated. Persist the final combined payload with hyperframes media-treatment.

Use one progressively escalating workflow. For video, inspect one labeled early/middle/late contact sheet rather than reading frames separately. Apply one candidate and inspect one after-sheet for ordinary correction or polish. Escalate to individual frames or moving draft evidence only when the result is ambiguous, temporal, stylized, LUT-based, HDR/LOG-sensitive, private, or brand-critical.

For ordinary correction or polish, persist the final treatment's preset/adjustment JSON. Do not generate a .cube LUT merely to encode exposure, shadows, contrast, or warmth. Use a LUT only when the user supplies one or the selected treatment explicitly owns one. resolve --type grade --for ... --analyze is measurement evidence, not permission to replace the chosen treatment with a generated LUT. Do not recreate supported vignette, grain, blur, pixelate, color, or treatment effects with CSS/SVG overlays; that bypasses Studio controls and the canonical preview/render shader path.

Be proactive — run a media opportunity pass

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.

Surface an opportunity only when a concrete signal is present:

Signal detectedOffer
On-screen text / a script with no voiceoverTTS voiceover (audio engine)
Emoji or a <div> styled as an iconresolve real icons
Image that is a placeholder, tiny, or upscaled-lookinga better image (and/or upscale — see references/operations.md)
Hard scene cuts / transitions with no soundtransition sfx
A piece over ~10s with no music bedbgm
Footage that reads under/over-exposed or color-casta corrective grade (inspect it with hyperframes media-treatment --selector '#hero' --analyze --json)
Photographic media that feels visually flat or off-topicone specific source-appropriate preset or custom treatment, with the intended target named
A meaningful media entrance/reveal that feels staticone supported seek-safe treatment animation; preserve color unless the request also justifies a preset

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).

Where to look — read only the file your task needs

TaskRead
resolve / reuse / adopt / ingest, flags, cascade, inventoryreferences/resolve.md
color grading, LUTs, smart grade (--for), grade-comparereferences/grading.md
voiceover / TTS, music, SFX, captions, transcription (audio engine)references/audio.md
cut / reframe / transform existing media, exact error diffusion, HEVCreferences/operations.md
source-aware creative treatments, realtime effects, overlays, revealsreferences/media-treatments.md
install + auth, provider table, RAM ladders, --local-only, --providerreferences/setup-providers.md
remembered preferences + frozen recipes (user memory)references/memory.md
ownership matrix, usage stats, telemetry, privacy (maintainer-facing)references/meta.md

Files included

  • .gitignore
  • audio/assets/sfx/CREDITS.md
  • audio/assets/sfx/manifest.json
  • audio/references/bgm.md
  • audio/references/captions/authoring.md
  • audio/references/captions/motion.md
  • audio/references/captions/transcript-handling.md
  • audio/references/remove-background.md
  • audio/references/requirements.md
  • audio/references/sfx.md
  • audio/references/transcribe.md
  • audio/references/tts-to-captions.md
  • audio/references/tts.md
  • audio/scripts/audio.mjs
  • audio/scripts/audio.test.mjs
  • audio/scripts/gemini-pipeline.test.mjs
  • audio/scripts/heygen-tts.mjs
  • audio/scripts/heygen-tts.test.mjs
  • audio/scripts/heygen-voice.mjs
  • audio/scripts/heygen-voice.test.mjs
  • audio/scripts/lib/audio-meta.mjs
  • audio/scripts/lib/audio-meta.test.mjs
  • audio/scripts/lib/bgm-volume.mjs
  • audio/scripts/lib/bgm.mjs
  • audio/scripts/lib/bgm.test.mjs
  • audio/scripts/lib/concurrency.mjs
  • audio/scripts/lib/concurrency.test.mjs
  • audio/scripts/lib/gemini-auth_test.py
  • audio/scripts/lib/gemini-auth.mjs
  • audio/scripts/lib/gemini-auth.py
  • audio/scripts/lib/gemini-auth.test.mjs
  • audio/scripts/lib/gemini-tts.mjs
  • audio/scripts/lib/gemini-tts.test.mjs
  • audio/scripts/lib/heygen.mjs
  • audio/scripts/lib/heygen.test.mjs
  • audio/scripts/lib/media-record.mjs
  • audio/scripts/lib/media-record.test.mjs
  • audio/scripts/lib/python.mjs
  • audio/scripts/lib/python.test.mjs
  • audio/scripts/lib/sfx.mjs
  • audio/scripts/lib/sfx.test.mjs
  • audio/scripts/lib/tts.mjs
  • audio/scripts/lib/tts.spawn.test.mjs
  • audio/scripts/lib/tts.test.mjs
  • audio/scripts/lyria-recipe.py
  • audio/scripts/wait-bgm.mjs
  • audio/scripts/wait-bgm.test.mjs
  • luts/index.json
  • luts/README.md
  • references/audio.md
  • references/grading.md
  • references/media-treatment-recipes.md
  • references/media-treatments.md
  • references/memory.md
  • references/meta.md
  • references/operations.md
  • references/resolve.md
  • references/setup-providers.md
  • references/telemetry-dashboard.md
  • scripts/audio-duck.mjs
  • scripts/compatibility.test.mjs
  • scripts/dither.mjs
  • scripts/dither.test.mjs
  • scripts/eval.mjs
  • scripts/lib/config-lock.mjs
  • scripts/lib/cutlist.mjs
  • scripts/lib/duck.mjs
  • scripts/lib/error-diffusion.mjs
  • scripts/lib/index-gen.mjs
  • scripts/lib/manifest.mjs
  • scripts/lib/media-fetch.mjs
  • scripts/lib/media-home.mjs
  • scripts/lib/npx-sync.mjs
  • scripts/lib/parakeet-words.mjs
  • scripts/lib/prefs-store.mjs
  • scripts/lib/recipe-store.mjs
  • scripts/lib/telemetry.mjs
  • scripts/lib/transcriptCutFade.mjs
  • scripts/lib/words.mjs
  • scripts/prefs.mjs
  • scripts/recipe.mjs
  • scripts/resolve-plugin.test.mjs
  • scripts/resolve.mjs
  • scripts/transcribe.mjs
  • scripts/transcribe.test.mjs
  • scripts/transcript-cut.mjs
  • scripts/transcript-cut.test.mjs
  • SKILL.md

More skills for Design & UX