← JuicyLucy AdsCONTENT HISTORY

Update to JuicyLucy Ads

Snapshot Sep 30, 2026 · 23:16 UTC · version 0.22.1

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "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.",
  "included_files": [
    {
      "relative_path": ".gitignore",
      "size_in_bytes": 17
    },
    {
      "relative_path": "audio/assets/sfx/CREDITS.md",
      "size_in_bytes": 1183
    },
    {
      "relative_path": "audio/assets/sfx/chime.mp3",
      "size_in_bytes": 27309
    },
    {
      "relative_path": "audio/assets/sfx/click-soft.mp3",
      "size_in_bytes": 11702
    },
    {
      "relative_path": "audio/assets/sfx/click.mp3",
      "size_in_bytes": 11702
    },
    {
      "relative_path": "audio/assets/sfx/error.mp3",
      "size_in_bytes": 51827
    },
    {
      "relative_path": "audio/assets/sfx/glitch-1.mp3",
      "size_in_bytes": 84427
    },
    {
      "relative_path": "audio/assets/sfx/glitch-2.mp3",
      "size_in_bytes": 112128
    },
    {
      "relative_path": "audio/assets/sfx/glitch-3.mp3",
      "size_in_bytes": 99072
    },
    {
      "relative_path": "audio/assets/sfx/impact-bass-1.mp3",
      "size_in_bytes": 67709
    },
    {
      "relative_path": "audio/assets/sfx/impact-bass-2.mp3",
      "size_in_bytes": 82944
    },
    {
      "relative_path": "audio/assets/sfx/key-press.mp3",
      "size_in_bytes": 3909
    },
    {
      "relative_path": "audio/assets/sfx/manifest.json",
      "size_in_bytes": 3721
    },
    {
      "relative_path": "audio/assets/sfx/notification.mp3",
      "size_in_bytes": 78576
    },
    {
      "relative_path": "audio/assets/sfx/ping.mp3",
      "size_in_bytes": 26400
    },
    {
      "relative_path": "audio/assets/sfx/pop.mp3",
      "size_in_bytes": 23040
    },
    {
      "relative_path": "audio/assets/sfx/riser.mp3",
      "size_in_bytes": 321024
    },
    {
      "relative_path": "audio/assets/sfx/sparkle.mp3",
      "size_in_bytes": 57678
    },
    {
      "relative_path": "audio/assets/sfx/typing.mp3",
      "size_in_bytes": 26852
    },
    {
      "relative_path": "audio/assets/sfx/whoosh-cinematic.mp3",
      "size_in_bytes": 177408
    },
    {
      "relative_path": "audio/assets/sfx/whoosh-short.mp3",
      "size_in_bytes": 18390
    },
    {
      "relative_path": "audio/assets/sfx/whoosh.mp3",
      "size_in_bytes": 18390
    },
    {
      "relative_path": "audio/references/bgm.md",
      "size_in_bytes": 8178
    },
    {
      "relative_path": "audio/references/captions/authoring.md",
      "size_in_bytes": 9757
    },
    {
      "relative_path": "audio/references/captions/motion.md",
      "size_in_bytes": 5656
    },
    {
      "relative_path": "audio/references/captions/transcript-handling.md",
      "size_in_bytes": 5655
    },
    {
      "relative_path": "audio/references/remove-background.md",
      "size_in_bytes": 8669
    },
    {
      "relative_path": "audio/references/requirements.md",
      "size_in_bytes": 4563
    },
    {
      "relative_path": "audio/references/sfx.md",
      "size_in_bytes": 3727
    },
    {
      "relative_path": "audio/references/transcribe.md",
      "size_in_bytes": 2987
    },
    {
      "relative_path": "audio/references/tts-to-captions.md",
      "size_in_bytes": 1975
    },
    {
      "relative_path": "audio/references/tts.md",
      "size_in_bytes": 12940
    },
    {
      "relative_path": "audio/scripts/audio.mjs",
      "size_in_bytes": 13014
    },
    {
      "relative_path": "audio/scripts/heygen-tts.mjs",
      "size_in_bytes": 4277
    },
    {
      "relative_path": "audio/scripts/lib/audio-meta.mjs",
      "size_in_bytes": 1166
    },
    {
      "relative_path": "audio/scripts/lib/bgm-volume.mjs",
      "size_in_bytes": 236
    },
    {
      "relative_path": "audio/scripts/lib/bgm.mjs",
      "size_in_bytes": 11257
    },
    {
      "relative_path": "audio/scripts/lib/concurrency.mjs",
      "size_in_bytes": 527
    },
    {
      "relative_path": "audio/scripts/lib/gemini-auth.mjs",
      "size_in_bytes": 1610
    },
    {
      "relative_path": "audio/scripts/lib/gemini-auth.py",
      "size_in_bytes": 1981
    },
    {
      "relative_path": "audio/scripts/lib/gemini-auth_test.py",
      "size_in_bytes": 4430
    },
    {
      "relative_path": "audio/scripts/lib/gemini-tts.mjs",
      "size_in_bytes": 4711
    },
    {
      "relative_path": "audio/scripts/lib/heygen.mjs",
      "size_in_bytes": 7363
    },
    {
      "relative_path": "audio/scripts/lib/python.mjs",
      "size_in_bytes": 2574
    },
    {
      "relative_path": "audio/scripts/lib/sfx.mjs",
      "size_in_bytes": 5435
    },
    {
      "relative_path": "audio/scripts/lib/tts.mjs",
      "size_in_bytes": 17346
    },
    {
      "relative_path": "audio/scripts/lyria-recipe.py",
      "size_in_bytes": 5023
    },
    {
      "relative_path": "audio/scripts/wait-bgm.mjs",
      "size_in_bytes": 5544
    },
    {
      "relative_path": "luts/README.md",
      "size_in_bytes": 1087
    },
    {
      "relative_path": "luts/index.json",
      "size_in_bytes": 1997
    },
    {
      "relative_path": "references/audio.md",
      "size_in_bytes": 2458
    },
    {
      "relative_path": "references/grading.md",
      "size_in_bytes": 6922
    },
    {
      "relative_path": "references/media-treatment-recipes.md",
      "size_in_bytes": 36072
    },
    {
      "relative_path": "references/media-treatments.md",
      "size_in_bytes": 13920
    },
    {
      "relative_path": "references/memory.md",
      "size_in_bytes": 3328
    },
    {
      "relative_path": "references/meta.md",
      "size_in_bytes": 7004
    },
    {
      "relative_path": "references/operations.md",
      "size_in_bytes": 14877
    },
    {
      "relative_path": "references/resolve.md",
      "size_in_bytes": 9793
    },
    {
      "relative_path": "references/setup-providers.md",
      "size_in_bytes": 7495
    },
    {
      "relative_path": "references/telemetry-dashboard.md",
      "size_in_bytes": 4200
    },
    {
      "relative_path": "scripts/audio-duck.mjs",
      "size_in_bytes": 4069
    },
    {
      "relative_path": "scripts/dither.mjs",
      "size_in_bytes": 9969
    },
    {
      "relative_path": "scripts/eval.mjs",
      "size_in_bytes": 14891
    },
    {
      "relative_path": "scripts/lib/cutlist.mjs",
      "size_in_bytes": 6095
    },
    {
      "relative_path": "scripts/lib/duck.mjs",
      "size_in_bytes": 3266
    },
    {
      "relative_path": "scripts/lib/error-diffusion.mjs",
      "size_in_bytes": 6631
    },
    {
      "relative_path": "scripts/lib/index-gen.mjs",
      "size_in_bytes": 1920
    },
    {
      "relative_path": "scripts/lib/manifest.mjs",
      "size_in_bytes": 7146
    },
    {
      "relative_path": "scripts/lib/media-fetch.mjs",
      "size_in_bytes": 2838
    },
    {
      "relative_path": "scripts/lib/npx-sync.mjs",
      "size_in_bytes": 2328
    },
    {
      "relative_path": "scripts/lib/parakeet-words.mjs",
      "size_in_bytes": 1149
    },
    {
      "relative_path": "scripts/lib/prefs-store.mjs",
      "size_in_bytes": 6604
    },
    {
      "relative_path": "scripts/lib/recipe-store.mjs",
      "size_in_bytes": 13020
    },
    {
      "relative_path": "scripts/lib/telemetry.mjs",
      "size_in_bytes": 6476
    },
    {
      "relative_path": "scripts/lib/transcriptCutFade.mjs",
      "size_in_bytes": 911
    },
    {
      "relative_path": "scripts/lib/words.mjs",
      "size_in_bytes": 764
    },
    {
      "relative_path": "scripts/prefs.mjs",
      "size_in_bytes": 2407
    },
    {
      "relative_path": "scripts/recipe.mjs",
      "size_in_bytes": 4040
    },
    {
      "relative_path": "scripts/resolve.mjs",
      "size_in_bytes": 657
    },
    {
      "relative_path": "scripts/transcribe.mjs",
      "size_in_bytes": 6664
    },
    {
      "relative_path": "scripts/transcript-cut.mjs",
      "size_in_bytes": 9137
    }
  ],
  "name": "media-use",
  "skill_md_contents": "---\nname: media-use\ndescription: 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.\n---\n\n> Modified by Juicy Lucy AI, UAB for JuicyLucy Ads: CLI invocation, the review-approval reference and/or frontmatter (description layout, upstream-only metadata) adjusted at build time. See the plugin root NOTICE for details.\n\n\n# media-use\n\nThe media OS for HyperFrames: resolve · generate · operate · remember — every media type, one skill, zero context noise.\n\nFirst run: install and sign in to the `heygen` CLI (the free-usage path), then verify with `hyperframes media-use resolve --doctor`. Setup and providers: `references/setup-providers.md`.\n\n## Resolve — the one verb\n\n```bash\nhyperframes media-use resolve --type <type> --intent \"<description>\" --project <dir>\n```\n\nReturns one line: `resolved <id> → <path> (<type>, <metadata>)`. All search noise stays on disk.\n\n| Type    | One-line intent                                                                  |\n| ------- | -------------------------------------------------------------------------------- |\n| `bgm`   | background music (HeyGen catalog, 10k+ tracks)                                   |\n| `sfx`   | sound effects (bundled 19-file library + catalog)                                |\n| `image` | photos, backgrounds (HeyGen asset search, 75k+ vectors)                          |\n| `icon`  | icons, symbols (transparent)                                                     |\n| `logo`  | official brand marks (theSVG → GitHub avatar → favicon; never redrawn)           |\n| `voice` | TTS voiceover (HeyGen free-usage path; optional local Kokoro)                    |\n| `grade` | measured correction candidate; broad polish/stylization follows Media Treatments |\n| `lut`   | user-provided or explicitly chosen reusable validated `.cube` file               |\n\nBefore resolving fresh, list reusable candidates with `--candidates` and judge fit yourself — reuse rules, all flags, ingest (`--from`), and adopt are in `references/resolve.md`.\n\n## Treat broad visual feedback as media intent\n\nWhen a user explicitly asks to fix, polish, stylize, obscure, emphasize, or\nreveal photographic media, read `references/media-treatments.md` even if they\ndo not name color grading or an effect. Inspect the real `<img>`/`<video>`,\nchoose one primary intent, then use deterministic persistence and verification.\nUse a matching recipe as an optional tested seed, or inspect\n`hyperframes media-treatment --capabilities --json`, then request one relevant\nfamily/effect with `--capability <id>` and assemble a custom treatment from\ncanonical controls. Never load `--all` for ordinary authoring. A treatment may\ncompose correction, a preset, finishing, compatible shader effects, supported\nkeyframes, and optional Registry overlays. Add only source-justified bounded\ntuning and compatible parts, never effects merely to make the result look more\nsophisticated. Persist the final combined payload with\n`hyperframes media-treatment`.\n\nUse one progressively escalating workflow. For video, inspect one labeled\nearly/middle/late contact sheet rather than reading frames separately. Apply one\ncandidate and inspect one after-sheet for ordinary correction or polish.\nEscalate to individual frames or moving draft evidence only when the result is\nambiguous, temporal, stylized, LUT-based, HDR/LOG-sensitive, private, or\nbrand-critical.\n\nFor ordinary correction or polish, persist the final treatment's\npreset/adjustment JSON.\nDo not generate a `.cube` LUT merely to encode exposure, shadows, contrast, or\nwarmth. Use a LUT only when the user supplies one or the selected treatment\nexplicitly owns one. `resolve --type grade --for ... --analyze` is measurement\nevidence, not permission to replace the chosen treatment with a generated LUT.\nDo not recreate supported vignette, grain, blur, pixelate, color, or treatment\neffects with CSS/SVG overlays; that bypasses Studio controls and the canonical\npreview/render shader path.\n\n## Be proactive — run a media opportunity pass\n\nThe 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.\n\nSurface an opportunity only when a concrete signal is present:\n\n| Signal detected                                          | Offer                                                                                                  |\n| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |\n| On-screen text / a script with no voiceover              | TTS voiceover (audio engine)                                                                           |\n| Emoji or a `<div>` styled as an icon                     | resolve real `icon`s                                                                                   |\n| Image that is a placeholder, tiny, or upscaled-looking   | a better `image` (and/or upscale — see `references/operations.md`)                                     |\n| Hard scene cuts / transitions with no sound              | transition `sfx`                                                                                       |\n| A piece over ~10s with no music bed                      | `bgm`                                                                                                  |\n| Footage that reads under/over-exposed or color-cast      | a corrective grade (inspect it with `hyperframes media-treatment --selector '#hero' --analyze --json`) |\n| Photographic media that feels visually flat or off-topic | one specific source-appropriate preset or custom treatment, with the intended target named             |\n| A meaningful media entrance/reveal that feels static     | one supported seek-safe treatment animation; preserve color unless the request also justifies a preset |\n\nRules 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).\n\n## Where to look — read only the file your task needs\n\n| Task                                                                      | Read                             |\n| ------------------------------------------------------------------------- | -------------------------------- |\n| resolve / reuse / adopt / ingest, flags, cascade, inventory               | `references/resolve.md`          |\n| color grading, LUTs, smart grade (`--for`), grade-compare                 | `references/grading.md`          |\n| voiceover / TTS, music, SFX, captions, transcription (audio engine)       | `references/audio.md`            |\n| cut / reframe / transform existing media, exact error diffusion, HEVC     | `references/operations.md`       |\n| source-aware creative treatments, realtime effects, overlays, reveals     | `references/media-treatments.md` |\n| install + auth, provider table, RAM ladders, `--local-only`, `--provider` | `references/setup-providers.md`  |\n| remembered preferences + frozen recipes (user memory)                     | `references/memory.md`           |\n| ownership matrix, usage stats, telemetry, privacy (maintainer-facing)     | `references/meta.md`             |\n"
}

SHA-256 of public snapshot: bbef62997f3c52e75e6698a4cb735aaacd3cd2b8bbd1b24853b9e4d3ca6c286e