Design & media

Wavespeed

Try it

Generate or edit AI media (image, video, audio, 3D) by calling the wavespeed CLI on the user's machine. Use whenever the user asks to create, edit, animate, upscale, or transform a visual asset, generate audio/TTS/music, or produce marketing creatives. Every model on the WaveSpeed platform is one `wavespeed run <id>` call.

What it does

You have access to the CLI. Every generation flows through one verb. There are no image / video shortcuts; the model id is always explicit.

The skill document

WaveSpeed

You have access to the wavespeed CLI. Every generation flows through one verb. There are no image / video shortcuts; the model id is always explicit.

The four-step pattern

1. FIND a model — search the live catalog

wavespeed models "nano banana"
wavespeed models --type image-to-video --popular
wavespeed models --type image-to-image       # all models + prices, sorted by type

Price recon: Omit --popular to see the full list with per-run prices. Pipe through sort or scan manually for budget decisions. --type supports: text-to-image, image-to-image, text-to-video, image-to-video, audio-generation, video-generation, 3d-generation, llm.

2. INSPECT its inputs — dynamic schema, per model

wavespeed run google/nano-banana-2/text-to-image -h

3. CONFIRM with the user before running

Present the planned model, prompt, and any key parameters (e.g. aspect ratio, resolution, duration, input image URL) to the user in a clear summary. Ask explicitly: "Shall I proceed?" Wait for their go-ahead before executing.

4. RUN it — always pass --json so you can read the result

wavespeed run google/nano-banana-2/text-to-image \
  -p "a cyberpunk skyline at golden hour" \
  -i aspect_ratio="16:9" -i resolution="2k" --json

run --json returns { model, prompt, outputs: [url, ...], saved: [path, ...], elapsed_ms, raw }. Use the URL when the user wants a link. Add --download if they need bytes on disk.

Resolution reminder: If the user didn't specify an image resolution or video quality, apply the defaults from the Resolution defaults section — don't ask unless it matters to their use case.

Use caseModelPrice
Text → image (默认)openai/gpt-image-2/text-to-image—
Image edit / 图生图 (默认)openai/gpt-image-2/edit—
Text → video (默认)bytedance/seedance-2.0/text-to-video—
Image → video (默认)bytedance/seedance-2.0/image-to-video—
Text → image (budget)google/nano-banana-2/text-to-image$0.07
Image edit (style/quality)google/nano-banana-2/edit — aspect_ratio supported, ~23s$0.07
Image edit (best value)bytedance/seedream-v4.5/edit — strong prompt adherence, ~28s$0.04
Image edit (budget)wavespeed-ai/flux-2-flash/edit — fast, decent quality, ~10-20s$0.013
Image edit (bilingual CJK/EN)wavespeed-ai/qwen-image/edit — Chinese+English prompts$0.02

Completion time varies dramatically by model — always check expected duration. Nano Banana ~23s, Seedream ~28s, GPT Image 2 ~145s. Use background mode for slow models.

Browse alternatives with wavespeed models .

Resolution defaults

When the user doesn't specify a resolution, apply these sensible defaults:

Use caseDefaultHow to pass it
Text → image / 文生图1K (1024×1024 or closest)-i aspect_ratio="1:1" or -i size="1024x1024" (check -h for which param the model uses)
Image edit1K (same as above)Same — some models use aspect_ratio, others size. Always -h first.
Text → video480p (854×480)-i width=854 -i height=480 or -i resolution="480p" (check -h)
Image → video480p (854×480)Same — some models accept width/height, others a single resolution string

Resolution tiers (common): 1K = 1024×1024 / 1024×768 / 768×1344 (depends on aspect ratio), 2K = 2048×2048, 4K = 4096×4096. For video: 480p = 854×480, 720p = 1280×720, 1080p = 1920×1080. Always verify the exact parameter names with -h.

Choosing the right edit model

When you need specific output parameters, inspect each candidate with -h — they vary widely:

NeedCheckExample that supports it
Native aspect ratio (3:4, 4:5, etc.)Look for aspect_ratio parametergoogle/nano-banana-2/edit ✓
Pixel size overrideLook for size parameterwavespeed-ai/flux-2-dev/edit ✓
Multi-image inputimages[] (array) vs image (single string)Nano Banana: images[]; Qwen: image
Chinese + English bilingualModel description mentions bilingualwavespeed-ai/qwen-image/edit ✓
BudgetCompare per-run price in wavespeed models outputZ-Image-Turbo: $0.005 — Flux.2 Flash: $0.013 — Qwen Edit: $0.02

Call wavespeed run -h to see exactly what params the model accepts before running.

Edit an existing image — upload first, then pass the URL

URL=$(wavespeed upload ./input.jpg --json | jq -r .url)
wavespeed run google/nano-banana-2/edit \
  -p "replace the background with a sunlit kitchen" \
  -i images="[\"$URL\"]" --json

Image-to-video — same pattern

URL=$(wavespeed upload ./hero.jpg --json | jq -r .url)
wavespeed run bytedance/seedance-2.0/image-to-video \
  -p "subtle parallax, gentle wind" \
  -i image="$URL" -i duration=5 --json

Save outputs locally with a template

wavespeed run ... -p "..." --download "./out/{index}.{ext}"

Project config and aliases

If wavespeed.json exists (created by wavespeed init):

  • defaultModel — lets wavespeed run -p "…" (no model arg) work.
  • Aliases — named shortcuts that bundle model + default inputs. Run wavespeed aliases to see what's defined. wavespeed run -h shows the resolved schema. CLI -i k=v overrides alias defaults.

The CLI never modifies the user's prompt or inputs. What you typed is what hits the API.

Installation

npm install -g @wavespeed/cli    # global install (may need sudo/nvm)
npx @wavespeed/cli          # drop-in, no install needed

The npm package name is @wavespeed/cli, not wavespeed. If global install fails due to permissions, npx @wavespeed/cli works identically as a drop-in replacement for all subcommands (just prefix every call with npx @wavespeed/cli instead of wavespeed).

Auth

wavespeed status shows whether the user is signed in. If not:

Get your API key at https://wavespeed.ai/accesskey — log in with your WaveSpeed account and copy the key from that page.

Then run wavespeed login to authenticate:

wavespeed login                    # opens browser to https://wavespeed.ai/accesskey

If the user pastes a key into chat manually (e.g. wsk_live_XXXXXX), save it with --api-key:

wavespeed login --api-key "wsk_live_XXXXXX"
# or via npx:
npx @wavespeed/cli login --api-key "wsk_live_XXXXXX"

Pitfalls

  • Local file paths don't auto-upload — call wavespeed upload first to get a CDN URL.
  • Don't invent model IDs. Always confirm via wavespeed models or wavespeed schema before running.
  • Use --json on every run so you can read outputs[0] programmatically.
  • Same-type models can have different parameter names. images[] (array) vs image (single string) is the most common trap. Some models use aspect_ratio, others use size (pixels). Always -h each candidate.
  • Vision model may not support image URLs. If vision_analyze or browser_vision fails to describe the reference image, rely on the user's verbal description and proceed with upload → run directly — the edit model itself handles the visual reference.
  • Complex prompts with double quotes break bash inline strings. Prompts containing speech bubbles or quoted text (e.g. "What do you like?") inside -i prompt='...' cause parse failures or silent rejections. Fix: write the prompt to a file and read it with PROMPT=$(cat /path/to/prompt.txt) then reference "$PROMPT" in the command.
  • Some models reject complex prompts with in-image text. Not all image-to-image models render speech bubbles or embedded text well — they may silently omit or garble them. If text is critical, prefer google/nano-banana-2/edit or bytedance/seedream-v4.5/edit.
  • Timeouts on slow models. openai/gpt-image-2/edit can take 145s+ to complete, exceeding default 120s timeout. Fix: run these in background mode with notify_on_complete=true and a timeout of 600s.
  • --download to a directory path fails with EISDIR. Use --download ./out/{index}.{ext} (a file template pattern), not --download ./out/ (a directory).

Related skills

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai22 installs8 stars

Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.

by Iván855 installs69 stars

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván559 installs18 stars

Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.

by fly0pants4.3k installs296 stars

More from johnsonbuilds

Browse all skills

Design and generate international-brand-quality product detail pages for cross-border e-commerce. Generates complete product page content (Hero, Features, Lifestyle, Specs, FAQ) plus AI image prompts and visual assets for any consumer electronics product. Output meets Apple/Nothing brand standards.

by johnsonbuilds2 installs

Worklittle Jobs MCP — search 4M+ jobs with visa/salary/distance filters, swipe to apply, create resumes & cover letters, and connect your Worklittle account

by johnsonbuilds

Compress AI Agent tool outputs, logs, and RAG content using Headroom — reduce token usage by 20-95%

by johnsonbuilds1 installs

Turn any topic into animated explainer videos — Remotion-driven, TTS voiceover, bilingual (Chinese/English)

by johnsonbuilds1 installs

261 hand-drawn style prompt catalog with numbered system — supports GPT Image, Midjourney, and other AI image generators

by johnsonbuilds3 installs

CLI tool to find which LLM models run on your local hardware — checks GPU/CPU/RAM and returns compatible models

by johnsonbuilds1 installs