media-io/skills · Archived

mediaio-generate

Generate images/videos/3D assets/audio via Media.io AI. Defaults: GPT Image 2 for image/design/text, Seedance 2.0 for video, Nano Banana 2/Lite/Pro for character/reference images, Marketing Studio for ads, Seed Audio 1.0 for audio. Use when: "generate an image", "make a video", "animate this photo", "image-to-video", "edit/stylize/remix this image", "reframe this video", "edit this video from a sketch", "create a 3D model/GLB", "create a sound effect", "make music", "text-to-audio", "create an …

First seen Aug 1, 2026

Installation

$ npx skills add media-io/skills --skill mediaio-generate

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Default branch main
Open issues 0
Status Archived

Skill metadata

Parsed from SKILL.md frontmatter.

Version0.12.0
Allowed toolsBash

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 23,942 B
  • docs SUMMARY.md 1,030 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 18 installs

SKILL.md

Media.io Generate

Submit jobs to any Media.io model. Wraps the mediaio CLI. Covers generic image/video/3D/audio generation, Marketing Studio (branded ads, avatars, products, hooks, settings), and, secondarily, Virality Predictor video scoring.

Step 0 — Bootstrap

Before any other command:

  1. If mediaio is not on $PATH, install it:

``bash curl -fsSL https://raw.githubusercontent.com/media-io/cli/main/install.sh | sh ``

  1. If mediaio account status fails with Session expired / Not authenticated, run mediaio auth login and complete the sign-in in the browser it opens and wait for confirmation.

UX Rules

  1. Be concise. No raw IDs, no JSON dumps in chat. Print the media URL for generated assets, or the text summary for Virality Predictor.
  2. No internal jargon. Don't narrate "calling mediaio cost", "polling job".
  3. Detect the user's language from the first message and reply in it. Technical args (--aspect_ratio 16:9) stay English.
  4. Don't batch-ask. Pick a sane default model and ask one thing at a time only if genuinely missing.
  5. Don't pre-estimate cost or optimize for cheaper models unless the user asks. Prefer the quality default first.
  6. Pass --wait to generate create so the command blocks until done and prints the result URL itself. Avoid the two-step create → wait pattern.

Discovery guardrail

When looking for a Media.io feature/model, do not rely only on semantic search or CLI --help. First run an unfiltered model list, then inspect likely jobsettype names. If the user says a model exists but search returns no results, trust that signal and verify with the full model list before answering.

Workflows are separate from models. Discover them with mediaio workflow list and inspect params with mediaio workflow get <workflow_name>.

Virality Predictor is exposed as:

  • Customer-facing name: Virality Predictor
  • Technical jobsettype: brain_activity
  • Category/output: text report. This is video-in/text-out analysis, not a text/chat generation model.
  • Input: uploaded video
  • Purpose: finished-video hook, attention, retention, and virality analysis

If the user says "analyze this video", "score this ad", "evaluate the hook", or similar, route to brain_activity even though it appears under text/analysis models. Classify by task intent and required input, not by output category alone.

Workflow — generic generation

  1. Pick a model. Start with the core defaults unless the brief clearly needs a specialist:

- GPT Image 2 → default image model for high-fidelity general generation, graphic design, UI, banners, typography, and on-image text. - Seedance 2.0 → default video model for serious motion, cinematic clips, multi-shot work, image-to-video, and 4–15s production-quality output up to 4K. 12s is valid. - Nano Banana 2/Lite/Pro → default for character, cartoon, stylized, and reference-driven image work; use Lite for speed/cost, Pro for harder briefs. - Marketing Studio → default for ads, UGC, product demos, unboxing, TV spots, presenter videos, and brand/product workflows. - Seed Audio 1.0 → default audio model for text-to-audio, voice, sound effects, ambience, foley, and music-like audio unless the user names Sonilo/Mirelo.

Image: - Brand product visual (Pinterest pin, lifestyle, hero banner, ad pack, virtual try-on) → use mediaio-product-photoshoot instead. NOT this skill. - Generated product concept / packaging / can / bottle with brand name or label text → GPT Image 2. - Branded ad image with avatar + product (Marketing Studio shape) → Marketing Studio Image (see Marketing Studio below) - Aesthetic UGC / fashion editorial / lifestyle character → Soul 2.0 - Cinematic still frame → Soul Cinema - Highly characterful creative persona (text-only, distinctive) → Soul Cast - Locations / environments / no-people scenes → Soul Location (best in class) - Logo, icon, vector-like illustration, brand mark, controlled-palette graphic → Recraft V4.1 (recraftv41, often with --modeltype vector) - Face edit + complex scene swap → Seedream 4.5 - Soul Character (reference id from mediaio-soul-id) → Soul 2.0 for stills, Soul Cinema for cinematic - Character or cartoon-style work → Nano Banana 2; use Nano Banana 2 Lite (nanobanana2lite) for fast/simple reference edits, step up to Nano Banana Pro on hard cases - Fast and cheap iteration → Z Image - Default for everything else → GPT Image 2. Graphic design, UI, banners, typography, and high-fidelity general generation.

Video: - Complete narrated explainer from a topic, story, or document → use mediaio-video-explainer, not generic video generation. - All advertising / commercial / branded ad video → Marketing Studio (see Marketing Studio below) - Edit existing video from sketch/timestamp, or reframe to another aspect ratio → workflow (drawtovideo or reframe), not a model. See references/workflows.md. - Default all-purpose serious video (multi-shot, consistent identity, motion-heavy, image-to-video, 4–15s requests) → Seedance 2.0. SOTA. Do not downgrade to Seedance 1.5 just because its duration enum is easier to read; validate Seedance 2.0 first. - Single-plane scene without strong dynamics, cheaper than Seedance 2.0 → Kling 3.0; if the user explicitly asks for Turbo, faster, or lower-cost Kling output → Kling 3.0 Turbo (kling30turbo) - Cheap clean shot without cuts, only when the user asks for cheaper/budget output → Seedance 1.5 Pro - Cinema-grade highest fidelity → Cinema Studio Video 3.0 - Cheap with strong physics, no audio needed → Minimax Hailuo - Fast batch / volume → Veo 3.1 Lite - Bold/stylized image-to-video from a required start image → Grok Video 1.5 (grokvideov15). Requires one --start-image or --image, duration 2–15s, resolution 480p or 720p. - Multimodal reference-to-video with up to 7 images or one video reference → Gemini Omni Flash (gemini_omni); keep Seedance 2.0 as the default serious-video pick.

Video analysis: - Rate a finished video's hook, virality potential, attention, retention, or distraction risk → Virality Predictor (brain_activity). This is a video analysis model that returns a text score/report, not a generated media asset.

3D: - A 3D asset within a playable game or game-wide asset system → use mediaio-game-generation. - Create an actual 3D mesh/model/GLB from one or more object/product reference images → Multi-Image to 3D (multiimageto3d). Pass 1–4 images with repeated --image; use --shouldtexture true when the asset needs texture. If the user only asks for a 3D-rendered picture, use an image model instead.

Audio: - Default for audio generation → Seed Audio 1.0 (seedaudio). Use for text-to-audio, sound effects, ambience, foley, impacts, environmental audio, voice-style generations, and music-like audio. It requires --prompt; use optional --audio-references/--image-references only when the user provides references. - Use Sonilo Music (sonilomusic) only when the user explicitly asks for Sonilo or you need that specialist music model. It requires --prompt and --duration, and returns audio. - Use Mirelo Text to Audio (mirelotextto_audio) only when the user explicitly asks for Mirelo or you need that legacy SFX model. It requires --prompt and --duration, and returns audio.

For the actual --model ID to pass to mediaio generate create, run mediaio model list --json | jq to map display names to IDs. See references/model-catalog.md for the full table.

  1. Pass media inputs straight to flags. Media flags accept a local file path or a UUID. CLI auto-uploads paths and auto-detects job vs upload for UUIDs. No need to pre-upload. Each model declares accepted media roles or *_references params — see references/media-inputs.md.
  2. Validate quickly. If unsure of params, run mediaio model get <jst> --json once and pass only what's needed. Validate the preferred model before falling back to an older one. Use schema defaults otherwise. The server returns adjustments for non-fatal coercions (e.g. aspect_ratio=99:99 → closest match) and a structured error for invalid declared-param values.
  3. Submit and wait in one shot. mediaio generate create <jst> [--prompt "..."] [media flags] [param flags] --wait. Blocks until terminal status and prints the result on stdout. Tunables: --wait-timeout 20m (default 10m), --wait-interval 5s (default 3s). Virality Predictor does not need a prompt; pass --video.
  4. Deliver. For generated media and 3D assets, send the primary result URL plus a one-line summary (model, duration if video; GLB/asset URL for 3D). For Virality Predictor, deliver the scores, business interpretation, and the Open report link. Do not surface Virality Predictor .glb, .bin, or region-table internals in normal chat output.

To inspect or rerun later, mediaio generate list --json and mediaio generate get <id> --json work for retrospection. mediaio generate wait <id> is still available if you ever need to rejoin a job started without --wait.

For workflow jobs, use mediaio generate workflow <workflowname> ... --wait. Cost syntax is mediaio generate cost workflow <workflowname> .... See references/workflows.md.

Media flags

Flag Purpose Models that accept it
--image <path-or-id> reference image most image models, grokvideov15, multiimageto3d, seedance20, veo3, marketingstudio_video
--start-image <path-or-id> first frame for image-to-video transitions grokvideov15, kling30, kling30turbo, kling26, veo31, seedance20, marketingstudio_video
--end-image <path-or-id> last frame for transitions kling30, seedance20, marketingstudio_video
--video <path-or-id> reference or analyzed video seedance20, brain_activity
--audio <path-or-id> reference audio (lipsync, soundtrack match) seedance20 (use this, NOT --generate-audio)

For reference-array models, the explicit flags are --image-references, --video-references, and --audio-references; --image, --video, and --audio are short aliases when the schema exposes those params.

Each flag accepts either a local file path (auto-uploaded) or a UUID (upload id from mediaio upload create, or a previous job id). Each model declares its own media roles or *_references params. See references/media-inputs.md for the full table.

Common params

Flags pass through to model schema. Use mediaio model get <jst> to discover.

mediaio generate create gpt_image_2 --prompt "neon city at dusk" --aspect_ratio 16:9 --resolution 2k --wait
mediaio generate create nano_banana_2 --prompt "anime character concept, expressive pose" --image ./ref.png --wait
mediaio generate create seedance_2_0 --prompt "camera dollies in" --start-image ./first.png --duration 12 --resolution 4k --wait
mediaio generate create grok_video_v15 --prompt "cinematic handheld shot, neon rainy street" --start-image ./image.png --duration 5 --resolution 720p --wait
mediaio generate create text2image_soul_v2 --prompt "..." --soul-id <soul_ref_id> --quality 2k --wait
mediaio generate create multi_image_to_3d --image ./front.png --image ./side.png --should_texture true --wait
mediaio generate create seed_audio --prompt "cinematic rain ambience with distant thunder" --wait
mediaio generate create sonilo_music --prompt "cinematic synthwave track" --duration 12 --wait
mediaio generate create mirelo_text_to_audio --prompt "glass breaking in a large hall" --duration 4 --wait
mediaio generate create brain_activity --video ./ad.mp4 --wait

For machine-readable output (chained pipelines, agent context), add --json. With --wait --json you get the final job object array. Without --wait, you get the job IDs. Virality Predictor stores raw analysis and render artifacts in the job params, but the default text output should stay to scores plus Open report.

Stdin prompt: echo "..." | mediaio generate create z_image --wait.

Soul image quality: for text2imagesoulv2 and soulcinematic, pass --quality 1.5k or --quality 2k. These are UI-facing tiers; the backend maps them to 720p/1080p and model-specific dimensions from the selected --aspectratio. soul_location has no quality selector; it uses fixed dimensions per aspect ratio.

Marketing Studio

Branded image/video gen: avatars + products + optional setup hooks/settings + ad-style modes. Use models marketingstudiovideo and marketingstudioimage.

Concepts

  • Avatar — presenter face. Curated preset (browse mediaio marketing-studio avatars list) or custom (uploaded photos via mediaio marketing-studio avatars create). For UGC modes, an avatar is optional if the brief clearly mentions a person; the backend can create a Soul Character automatically. Pass an avatar when the user wants a specific presenter.
  • Product — brand item with title + reference images. Imported from URL (mediaio marketing-studio products fetch --url ...) or created from uploaded images (mediaio marketing-studio products create).
  • Webproduct — App Store / web page version. Auto-routes when fetching App Store URLs.
  • Hook — reusable opening angle / ad hook. Browse with mediaio marketing-studio hooks list. Hook text is prepended to the user's prompt; it does not replace --prompt.
  • Setting — reusable environment / scene context. Browse with mediaio marketing-studio settings list.
  • Ad reference — reusable inspiration video that can be bound to an avatar and/or product. Created from an uploaded video (--video-input <uploadid>) or a previous generation job (--job <jobid>). Browse with mediaio marketing-studio ad-references list. See references/marketing-ad-references.md.
  • Brand kit — captures a brand's identity (name, logo, hero images, colours, fonts, tone) for reuse across image generations. Created by handing in a website URL (mediaio marketing-studio brand-kits fetch --url https://… --wait). See references/marketing-brand-kits.md.
  • Ad format — presets that drives the visual structure of a generated image (headline, bullet-points, etc.). Read-only, browse with mediaio marketing-studio ad-formats list. Required input for dtc-ads generate.

Discovery commands

Use these exact list commands when the user asks what already exists:

mediaio marketing-studio avatars list --json
mediaio marketing-studio products list --json
mediaio marketing-studio hooks list --json
mediaio marketing-studio settings list --json
mediaio marketing-studio ad-references list --json
mediaio marketing-studio brand-kits list --json
mediaio marketing-studio ad-formats list --json

--hookid and --settingid are supported by marketingstudiovideo only; do not pass them to marketingstudioimage.

UX rules (additional)

  • One question per phase. Don't ask product+avatar+mode upfront.
  • Two ad approaches are mutually exclusive. Either the user gives an ad reference video (reference-driven) or picks hook/setting blocks (composed-from-blocks) — never both. If the user has an ad reference selected, do not offer hook/setting; if hook/setting are picked, do not offer to attach an ad reference.
  • Ad reference source. The only valid inputs are a local video file (uploaded via mediaio upload create ... --video) or a prior video job. If the user provides anything else, ask for a local file.
  • dtc-ads ad format is mandatory. Always ask the user to pick from ad-formats list. There is no auto-default — both the CLI and server reject calls without --format-id.
  • dtc-ads optional inputs. Suggest avatars, products, and reference media when the brief calls for them; only attach what the user picks.

Workflow — quick ad video

  1. Get product.

- Existing product → mediaio marketing-studio products list --json - URL → mediaio marketing-studio products fetch --url <url> --wait (polls until import done) - Local images → mediaio upload create <photo>... then mediaio marketing-studio products create --title "..." --image <id>... Capture product id. When using --hookid, strongly prefer passing --productids; hooks are designed to pivot into a product and work poorly without product context.

  1. Pick avatar if needed.

- Default: mediaio marketing-studio avatars list and pick a preset matching the brand voice. - Custom: mediaio marketing-studio avatars create --name "..." --image <upload_id>. For UGC modes, you may omit --avatars when no specific presenter is required and the brief mentions a person; the backend can synthesize a Soul Character.

  1. Optionally pick setup items.

- Hook: mediaio marketing-studio hooks list --json - Setting: mediaio marketing-studio settings list --json Pass selected IDs as --hookid <hookid> and --settingid <settingid> for marketingstudiovideo only. Do not copy the hook's prompt into --prompt unless the user explicitly wants to reinforce the same wording.

  1. Pick mode if needed. Default is ugc; --mode is not required just because --hookid is present. Other current slugs: ugchowto, ugcunboxing, productshowcase, productreview, tvspot, wildcard, ugcvirtualtryon, virtualtryon. Hook/setting are valid only for ugc, ugchowto, ugcunboxing, productreview, ugcvirtualtryon — do not pass --hookid / --settingid with the other modes. See references/marketing-modes.md.
  2. Generate (one-shot).

```bash PRODUCTIDSJSON=$(mktemp) AVATARSJSON=$(mktemp) printf '["<productid>"]' > "$PRODUCTIDSJSON" printf '[{"id":"<avatarid>","type":"preset"}]' > "$AVATARSJSON"

mediaio generate create marketingstudiovideo \ --prompt "..." \ --avatars @"$AVATARSJSON" \ --productids @"$PRODUCTIDSJSON" \ --mode ugc \ --duration 15 \ --resolution 720p \ --aspectratio 9:16 \ --wait `` Add --hookid <hookid> and/or --settingid <settingid> when a setup hook/setting was selected. productids and avatars are JSON arrays; pass them via @/path/to/file.json. Do not pass a bare UUID to --productids. Resolution is 480p or 720p. Aspect ratio is one of auto/21:9/16:9/4:3/1:1/3:4/9:16. --generate-audio true is supported here (unlike seedance2_0). --wait blocks until done; bump --wait-timeout 30m` for longer ad runs.

  1. Deliver. URL + one-line summary (mode, duration).

Click-to-Ad shortcut (URL-driven)

When the user gives a product URL and wants a marketing video in one go:

# 1. Trigger fetch (returns the product id, import runs in the background)
mediaio marketing-studio products fetch --url https://shop.example.com/sneakers --wait

# 2. Generate the marketing video against the same URL — backend reuses the entity
mediaio generate create marketing_studio_video \
  --url https://shop.example.com/sneakers \
  --mode ugc \
  --duration 15 \
  --aspect_ratio 9:16 \
  --wait

Backend dedupes by URL, so repeated runs reuse the existing entity instead of re-fetching.

Workflow — marketing image

Same as above but use marketingstudioimage model:

mediaio generate create marketing_studio_image \
  --prompt "..." \
  --aspect_ratio 1:1 \
  --resolution 2k \
  --wait

Virality Predictor video scoring

Use Virality Predictor (brainactivity) when the user wants to evaluate a finished video as a business creative: hook strength, virality potential, attention, retention, or how well the content/product holds focus and minimizes distraction. Treat "Virality Predictor" as the customer-facing feature name; brainactivity is only the CLI/jobsettype.

mediaio generate create brain_activity --video ./creative.mp4 --wait

The result is text, not a generated image/video. Report the overall score, peak hook second, sustain score, strongest/weakest regions, and report URL if present. Interpret it as an objective attention proxy for creative testing: higher Visual/Auditory/Language/Attention scores suggest stronger stimulus and focus; lower Default Mode is better because it suggests less mind-wandering.

The CLI prints an Open report URL like https://<app-domain>/apps/virality-predictor?resultJobId=<jobid>. Send that URL for the visual report. Raw artifact URLs such as brainexample_url, vertexMapBinaryUrl, and vertexMapUrl are implementation details; mention them only when the user asks for raw data or implementation details.

Good final shape:

Overall score: 44/100
Peak hook: 49% at 1s
Sustain: 89%
Strongest region: Visual Cortex
Risk: Default Mode is high, which can indicate mind-wandering.

Open report: <report_url>

Errors

  • Missing required params: prompt → user gave no prompt; ask for it.
  • Missing required params: medias on brain_activity / Virality Predictor → pass exactly one video via --video <path-or-id>.
  • Invalid values: aspect_ratio=99:99 (allowed: ...) → bad enum; pick from allowed.
  • Unknown params: foo → schema doesn't accept that flag; check mediaio model get <jst>. If this happens for hookid or settingid, the selected model/jobsettype does not support Marketing Studio setup items.
  • Session expired → mediaio auth login.

See references/troubleshooting.md for more.

Reference docs

Load on demand:

  • references/model-catalog.md — picking the right model for the task
  • references/workflows.md — drawtovideo and reframe workflow generation
  • references/prompt-engineering.md — writing prompts that work
  • references/media-inputs.md — image/video/audio reference flows and Virality Predictor video analysis
  • references/troubleshooting.md — common errors and fixes
  • references/marketing-avatars.md — preset vs custom avatars
  • references/marketing-products.md — URL fetch vs manual product create
  • references/marketing-setup-items.md — hooks/settings discovery and usage
  • references/marketing-ad-references.md — ad reference videos (create/list/get)
  • references/marketing-brand-kits.md — brand kits (fetch from URL, list, get)
  • references/marketing-dtc-ads.md — DTC Ads Engine (dtc-ads generate)
  • references/marketing-modes.md — every Marketing Studio mode