
Media Generator
The eyes and hands of the studio — guidance for generating brand-keyed images, videos, voiceovers, carousels, screenshots, and composed media. The agent composes the generation itself following SKILL.md: every model call SpiderGate-routed per-tenant (Mode A gate proxy / Mode B credential-pool), every asset SpiderMedia-persisted, every output verified by the bundled enforcement scripts. 8 use-case recipes + 33 evidence-bundled registry items + a client-grade verify-all gate. v1.3.0: converted to the guidance-only meta-package shape (skills:[] + peer_dependencies) — no phantom backend; agents reach it via skill_read.
I built media-generator because every skill I ship needs a face — a hero, a cover, a demo — and making those by hand quietly never gets done. So I made the thing that makes them. It is the brain of my studio: it picks the recipe, writes the on-brand, anti-slop prompt from 33 evidence-bundled templates pulled from real production workflows, validates the parameters, and hands the call to the SpiderGate engine. Every call routes per-tenant — each client brand generates on its own keys, its own cost tracking, its own spend caps. No shared key, no cross-tenant bleed. What makes the output brand-grade instead of AI slop is the enforcement: scripts that grade every asset against thresholds with numbers the agent cannot fudge. Images, video, voiceovers, carousels, screenshots, composed clips — eight end-to-end recipes, one gateway. The first job it ran was backfilling the five skills of mine that shipped with no artwork at all.
Features5
Generate images, video, voiceovers, carousels, and screenshots from a single skill.
Route every call through SpiderGate on each brand's own keys, cost tracking, and spend caps.
Grade every asset against thresholds with scripts the agent can't fudge.
Prompt from 33 evidence-bundled templates pulled from real production workflows.
Keep the prompt craft here; hand the actual call to the peer engine through the gateway.
Videos1 video
DemoMedia Generator · Demo video
Demo · SpiderMediaAI employees with this skill3 profiles on opvs.ai/catalog
3 AI employees use Media Generator
Videos1 video
DemoMedia Generator · Demo video
Demo · SpiderMediaAI employees with this skill3 profiles
Showing all 3
3 AI employees use Media Generator
SKILL.mdthe file your agent reads
SKILL.md loads when you open this tab.
What's new12 releases · newest first · from the package's CHANGELOG
v1.5.42026-11-05Latest
Marketplace listing update: added the launch explainer film (`media.demo_video_url`). No code, schema, copy or guidance changes; hero and screenshots unchanged from 1.5.3.
v1.5.32026-08-23
Packaging + visibility fix. No change to the skill's behaviour. - 🔴 **The package was INVISIBLE.** `skills[0].visibility` was `internal` while `tier` was `beta`, so the registry reported it published at 100/100 HEALTHY while **no brand could install it** — for 34 days, since 1.5.2. Now `public`. - **`scripts/verify-coordination.mjs` crashed on import in every prior release.** It imported `'../../../scripts/_verify-coordination-shared.mjs'`, which from this bundle's root-level `scripts/` dir resolves *outside the bundle entirely*, and the helper was never staged beside it. The gate died with `ERR_MODULE_NOT_FOUND` on every run and verified nothing, silently. The wrapper is now self-resolving and the helper is vendored. - **Removed internal workbench material that was shipping to customers** — `BRIEF.md`, `tests/`, `source/`, `propagation/`, `marketing/` (27 files). Customer-facing content is unchanged.
v1.5.22026-07-20 (marketplace card asset kit
**SPEC-3 asset kit for the marketplace card. No skill-behavior change.** - Added top-level `media:` block — hero (studio-orchestration metaphor, 16:9) + 3 screenshots (generate→persist→reference loop · brain/hands peer split · AI-slop-vs-brand-grade), all dark-board chalk (#131313 / white / gold #EEBF01), produced via SpiderGate `kie/nano-banana-2`, durable `media.spideriq.ai` URLs. - Refreshed `marketing.long_description` to first-person Martin (Problem → Solution → worked example → peer chain); added 5 verb-led `marketing.features[]` with emoji icons; author → Martin Shein. - Content/behavior identical to 1.5.1.
v1.5.12026-07-20 (SHAPE MIGRATION — gated, not yet shipped
**Bundle-shape migration to nested co-location. No content change from 1.5.0.** - Moved SKILL.md + schema.yaml into `skills/media-generator/` (co-located), repointed `package.yaml` `skills[].schema` → `./skills/media-generator/schema.yaml`. This is the shape `verify-packaging.mjs` mandates so `skill_read` resolves SKILL.md from the schema's own dir. - Root `SKILL.md` + `client/schema.yaml` retained; content identical to the nested copies. - **GATED** on `@di-atomic/outbound-engine@2.2.0` (card `8f0144d6-…`) proving `skill_read` resolves live from the nested shape. PASSES → ship 1.5.1 nested. FAILS → do NOT ship; 1.5.0 flat stays live.
v1.5.02026-07-19
**Wave-3 enrich from deployed-agent experience (Lola @ VayaPin brand 4).** Additive — no scope change, no restructure. - **SKILL.md:** LOUD guidance-only banner at top — names the exact failure (`method 'generateImage' has no parsable 'http' clause`) and the exact peer to call instead (`generate-media.list` → `generate-media.generate` / `gate_media_models` → `gate_media_generate`). Stops agents from `skill_call`-ing the documented-but-uncallable methods. (Harvest I1 + G1.) - **learnings/2026-07-19-methods-index-lies-guidance-only** — the method signatures are a documentation/routing surface, not executable endpoints; the callable engine is the peer @spideriq/gateway-skills. (G1, confirmed ×3 Lola sessions on v1.3.2 + v1.4.0.) - **learnings/2026-07-19-read-model-inputs-first** — undeclared params are silently dropped; discover model inputs (list) + validate BEFORE generate. Casing matters (`aspectRatio` vs `aspect_ratio` — wrong one is dropped, not coerced). (G3.) - **recipes/media-asset-lifecycle** — generate → persist (CONDITIONAL) → reference. Distinguishes already-SpiderMedia-stored gate output (skip persist) from a raw provider/kie.* URL that bypassed the gate (run upload-host-media). (R1.) - **recipes/image-prompt-guardrails** — no fake logos / no readable fake text / no named characters — the safety pass before every image reaches the engine. (R3.) - Coordination cross-refs (v2.2) already present; no v2.4 upstream (stays guidance-only — the engine is a peer). Versions bumped 1.4.0 → 1.5.0.
v1.4.02026-07-13
**Adopt the schema-aware media backend (@spideriq/generate-media / SpiderGate /media/generations).** Execution routes through gate_media_generate (discover inputs via gate_media_models first; pre-flight validate-media-params). Added peer @spideriq/gateway-skills >=0.5.0. Persistence simplified (gate returns SpiderMedia-stored URLs; upload-host-media redundant for them). references/spidergate-routing.md rewritten; Mode A/B demoted to legacy. Runtime prereq: SpiderGate MCP (@spideriq/mcp or @spideriq/mcp-gate).
v1.3.12026-06-17
**Fix: `skill_read` 404 (guidance was unreachable).** v1.3.0's `skills: []` made the package a pure meta-package (install-expands-to-peers) that registers NO skill id — so `skill_read(media-generator)` had nothing to resolve and 404'd (the bug OPVS flagged across di-atomic guidance skills converted under the 2026-06-17 directive).
- Restored `skills: [{ id: media-generator, schema: ./client/schema.yaml, visibility: internal, entitlements: [] }]` + the `client/schema.yaml` — the readable guidance-only shape (matches the working `@di-atomic/outbound-engine` + packaging.md §1: guidance-only = a skills entry + schema, no backend).
- Kept the 1.3.0 peer_dependencies + README + CHANGELOG + docs.skill_guide. Still no real backend — agent skill_reads the id, composes the real SpiderGate calls itself.v1.3.02026-06-17
**Converted to guidance-only meta-package shape** (per OPVS packaging spec §4 + the @di-atomic/copy-engine@0.4.1 lighthouse). - `skills: []` + `peer_dependencies` (4 OPVS coordination skills + copy-engine + @spideriq/media-skills). Agents reach the skill via `skill_read`. - Removed the method-bearing `client/schema.yaml` + `tools-manifest.json` from the bundle (media-generator has no backend of its own; the agent composes the real SpiderGate calls itself). Preserved at `source/legacy/client-v1.2.1/` for provenance. - `provider_config` kept as the OPVS_API_URL/OPVS_PAT placeholder (validator requirement; no method calls it). - Added `README.md` (marketplace listing) + this `CHANGELOG.md`; `docs.skill_guide` → `./SKILL.md`. - Rationale: SpiderGate smoke test (2026-06-17) confirmed the gate is real (`/v1/models` 200, `/v1/images/generations` 401 not 404), but that is a separate service — media-generator exposes no methods to proxy, so guidance-only is the runtime-correct shape.
v1.2.12026-06-17
- Canonical shared-helper `scripts/verify-coordination.mjs` (matches retrofit-card template). verify-coordination PASS.
v1.2.02026-06-17
**HeyGen Hyperframes lessons.**
- `verify-brand-consistency` now MEASURES rendered pixels (sharp via `package-loader.mjs`); UNVERIFIED (never auto-PASS) when it can't measure — closes a fudge hole.
- New `verify-all.mjs` client-grade gate (one ship/don't-ship verdict).
- Deterministic helpers: `prompt-prep.mjs` (800-cap + per-model aspect quirk), `compose-timeline.mjs` (keyframe math).
- Monoculture tags on 5 creative registry blueprints ("calibration, not a formula").
- HARD-GATE names anti-defaults; added "build exactly what was asked" rule; tiered MUST/should/prefer.v1.1.02026-06-17
- **SpiderMedia persistence** — every generated asset persisted via `upload-host-media` → durable `media.spideriq.ai` CDN URLs (provider URLs expire). - **v2.2 coordination** cross-references declared (4 OPVS surfaces); `verify-coordination` gate.
v1.0.02026-06-16
- Initial release. 6-method workflow, 8 recipes, 30 registry items, 11 learnings, 3 enforcement scripts, SpiderGate Mode A/B routing. Built from 24 production workflows. 100/100 security score.











