qwen-mm-plugins-api

Analyze images, video, and audio through hosted VL, Omni, ASR, and SAM3 model services.

2.9k|185|Updated Jul 29, 2026
One-click install
npx skills add https://github.com/QwenLM/Qwen-MM-Plugins --skill qwen-mm-plugins-api-qwenlm
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: qwen-mm-plugins-api
Source: https://github.com/QwenLM/Qwen-MM-Plugins/tree/main/src/capabilities/api/skill
Command: npx skills add https://github.com/QwenLM/Qwen-MM-Plugins --skill qwen-mm-plugins-api-qwenlm

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires fastapi, uvicorn, pillow, numpy, torch, and includes references (resource) components.

What problem does it solve? Understanding media files requires routing images, video, and audio to the right model service with the right payload format, endpoint configuration, and output schema. This Skill exposes a unified set of MCP tools for visual question answering, OCR, object grounding, speech transcription, diarization, temporal event localization, music captioning, and segmentation, so agents can analyze media without hand-writing API calls. ## Core Features & Use Cases - VL model tools: vision_chat for free-form image/video questions, ocr for text extraction, and grounding for normalized 0-1000 bounding boxes that feed directly into crop or annotation tools. - Omni model tools: perceive_media for general audio-video reasoning, plus fixed-schema tools for ASR with timestamps, speaker diarization, timestamped captions, temporal grounding, event counting, and music captioning. - Dedicated services: transcribe_audio (Qwen3-ASR) auto-chunks long audio/video files, and segmentation calls a self-hosted SAM3 server for prompt-based masks. - Use Case: Given a 45-minute meeting recording, run a broad perceive_media pass to find decision discussions, then use omni_multi_speaker_asr on those intervals to get speaker-labeled, timestamped transcripts in SRT format. ## Quick Start Ask the agent to transcribe the attached meeting recording with speaker labels and timestamps using the omni diarization tool.

Frequently Asked Questions about qwen-mm-plugins-api

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I transcribe audio with speaker diarization and timestamps?

Use omni_multi_speaker_asr, which returns speaker labels, timestamps, and an SRT file from an audio or video file. Pass num_speakers if known, or use transcribe_audio for fast chunked transcription of long files without diarization.

What is the difference between grounding and omni_av_grounding?

grounding performs spatial localization, returning 0-1000 normalized bounding boxes for objects in a single image. omni_av_grounding performs temporal localization, returning time segments in audio or video matching a natural-language query.

Can I use OpenRouter or a self-hosted endpoint instead of DashScope?

Yes. Every tool accepts base_url, api_key, and model arguments for any OpenAI-compatible endpoint. Configure OPENROUTER_API_KEY or ORCAROUTER_API_KEY and pass the matching base_url and gateway model ID; the server selects the key automatically.

How do I set up the SAM3 segmentation server?

Run references/launch_sam3_server.py with the sam3 package, its checkpoint, and BPE vocab available, plus fastapi, uvicorn, pillow, and numpy installed. It starts a multi-GPU FastAPI server; point SAM3_SERVER_URL at it and the segmentation tool works.

How are large video files handled when calling VL or Omni tools?

On DashScope endpoints, oversized local media uploads to model-bound temporary OSS up to 1 GiB, then falls back to user-managed OSS, then local frame sampling. Videos exceeding the model's server-side duration limit skip uploads and use local sampling directly.

When should I use perceive_media instead of the atomic Omni tools?

Prefer perceive_media for general audio-video reasoning since it passes your prompt unchanged to the Omni model. Use the atomic tools like omni_asr or omni_av_counting only when their fixed structured output schema is explicitly required.