360 Secure SkillHub
360 安全技能中心

mmx-cli

该 Skill 是 mmx 命令行工具的使用指南:调用 MiniMax 平台完成文本对话、图片生成、视频生成与任务轮询、语音合成、音频转写、图像理解、网页搜索和配额查询。文档给出参数表、退出码、管道用法,以及非交互式 Agent 标志,说明较完整。

MiniMax-AI
热度 0.00
最近更新 2026-10-19 13:26:40
分类:创作依赖:第三方 API / 内部调用大模型 / 代码执行 / 读写文件应用场景:图像生成 / 故事创作 / 摘要总结 / 研究 ...

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add minimax-ai/cli/mmx-cli
Metadata
name
mmx-cli
description
Use mmx to generate text, images, video, and speech, and to transcribe audio, via the MiniMax AI platform. Use when the user wants to create media content, chat with MiniMax models, transcribe audio to text, perform web search, or manage MiniMax API resources from the terminal.

MiniMax CLI — Agent Skill Guide

Use mmx to generate text, images, video, speech, transcribe audio, and perform web search via the MiniMax AI platform.

Prerequisites

# Install
npm install -g mmx-cli

# Auth (OAuth persists to ~/.mmx/credentials.json, API key persists to ~/.mmx/config.json)
mmx auth login --api-key sk-xxxxx

# Verify active auth source
mmx auth status

# Or pass per-call
mmx text chat --api-key sk-xxxxx --message "Hello"

Region is auto-detected. Override with --region global or --region cn.


Agent Flags

Always use these flags in non-interactive (agent/CI) contexts:

Flag Purpose
--non-interactive Fail fast on missing args instead of prompting
--quiet Suppress spinners/progress; stdout is pure data
--output json Machine-readable JSON output
--async Return task ID immediately (video generation)
--dry-run Preview the API request without executing
--yes Skip confirmation prompts

Commands

text chat

Chat completion. Default model: MiniMax-M3.1-Flash. An explicit --model or saved default-text-model takes precedence. This model currently requires M Plan or MiniMax Code; with a pay-as-you-go key, use --model MiniMax-M3. Thinking is enabled by default with max effort. See the model guide.

mmx text chat --message <text> [flags]
Flag Type Description
--message <text> string, required, repeatable Message text. Prefix with role: to set role (e.g. "system:You are helpful", "user:Hello")
--messages-file <path> string JSON file with messages array. Use - for stdin
--system <text> string System prompt
--model <model> string Model ID (default: MiniMax-M3.1-Flash)
--max-tokens <n> number Max tokens (default: 4096)
--temperature <n> number Sampling temperature (0.0, 1.0]
--top-p <n> number Nucleus sampling threshold
--stream boolean Stream tokens (default: on in TTY)
--tool <json-or-path> string, repeatable Tool definition JSON or file path
# Single message
mmx text chat --message "user:What is MiniMax?" --output json --quiet

# Multi-turn
mmx text chat \
  --system "You are a coding assistant." \
  --message "user:Write fizzbuzz in Python" \
  --output json

# From file
cat conversation.json | mmx text chat --messages-file - --output json

stdout: response text (text mode) or full response object (json mode).


image generate

Generate images. Model: image-01.

mmx image generate --prompt <text> [flags]
Flag Type Description
--prompt <text> string, required Image description
--aspect-ratio <ratio> string e.g. 16:9, 1:1. Ignored if --width and --height are both set
--n <count> number Number of images (default: 1)
--seed <n> number Random seed for reproducible generation
--width <px> number Width in pixels (512–2048, multiple of 8). Requires --height
--height <px> number Height in pixels (512–2048, multiple of 8). Requires --width
--prompt-optimizer boolean Optimize prompt before generation
--aigc-watermark boolean Embed AI-generated content watermark
--subject-ref <params> string Subject reference: type=character,image=path-or-url
--response-format <format> string url (default) or base64. Base64 bypasses CDN download
--out-dir <dir> string Download images to directory
--out-prefix <prefix> string Filename prefix (default: image)
mmx image generate --prompt "A cat in a spacesuit" --output json --quiet
# stdout: image URLs (one per line in quiet mode)

mmx image generate --prompt "Logo" --n 3 --out-dir ./gen/ --quiet
# stdout: saved file paths (one per line)

video generate

Generate video. Default model: MiniMax-Hailuo-2.3 (or MiniMax-Hailuo-2.3-Fast for fast mode with --image). This is an async task — by default it polls until completion.

For MiniMax-H3 — text-to-video, first/last-frame, multimodal reference image/video/audio generation, prompt construction, and failure handling — use the dedicated mmx-h3-video skill instead.

mmx video generate --prompt <text> [flags]
Flag Type Description
--prompt <text> string, required Video description
--model <model> string MiniMax-Hailuo-2.3 (default) or MiniMax-Hailuo-2.3-Fast
--image <path-or-url> string Input image for image-to-video
--last-frame <path-or-url> string Optional ending image for frame interpolation (used with --image)
--callback-url <url> string Webhook URL for completion
--download <path> string Save video to specific file
--async boolean Return task ID immediately
--no-wait boolean Same as --async
--poll-interval <seconds> number Polling interval (default: 5)
# Non-blocking: get task ID
mmx video generate --prompt "A robot." --async --quiet
# stdout: {"taskId":"..."}

# Blocking: wait and get file path
mmx video generate --prompt "Ocean waves." --download ocean.mp4 --quiet
# stdout: ocean.mp4

video task get

Query status of a video generation task.

mmx video task get --task-id <id> [--output json]

video download

Download a completed video by task ID.

mmx video download --file-id <id> [--out <path>]

speech synthesize

Text-to-speech. Default model: speech-2.8-hd. Max 10k chars.

mmx speech synthesize --text <text> [flags]
Flag Type Description
--text <text> string Text to synthesize
--text-file <path> string Read text from file. Use - for stdin
--model <model> string speech-2.8-hd (default), speech-2.6, speech-02
--voice <id> string Voice ID (default: English_expressive_narrator)
--speed <n> number Speed multiplier
--volume <n> number Volume level
--pitch <n> number Pitch adjustment
--format <fmt> string Audio format (default: mp3)
--sample-rate <hz> number Sample rate (default: 32000)
--bitrate <bps> number Bitrate (default: 128000)
--channels <n> number Audio channels (default: 1)
--language <code> string Language boost
--subtitles boolean Download and save subtitles as .srt file (alongside --out audio file). API must support subtitles for the selected model.
--pronunciation <from/to> string, repeatable Custom pronunciation
--sound-effect <effect> string Add sound effect
--out <path> string Save audio to file
--stream boolean Stream raw audio to stdout
mmx speech synthesize --text "Hello world" --out hello.mp3 --quiet
# stdout: hello.mp3

mmx speech synthesize --text "Hello" --subtitles --out hello.mp3
# saves hello.mp3 + hello.srt (SRT subtitle file)

echo "Breaking news." | mmx speech synthesize --text-file - --out news.mp3

speech transcribe

Speech-to-text. Default model: asr-1.0. Accepts wav, aiff, flac, m4a, mp3, aac, opus, and ogg files up to 50 MB and 500 seconds.

mmx speech transcribe --file <path> [flags]
Flag Type Description
--file <path> string Audio file to transcribe (required; also accepted as a positional argument)
--model <model> string asr-1.0 (default)
--response-format <fmt> string json (default), verbose_json, srt, vtt
--language <code> string BCP-47 language hint (zh, en, ja, ...). Omit for automatic/mixed-language detection
--timestamp-level <level> string sentence (default) or word; applies to verbose_json / srt / vtt
--stream boolean Stream incremental text to stdout. Requires --response-format json
--out <path> string Write the result to a file instead of stdout
mmx speech transcribe --file meeting.mp3
# stdout: transcript text

mmx speech transcribe --file call.mp3 --language zh --output json
# stdout: {"text":"...","duration":12.3,"trace_id":"..."}

mmx speech transcribe --file talk.mp3 --response-format verbose_json --timestamp-level word --output json
# stdout: adds n_speakers and word-level segments

mmx speech transcribe --file talk.mp3 --response-format srt --out talk.srt
# saves talk.srt; stdout: {"saved":".../talk.srt"}

mmx speech transcribe --file long.mp3 --stream
# stdout: text as it is recognized (add --output text when piping)

Notes:

  • mmx speech recognize is an alias for mmx speech transcribe.
  • --stream cannot be combined with --out; redirect stdout instead.
  • --stream prints deltas only in text output mode. stdout that is not a terminal defaults to json (as everywhere else in this CLI), which accumulates the streamed text into one JSON result — pass --output text to pipe streamed text, e.g. mmx speech transcribe --file long.mp3 --stream --output text > transcript.txt.
  • srt / vtt results are subtitle documents and are printed or saved verbatim.
  • Without --out, --output json prints the full API response for json / verbose_json. Plain-text output prints the transcript only, so add --output json to read n_speakers and segments.
  • A stream that ends without the API's final event raises a warning on stderr, since the transcript may be truncated.
  • Input validation (missing file, unsupported format, over 50 MB, --stream with a non-json format) fails before anything is uploaded; the API stays the authority for the 500 s duration limit and codec support.

vision describe

Image understanding via VLM. Provide either --image or --file-id, not both.

mmx vision describe (--image <path-or-url> | --file-id <id>) [flags]
Flag Type Description
--image <path-or-url> string Local path or URL (auto base64-encoded)
--file-id <id> string Pre-uploaded file ID (skips base64)
--prompt <text> string Question about the image (default: "Describe the image.")
mmx vision describe --image photo.jpg --prompt "What breed?" --output json

stdout: description text (text mode) or full response (json mode).


search query

Web search via MiniMax.

mmx search query --q <query>
Flag Type Description
--q <query> string, required Search query
mmx search query --q "MiniMax AI" --output json --quiet

quota show

Display Token Plan usage and remaining quotas.

mmx quota show [--output json]

Tool Schema Export

Export all commands as Anthropic/OpenAI-compatible JSON tool schemas:

# All tool-worthy commands (excludes auth/config/update)
mmx config export-schema

# Single command
mmx config export-schema --command "video generate"

Use this to dynamically register mmx commands as tools in your agent framework.


Exit Codes

Code Meaning
0 Success
1 General error
2 Usage error (bad flags, missing args)
3 Authentication error
4 Quota exceeded
5 Timeout
10 Content filter triggered

Piping Patterns

# stdout is always clean data — safe to pipe
mmx text chat --message "Hi" --output json | jq '.content'

# stderr has progress/spinners — discard if needed
mmx video generate --prompt "Waves" 2>/dev/null

# Chain: generate image → describe it
URL=$(mmx image generate --prompt "A sunset" --quiet)
mmx vision describe --image "$URL" --quiet

# Async video workflow
TASK=$(mmx video generate --prompt "A robot" --async --quiet | jq -r '.taskId')
mmx video task get --task-id "$TASK" --output json
mmx video download --task-id "$TASK" --out robot.mp4

Configuration Precedence

CLI flags → environment variables → ~/.mmx/config.json → defaults.

# Persistent config
mmx config set --key region --value cn
mmx config show

# Environment
export MINIMAX_API_KEY=sk-xxxxx
export MINIMAX_REGION=cn

Default Model Configuration

Set per-modality defaults so you don't need --model every time:

# Set defaults
mmx config set --key default-text-model --value MiniMax-M3.1-Flash
mmx config set --key default-speech-model --value speech-2.8-hd
mmx config set --key default-video-model --value MiniMax-Hailuo-2.3

# Use without --model
mmx text chat --message "Hello"
mmx speech synthesize --text "Hello" --out hello.mp3
mmx video generate --prompt "Ocean waves"

# --model still overrides per-call
mmx text chat --model MiniMax-M3.1-Flash --message "Hello"

Resolution priority: --model flag > config default > hardcoded fallback.