# Media Use > Agent Media OS: resuelve cualquier necesidad de medios (BGM, SFX, imagen, icono) en un archivo local congelado con registro. Un solo verbo, resolve, cubre caché, búsqueda, congelado y registro. Fuente: https://skillsagentes.com/skills/calesthio/openmontage/media-use Markdown: https://skillsagentes.com/skills/calesthio/openmontage/media-use.md Repositorio: https://github.com/calesthio/OpenMontage Autor: calesthio Licencia: AGPL-3.0 Actualizado: el mes pasado Coste de contexto: 90 tok instalada, 1.4k tok al activarse, 16.8k tok con todos los archivos del bundle Bundle: 19 archivos, 66 KB Permisos que pide: ninguno declarado ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add calesthio/OpenMontage --skill media-use --agent claude-code # Cursor npx -y skills add calesthio/OpenMontage --skill media-use --agent cursor # Codex npx -y skills add calesthio/OpenMontage --skill media-use --agent codex # Gemini CLI npx -y skills add calesthio/OpenMontage --skill media-use --agent gemini # Windsurf npx -y skills add calesthio/OpenMontage --skill media-use --agent windsurf # Cline npx -y skills add calesthio/OpenMontage --skill media-use --agent cline ``` ## Qué hace - Resuelve cualquier necesidad de medios — música de fondo, efectos, imagen o icono — en un archivo local congelado más un registro en el ledger - Un solo verbo, `resolve`, hace toda la cascada: caché de proyecto, caché global, búsqueda en el catálogo de HeyGen, congelado y registro - Deja el ruido de la búsqueda en disco y le devuelve al agente solo una ruta - Adopta proyectos existentes, inventariando los activos que ya hay en `assets/` - Cachea en `~/.media/` para reutilizar entre proyectos sin volver a descargar ni llamar al proveedor ## Cuándo usarla - Una composición necesita música de fondo, efectos de sonido, imágenes o iconos ## Qué la activa - "Consígueme música de fondo para esta escena" - "Necesito un efecto de sonido de clic" - "Busca un icono transparente para este bloque" ## Antes de instalar - Necesita `ffprobe` siempre, y el CLI `heygen` en versión v0.1.6 o superior con `HEYGEN_API_KEY` para los proveedores. - Necesita en el PATH: curl, node - Variables de entorno: MAX_FREEZE_BYTES - makes network requests - reads environment config ## Archivos - .gitignore — 17 B - SKILL.md — 6 KB - scripts/eval.mjs — 15 KB - scripts/lib/adopt.mjs — 4 KB - scripts/lib/bgm-provider.mjs — 650 B - scripts/lib/brand-provider.mjs — 2 KB - scripts/lib/cache.mjs — 3 KB - scripts/lib/freeze.mjs — 1 KB - scripts/lib/heygen-search.mjs — 2 KB - scripts/lib/image-provider.mjs — 1 KB - scripts/lib/index-gen.mjs — 2 KB - scripts/lib/manifest.mjs — 2 KB - scripts/lib/manifest.test.mjs — 8 KB - scripts/lib/probe.mjs — 1 KB - scripts/lib/probe.test.mjs — 2 KB - scripts/lib/providers.mjs — 759 B - scripts/lib/sfx-provider.mjs — 700 B - scripts/resolve.mjs — 8 KB - scripts/resolve.test.mjs — 7 KB ## SKILL.md Reproducido tal cual desde calesthio/OpenMontage bajo AGPL-3.0. Esta sección es el documento original y está en inglés. # 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 ```bash node /scripts/resolve.mjs --type --intent "" --project ``` Returns one line: `resolved (, )` ### 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 ```bash # Background music node /scripts/resolve.mjs --type bgm --intent "upbeat tech launch" --project . # → resolved bgm_001 → .media/audio/bgm/bgm_001.mp3 (bgm, 25s) # Sound effect node /scripts/resolve.mjs --type sfx --intent "whoosh" --project . # → resolved sfx_001 → .media/audio/sfx/sfx_001.mp3 (sfx, 0.57s) # Image node /scripts/resolve.mjs --type image --intent "gradient tech background" --project . # → resolved image_001 → .media/images/image_001.jpg (image) # Icon node /scripts/resolve.mjs --type icon --intent "rocket" --project . # → resolved icon_001 → .media/images/icon_001.png (icon, transparent) ``` ### 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//`, 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: ```bash node /scripts/resolve.mjs --adopt --project . # → adopted 9 assets from assets/ # bgm_001 → assets/bgm/mango-fizz.mp3 (bgm, 146.6s) # image_001 → assets/images/avatar.jpg (image, 400×400) ``` `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: ``` # .media · 4 assets id type dur dims path description bgm_001 bgm 25s — .media/audio/bgm/bgm_001.mp3 upbeat tech launch sfx_001 sfx 0.6s — .media/audio/sfx/sfx_001.mp3 whoosh image_001 image — 1920×1080 .media/images/image_001.jpg gradient tech background icon_001 icon — 200×200 .media/images/icon_001.png rocket ``` ## 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 ` 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: ```bash curl -fsSL https://static.heygen.ai/cli/install.sh | bash # installs latest to ~/.local/bin heygen update # if already installed: needs >= v0.1.6 export HEYGEN_API_KEY= # or: heygen auth login --key ``` 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". ## Dónde encaja - Categoría: [Automatización](https://skillsagentes.com/categorias/automatizacion.md) — Flujos de varios pasos que se ejecutan sin supervisión. - Creador: [calesthio](https://skillsagentes.com/creators/calesthio.md) — 0 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Seedance 2 5](https://skillsagentes.com/skills/calesthio/openmontage/seedance-2-5.md): Genera vídeo cinematográfico de 4-30 s con ByteDance Seedance 2.5 por fal.ai, Volcengine Ark, Runway o ComfyUI. Cubre el contrato de prompt 2.5, cortes duros, locks de continuidad y voz. - [Comfyui](https://skillsagentes.com/skills/calesthio/openmontage/comfyui.md): Úsalo al trabajar con workflows de ComfyUI en OpenMontage: comfyui_image/video/music, workflows propios, selección de output_node, modelos que faltan, LoRAs, poca VRAM e importación de workflows de la comunidad. - [Fish Audio Tts](https://skillsagentes.com/skills/calesthio/openmontage/fish-audio-tts.md): Genera narración expresiva y multilingüe con fish.audio (modelos S1 / S2) y reutiliza voces clonadas mediante reference_id. - [Minimax H3](https://skillsagentes.com/skills/calesthio/openmontage/minimax-h3.md): Genera vídeo con MiniMax H3 (Hailuo 3.0) por la API oficial v2, fal.ai, Runway, nodos partner de ComfyUI o pesos abiertos locales. Clips de 4-15s a 2K con animación de primer/último fotograma. - [Gemini Omni](https://skillsagentes.com/skills/calesthio/openmontage/gemini-omni.md): Genera y edita conversacionalmente vídeos cortos con Google Gemini Omni Flash: itera con ediciones en lenguaje natural, clips de 3-10s a 720p con audio y texto en pantalla, e imágenes de referencia por etiquetas. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)