Files
market/skills/minimax-video-gen/SKILL.md
Yige 8f7953948f fix: 补齐市场静态事实并保持旧客户端兼容 (#184)
## 中文

补齐已有 owner 与已锁定上游内容可证明的许可证、技能类型和收录版本。保留 Anthropic Source Available
和其他附加条件,不把所有内容统一标为 MIT,不提升 listing-only 的安装准入。

README 保留最新的双语结构及以 manifest 为准的数量口径,增加静态目录不存访问量、下载量、评分或 Stars 的边界。

发布兼容性:**本 PR 不包含**两支团队新增的本地化字段,也不包含微信支付 `latestVersion:
1.0`;旧客户端会拒绝这些新字段,另以待发布 PR 保留,等匹配客户端发布后再合并。

验证:47 项目录校验测试、19 项 i18n 测试、5 项合集生成测试通过;完整目录/i18n/翻译新鲜度检查通过,6
个固定来源合集的生成检查通过,2 个浮动来源按既有规则明确跳过。发现并修复了生成器在 Windows 使用反斜杠造成的误报:输出改为 POSIX
路径,比较规则不放宽、不重写合集数据。

## English

Fill only license, type and listed-release facts supported by existing
owners or pinned upstream content. Preserve custom license restrictions
and acquisition eligibility. Keep the current bilingual README and
manifest-derived inventory; do not author usage analytics.

This PR deliberately excludes localized team fields and the two-part
WeChat Pay version that older clients reject. Those changes remain
pending a compatible client release.

Validation passes: 47 catalog-validator tests, 19 i18n tests, five
collection-generator tests, complete catalog and translation checks, and
generated inventory checks for six pinned collections. Two mutable
sources remain explicitly skipped. Fix Windows-generated path separators
without weakening comparison or changing declared children.
2026-09-22 01:09:03 +08:00

9.5 KiB
Raw Blame History

name, description, license, version, type, risk_level, status, disable-model-invocation, provider, tags, requires, metadata, market
name description license version type risk_level status disable-model-invocation provider tags requires metadata market
minimax-video-gen Use this skill when the user wants to generate videos using MiniMax's Hailuo model. Supports text-to-video, image-to-video, and subject reference. The API is asynchronous — submit a task, poll for status, then download. Use when 用户提到 生成视频、文生视频、AI 视频、创建视频、视频生成、 动画生成、MiniMax 视频、海螺、Hailuo、图片变视频、图生视频。 MIT 1.3.1 procedural low enabled true minimax
media
video
generation
minimax
hailuo
tools
Bash
author updated_at i18n
desirecore 2026-06-09
default_locale source_locale locales zh-CN en-US
en-US zh-CN
zh-CN
en-US
name short_desc description body source_hash translated_by
MiniMax 文生视频 基于 MiniMax Hailuo 的文本/图片生成视频技能 Use this skill when the user wants to generate videos using MiniMax's Hailuo model. Supports text-to-video, image-to-video, and subject reference. The API is asynchronous — submit a task, poll for status, then download. Use when 用户提到 生成视频、文生视频、AI 视频、创建视频、视频生成、 动画生成、MiniMax 视频、海螺、Hailuo、图片变视频、图生视频。 ./SKILL.zh-CN.md sha256:57314c8d07d63585 human
name short_desc description body source_hash translated_by
MiniMax Video Generation Text/image-to-video skill powered by MiniMax Hailuo Use this skill when the user wants to generate videos using MiniMax's Hailuo model. Supports text-to-video, image-to-video, and subject reference. The API is asynchronous — submit a task, poll for status, then download. Use when the user mentions generating videos, text-to-video, AI video, creating videos, video generation, animation generation, MiniMax video, Hailuo, image-to-video. ./SKILL.md sha256:47463799495b3fdf human
icon category maintainer channel
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><rect x="3" y="3" width="18" height="18" rx="3" stroke="#AF52DE" stroke-width="1.5" fill="#AF52DE" fill-opacity="0.1"/><polygon points="10,7 18,12 10,17" fill="#AF52DE" fill-opacity="0.6" stroke="#AF52DE" stroke-width="1.2" stroke-linejoin="round"/></svg> media
name verified
DesireCore Official true
latest

minimax-video-gen Skill

Mandatory Rules (violation will cause failure)

  1. Must use HTTPS to access agent-service — https://127.0.0.1:${PORT} with -k to skip certificate verification
  2. Use Bash curl throughout — do not use the HttpRequest tool or Python
  3. Polling interval is 10 seconds — use sleep 10 to wait
  4. Must use providerId — do not use provider, or requests will route to the wrong upstream

Full Execution Flow

Prerequisites

  • The user has already configured and enabled a Provider with video_gen service in Resource Manager → Compute and entered the API Key
  • agent-service is running

Core Concept: Four-Step Asynchronous Flow

Video generation uses an asynchronous task model via the NewAPI gateway:

  1. Submit task: POST /video/generations to create a task, receive a task_id
  2. Poll status: GET /videos/{task_id} until status is "completed"
  3. Download & upload: download from data.metadata.url, upload to media-store
  4. Display: use dc-media:// protocol to show the video

Provider Selection (Important)

Use providerId (not provider) to target the correct gateway. When the provider is a NewAPI gateway (e.g. desirecore-cloud), use providerId. Do not use provider: "minimax" — this would route to the MiniMax native host, which does not support the NewAPI /video/generations path.

{
  "providerId": "desirecore-cloud",
  "serviceType": "video_gen",
  "endpoint": "/video/generations",
  ...
}

Model Selection and Fallback Strategy

Model Supported Modes Characteristics Use Case
MiniMax-Hailuo-2.3 Text-to-video + image-to-video Highest quality, default first choice Default when the user doesn't specify
MiniMax-Hailuo-2.3-fast Image-to-video only Fast, 50% lower cost Fallback when quota is insufficient in image-to-video scenarios

Fallback rules (mandatory):

  1. Use MiniMax-Hailuo-2.3 by default
  2. When text-to-video (T2V) quota is insufficient: MiniMax-Hailuo-2.3-fast does not support text-to-video and cannot be used as a fallback. Inform the user directly that the quota is insufficient and suggest waiting for the quota to reset or switching to another video generation service (such as Kling)
  3. When image-to-video (I2V) quota is insufficient: fall back to MiniMax-Hailuo-2.3-fast and inform the user "switched to the fast model for generation"
  4. If the user is doing image-to-video and explicitly requests fast generation, use MiniMax-Hailuo-2.3-fast directly

Step 1: Submit a Text-to-Video Task

Important: The endpoint is /video/generations (with an "s"), NOT /video_generation.

PORT=$(cat ${DESIRECORE_ROOT}/agent-service.port)
curl -sk -X POST "https://127.0.0.1:${PORT}/api/media-proxy" \
  -H "Content-Type: application/json" \
  -d '{
    "providerId": "desirecore-cloud",
    "serviceType": "video_gen",
    "endpoint": "/video/generations",
    "body": {
      "model": "MiniMax-Hailuo-2.3",
      "prompt": "Video content described by the user",
      "size": "768P",
      "duration": 6
    },
    "responseType": "json"
  }'

Optional parameters (add to the body):

  • "duration": video length in seconds (6 or 10)
  • "size": "768P" or "1080P" (use size, not resolution)

Extract data.task_id from the JSON response.

Successful response example:

{
  "success": true,
  "data": {
    "id": "task_xxx",
    "task_id": "task_xxx",
    "object": "video",
    "model": "MiniMax-Hailuo-2.3",
    "status": "queued",
    "progress": 0,
    "created_at": 1780995870
  },
  "statusCode": 200
}

Step 1 (alternative): Image-to-Video

PORT=$(cat ${DESIRECORE_ROOT}/agent-service.port)
curl -sk -X POST "https://127.0.0.1:${PORT}/api/media-proxy" \
  -H "Content-Type: application/json" \
  -d '{
    "providerId": "desirecore-cloud",
    "serviceType": "video_gen",
    "endpoint": "/video/generations",
    "body": {
      "model": "MiniMax-Hailuo-2.3",
      "prompt": "Describe the dynamic changes of the scene in the image",
      "first_frame_image": "https://image-URL",
      "size": "768P"
    },
    "responseType": "json"
  }'

Step 2: Poll the Task Status

Call once every 10 seconds until status is "completed" or "failed". Replace TASK_ID with the task_id returned in Step 1.

PORT=$(cat ${DESIRECORE_ROOT}/agent-service.port)
TASK_ID="task_id returned from step 1"
curl -sk -X POST "https://127.0.0.1:${PORT}/api/media-proxy" \
  -H "Content-Type: application/json" \
  -d "{
    \"providerId\": \"desirecore-cloud\",
    \"serviceType\": \"video_gen\",
    \"endpoint\": \"/videos/${TASK_ID}\",
    \"method\": \"GET\",
    \"responseType\": \"json\"
  }"

In-progress statuses may be: "queued" or "in_progress".

Polling response (in progress):

{
  "success": true,
  "data": {
    "id": "task_xxx",
    "status": "in_progress",
    "progress": 42
  }
}

Polling response (completed):

{
  "success": true,
  "data": {
    "id": "task_xxx",
    "status": "completed",
    "progress": 100,
    "metadata": {
      "url": "https://.../output_aigc.mp4?..."
    }
  }
}

Step 3: Download and Upload to media-store

Extract the video download URL from data.metadata.url in the completed Step 2 response. The URL is valid for 24 hours; download immediately.

PORT=$(cat ${DESIRECORE_ROOT}/agent-service.port)
VIDEO_URL="data.metadata.url from step 2"
curl -sL "$VIDEO_URL" -o /tmp/minimax-video.mp4 && \
curl -sk -X POST "https://127.0.0.1:${PORT}/api/media/upload" \
  -F "file=@/tmp/minimax-video.mp4;type=video/mp4"

Extract the mediaId field from the JSON response.

Step 4: Display the Video Using the dc-media Protocol

Write Markdown image syntax directly in your reply (the frontend will automatically recognize the video extension and render a player):

![Video description](dc-media://replace-with-mediaId)

Error Handling

  • status: "failed": video generation failed; explain to the user
  • success: false + error: "No matching provider found": No enabled provider with video_gen service found
  • success: false + error: "API Key not configured": API Key has not been entered
  • Insufficient quota (errors related to statusCode: 429, insufficient_quota, balance): text-to-video cannot fall back (the Fast model does not support T2V); inform the user of insufficient quota; image-to-video can switch to MiniMax-Hailuo-2.3-fast and retry from Step 1
  • Polling exceeds 10 minutes without completion: inform the user that the task may have timed out

Notes

  • Video generation is asynchronous and typically takes 2–10 minutes
  • A polling interval of 10 seconds is recommended
  • The download URL is valid for 24 hours
  • If the user does not explicitly request otherwise, by default pass "size": "768P" and "duration": 6
  • Do not proxy the download URL through media-proxy — use curl -sL "$VIDEO_URL" to download directly