diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3d679aa --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 DesireCore + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md new file mode 100644 index 0000000..ebcea94 --- /dev/null +++ b/THIRD_PARTY_NOTICES.md @@ -0,0 +1,32 @@ +# Third-Party Notices + +This repository's own content (DesireCore-authored skills and metadata) is licensed +under the MIT License (see `LICENSE`). Some bundled skills are derived from or +authored by third parties and are governed by their own terms, noted below. The +`license` / `redistribution` fields on each entry are the source of truth per skill. + +## Anthropic skills (`anthropics/skills`) + +The following skills are **source-available, NOT open source**. Per Anthropic's +`anthropics/skills` README they are provided for demonstration and educational +purposes only. They are included here as reference implementations; verify +Anthropic's terms before redistribution or production use. + +- `skills/docx` +- `skills/pdf` +- `skills/pptx` +- `skills/xlsx` + +Other Anthropic-authored skills in this repository are licensed under +**Apache-2.0** (e.g. `skills/frontend-design`); the Apache-2.0 license and any +required NOTICE attribution apply to those skills. + +Upstream: https://github.com/anthropics/skills + +## External / pointer skills + +Skills described only by an `entry.json` pointer (no vendored source) are +maintained by their respective upstreams and governed by each upstream's license. +See the `license` and `redistribution` fields in each `skills//entry.json`. +Entries with `redistribution: source-pointer-only` or `verify-package-terms` are +not redistributed here; their content is fetched from the upstream at install time. diff --git a/skills/amap-jsapi-skill/entry.json b/skills/amap-jsapi-skill/entry.json new file mode 100644 index 0000000..e3e6da9 --- /dev/null +++ b/skills/amap-jsapi-skill/entry.json @@ -0,0 +1,21 @@ +{ + "id": "amap-jsapi-skill", + "name": "AMap JSAPI Skill", + "category": "development", + "tags": [ + "lbs-amap" + ], + "maintainer": { + "name": "lbs-amap", + "verified": false, + "account": "lbs-amap", + "url": "https://clawhub.ai/lbs-amap/skills/amap-jsapi-skill" + }, + "stewardship": "community", + "license": "MIT-0", + "redistribution": "allowed", + "source": { + "kind": "web", + "repoUrl": "https://clawhub.ai/lbs-amap/skills/amap-jsapi-skill" + } +} diff --git a/skills/dingtalk-api/entry.json b/skills/dingtalk-api/entry.json new file mode 100644 index 0000000..6209384 --- /dev/null +++ b/skills/dingtalk-api/entry.json @@ -0,0 +1,21 @@ +{ + "id": "dingtalk-api", + "name": "DingTalk API Skill", + "category": "communication", + "tags": [ + "ogenes" + ], + "maintainer": { + "name": "ogenes", + "verified": false, + "account": "ogenes", + "url": "https://clawhub.ai/ogenes/skills/dingtalk-api" + }, + "stewardship": "community", + "license": "MIT-0", + "redistribution": "allowed", + "source": { + "kind": "web", + "repoUrl": "https://clawhub.ai/ogenes/skills/dingtalk-api" + } +} diff --git a/skills/flyai-skill/entry.json b/skills/flyai-skill/entry.json new file mode 100644 index 0000000..621a09b --- /dev/null +++ b/skills/flyai-skill/entry.json @@ -0,0 +1,23 @@ +{ + "id": "flyai-skill", + "name": "FlyAI", + "category": "productivity", + "tags": [ + "alibaba-flyai" + ], + "maintainer": { + "name": "alibaba-flyai", + "verified": false, + "account": "alibaba-flyai", + "url": "https://github.com/alibaba-flyai/flyai-skill" + }, + "stewardship": "partner", + "license": "MIT", + "redistribution": "allowed", + "source": { + "kind": "git", + "repoUrl": "https://github.com/alibaba-flyai/flyai-skill.git", + "repoBranch": "main", + "ref": "54277b27b68e53741954c08541faedba1d45cc7b" + } +} diff --git a/skills/follow-builders/entry.json b/skills/follow-builders/entry.json new file mode 100644 index 0000000..be76fb8 --- /dev/null +++ b/skills/follow-builders/entry.json @@ -0,0 +1,22 @@ +{ + "id": "follow-builders", + "name": "Follow Builders", + "category": "productivity", + "tags": [ + "zarazhangrui" + ], + "maintainer": { + "name": "zarazhangrui", + "verified": false, + "account": "zarazhangrui", + "url": "https://github.com/zarazhangrui/follow-builders" + }, + "stewardship": "community", + "license": "MIT", + "redistribution": "allowed", + "source": { + "kind": "git", + "repoUrl": "https://github.com/zarazhangrui/follow-builders.git", + "repoBranch": "main" + } +} diff --git a/skills/larksuite-cli/entry.json b/skills/larksuite-cli/entry.json new file mode 100644 index 0000000..5369fbc --- /dev/null +++ b/skills/larksuite-cli/entry.json @@ -0,0 +1,23 @@ +{ + "id": "larksuite-cli", + "name": "Lark Suite CLI", + "category": "communication", + "tags": [ + "larksuite" + ], + "maintainer": { + "name": "larksuite", + "verified": false, + "account": "larksuite", + "url": "https://github.com/larksuite/cli" + }, + "stewardship": "partner", + "license": "MIT", + "redistribution": "allowed", + "source": { + "kind": "git", + "repoUrl": "https://github.com/larksuite/cli.git", + "repoBranch": "main", + "ref": "4c31323de1ca878b2070c05f7c3cb66c0de4c767" + } +} diff --git a/skills/luckin-my-coffee/entry.json b/skills/luckin-my-coffee/entry.json new file mode 100644 index 0000000..5df3450 --- /dev/null +++ b/skills/luckin-my-coffee/entry.json @@ -0,0 +1,21 @@ +{ + "id": "luckin-my-coffee", + "name": "Luckin My Coffee", + "category": "business", + "tags": [ + "luckin" + ], + "maintainer": { + "name": "luckin", + "verified": false, + "account": "luckin", + "url": "https://unpkg.luckincoffeecdn.com/@luckin/my-coffee-skill@latest/dist/my-coffee-skill.zip" + }, + "stewardship": "pointer", + "license": "packaged-distribution", + "redistribution": "verify-package-terms", + "source": { + "kind": "zip", + "repoUrl": "https://unpkg.luckincoffeecdn.com/@luckin/my-coffee-skill@latest/dist/my-coffee-skill.zip" + } +} diff --git a/skills/minimax-image-gen/SKILL.md b/skills/minimax-image-gen/SKILL.md deleted file mode 100644 index 39b4837..0000000 --- a/skills/minimax-image-gen/SKILL.md +++ /dev/null @@ -1,148 +0,0 @@ ---- -name: minimax-image-gen -description: >- - Use this skill when the user wants to generate images using MiniMax's - image-01 model. Supports text-to-image and subject reference for character - consistency. Use when 用户提到 生成图片、画图、文生图、创建图片、 - AI 绘画、生成插图、画一张、帮我画、设计图片、MiniMax 画图。 -license: Complete terms in LICENSE.txt -version: 1.3.1 -type: procedural -risk_level: low -status: enabled -disable-model-invocation: true -provider: minimax -tags: - - media - - image - - generation - - minimax -requires: - tools: - - Bash -metadata: - author: desirecore - updated_at: '2026-04-25' - i18n: - default_locale: en-US - source_locale: zh-CN - locales: - - zh-CN - - en-US - zh-CN: - name: MiniMax 文生图 - short_desc: 基于 MiniMax image-01 的文本生成图片技能 - description: >- - Use this skill when the user wants to generate images using MiniMax's image-01 model. Supports text-to-image and subject reference for character consistency. Use when 用户提到 生成图片、画图、文生图、创建图片、 AI 绘画、生成插图、画一张、帮我画、设计图片、MiniMax 画图。 - body: ./SKILL.zh-CN.md - source_hash: sha256:4630268ef3bd4e23 - translated_by: human - en-US: - name: MiniMax Image Generation - short_desc: Text-to-image generation skill powered by MiniMax image-01 - description: >- - Use this skill when the user wants to generate images using MiniMax's image-01 model. Supports text-to-image and subject reference for character consistency. Use when the user mentions generate images, draw a picture, text-to-image, create an image, AI painting, generate illustration, draw one for me, help me draw, design an image, MiniMax drawing. - body: ./SKILL.md - source_hash: sha256:4630268ef3bd4e23 - translated_by: human - translated_at: '2026-05-03' -market: - icon: >- - - category: media - maintainer: - name: DesireCore Official - verified: true - channel: latest - listed: false ---- - -# minimax-image-gen Skill - -## Mandatory Rules (violations will cause feature failure) - -1. **Must use `"response_format": "url"`** — `"base64"` is forbidden, base64 will cause output truncation -2. **Must access agent-service over HTTPS** — `https://127.0.0.1:${PORT}` with `-k` to skip certificate verification -3. **Must upload to media-store via `/api/media/upload`** — saving to local paths is forbidden -4. **Must use the `dc-media://` protocol to display images** — the only way the frontend can render correctly -5. **Use Bash curl throughout** — do not use the HttpRequest tool or Python - -## Complete Execution Flow (strictly follow these three steps) - -### Step 1: Call the API to generate the image - -```bash -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": "provider-minimax-media-001", - "endpoint": "/image_generation", - "body": { - "model": "image-01", - "prompt": "这里替换为英文图片描述", - "aspect_ratio": "1:1", - "response_format": "url", - "n": 1 - }, - "responseType": "json" - }' -``` - -Extract `data.data.image_urls[0]` from the JSON response to obtain the image URL. - -### Step 2: Download and upload to media-store - -```bash -PORT=$(cat ${DESIRECORE_ROOT}/agent-service.port) -IMAGE_URL="第一步拿到的图片URL" -curl -sL "$IMAGE_URL" -o /tmp/minimax-gen.png && \ -curl -sk -X POST "https://127.0.0.1:${PORT}/api/media/upload" \ - -F "file=@/tmp/minimax-gen.png;type=image/png" -``` - -Extract the `mediaId` field from the JSON response (format like `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.png`). - -### Step 3: Display the image with the dc-media protocol - -Write Markdown image syntax directly in your reply text: - -``` -![图片描述](dc-media://这里替换为mediaId) -``` - -For example: `![白色的猫坐在书桌上](dc-media://a1b2c3d4-e5f6-47a8-b9c0-d1e2f3a4b5c6.png)` - -The frontend will automatically convert `dc-media://` into an accessible image URL and render it. - -## Parameter Mapping - -| User Intent | aspect_ratio | -|---------|-------------| -| Square / avatar | "1:1" | -| Landscape / scenery / wallpaper | "16:9" | -| Portrait / phone / poster | "9:16" | -| Standard photo | "4:3" | -| Portrait photo | "3:4" | - -## Subject Reference (character consistency) - -Add `subject_reference` in the body: - -```json -"subject_reference": [ - { "type": "character", "image_file": { "url": "参考图片URL" } } -] -``` - -## Error Handling - -- `"error": "未找到匹配的供应商"`: MiniMax Media Provider not configured -- `statusCode: 401`: Invalid API Key -- `statusCode: 429`: Rate limited, retry later diff --git a/skills/minimax-image-gen/SKILL.zh-CN.md b/skills/minimax-image-gen/SKILL.zh-CN.md deleted file mode 100644 index 171c3b3..0000000 --- a/skills/minimax-image-gen/SKILL.zh-CN.md +++ /dev/null @@ -1,85 +0,0 @@ - - -# minimax-image-gen 技能 - -## 强制规则(违反将导致功能失败) - -1. **必须使用 `"response_format": "url"`** — 禁止 `"base64"`,base64 会导致输出截断 -2. **必须用 HTTPS 访问 agent-service** — `https://127.0.0.1:${PORT}` 加 `-k` 跳过证书验证 -3. **必须通过 `/api/media/upload` 上传到 media-store** — 禁止保存到本地路径 -4. **必须使用 `dc-media://` 协议展示图片** — 唯一能让前端正确渲染的方式 -5. **全程使用 Bash curl** — 不要使用 HttpRequest 工具或 Python - -## 完整执行流程(严格按此三步执行) - -### 第一步:调用 API 生成图片 - -```bash -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": "provider-minimax-media-001", - "endpoint": "/image_generation", - "body": { - "model": "image-01", - "prompt": "这里替换为英文图片描述", - "aspect_ratio": "1:1", - "response_format": "url", - "n": 1 - }, - "responseType": "json" - }' -``` - -从 JSON 响应中提取 `data.data.image_urls[0]` 得到图片 URL。 - -### 第二步:下载并上传到 media-store - -```bash -PORT=$(cat ${DESIRECORE_ROOT}/agent-service.port) -IMAGE_URL="第一步拿到的图片URL" -curl -sL "$IMAGE_URL" -o /tmp/minimax-gen.png && \ -curl -sk -X POST "https://127.0.0.1:${PORT}/api/media/upload" \ - -F "file=@/tmp/minimax-gen.png;type=image/png" -``` - -从 JSON 响应中提取 `mediaId` 字段(格式如 `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.png`)。 - -### 第三步:用 dc-media 协议展示图片 - -在你的回复文本中直接写 Markdown 图片语法: - -``` -![图片描述](dc-media://这里替换为mediaId) -``` - -例如:`![白色的猫坐在书桌上](dc-media://a1b2c3d4-e5f6-47a8-b9c0-d1e2f3a4b5c6.png)` - -前端会自动将 `dc-media://` 转为可访问的图片 URL 并渲染出来。 - -## 参数映射 - -| 用户意图 | aspect_ratio | -|---------|-------------| -| 正方形/头像 | "1:1" | -| 横版/风景/壁纸 | "16:9" | -| 竖版/手机/海报 | "9:16" | -| 标准照片 | "4:3" | -| 竖版照片 | "3:4" | - -## 主体参考(角色一致性) - -在 body 中添加 `subject_reference`: - -```json -"subject_reference": [ - { "type": "character", "image_file": { "url": "参考图片URL" } } -] -``` - -## 错误处理 - -- `"error": "未找到匹配的供应商"`:未配置 MiniMax Media Provider -- `statusCode: 401`:API Key 无效 -- `statusCode: 429`:频率限制,稍后重试 diff --git a/skills/minimax-image-gen/entry.json b/skills/minimax-image-gen/entry.json new file mode 100644 index 0000000..693eddb --- /dev/null +++ b/skills/minimax-image-gen/entry.json @@ -0,0 +1,36 @@ +{ + "id": "minimax-image-gen", + "name": "MiniMax 图像生成", + "category": "media", + "tags": [ + "minimax", + "media" + ], + "latestVersion": "1.3.1", + "i18n": { + "zh-CN": { + "name": "MiniMax 图像生成", + "shortDesc": "MiniMax 图像生成" + }, + "en-US": { + "name": "MiniMax Image Generation", + "shortDesc": "MiniMax Image Generation" + } + }, + "maintainer": { + "name": "DesireCore", + "verified": true, + "account": "desirecore", + "url": "https://github.com/desirecore" + }, + "stewardship": "official", + "license": "MIT", + "redistribution": "allowed", + "source": { + "kind": "git", + "repoUrl": "https://github.com/desirecore/skills-minimax.git", + "repoBranch": "main", + "path": "minimax-image-gen", + "ref": "6e39eee2ad39632a21f43ed997983e70594b2b8a" + } +} diff --git a/skills/minimax-tts/SKILL.md b/skills/minimax-tts/SKILL.md deleted file mode 100644 index 1ccbb6e..0000000 --- a/skills/minimax-tts/SKILL.md +++ /dev/null @@ -1,227 +0,0 @@ ---- -name: minimax-tts -description: >- - Use this skill when the user wants to convert text to speech using MiniMax's - T2A (Text-to-Audio) API. Supports multiple voice styles, emotional control, - and voice cloning. Use when 用户提到 语音合成、文字转语音、TTS、朗读、 - 读出来、生成语音、生成音频、文本转音频、配音、念出来、MiniMax 语音。 -license: Complete terms in LICENSE.txt -version: 1.2.1 -type: procedural -risk_level: low -status: enabled -disable-model-invocation: true -provider: minimax -tags: - - media - - audio - - tts - - speech - - minimax -requires: - tools: - - Bash -metadata: - author: desirecore - updated_at: '2026-04-25' - i18n: - default_locale: en-US - source_locale: zh-CN - locales: - - zh-CN - - en-US - zh-CN: - name: MiniMax 语音合成 - short_desc: 基于 MiniMax Speech-02 的文本转语音技能 - description: >- - Use this skill when the user wants to convert text to speech using MiniMax's T2A (Text-to-Audio) API. Supports multiple voice styles, emotional control, and voice cloning. Use when 用户提到 语音合成、文字转语音、TTS、朗读、 读出来、生成语音、生成音频、文本转音频、配音、念出来、MiniMax 语音。 - body: ./SKILL.zh-CN.md - source_hash: sha256:455a2ee6365958c2 - translated_by: human - en-US: - name: MiniMax Text-to-Speech - short_desc: Text-to-speech skill powered by MiniMax Speech-02 - description: >- - Use this skill when the user wants to convert text to speech using MiniMax's T2A (Text-to-Audio) API. Supports multiple voice styles, emotional control, and voice cloning. Use when the user mentions text-to-speech, TTS, read aloud, read it out, generate speech, generate audio, text-to-audio, voiceover, narrate it, MiniMax voice. - body: ./SKILL.md - source_hash: sha256:455a2ee6365958c2 - translated_by: human - translated_at: '2026-05-03' -market: - icon: >- - - category: media - maintainer: - name: DesireCore Official - verified: true - channel: latest - listed: false ---- - -# minimax-tts Skill - -## Mandatory Rules (violations will cause feature failure) - -1. **Must access agent-service over HTTPS** — `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 - -## Complete Execution Flow - -### Prerequisites - -- The user has configured a MiniMax Media Provider with an API Key under Resources → Compute -- agent-service is running - -### Voice Selection Guide - -| voice_id | Characteristics | Use Cases | -|----------|------|---------| -| male-qn-qingse | Young male voice | Narration, podcasts | -| female-shaonv | Young female voice | Audiobooks, dialogue | -| female-yujie | Mature female voice | Professional broadcasting | -| presenter_male | Male anchor voice | News, formal occasions | -| presenter_female | Female anchor voice | News, formal occasions | - -### Generate Speech - -MiniMax TTS returns JSON (containing an audio URL or hex data); use `"json"` for `responseType`. - -```bash -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": "provider-minimax-media-001", - "endpoint": "/t2a_v2", - "body": { - "model": "speech-02-hd", - "text": "要转换为语音的文本内容", - "voice_setting": { - "voice_id": "male-qn-qingse", - "speed": 1.0, - "vol": 1.0, - "pitch": 0 - }, - "audio_setting": { - "format": "mp3", - "sample_rate": 32000 - } - }, - "responseType": "json" - }' -``` - -### Response Handling - -MiniMax TTS returns JSON which, depending on the request parameters, may contain a URL or hex format: - -**URL format response** (recommended, requires `"format": "url"` in audio_setting): -```json -{ - "success": true, - "data": { - "data": { - "audio": { - "audio_url": "https://...", - "status": 1 - } - }, - "base_resp": { "status_code": 0, "status_msg": "success" } - }, - "statusCode": 200 -} -``` - -**Hex format response** (default): -```json -{ - "success": true, - "data": { - "data": { - "audio": { - "data": "hex编码的音频数据...", - "status": 1 - } - }, - "extra_info": { - "audio_length": 12345, - "audio_sample_rate": 32000, - "audio_size": 67890 - } - }, - "statusCode": 200 -} -``` - -### Download and Upload to media-store - -Audio URLs have a time limit, so they must be downloaded immediately and saved to the local media-store. - -**URL format**: -```bash -PORT=$(cat ${DESIRECORE_ROOT}/agent-service.port) -AUDIO_URL="响应中的audio_url" -curl -sL "$AUDIO_URL" -o /tmp/minimax-tts.mp3 && \ -curl -sk -X POST "https://127.0.0.1:${PORT}/api/media/upload" \ - -F "file=@/tmp/minimax-tts.mp3;type=audio/mpeg" -``` - -**Hex format**: -```bash -PORT=$(cat ${DESIRECORE_ROOT}/agent-service.port) -HEX_DATA="响应中的hex数据" -echo -n "$HEX_DATA" | xxd -r -p > /tmp/minimax-tts.mp3 && \ -curl -sk -X POST "https://127.0.0.1:${PORT}/api/media/upload" \ - -F "file=@/tmp/minimax-tts.mp3;type=audio/mpeg" -``` - -Extract the `mediaId` field from the JSON response. - -### Display the Result - -Reference it in your reply using the dc-media protocol (the frontend will automatically detect the audio extension and render a player): - -``` -![语音合成结果](dc-media://这里替换为mediaId) -``` - -### Parameter Reference - -| Parameter | Description | Default | -|------|------|--------| -| model | Model | "speech-02-hd" (HD) or "speech-02-turbo" (fast) | -| text | Text to convert | Max 10000 characters | -| voice_setting.voice_id | Voice persona | "male-qn-qingse" | -| voice_setting.speed | Speaking speed | 1.0 | -| voice_setting.vol | Volume | 1.0 | -| voice_setting.pitch | Pitch | 0 | -| audio_setting.format | Audio format | "mp3" | -| audio_setting.sample_rate | Sample rate | 32000 | - -### Special Syntax - -MiniMax TTS supports inserting pause markers in the text: -- `<#0.5#>` — pause for 0.5 seconds -- `<#2#>` — pause for 2 seconds -- Valid range: 0.01 ~ 99.99 seconds - -Example: `"你好<#1#>欢迎来到 DesireCore"` - -### Error Handling - -- `success: false` + `statusCode: 400`: empty text or malformed parameters -- `success: false` + `statusCode: 401`: invalid API Key -- `success: false` + `statusCode: 429`: rate limited -- `success: false` + `error: "未找到匹配的供应商"`: MiniMax Media Provider not configured - -### Notes - -- For text exceeding 3000 characters, streaming output is recommended (proxy mode does not yet support streaming) -- Returned audio_url is valid for 24 hours -- Unless the user specifies otherwise, default to `speech-02-hd` + `male-qn-qingse` + 1.0x speed -- For long text, split it into segments of no more than 3000 characters each diff --git a/skills/minimax-tts/SKILL.zh-CN.md b/skills/minimax-tts/SKILL.zh-CN.md deleted file mode 100644 index 0774f6d..0000000 --- a/skills/minimax-tts/SKILL.zh-CN.md +++ /dev/null @@ -1,164 +0,0 @@ - - -# minimax-tts 技能 - -## 强制规则(违反将导致功能失败) - -1. **必须用 HTTPS 访问 agent-service** — `https://127.0.0.1:${PORT}` 加 `-k` 跳过证书验证 -2. **全程使用 Bash curl** — 不要使用 HttpRequest 工具或 Python - -## 完整执行流程 - -### 前置条件 - -- 用户已在资源管理器-算力中配置 MiniMax Media Provider 并填写 API Key -- agent-service 正在运行 - -### 语音选择指南 - -| voice_id | 特点 | 适用场景 | -|----------|------|---------| -| male-qn-qingse | 青涩男声 | 旁白、播客 | -| female-shaonv | 少女女声 | 有声书、对话 | -| female-yujie | 御姐女声 | 专业播报 | -| presenter_male | 主持人男声 | 新闻、正式场合 | -| presenter_female | 主持人女声 | 新闻、正式场合 | - -### 生成语音 - -MiniMax TTS 返回 JSON(包含音频 URL 或 hex 数据),`responseType` 使用 `"json"`。 - -```bash -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": "provider-minimax-media-001", - "endpoint": "/t2a_v2", - "body": { - "model": "speech-02-hd", - "text": "要转换为语音的文本内容", - "voice_setting": { - "voice_id": "male-qn-qingse", - "speed": 1.0, - "vol": 1.0, - "pitch": 0 - }, - "audio_setting": { - "format": "mp3", - "sample_rate": 32000 - } - }, - "responseType": "json" - }' -``` - -### 响应处理 - -MiniMax TTS 返回 JSON,根据请求参数可能返回 URL 或 hex 格式: - -**URL 格式响应**(推荐,需在 audio_setting 中设置 `"format": "url"`): -```json -{ - "success": true, - "data": { - "data": { - "audio": { - "audio_url": "https://...", - "status": 1 - } - }, - "base_resp": { "status_code": 0, "status_msg": "success" } - }, - "statusCode": 200 -} -``` - -**Hex 格式响应**(默认): -```json -{ - "success": true, - "data": { - "data": { - "audio": { - "data": "hex编码的音频数据...", - "status": 1 - } - }, - "extra_info": { - "audio_length": 12345, - "audio_sample_rate": 32000, - "audio_size": 67890 - } - }, - "statusCode": 200 -} -``` - -### 下载并上传到 media-store - -音频 URL 有时效限制,必须立即下载并保存到本地 media-store。 - -**URL 格式**: -```bash -PORT=$(cat ${DESIRECORE_ROOT}/agent-service.port) -AUDIO_URL="响应中的audio_url" -curl -sL "$AUDIO_URL" -o /tmp/minimax-tts.mp3 && \ -curl -sk -X POST "https://127.0.0.1:${PORT}/api/media/upload" \ - -F "file=@/tmp/minimax-tts.mp3;type=audio/mpeg" -``` - -**Hex 格式**: -```bash -PORT=$(cat ${DESIRECORE_ROOT}/agent-service.port) -HEX_DATA="响应中的hex数据" -echo -n "$HEX_DATA" | xxd -r -p > /tmp/minimax-tts.mp3 && \ -curl -sk -X POST "https://127.0.0.1:${PORT}/api/media/upload" \ - -F "file=@/tmp/minimax-tts.mp3;type=audio/mpeg" -``` - -从 JSON 响应中提取 `mediaId` 字段。 - -### 展示结果 - -在回复中使用 dc-media 协议引用(前端会自动识别音频扩展名并渲染播放器): - -``` -![语音合成结果](dc-media://这里替换为mediaId) -``` - -### 参数说明 - -| 参数 | 说明 | 默认值 | -|------|------|--------| -| model | 模型 | "speech-02-hd"(高清)或 "speech-02-turbo"(快速) | -| text | 要转换的文本 | 最大 10000 字符 | -| voice_setting.voice_id | 语音角色 | "male-qn-qingse" | -| voice_setting.speed | 语速 | 1.0 | -| voice_setting.vol | 音量 | 1.0 | -| voice_setting.pitch | 音调 | 0 | -| audio_setting.format | 音频格式 | "mp3" | -| audio_setting.sample_rate | 采样率 | 32000 | - -### 特殊语法 - -MiniMax TTS 支持在文本中插入停顿标记: -- `<#0.5#>` — 停顿 0.5 秒 -- `<#2#>` — 停顿 2 秒 -- 有效范围:0.01 ~ 99.99 秒 - -示例:`"你好<#1#>欢迎来到 DesireCore"` - -### 错误处理 - -- `success: false` + `statusCode: 400`:文本为空或参数格式错误 -- `success: false` + `statusCode: 401`:API Key 无效 -- `success: false` + `statusCode: 429`:频率限制 -- `success: false` + `error: "未找到匹配的供应商"`:未配置 MiniMax Media Provider - -### 注意事项 - -- 文本超过 3000 字符时建议使用流式输出(但代理模式暂不支持流式) -- 返回的 audio_url 有 24 小时时效 -- 如果用户未明确要求,默认使用 `speech-02-hd` + `male-qn-qingse` + 1.0 倍速 -- 长文本建议分段调用,每段不超过 3000 字符 diff --git a/skills/minimax-tts/entry.json b/skills/minimax-tts/entry.json new file mode 100644 index 0000000..f2a3ce6 --- /dev/null +++ b/skills/minimax-tts/entry.json @@ -0,0 +1,36 @@ +{ + "id": "minimax-tts", + "name": "MiniMax 语音合成", + "category": "media", + "tags": [ + "minimax", + "media" + ], + "latestVersion": "1.2.1", + "i18n": { + "zh-CN": { + "name": "MiniMax 语音合成", + "shortDesc": "MiniMax 语音合成" + }, + "en-US": { + "name": "MiniMax Text-to-Speech", + "shortDesc": "MiniMax Text-to-Speech" + } + }, + "maintainer": { + "name": "DesireCore", + "verified": true, + "account": "desirecore", + "url": "https://github.com/desirecore" + }, + "stewardship": "official", + "license": "MIT", + "redistribution": "allowed", + "source": { + "kind": "git", + "repoUrl": "https://github.com/desirecore/skills-minimax.git", + "repoBranch": "main", + "path": "minimax-tts", + "ref": "6e39eee2ad39632a21f43ed997983e70594b2b8a" + } +} diff --git a/skills/mt-paotui-for-client/entry.json b/skills/mt-paotui-for-client/entry.json new file mode 100644 index 0000000..6b09a21 --- /dev/null +++ b/skills/mt-paotui-for-client/entry.json @@ -0,0 +1,23 @@ +{ + "id": "mt-paotui-for-client", + "name": "Meituan Paotui Client", + "category": "business", + "tags": [ + "meituan" + ], + "maintainer": { + "name": "meituan", + "verified": false, + "account": "meituan", + "url": "https://github.com/meituan/MT-Paotui-For-Client" + }, + "stewardship": "pointer", + "license": "not-declared", + "redistribution": "source-pointer-only", + "source": { + "kind": "git", + "repoUrl": "https://github.com/meituan/MT-Paotui-For-Client.git", + "repoBranch": "main", + "ref": "dc5cc223a010c2fe4377088affc2fbe4c6c6473d" + } +} diff --git a/skills/netease-skills/entry.json b/skills/netease-skills/entry.json new file mode 100644 index 0000000..9fc3b07 --- /dev/null +++ b/skills/netease-skills/entry.json @@ -0,0 +1,22 @@ +{ + "id": "netease-skills", + "name": "NetEase Skills", + "category": "productivity", + "tags": [ + "NetEase" + ], + "maintainer": { + "name": "NetEase", + "verified": false, + "account": "NetEase", + "url": "https://github.com/NetEase/skills" + }, + "stewardship": "pointer", + "license": "not-declared", + "redistribution": "source-pointer-only", + "source": { + "kind": "git", + "repoUrl": "https://github.com/NetEase/skills.git", + "repoBranch": "main" + } +} diff --git a/skills/wechatpay-skills/entry.json b/skills/wechatpay-skills/entry.json new file mode 100644 index 0000000..b16f997 --- /dev/null +++ b/skills/wechatpay-skills/entry.json @@ -0,0 +1,23 @@ +{ + "id": "wechatpay-skills", + "name": "WeChat Pay Skills", + "category": "business", + "tags": [ + "wechatpay-apiv3" + ], + "maintainer": { + "name": "wechatpay-apiv3", + "verified": false, + "account": "wechatpay-apiv3", + "url": "https://github.com/wechatpay-apiv3/wechatpay-skills" + }, + "stewardship": "partner", + "license": "MIT", + "redistribution": "allowed", + "source": { + "kind": "git", + "repoUrl": "https://github.com/wechatpay-apiv3/wechatpay-skills.git", + "repoBranch": "main", + "ref": "8573bdc38b86fa67a42acfc422d6b4dbca4ada21" + } +} diff --git a/skills/wecom-cli/entry.json b/skills/wecom-cli/entry.json new file mode 100644 index 0000000..dd8bf1e --- /dev/null +++ b/skills/wecom-cli/entry.json @@ -0,0 +1,23 @@ +{ + "id": "wecom-cli", + "name": "WeCom CLI", + "category": "communication", + "tags": [ + "WecomTeam" + ], + "maintainer": { + "name": "WecomTeam", + "verified": false, + "account": "WecomTeam", + "url": "https://github.com/WecomTeam/wecom-cli" + }, + "stewardship": "community", + "license": "MIT", + "redistribution": "allowed", + "source": { + "kind": "git", + "repoUrl": "https://github.com/WecomTeam/wecom-cli.git", + "repoBranch": "main", + "ref": "72e14f7695f34d28f1ff23ea504ddd2210a87c13" + } +}