Files
market/skills/minimax-video-gen/SKILL.md
Yige 1f7c8b9673 feat: skills i18n 改造(schemaVersion 1.1,零向后兼容) (#1)
* feat: skills i18n 改造 — schemaVersion 1.1,零向后兼容

把 21 个 skills + 1 个 agent + manifest/categories 全量迁移到 schemaVersion 1.1
的 i18n 结构,配套 CI AI 翻译流水线(GitHub Models)与本地工具链。

## 关键变更

### 数据结构(破坏性,schemaVersion 1.0 → 1.1)
- SKILL.md: 顶层 name 改为 ASCII slug(== 目录名,符合 agentskills.io 规范);
  中文显示名/short_desc/description 全部迁入 metadata.i18n.<locale>
- agents/<id>/agent.json: shortDesc/fullDesc/tags/persona.{role,traits} 迁入
  i18n.<locale>;changelog[].changes 改为 { <locale>: string[] } 对象
- categories.json: 每个分类的 label/description 迁入 i18n.<locale>,顶层只剩
  color/icon
- manifest.json: 加 supportedLocales / defaultLocale;顶层 description 迁入
  i18n.<locale>

### Body 文件结构
- 根 SKILL.md = frontmatter + default_locale (en-US) body
- SKILL.<locale>.md = 各 locale 的 markdown body(首行 <!-- locale: xx --> 自校验)

### 工具链(scripts/i18n/)
- glossary.json: zh→en 术语表 + do_not_translate 白名单
- schema/skill-frontmatter.schema.json: i18n frontmatter JSON Schema
- validate-i18n.py: 8 条校验规则(name 合规 / locale 完整性 / hash 一致性等)
- translate.py: GitHub Models / Anthropic 双 backend,sha256 增量翻译
- migrate.py: 一次性迁移脚本(旧格式 → i18n 结构)

### CI(.github/workflows/)
- i18n-validate.yml: PR 触发跑 validate + translate --check
- i18n-translate.yml: PR 触发用 GitHub Models(默认 openai/gpt-5-mini)翻译缺失
  locale,自动追加 commit;可切到 ANTHROPIC_API_KEY 走 Claude

### 文档
- docs/I18N.md: 作者贡献指南(schema 说明 / 提交流程 / 常见问题)
- README.md: 加多语言段落

## 验证

- uv run scripts/i18n/validate-i18n.py: OK,49 文件 0 错误
- uv run scripts/i18n/translate.py --check: 0 stale locale
- 21 skills 标题数 zh-CN == en-US 严格对齐(最大 66=66)
- skills-ref 规范校验:全部通过(顶层 name ASCII slug + description 单字段)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(i18n): 修复 PR #1 review 反馈的 6 项问题

- schema: translated_by 正则放宽为 ^(human|ai:[A-Za-z0-9._:/-]+)$,接受
  'ai:github:openai/gpt-5-mini' 这类 backend:model 形式(CI 翻译输出格式)
- README + docs/I18N.md: 修正"CI 用 Claude API"误导描述,正确说明默认是
  GitHub Models(openai/gpt-5-mini)+ GITHUB_TOKEN,可选切到 Anthropic
- skills/minimax-tts/SKILL.md & SKILL.zh-CN.md: 删除多余的 ``` 闭合,避免
  Markdown 后续渲染错乱
- skills/docx/SKILL.md: 翻译时丢失的 • Unicode escape 示例已恢复,
  与 zh-CN 版本对齐

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 00:26:33 +08:00

8.7 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、图片变视频、图生视频。 Complete terms in LICENSE.txt 1.2.1 procedural low enabled true minimax
media
video
generation
minimax
hailuo
tools
Bash
author updated_at i18n
desirecore 2026-04-25
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 translated_at
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:57314c8d07d63585 ai:claude-opus-4-7 2026-05-03
icon category maintainer channel listed
<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 false

minimax-video-gen Skill

Mandatory Rules (violation will cause failure)

  1. Must use HTTPS to access agent-servicehttps://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

Full Execution Flow

Prerequisites

  • The user has already configured the MiniMax Media Provider in Resource Manager → Compute and entered the API Key
  • agent-service is running

Core Concept: Three-Step Asynchronous Flow

MiniMax video generation uses an asynchronous task model:

  1. Submit task: POST to create a video generation task and receive a task_id
  2. Poll status: query the task status with task_id until status is "Success" or "Fail"
  3. Download video: use file_id to obtain the download URL

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

PORT=$(cat ~/.desirecore/agent-service.port)
curl -sk -X POST "https://127.0.0.1:${PORT}/api/media-proxy" \
  -H "Content-Type: application/json" \
  -d '{
    "providerId": "provider-minimax-media-001",
    "endpoint": "/video_generation",
    "body": {
      "model": "MiniMax-Hailuo-2.3",
      "prompt": "Video content described by the user"
    },
    "responseType": "json"
  }'

Optional parameters (add to the body):

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

Extract data.task_id from the JSON response.

Step 1 (alternative): Image-to-Video

PORT=$(cat ~/.desirecore/agent-service.port)
curl -sk -X POST "https://127.0.0.1:${PORT}/api/media-proxy" \
  -H "Content-Type: application/json" \
  -d '{
    "providerId": "provider-minimax-media-001",
    "endpoint": "/video_generation",
    "body": {
      "model": "MiniMax-Hailuo-2.3",
      "prompt": "Describe the dynamic changes of the scene in the image",
      "first_frame_image": "https://image-URL"
    },
    "responseType": "json"
  }'

Step 2: Poll the Task Status

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

PORT=$(cat ~/.desirecore/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\": \"provider-minimax-media-001\",
    \"endpoint\": \"/query/video_generation?task_id=${TASK_ID}\",
    \"method\": \"GET\",
    \"responseType\": \"json\"
  }"

Polling response (in progress):

{
  "success": true,
  "data": {
    "task_id": "task_xxx",
    "status": "Processing",
    "file_id": ""
  }
}

Polling response (completed):

{
  "success": true,
  "data": {
    "task_id": "task_xxx",
    "status": "Success",
    "file_id": "file_xxx"
  }
}

Step 3: Get the Video Download URL

Replace FILE_ID with the file_id from the completed response in Step 2.

PORT=$(cat ~/.desirecore/agent-service.port)
FILE_ID="file_id returned from step 2"
curl -sk -X POST "https://127.0.0.1:${PORT}/api/media-proxy" \
  -H "Content-Type: application/json" \
  -d "{
    \"providerId\": \"provider-minimax-media-001\",
    \"endpoint\": \"/files/retrieve?file_id=${FILE_ID}\",
    \"method\": \"GET\",
    \"responseType\": \"json\"
  }"

Extract data.file.download_url from the response.

Step 4: Download and Upload to media-store

The download URL is valid for 24 hours; you must download immediately and save it to the local media-store.

PORT=$(cat ~/.desirecore/agent-service.port)
VIDEO_URL="download_url obtained in step 3"
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 5: 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: "Fail": video generation failed; explain to the user
  • success: false + error: "No matching provider found": MiniMax Media Provider is not configured
  • 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

  • MiniMax video generation is asynchronous and typically takes 210 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 do not pass duration or resolution (use API defaults)