Skill Tracer
Skills › HyperFrames › media-use › meta.md

meta.md

62 lines · skills/media-use/references/meta.md at a595755

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# Ownership matrix, usage stats, telemetry, privacy
2
3Maintainer-facing reference. Nothing here changes how you resolve or operate on media.
4

Ownership matrix, usage stats, telemetry, privacy

Maintainer-facing reference. Nothing here changes how you resolve or operate on media.

Raw lines 1 to 4
5## What it owns (the gaps HyperFrames leaves)
6
7HyperFrames owns media _playback_; media-use owns everything else. Each row is enforced by `packages/cli/src/media-use/lib/coverage.test.mjs` so the claim can't rot.
8
9| HyperFrames gap | media-use owns it via |
10| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
11| Audio-only, no image/icon | `resolve --type image\|icon` (heygen asset search) |
12| No third-party brand logos | `resolve --type logo` (theSVG → GitHub org avatar → domain favicon) |
13| No voice / audio generation | `resolve --type voice` (HeyGen TTS free-usage path; optional local Kokoro) + the audio engine (`audio/scripts/audio.mjs`) |
14| Scattered/duplicated audio engine | one consolidated engine under `audio/` (hyperframes-media retired) |
15| No agent media-ops (cut/reframe/transform) | `references/operations.md` + `resolve --from` to register outputs |
16| No transcript-driven cutting | `scripts/transcript-cut.mjs` compiles word-timestamp edits into cut lists |
17| No auto-duck / publish loudness | `scripts/audio-duck.mjs` + `references/operations.md` loudnorm/sidechain recipes |
18| No cross-project memory | global content-addressed cache + auto-promote (`~/.media`) |
19| Grade recipes and LUT freezing | `resolve --type grade` emits a paste-ready recipe and `resolve --type lut` freezes validated `.cube` files; direct element analysis/authoring lives in `hyperframes media-treatment` |
20| No image generation | `resolve --type image` — RAM-graded local mflux (FLUX), codex `image_gen` upsell |
21| No video generation | `resolve --type video` — HeyGen avatar video first (free-usage path, sign-in nudge on auth failure), local LTX fallback (`videogen` ladder); image-to-video, photo-avatar, dub/translate remain manual `heygen` CLI recipes (`references/operations.md`) |
22| Weak local-model defaults | HeyGen free-usage path via the `heygen` CLI; local open-source tools only as opt-in alternatives |

What it owns (the gaps HyperFrames leaves)

HyperFrames owns media playback; media-use owns everything else. Each row is enforced by packages/cli/src/media-use/lib/coverage.test.mjs so the claim can't rot.

HyperFrames gapmedia-use owns it via
Audio-only, no image/icon`resolve --type image\icon` (heygen asset search)
No third-party brand logosresolve --type logo (theSVG → GitHub org avatar → domain favicon)
No voice / audio generationresolve --type voice (HeyGen TTS free-usage path; optional local Kokoro) + the audio engine (audio/scripts/audio.mjs)
Scattered/duplicated audio engineone consolidated engine under audio/ (hyperframes-media retired)
No agent media-ops (cut/reframe/transform)references/operations.md + resolve --from to register outputs
No transcript-driven cuttingscripts/transcript-cut.mjs compiles word-timestamp edits into cut lists
No auto-duck / publish loudnessscripts/audio-duck.mjs + references/operations.md loudnorm/sidechain recipes
No cross-project memoryglobal content-addressed cache + auto-promote (~/.media)
Grade recipes and LUT freezingresolve --type grade emits a paste-ready recipe and resolve --type lut freezes validated .cube files; direct element analysis/authoring lives in hyperframes media-treatment
No image generationresolve --type image — RAM-graded local mflux (FLUX), codex image_gen upsell
No video generationresolve --type video — HeyGen avatar video first (free-usage path, sign-in nudge on auth failure), local LTX fallback (videogen ladder); image-to-video, photo-avatar, dub/translate remain manual heygen CLI recipes (references/operations.md)
Weak local-model defaultsHeyGen free-usage path via the heygen CLI; local open-source tools only as opt-in alternatives
Raw lines 5 to 23
Runs code scripts/audio.mjs :13
Runs code scripts/transcript-cut.mjs :16
Runs code scripts/audio-duck.mjs :17
24## Usage stats
26Use `resolve --stats` for a local, shareable report over the current project's `.media/` manifest, the global `~/.media/` cache, and local resolve misses. Human output is compact; add `--json` for a single machine-readable object, and `--days N` to window timestamped records.
28```bash
29npx hyperframes media-use resolve --stats --project . --days 7
30# media-use stats
31# total resolves: 12
32# misses: 2
33# hit rate: 86%
34```

Usage stats

Use resolve --stats for a local, shareable report over the current project's .media/ manifest, the global ~/.media/ cache, and local resolve misses. Human output is compact; add --json for a single machine-readable object, and --days N to window timestamped records.

npx hyperframes media-use resolve --stats --project . --days 7
# media-use stats
# total resolves: 12
# misses: 2
# hit rate: 86%
Raw lines 24 to 35
36## Telemetry
38`resolve` and the edit tools (transcribe / transcript-cut / audio-duck) send a
39usage event to PostHog (`scripts/lib/telemetry.mjs`), so we can see which
40capabilities are actually used. It is anonymous until you sign in to HeyGen
41(see Privacy below). It records only the media TYPE, the
42resolution SOURCE, and the winning PROVIDER: never the intent text, file names,
43or paths, and `$ip:null` so no IP is stored. Best-effort and non-blocking (a
44resolve never waits on or fails from telemetry).
46Opt out with `DO_NOT_TRACK=1` or `HYPERFRAMES_NO_TELEMETRY=1` (also off in CI and
47dev). Same public PostHog project key and opt-outs as the `hyperframes` CLI.
49HeyGen request tagging: every generating `heygen` call (TTS, avatar video, catalog
50search) carries the allowlisted `X-HeyGen-Client-Source: media-use` header, sourced
51from one shared constant (`HEYGEN_CLIENT_SOURCE_ARGV` in `packages/cli/src/media-use/lib/heygen-cli.mjs`)
52so a future call site can't silently ship untagged. Read-only discovery calls
53(`voice list`, `avatar list`) are intentionally left untagged.

Telemetry

resolve and the edit tools (transcribe / transcript-cut / audio-duck) send a usage event to PostHog (scripts/lib/telemetry.mjs), so we can see which capabilities are actually used. It is anonymous until you sign in to HeyGen (see Privacy below). It records only the media TYPE, the resolution SOURCE, and the winning PROVIDER: never the intent text, file names, or paths, and $ip:null so no IP is stored. Best-effort and non-blocking (a resolve never waits on or fails from telemetry).

Opt out with DO_NOT_TRACK=1 or HYPERFRAMES_NO_TELEMETRY=1 (also off in CI and dev). Same public PostHog project key and opt-outs as the hyperframes CLI.

HeyGen request tagging: every generating heygen call (TTS, avatar video, catalog search) carries the allowlisted X-HeyGen-Client-Source: media-use header, sourced from one shared constant (HEYGEN_CLIENT_SOURCE_ARGV in packages/cli/src/media-use/lib/heygen-cli.mjs) so a future call site can't silently ship untagged. Read-only discovery calls (voice list, avatar list) are intentionally left untagged.

Raw lines 36 to 54
Runs code scripts/lib/telemetry.mjs :39
Names a skill hyperframes :47
55## Privacy
57media-use uses the same shared install id as the `hyperframes` CLI/studio
58(`~/.hyperframes/config.json`). When you are signed in to HeyGen, usage is
59linked to your HeyGen account (keyed on an id derived from your username, with
60your email and username stored on it), matching the CLI behavior. The events stay coarse: media type, source, provider, and
61small counts only; intent text and paths stay local. Disable telemetry with
62`HYPERFRAMES_NO_TELEMETRY=1` or `DO_NOT_TRACK=1`.

Privacy

media-use uses the same shared install id as the hyperframes CLI/studio (~/.hyperframes/config.json). When you are signed in to HeyGen, usage is linked to your HeyGen account (keyed on an id derived from your username, with your email and username stored on it), matching the CLI behavior. The events stay coarse: media type, source, provider, and small counts only; intent text and paths stay local. Disable telemetry with HYPERFRAMES_NO_TELEMETRY=1 or DO_NOT_TRACK=1.

Raw lines 55 to 62
Names a skill hyperframes :57