{"_id":"@ai-media/provider-minimax","_rev":"4-10955d051ddf4912ea5e8c820ccf1a04","name":"@ai-media/provider-minimax","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.2":{"name":"@ai-media/provider-minimax","version":"0.1.2","license":"MIT","_id":"@ai-media/provider-minimax@0.1.2","maintainers":[{"name":"windzb","email":"windzb@qq.com"}],"dist":{"shasum":"e8f3a706c3a075b1f1b060c49693d0184c3a314d","tarball":"https://registry.npmjs.org/@ai-media/provider-minimax/-/provider-minimax-0.1.2.tgz","fileCount":9,"integrity":"sha512-cxd1WOoa7U75jTUD3Sq9X45OezEhinqfklbo2/KFk10K6f9W0EL506ozZr66ibs7HzNytGr3WmB0ilgdQKgsHA==","signatures":[{"sig":"MEQCIFYMV4b025/tVyzqMqsp+g+jwYwe8ZJ5Qo9mg3BX4h6hAiBdbtk5NsECD/+A/PO/bUheNkZV/wqWsYoiNWWFmeQTdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29391},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ea34b4d9d1140bae548933472771a6dd44d7865b","scripts":{"test":"bun test","build":"tsup src/index.ts --format esm --out-dir dist --clean --external @ai-media/sdk && tsc -p tsconfig.emit-dts.json","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","typecheck:release":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"windzb","email":"windzb@qq.com"},"_npmVersion":"11.13.0","description":"MiniMax (Hailuo) video provider for AI Media SDK","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@ai-media/sdk":"^0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.2.0","typescript":"^7.0.2","@types/node":"^20","@workspace/typescript-config":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/provider-minimax_0.1.2_1786617053606_0.4981794149383163","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@ai-media/provider-minimax","version":"0.1.3","license":"MIT","_id":"@ai-media/provider-minimax@0.1.3","maintainers":[{"name":"windzb","email":"windzb@qq.com"}],"dist":{"shasum":"e142fd7ed9bae00cab4dee7ee2ec6bc46707850e","tarball":"https://registry.npmjs.org/@ai-media/provider-minimax/-/provider-minimax-0.1.3.tgz","fileCount":9,"integrity":"sha512-3+Ir2dWntIYUgHmEJBmkb7u7STb9ZdwawlqTHwckH/eQ19ekfz8cNiSUhe4fh9zk89aMhAfKSw196LAH2v9TAw==","signatures":[{"sig":"MEQCIEsU8LtNLBGUatdY2cO0JXVgbTbY9fNZXhDfgypz4SvDAiBA8/PgxfBzSqhWbr3gqix9IxEiowIeUiNMxj3mESDB5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDFvD2Tc/3Wfy70+IqCydX6f3Lgwm+xFy8LJGKkYb5wmAiBn6+rmMUEyLzphAEazJpWaLKJH0LtJmiQox/qWCT+KWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29825},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"6c3b3f554fde04c18b01ab1db1a640c686a1b627","scripts":{"test":"bun test","build":"tsup src/index.ts --format esm --out-dir dist --clean --external @ai-media/sdk && tsc -p tsconfig.emit-dts.json","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","typecheck:release":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"windzb","email":"windzb@qq.com"},"_npmVersion":"11.13.0","description":"MiniMax (Hailuo) video provider for AI Media SDK","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@ai-media/sdk":"^0.1.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.2.0","typescript":"^7.0.2","@types/node":"^20","@workspace/typescript-config":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/provider-minimax_0.1.3_1788338284058_0.3366347626278601","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@ai-media/provider-minimax","version":"0.1.4","license":"MIT","_id":"@ai-media/provider-minimax@0.1.4","maintainers":[{"name":"windzb","email":"windzb@qq.com"}],"dist":{"shasum":"1d334e95f53996ca719ca1520c2c1ac6b113a12a","tarball":"https://registry.npmjs.org/@ai-media/provider-minimax/-/provider-minimax-0.1.4.tgz","fileCount":9,"integrity":"sha512-0bLy8ToJ3TqW4TYHqeYo8VSfstMamUciuLbpsMMEJivDelnhXfCwTP+74WfEMxUWEmJRDC1Ft5kGQuBHeSx87A==","signatures":[{"sig":"MEYCIQCmUHjzpt3T3RpMgkf7b1/7C5/c03NIsz1tLtH6kWoVBgIhAPTv/r9TZKxqYwt96QJblgDwtVQRpsx+CgGD7UDjeKae","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDZtgHvM5nu/Lf4ZrDhPBaLmp15tnkIEzFK86n7S5oHsAIhAIs4mVI3kuOr1jNNZsxjTDbjbIfCtMurkBhDLjdp6joB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29825},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"5c8cd107a8ccb6238e595123b53eff87d2da7f26","scripts":{"test":"bun test","build":"tsup src/index.ts --format esm --out-dir dist --clean --external @ai-media/sdk && tsc -p tsconfig.emit-dts.json","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","typecheck:release":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"windzb","email":"windzb@qq.com"},"_npmVersion":"10.9.3","description":"MiniMax (Hailuo) video provider for AI Media SDK","directories":{},"_nodeVersion":"22.18.0","dependencies":{"@ai-media/sdk":"^0.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.2.0","typescript":"^7.0.2","@types/node":"^20","@workspace/typescript-config":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/provider-minimax_0.1.4_1788873623178_0.7477254429155296","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"_id":"@ai-media/provider-minimax@0.1.5","dist":{"shasum":"a195d94ebd5b2ff9ba699c430d979d9aa2399114","tarball":"https://registry.npmjs.org/@ai-media/provider-minimax/-/provider-minimax-0.1.5.tgz","fileCount":9,"integrity":"sha512-+k3FCac1bA1TinqGmeDuXuQv+EBV/XKBYXKUNdzStowi3iMV+8RdTJSnBTdqnxtEsw/Pixs9G/VC2+/RVDrwzQ==","signatures":[{"sig":"MEQCIF3AWQK54Pm73eeEdhc4imrkUIQfzBrwTXssBNDP9TkRAiA3lz+INB9T31w3iEYrcrE81GKRKf8a0PRAsVqz0CTv4A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHkJ8eZc5Cp05G0vWC0VhnBfVU89GvKH19OIJ5XcQI1DAiAtECX+ZR4Uw6l67gStMLnoxmjwEQ8Q6Z1K3StauPh7Nw=="}],"unpackedSize":29825},"main":"./dist/index.js","name":"@ai-media/provider-minimax","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ca953c8881ebb066181712b134a2e559b827aa9f","license":"MIT","scripts":{"test":"bun test","build":"tsup src/index.ts --format esm --out-dir dist --clean --external @ai-media/sdk && tsc -p tsconfig.emit-dts.json","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","typecheck:release":"tsc -p tsconfig.json --noEmit"},"version":"0.1.5","_npmUser":{"name":"windzb","email":"windzb@qq.com"},"_npmVersion":"10.9.3","description":"MiniMax (Hailuo) video provider for AI Media SDK","directories":{},"maintainers":[{"name":"windzb","email":"windzb@qq.com"}],"_nodeVersion":"22.18.0","dependencies":{"@ai-media/sdk":"^0.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.2.0","typescript":"^7.0.2","@types/node":"^20","@workspace/typescript-config":"workspace:*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/provider-minimax_0.1.5_1789053401690_0.2410913521007454"}}},"time":{"created":"2026-08-13T10:30:53.427Z","modified":"2026-09-10T15:16:42.000Z","0.1.2":"2026-08-13T10:30:53.739Z","0.1.3":"2026-09-02T08:38:04.141Z","0.1.4":"2026-09-08T13:20:23.258Z","0.1.5":"2026-09-10T15:16:41.772Z"},"license":"MIT","description":"MiniMax (Hailuo) video provider for AI Media SDK","maintainers":[{"name":"windzb","email":"windzb@qq.com"}],"readme":"# @ai-media/provider-minimax\n\n[![npm version](https://img.shields.io/npm/v/@ai-media/provider-minimax.svg)](https://www.npmjs.com/package/@ai-media/provider-minimax)\n[![npm downloads](https://img.shields.io/npm/dm/@ai-media/provider-minimax.svg)](https://www.npmjs.com/package/@ai-media/provider-minimax)\n[![License](https://img.shields.io/npm/l/@ai-media/provider-minimax.svg)](https://github.com/ecafe8/ai-media-sdk/blob/main/packages/provider-minimax/LICENSE)\n\n[AI Media SDK](../ai-media-sdk/README.md) 的 MiniMax（海螺）Provider，当前支持 MiniMax-H3 视频生成。基于原生 `fetch` 直接调用 MiniMax V2 REST API，不依赖平台 SDK。\n\n> **注意**：本项目处于快速迭代期间，API 可能随时变更，生产使用请锁定版本。\n\n## 安装\n\n```bash\nnpm install @ai-media/sdk @ai-media/provider-minimax\n```\n\n运行时要求：Node.js >= 20（或 Bun），ESM-only。\n\n## 配置\n\n通过 `createMiniMaxProvider(config)` 传入配置对象：\n\n```ts\nimport { createMiniMaxProvider } from \"@ai-media/provider-minimax\";\n\nconst provider = createMiniMaxProvider({\n  /** MiniMax API key，作为 `Authorization: Bearer` 凭据发送 */\n  apiKey: \"<your-api-key>\",\n  /** 可选；默认 https://api.minimax.io */\n  baseUrl: \"https://api.minimax.io\",\n});\n```\n\n## 视频生成（MiniMax-H3：异步任务）\n\nMiniMax-H3 为异步模型：`submitVideoTask` 提交任务后返回 `TaskHandle`，轮询 `GET /v2/query/video_generation/{task_id}` 直至终态。单个模型 id 覆盖全部场景，场景由输入媒体决定：\n\n- **文生视频（t2v）**：仅 `prompt`，`ratio` 必填且不能为 `adaptive`；\n- **图生视频（i2v）**：`prompt` + `firstFrame`（可选 `lastFrame` 组成首尾帧），宽高比固定 `adaptive`；\n- **参考生视频（r2v）**：`prompt` + `referenceImages`（≤9）/ `referenceVideos`（≤3）/ `referenceAudios`（≤3）任意组合，`ratio` 缺省 `adaptive`。\n\ni2v 的首尾帧与 r2v 的参考媒体互斥，不能混用。\n\n```ts\nimport { submitVideoTask } from \"@ai-media/sdk\";\n\n// 文生视频（t2v）\nconst t2v = await submitVideoTask({\n  model: provider.video(\"MiniMax-H3\"),\n  prompt: \"海边打篮球的少年，夕阳逆光\",\n  providerOptions: {\n    minimax: { resolution: \"2K\", duration: 5, ratio: \"16:9\" },\n  },\n});\nconst result = await t2v.wait({ pollIntervalMs: 15_000, timeoutMs: 600_000 });\nconsole.log(result.content[0]?.url); // 临时 URL，请尽快下载保存\n\n// 图生视频（i2v 首帧）\nconst i2v = await submitVideoTask({\n  model: provider.video(\"MiniMax-H3\"),\n  prompt: \"让画面动起来，背景增加蒸汽\",\n  firstFrame: { url: \"https://example.com/first.png\" },\n  providerOptions: { minimax: { resolution: \"2K\", duration: 5 } },\n});\n\n// 首尾帧（i2v first & last frame）\nconst frames = await submitVideoTask({\n  model: provider.video(\"MiniMax-H3\"),\n  prompt: \"在两帧之间平滑过渡\",\n  firstFrame: { url: \"https://example.com/first.png\" },\n  lastFrame: { url: \"https://example.com/last.png\" },\n  providerOptions: { minimax: { resolution: \"768P\", duration: 6 } },\n});\n\n// 参考生视频（r2v：参考图 + 参考视频 + 参考音频）\nconst r2v = await submitVideoTask({\n  model: provider.video(\"MiniMax-H3\"),\n  prompt: \"角色说话：随风而行，活在当下。音色跟随参考音频 1。\",\n  referenceImages: [{ url: \"https://example.com/ref.png\" }],\n  referenceVideos: [{ url: \"https://example.com/ref.mp4\", duration: 4 }],\n  referenceAudios: [{ url: \"https://example.com/ref.mp3\", duration: 3 }],\n  providerOptions: {\n    minimax: { resolution: \"2K\", duration: 5, ratio: \"9:16\" },\n  },\n});\n```\n\n图片输入支持公网 URL 或 base64（自动转为 `data:` URI）；参考视频/音频仅支持公网 URL，单个时长 2-15 秒、合计不超过 15 秒（提供 `duration` 元数据时在客户端校验）。\n\n## providerOptions.minimax\n\n| 字段          | 必填 | 说明                                                                  |\n| ------------- | ---- | --------------------------------------------------------------------- |\n| `resolution`  | ✅   | `768P` / `2K`                                                          |\n| `duration`    | ✅   | 输出时长（秒），`4`-`15` 整数                                          |\n| `ratio`       | ❌   | `adaptive`/`21:9`/`16:9`/`4:3`/`1:1`/`3:4`/`9:16`；t2v 必填且非 adaptive |\n| `callbackUrl` | ❌   | 任务状态回调地址（透传，挑战验证需自行实现）                            |\n\n## 模型一览\n\n| 模型          | 调用方式 | 生成 | 编辑 | 场景                       |\n| ------------- | -------- | ---- | ---- | -------------------------- |\n| `MiniMax-H3`  | 异步     | ✅   | ❌   | t2v / i2v 首尾帧 / r2v     |\n\n## 错误处理\n\n非 2xx 响应解析 MiniMax 的 OpenAI 风格错误体并分类：401/403 → `AUTH_ERROR`，429 → `RATE_LIMITED`（可重试），400/422 → `INVALID_REQUEST`，402（余额不足）与 5xx → `PROVIDER_ERROR`；网络/超时失败映射为 `NETWORK_ERROR`/`TIMEOUT`。所有对外错误信息均会脱敏 API key。\n\n任务状态映射：`queued → pending`、`running → running`、`succeeded`、`failed`、`cancelled`；成功后从 `task.content.url` 取视频 URL（带 `duration` 元数据），`raw` 携带 `task.usage`。\n\n## 限制\n\n- 不支持任务取消/删除端点（SDK 暂无 cancel 契约）。\n- 不支持 H3-Context-IR 与视频再生（regeneration）端点。\n- Playground（apps/web、apps/site）集成将在后续变更中提供。\n","readmeFilename":"README.md"}