{
    "app": {
        "name": "avatar-studio",
        "description": "DashScope-powered digital human studio — photo speak, video relip, video reface, avatar compose. Use when the user asks for an AI talking-head video, lip-sync replacement on an existing video, replacing a person inside a video, or composing a new character from multiple reference images.",
        "mode": "advanced-chat",
        "model_config": {
            "provider": "deepseek",
            "model": "deepseek-chat",
            "parameters": {
                "temperature": 0.7,
                "max_tokens": 4096
            }
        }
    },
    "instructions": "name avatar-studio description DashScope-powered digital human studio — photo speak, video relip, video reface, avatar compose. Use when the user asks for an AI talking-head video, lip-sync replacement on an existing video, replacing a person inside a video, or composing a new character from multiple reference images. name: avatar-studio description: Generate digital-human speaking photos, relip/reface videos, voices, and avatar compositions through Avatar Studio. risk_class: network_out avatar-studio · Cursor Skill Card 一线插件。DashScope 万相 + s2v + cosyvoice + qwen-vl 全链路。 1 · 何时触发我 代理在用户出现以下意图时 优先 调用 avatar-studio 的工具，而不是手写 ffmpeg / ComfyUI 脚本或调其他视觉插件： \"让这张照片说话 / 帮我做一个数字人开场白\" \"我录了一段视频，能不能换个嘴型 / 配音口型\" \"这段视频里的人换成另一个人\" \"把这两张参考图融合成一个新的角色，让他说一段话\" \"估算一下做 5 秒数字人视频要多少钱\" 不 应触发 avatar-studio： 纯文生视频（无人脸）→ 调 seedance-video 纯文生图 → 调 tongyi-image 仅做 TTS、不出视频 → 直接调 cosyvoice 工具或主端 TTS 2 · 工具清单 工具名 用途 关键参数 avatar_cost_preview 估算费用， 不 实际提交 mode , 各 mode 必需的素材或 text_chars / audio_duration_sec avatar_photo_speak 创建照片说话任务 image_url 或 assets.image , text 或 audio_url , voice_id , resolution avatar_video_relip 创建视频换嘴任务 video_url 或 assets.video , text 或 audio_url , voice_id avatar_video_reface 创建视频换人任务 image_url , video_url , mode_pro (bool), watermark (bool) avatar_compose 创建数字人合成任务 ref_images_url[] (1-3 张), prompt , text , voice_id , resolution avatar_voice_create 注册自定义克隆音色 label , source_audio_path , dashscope_voice_id avatar_voice_delete 删除自定义音色 voice_id avatar_figure_create 注册自定义形象 label , image_path , preview_url avatar_figure_delete 删除自定义形象 figure_id 每个 mode 工具返回 任务已创建：{id}（mode=...） ；后续状态走 SSE plugin:avatar-studio:task_update 推送，UI 端 Tasks Tab 自动更新。 3 · 输入 schema 速查 所有 POST body 都用 Pydantic + extra=\"forbid\" 严格校验（落实 Pixelle C6，不会静默丢字段）。下面是 4 个生成 mode 在 /tasks 端点的差异： // photo_speak { \"mode\" : \"photo_speak\" , \"image_url\" : \"https://...\" , // 二选一：text + voice_id OR audio_url \"text\" : \"你好\" , \"voice_id\" : \"longxiaochun_v2\" , // \"audio_url\": \"https://...\", \"resolution\" : \"480P\" , // 480P | 720P \"audio_duration_sec\" : 3.0 , // 估价用；s2v 自身由音频时长决定 \"cost_approved\" : false // > threshold 时需为 true } // video_relip { \"mode\" : \"video_relip\" , \"video_url\" : \"https://...\" , \"text\" : \"你好\" , \"voice_id\" : \"longxiaochun_v2\" // 或 \"audio_url\" } // video_reface（最贵 — 务必先 cost-preview） { \"mode\" : \"video_reface\" , \"image_url\" : \"https://...\" , \"video_url\" : \"https://...\" , \"mode_pro\" : false , // false=wan-std ¥0.6/s，true=wan-pro ¥1.2/s \"watermark\" : true , \"video_duration_sec\" : 5 , \"cost_approved\" : true } // avatar_compose（多图 + 可选 AI prompt 助手） { \"mode\" : \"avatar_compose\" , \"ref_images_url\" : [ \"https://...\" , \"https://...\" ] , // 1-3 张 \"prompt\" : \"把人物融入古风街景，保留人物五官\" , \"text\" : \"你好\" , \"voice_id\" : \"longxiaochun_v2\" , \"resolution\" : \"480P\" , \"audio_duration_sec\" : 5 } Tip：让 qwen-vl-max 替你写 prompt —— 调 POST /api/plugins/avatar-studio/ai/compose-prompt ，body {\"ref_images_url\":[...], \"user_intent\":\"古风街景\"} ，返回 {prompt} 。 4 · 输出 schema 速查 // POST /tasks { \"ok\" : true , \"task\" : { \"id\" : \"tsk_xxx\" , \"mode\" : \"...\" , \"status\" : \"pending\" , ... } } // GET /tasks/{id}（任务跑完后） { \"ok\" : true , \"task\" : { \"id\" : \"tsk_xxx\" , \"mode\" : \"photo_speak\" , \"status\" : \"succeeded\" , // pending | submitted | polling | succeeded | failed | cancelled \"output_path\" : \"/.../output.mp4\" , \"output_url\" : \"/api/plugins/avatar-studio/uploads/preview/...\" , \"video_duration_sec\" : 3.2 , \"cost_breakdown\" : { \"currency\" : \"CNY\" , \"items\" : [ { \"name\" : \"wan2.2-s2v-detect\" , \"units\" : 1 , \"unit_price\" : 0.004 , \"subtotal\" : 0.004 } , { \"name\" : \"wan2.2-s2v 480P\" , \"units\" : 3.0 , \"unit_price\" : 0.10 , \"subtotal\" : 0.30 } , { \"name\" : \"cosyvoice-v2\" , \"units\" : 0.0018 , \"unit_price\" : 0.20 , \"subtotal\" : 0.0036 } ] , \"total\" : 0.31 , \"formatted_total\" : \"¥0.31\" } , \"error_kind\" : null , \"error_message\" : null , \"error_hints\" : null , ... } } status 流转： pending → submitted → polling → succeeded/failed/cancelled 。 5 · 错误码表 error_kind 触发场景 给用户的话 network 连接超时 / DNS 失败 / SSL 检查网络；若用代理确认 dashscope.aliyuncs.com 可达；自动重试 3 次 timeout 请求或任务超时（600 s） 任务可能仍在 DashScope 队列；30 s 后刷新 Tasks Tab rate_limit 同时处理中 > 1 / 429 DashScope 异步任务并发上限 = 1，等当前任务完成 auth 401 / 403 重填 API Key；确认地域（北京 / 新加坡）与 base_url 匹配 not_found 404 / task_id 24 h 过期 重新提交；本地 sqlite 仍保留 metadata moderation 内容审核未通过 换素材；常见敏感：人脸不清晰 / 水印 / 暴力 / 政治 quota 余额不足 阿里云百炼控制台充值 dependency s2v-detect humanoid=false / 视频时长超限 必须真人正脸；参考视频 ≤ 30 s unknown 其他 反馈 task_id；截图 metadata json 完整中英双语文案： avatar_models.py::ERROR_HINTS 。 6 · 模式决策树 用户已经有完整视频，只想换嘴型？ → video_relip 用户有一张照片，想让她说话？ → photo_speak 用户有视频 A 和人物 B，想把 A 里的人换成 B？ → video_reface（最贵，先 cost-preview） 用户有多张参考图，想做一个新角色？ → avatar_compose 不确定：先用 avatar_cost_preview 跑 4 个 mode 报价，让用户挑 7 · 费用估算公式（按官方价目） 子项 单价 单位 wan2.2-s2v-detect ¥0.004 每张图 wan2.2-s2v 480P ¥0.10 每秒视频 wan2.2-s2v 720P ¥0.20 每秒视频 videoretalk ¥0.30 每秒视频 wan2.2-animate-mix wan-std ¥0.60 每秒视频 wan2.2-animate-mix wan-pro ¥1.20 每秒视频 wan2.5-i2i-preview ¥0.20 每张合图输出 qwen-vl-max ¥0.02 / ¥0.06 每 1k input / output token cosyvoice-v2 ¥0.20 每 10k 字符 公式细节见 avatar_models.py::PRICE_TABLE 与 estimate_cost 。 金额一律 ¥{:.2f} 直显，禁止任何「奶茶单位」翻译 。 8 · 常见提示词模板 Mode 模板 说明 photo_speak 文本 你好，欢迎来到 [场景]。今天我想分享 [主题]。 控制在 2-15 s 音频内成本最低 avatar_compose prompt 把 [主体描述] 融入 [场景描述]，保留 [关键细节]，整体风格 [风格词]。 60 字以内最稳；超长 qwen-vl 容易跑偏 video_reface 元参 不需要 prompt — wan-animate-mix 直接看素材 务必关注 mode_pro 单价差 2× 9 · 怎么测 # 单元测试（hermetic，必须 0 fail） cd plugins/avatar-studio && py -3.11 -m pytest tests -q # 期望输出：85 passed, 1 skipped # 集成测试（opt-in，烧真钱 ≈ ¥0.31） $env :DASHSCOPE_API_KEY = \"sk-...\" py -3.11 -m pytest tests/integration -m integration -v UI 烟测：见 README.md §7 。 10 · 已知限制 & 不要做的事 不要绕过 avatar_cost_preview 直接提交 video_reface mode_pro=true 的 长视频任务 —— 一次就是几十块。 不要把 <CostBreakdown> 移到 Create Tab 实时显示 —— 早期做过、被 否决（浪费空间、用户不关心提交前的逐字符费用）。成本明细只在 Task 详情抽屉里出现。 不要假设 DashScope 任务并发 > 1 —— 平台级硬限。 Semaphore(1) 是 正确实现，不是 bug。 不要在模块顶层 import dashscope 、 import ffmpeg 之类的强依赖 —— 落实 Pixelle C4，所有可选依赖 惰性 import 。 不要 from _shared import ... —— 那是 archive 的兼容桩，仅旧插件用。 avatar-studio 全部依赖 vendored 在 avatar_studio_inline/ 里。 不要写 from openakita_plugin_sdk.contrib import ... —— SDK 0.7.0 已 移除该子包（commit d6d0c964 ）。 API Key 缺失只能 warn ，绝不能在 on_load 抛异常 —— 落实 Pixelle C5，否则用户没法进 Settings 填 Key。",
    "variables": [],
    "opening_statement": "你好，我是 avatar-studio，DashScope-powered digital human studio — photo spe...",
    "suggested_questions": [],
    "source": "DeepseekModel",
    "source_url": "https://deepseekmodel.com/skill?id=openakita-openakita-plugins-avatar-studio-skill-md"
}