From mulerouter-skills
Generates images, videos, audio, speech, and music via MuleRouter/MuleRun multimodal APIs. Supports text-to-image/video, image/video editing, TTS, music gen with models like Veo3, Sora2, Kling V3. Use for AI media creation/editing.
npx claudepluginhub openmule/mulerouter-skills --plugin mulerouter-skillsThis skill is limited to using the following tools:
Generate images and videos using MuleRouter or MuleRun multimodal APIs.
README.mdcore/__init__.pycore/client.pycore/config.pycore/image.pycore/registry.pycore/task.pymodels/__init__.pymodels/alibaba/__init__.pymodels/alibaba/wan2.1-kf2v-plus/generation.pymodels/alibaba/wan2.1-vace-plus/generation.pymodels/alibaba/wan2.2-i2v-flash/generation.pymodels/alibaba/wan2.2-i2v-plus/generation.pymodels/alibaba/wan2.2-t2v-plus/generation.pymodels/alibaba/wan2.5-i2i-preview/generation.pymodels/alibaba/wan2.5-i2v-preview/generation.pymodels/alibaba/wan2.5-t2i-preview/generation.pymodels/alibaba/wan2.5-t2v-preview/generation.pymodels/alibaba/wan2.6-i2v/__init__.pymodels/alibaba/wan2.6-i2v/generation.pyGenerates speech (TTS, voice cloning), music, videos (text-to-video, image-to-video), and images via MiniMax APIs. Includes FFmpeg for media conversion, concat, trim, extract. For multimodal AI tasks.
Generates AI images (Nano Banana), videos (Seedance, Kling, Veo 3), speech (CSM-1B), and audio via fal.ai MCP tools. Handles prompts, uploads, async jobs for media tasks.
Provides Runway ML public API reference: models, endpoints, costs, limits, types for video generation, image generation, audio, and characters.
Share bugs, ideas, or general feedback.
Generate images and videos using MuleRouter or MuleRun multimodal APIs.
This skill requires the following environment variables to be set before use:
| Variable | Required | Description |
|---|---|---|
MULEROUTER_API_KEY | Yes | API key for authentication (get one here) |
MULEROUTER_BASE_URL | Yes* | Custom API base URL (e.g., https://api.mulerouter.ai). Takes priority over SITE. |
MULEROUTER_SITE | Yes* | API site: mulerouter or mulerun. Used if BASE_URL is not set. |
*At least one of MULEROUTER_BASE_URL or MULEROUTER_SITE must be set.
The API key is included in Authorization: Bearer headers when making network calls to the configured API endpoint.
If any of these variables are missing, the scripts will fail with a configuration error. Check the Configuration section below to set them up.
Before running any commands, verify the environment is configured:
Run the built-in config check script:
uv run python -c "from core.config import load_config; load_config(); print('Configuration OK')"
If this prints "Configuration OK", skip to Step 3. If it raises a ValueError, proceed to Step 2.
If the variables above are not set, ask the user to provide their API key and preferred endpoint.
Create a .env file in the skill's working directory:
# Option 1: Use custom base URL (takes priority over SITE)
MULEROUTER_BASE_URL=https://api.mulerouter.ai
MULEROUTER_API_KEY=your-api-key
# Option 2: Use site (if BASE_URL not set)
# MULEROUTER_SITE=mulerun
# MULEROUTER_API_KEY=your-api-key
Note: MULEROUTER_BASE_URL takes priority over MULEROUTER_SITE. If both are set, MULEROUTER_BASE_URL is used.
Note: The skill only loads variables prefixed with MULEROUTER_ from the .env file. Other variables in the file are ignored.
Important: Do NOT use export shell commands to set credentials. Use a .env file or ensure the variables are already present in your shell environment before invoking the skill.
uv to run scriptsThe skill uses uv for dependency management and execution. Make sure uv is installed and available in your PATH.
Run uv sync to install dependencies.
uv run python scripts/list_models.py
uv run python models/alibaba/wan2.6-t2v/generation.py --list-params
Text-to-Video:
uv run python models/alibaba/wan2.6-t2v/generation.py --prompt "A cat walking through a garden"
Text-to-Image:
uv run python models/alibaba/wan2.6-t2i/generation.py --prompt "A serene mountain lake"
Image-to-Video:
uv run python models/alibaba/wan2.6-i2v/generation.py --prompt "Gentle zoom in" --image "https://example.com/photo.jpg" #remote image url
uv run python models/alibaba/wan2.6-i2v/generation.py --prompt "Gentle zoom in" --image "/path/to/local/image.png" #local image path
Text-to-Speech (voice-id is required):
uv run python models/minimax/speech-2.8-turbo/generation.py --prompt "Hello world, welcome to the future of AI." --voice-id "Charming_Lady"
Text-to-Music:
uv run python models/minimax/music-2.5/generation.py --prompt "[verse]\nHello world\n[chorus]\nLa la la"
For image parameters (--image, --images, etc.), prefer local file paths over base64.
# Preferred: local file path (auto-converted to base64)
--image /tmp/photo.png
--images ["/tmp/photo.png"]
Local file paths are validated before reading: only files with recognized image extensions (.png, .jpg, .jpeg, .gif, .bmp, .webp, .tiff, .tif, .svg, .ico, .heic, .heif, .avif) are accepted. Paths pointing to sensitive system directories or non-image files are rejected. Valid image files are converted to base64 and sent to the API, avoiding command-line length limits that occur with raw base64 strings.
MULEROUTER_API_KEY and either MULEROUTER_BASE_URL or MULEROUTER_SITE are setuv syncuv run python scripts/list_models.py to discover available modelsuv run python models/<path>/<action>.py --list-params to see parametersWhen listing models, each model's tags (e.g., [SOTA]) are displayed by default next to its name. Tags help identify model characteristics at a glance — for example, SOTA indicates a state-of-the-art model.
You can also filter models by tag using --tag:
uv run python scripts/list_models.py --tag SOTA
If you are unsure which model to use, present the available options to the user and let them choose. Use the AskUserQuestion tool (or equivalent interactive prompt) to ask the user which model they prefer. For example, if the user asks to "generate an image" without specifying a model, list the relevant image generation models with their tags and descriptions, and ask the user to pick one.
--voice-id is required. Use --list-params to see available voices, or refer to MINIMAX_VOICES.md for the full voice catalog.