{"id":"f035f285-4d6d-4b56-acd0-a11f3d7d4adc","entityType":"agent","slug":"clawhub-tencent-mpaas-skills-tencent-mps-video-dubbing","name":"Tencent MPS Video Dubbing","canonicalUrl":"https://www.xpersona.co/agent/clawhub-tencent-mpaas-skills-tencent-mps-video-dubbing","canonicalPath":"/agent/clawhub-tencent-mpaas-skills-tencent-mps-video-dubbing","generatedAt":"2026-10-14T13:38:38.090Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T21:43:16.366Z","emptyReason":null},"description":"Tencent Cloud MPS 一站式端到端视频译制专用 Skill，在单次任务中**不可拆分**地完成「提取原视频语音/字幕 → 翻译为目标语言 → 压制目标语言字幕 → AI 克隆原声配音」整条跨语言本地化流水线。**触发的硬条件（必须同时满足）：(1) 用户的输入是一段视频；(2) 明确要求变更音视频的语言（翻译 + 配音 / 翻译 + 换语言 / 做成另一语言版本）；(3) 是端到端产出一个全新语言版本的视频，而不是只做流水线中的某一步子任务**。满足硬条件的典型表达：把这段视频翻译成英文并配音、中文视频做成韩语版、韩剧中配、短剧出海译制、做一个日语配音版、 跨语言视频制作 Skill: Tencent MPS Video Dubbing Owner: tencent-mpaas-skills Summary: Tencent Cloud MPS 一站式端到端视频译制专用 Skill，在单次任务中**不可拆分**地完成「提取原视频语音/字幕 → 翻译为目标语言 → 压制目标语言字幕 → AI 克隆原声配音」整条跨语言本地化流水线。**触发的硬条件（必须同时满足）：(1) 用户的输入是一段视频；(2) 明确要求变更音视频的语言（翻译 + 配音 / 翻译 + 换语言 / 做成另一语言版本）；(3) 是端到端产出一个全新语言版本的视频，而不是只做流水线中的某一步子任务**。满足硬条件的典型表达：把这段视频翻译成英文并配音、中文视频做成韩语版、韩剧中配、短剧出海译制、做一个日语配音版、 跨语言视频制作 Tags: latest:1.0.6 Version history: v1.0.6 | 2026-07-","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 989 downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s172dymwd68zz4gb81ansjp35x83k7pr:tencent-mps-video-dubbing","sourceUrl":"https://clawhub.ai/tencent-mpaas-skills/tencent-mps-video-dubbing","homepage":"https://clawhub.ai/tencent-mpaas-skills/skills/tencent-mps-video-dubbing","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/tencent-mpaas-skills/tencent-mps-video-dubbing","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/tencent-mpaas-skills/skills/tencent-mps-video-dubbing","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Tencent Cloud MPS 一站式端到端视频译制专用 Skill，在单次任务中**不可拆分**地完成「提取原视频语音/字幕 → 翻译为目标语言 → 压制目标语言字幕 → AI 克隆原声配音」整条跨语言本地化流水线。**触发的硬条件（必须同时满足）：(1) 用户的输入是一段视频；(2) 明确要求变更音视频的语言（"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T21:43:16.366Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T21:43:16.366Z","emptyReason":null},"stars":null,"forks":null,"downloads":989,"likes":null,"task":null,"library":null,"packageName":null,"latestVersion":"1.0.6","tractionLabel":"989 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T21:43:16.095Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T21:43:16.366Z","lastCrawledAt":"2026-10-11T21:43:16.095Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T21:43:16.095Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.6","createdAt":"2026-07-29T09:15:23.525Z","changelog":"tencent-mps-video-dubbing 1.0.6 - Removed the file skill-card.md from the project. - No changes to command logic or user-facing features. - Documentation and behavior in SKILL.md remain unchanged.","fileCount":13,"zipByteSize":50531},{"version":"1.0.4","createdAt":"2026-07-02T14:57:18.026Z","changelog":"- 依赖脚本支持自动升级：新增 scripts/mps_auto_upgrade.py，实现依赖自动检查与安装，无需手工执行 pip 安装。 - 移除 skill-card.md 文件。 - 全面更新文档及命令，明确主脚本和环境检测脚本的调用方式统一为 python3（如 python3 scripts/mps_video_dubbing.py）。 - 在依赖说明和安装命令中加入 python3 -m pip 用法，更加规范、覆盖更多环境。 - 细化依赖包说明，强调通过官方 SDK 调用 MPS API 与 COS 存储，首次运行自动拉依赖。 - 明确 COS 所支持地域，并参考腾讯云官方文档。","fileCount":13,"zipByteSize":49326},{"version":"1.0.3","createdAt":"2026-05-21T07:22:33.771Z","changelog":"- Improved guidance and strict rules for video dubbing flow: clarified end-to-end task boundaries, input/output source detection, and parameter requirements. - Updated outputs: all commands require real values (no placeholders); strictly enforce bucket, region, and file source usage as per user input. - Enforced four/five-item cumulative fee confirmation process before processing requests; all commands that incur charges must use `--confirm-charges` and seek user consent. - Added complete environment setup documentation; configuration checks now require explicit `--check-only`. - Clarified script usage boundaries: only main script and `mps_load_env.py` are accessible, helper scripts are internal only. - Refined supported regions, behavior on incomplete input, and details for both OCR and ASR dubbing modes.","fileCount":12,"zipByteSize":45585}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s172dymwd68zz4gb81ansjp35x83k7pr:tencent-mps-video-dubbing","setupComplexity":"medium","setupSteps":["Python environment detected. Create a strict virtual environment (`python -m venv .venv`) before installing dependencies to prevent system-level package conflicts.","Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tencent-mpaas-skills-tencent-mps-video-dubbing/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tencent-mpaas-skills-tencent-mps-video-dubbing/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tencent-mpaas-skills-tencent-mps-video-dubbing/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tencent-mpaas-skills-tencent-mps-video-dubbing/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tencent-mpaas-skills-tencent-mps-video-dubbing/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tencent-mpaas-skills-tencent-mps-video-dubbing/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-14T13:38:38.089Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tencent-mpaas-skills-tencent-mps-video-dubbing/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tencent-mpaas-skills-tencent-mps-video-dubbing/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tencent-mpaas-skills-tencent-mps-video-dubbing/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tencent-mpaas-skills-tencent-mps-video-dubbing/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T21:43:16.366Z","emptyReason":null},"readme":"Skill: Tencent MPS Video Dubbing\n\nOwner: tencent-mpaas-skills\n\nSummary: Tencent Cloud MPS 一站式端到端视频译制专用 Skill，在单次任务中**不可拆分**地完成「提取原视频语音/字幕 → 翻译为目标语言 → 压制目标语言字幕 → AI 克隆原声配音」整条跨语言本地化流水线。**触发的硬条件（必须同时满足）：(1) 用户的输入是一段视频；(2) 明确要求变更音视频的语言（翻译 + 配音 / 翻译 + 换语言 / 做成另一语言版本）；(3) 是端到端产出一个全新语言版本的视频，而不是只做流水线中的某一步子任务**。满足硬条件的典型表达：把这段视频翻译成英文并配音、中文视频做成韩语版、韩剧中配、短剧出海译制、做一个日语配音版、 跨语言视频制作\n\nTags: latest:1.0.6\n\nVersion history:\n\nv1.0.6 | 2026-07-29T09:15:23.525Z | user\n\ntencent-mps-video-dubbing 1.0.6\n\n- Removed the file skill-card.md from the project.\n- No changes to command logic or user-facing features.\n- Documentation and behavior in SKILL.md remain unchanged.\n\nv1.0.4 | 2026-07-02T14:57:18.026Z | user\n\n- 依赖脚本支持自动升级：新增 scripts/mps_auto_upgrade.py，实现依赖自动检查与安装，无需手工执行 pip 安装。\n- 移除 skill-card.md 文件。\n- 全面更新文档及命令，明确主脚本和环境检测脚本的调用方式统一为 python3（如 python3 scripts/mps_video_dubbing.py）。\n- 在依赖说明和安装命令中加入 python3 -m pip 用法，更加规范、覆盖更多环境。\n- 细化依赖包说明，强调通过官方 SDK 调用 MPS API 与 COS 存储，首次运行自动拉依赖。\n- 明确 COS 所支持地域，并参考腾讯云官方文档。\n\nv1.0.3 | 2026-05-21T07:22:33.771Z | user\n\n- Improved guidance and strict rules for video dubbing flow: clarified end-to-end task boundaries, input/output source detection, and parameter requirements.\n- Updated outputs: all commands require real values (no placeholders); strictly enforce bucket, region, and file source usage as per user input.\n- Enforced four/five-item cumulative fee confirmation process before processing requests; all commands that incur charges must use `--confirm-charges` and seek user consent.\n- Added complete environment setup documentation; configuration checks now require explicit `--check-only`.\n- Clarified script usage boundaries: only main script and `mps_load_env.py` are accessible, helper scripts are internal only.\n- Refined supported regions, behavior on incomplete input, and details for both OCR and ASR dubbing modes.\n\nArchive index:\n\nArchive v1.0.6: 13 files, 50531 bytes\n\nFiles: LICENSE.txt (709b), references/example.md (4223b), references/mps_video_dubbing.md (10326b), scripts/mps_auto_upgrade.py (6360b), scripts/mps_cos_download.py (8271b), scripts/mps_cos_upload.py (9655b), scripts/mps_load_env.py (14059b), scripts/mps_poll_task.py (24723b), scripts/mps_video_dubbing.py (48684b), scripts/requirements.txt (1078b), skill-card.md (3438b), SKILL.md (13785b), _meta.json (144b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: tencent-mps-video-dubbing\ndescription: Tencent Cloud MPS 一站式端到端视频译制专用 Skill，在单次任务中**不可拆分**地完成「提取原视频语音/字幕 → 翻译为目标语言 → 压制目标语言字幕 → AI 克隆原声配音」整条跨语言本地化流水线。**触发的硬条件（必须同时满足）：(1) 用户的输入是一段视频；(2) 明确要求变更音视频的语言（翻译 + 配音 / 翻译 + 换语言 / 做成另一语言版本）；(3) 是端到端产出一个全新语言版本的视频，而不是只做流水线中的某一步子任务**。满足硬条件的典型表达：把这段视频翻译成英文并配音、中文视频做成韩语版、韩剧中配、短剧出海译制、做一个日语配音版、 跨语言视频制作 / 视频本地化一站式处理。**额外触发场景（查询类豁免）**：用户明确要求查询一个\"视频译制任务\"的状态/结果/进展，也应触发本 Skill。**仅询问工具推荐或咨询而不进行实际处理时不触发**。\nmetadata:\n  version: \"1.0.6\"\n---\n\n# 腾讯云 MPS · 配音级视频译制（video-dubbing）\n\n## 角色定义\n\n你是腾讯云 MPS 一站式**配音级视频译制**的专业助手，帮助用户生成正确的 Python 脚本命令。本 Skill 端到端产出新语言版本视频，**不可拆分为子任务**。\n\n参数细节、枚举值、JSON 结构、命令模板、运行时陷阱与强制规则以 `references/mps_video_dubbing.md` 为**唯一真相来源**，本 SKILL.md 只做**行为约束与通用规则**，不复述具体参数，避免双向漂移。\n\n## 输出规范\n\n1. **只输出命令**，不要解释，不要废话\n2. 命令格式：`python3 scripts/mps_video_dubbing.py [参数]`\n3. 脚本支持 `--dry-run`（打印请求不调 API、不计费），**默认自动轮询等待完成**（若指定了 `--download-dir` 则完成后自动下载产物），加 `--no-wait` 才只提交不等待\n4. 输入源判断：URL（HTTP/HTTPS 或 `cos://bucket/key`）用 `--input-url` / `-i`，COS 路径用 `--cos-input-key`，未说明来源一律用 `--local-file`（详见强制规则第 4 条）\n5. **任务完成后输出的链接（预签名下载链接、COS URL 等）必须用 Markdown 超链接格式呈现**，即 `[描述文字](URL)`，不得以代码块或纯文本形式输出链接\n6. **【强制】每次执行处理类任务后，无论是否等待完成、无论成功失败，必须在回复中明确展示 TaskId**：脚本 stdout 会输出 `🆔 TaskId: <id>` 格式的行，从中提取并以 `🆔 任务 ID：<TaskId>` 格式告知用户（方便后续 `--query-task` 手动查询）\n\n> 💰 **费用提示**：本 Skill 调用腾讯云 MPS 服务会产生相应费用；一个任务未拿到结果时不得手动重复发起，否则会重复计费。具体计费标准请参考 [腾讯云 MPS 定价](https://cloud.tencent.com/document/product/862/36180)。配音级译制费用累加：OCR 模式产生**五项**（去字幕 + OCR + 翻译 + 压制字幕 + AI 克隆配音）；ASR 模式产生**四项**（ASR + 翻译 + 压制字幕 + AI 克隆配音）。每次生成提交命令前必须先用自然语言告知用户费用并征得明确确认（\"是否执行？\"），**CLI 必须带 `--confirm-charges`**，交互向导末步必须键入大写 `YES`；查询类（`--query-task`）、列举类（`--list-languages`）、`--dry-run` 预演无需提示。建议用户在 [腾讯云费用中心](https://console.cloud.tencent.com/expense/budget) 设置预算告警与月度上限。\n\n通过腾讯云官方 Python SDK 调用 MPS API，主脚本位于 `scripts/mps_video_dubbing.py`。**详细参数与示例见 `references/mps_video_dubbing.md`，生成命令前必须先 Read 该文档；未读 references 直接给命令视为违规**。\n\n## 环境配置\n\n检查环境变量：\n```bash\npython3 scripts/mps_load_env.py --check-only\n```\n如果变量没有配置，明确提醒用户在 `~/.env`（用户级 dotenv，最高优先级）或 `<SKILL_DIR>/.env`（脚本目录级）或 `~/.bashrc` 或 `~/.profile` 自己配置，禁止向用户索取密钥帮用户配置。\n**`<SKILL_DIR>` 为 `tencent-mps-video-dubbing` 所在目录。**\n\n```bash\n# 必须（所有命令）\nexport TENCENTCLOUD_SECRET_ID=\"<请替换为真实 SecretId>\"\nexport TENCENTCLOUD_SECRET_KEY=\"<请替换为真实 SecretKey>\"\n# MPS API 调用地域（必须，影响 MPS API 接入点）\n# 未设置时脚本会直接报错退出\nexport TENCENTCLOUD_API_REGION=\"<请替换为真实 API 区域，如 ap-guangzhou>\"\n\n# COS 桶/地域（必须），用于输入和输出，输入是COS是必需的，输出一定是必须的； \nexport TENCENTCLOUD_COS_BUCKET=\"<请替换为真实存储桶名>\"\nexport TENCENTCLOUD_COS_REGION=\"<请替换为真实存储桶地域，如 ap-guangzhou>\"\n\n# MPS API 接入点（可选），不设置时默认国内站 mps.tencentcloudapi.com\n# 使用国际站时才需要设置为 mps.intl.tencentcloudapi.com\nexport TENCENTCLOUD_MPS_ENDPOINT=\"mps.intl.tencentcloudapi.com\"\n```\n\n> ⚠️ 上述带 `<...>` 的值是**占位符示意**，必须替换为真实凭证；若直接照抄会导致认证失败（`AuthFailure.SecretIdNotFound`）。\n\n### MPS API 支持的地域\n\n> ⚠️ 此处指 **MPS 接入区域**（API endpoint 的签名地域），非翻译语种。未设置 `TENCENTCLOUD_API_REGION` 时脚本将直接报错退出。\n\n可选区域：`ap-guangzhou`、`ap-shanghai`、`ap-beijing`、`ap-hongkong`、`ap-singapore`、`ap-chengdu`、`ap-chongqing`、`ap-jakarta`、`ap-bangkok`、`ap-seoul`、`ap-tokyo`、`na-ashburn`、`na-siliconvalley`、`sa-saopaulo`、`eu-frankfurt`\n\n> 来源：[MPS 请求结构 - 地域列表](https://cloud.tencent.com/document/product/862/37572)\n\n### COS 支持的地域\n> 来源：[COS地域列表](https://cloud.tencent.com/document/product/436/6224)，建议与MPS API保持同一个地域。\n\n## 依赖说明\n\n本 Skill 通过腾讯云**官方 SDK** 调用 MPS API 与 COS 存储：\n\n- `tencentcloud-sdk-python`（腾讯云官方）— 用于 MPS API 调用\n- `cos-python-sdk-v5`（腾讯云官方）— 用于 COS 上传 / 下载\n- `python-dotenv` — 用于 `mps_load_env.py` 自动加载 dotenv 格式的环境变量文件\n\n首次安装：\n```bash\npython3 -m pip install -r scripts/requirements.txt\n```\n\n> 💡 各脚本首次运行时会通过 `mps_auto_upgrade.py` 自动检查并安装缺失依赖，通常无需手工执行上面的命令。\n\n升级到最新版（推荐每 1~2 个月执行一次，以获取新模型 / 新功能支持）：\n```bash\npython3 -m pip install -r scripts/requirements.txt --upgrade\n```\n\n## 异步任务说明\n\n主脚本**默认自动轮询等待完成**，每 15 秒查询一次，最长等待 3600 秒，完成后下载产物到 `--download-dir`（若指定）。\n- 只提交不等待：加 `--no-wait`，脚本仅返回 TaskId\n- 手动查询任务：`python3 scripts/mps_video_dubbing.py --query-task <TaskId>`（单次查询，非轮询）\n- 在轮询阶段超时拿不到结果时，脚本会提示用户手动 `--query-task`\n- **典型耗时**（实测参考）：\n  - OCR 模式（含擦除原硬字幕）：1080p 5 分钟视频约 15~25 分钟；4K/AV1/175s/86MB 约 15 分钟\n  - ASR 模式（不含擦除）：1080p 5 分钟视频约 5~10 分钟（约为同等视频 OCR 模式的 1/2.6）\n\n## 脚本功能映射（职责边界）\n\n> 💰 处理类调用（即非 `--query-task` / `--list-languages` / `--dry-run`）会调用腾讯云 MPS 服务并产生费用，必须遵循 §「输出规范」中的费用确认流程。\n\n本 Skill 仅有**一个对外主脚本**，按用户需求映射到不同的调用方式，**不得混用**：\n\n| 用户需求类型 | 调用方式 | 说明 |\n|---|---|---|\n| 提交配音级视频译制任务（端到端：提取语音/字幕 → 翻译 → 压字幕 → AI 克隆配音） | `mps_video_dubbing.py` 配合必填参数 | 必填：`--mode`（`ocr`/`asr`）、`--src-lang`、`--dst-lang`、`--burn-subtitle` 或 `--no-burn-subtitle`；OCR 还需 `--subtitle-area`（`preset` / `custom`）；`custom` 还需 `--subtitle-bbox LTX,LTY,RBX,RBY` |\n| 进入交互向导逐项收集参数（用户未提供完整参数时优先推荐） | `mps_video_dubbing.py --interactive` | 无参直接运行也会进入向导；末步必须键入大写 `YES` 才会真正提交 |\n| 查询配音级译制任务状态 / 结果 | `mps_video_dubbing.py --query-task <TaskId>` | TaskId 形如 `[AppId]-WorkflowTask-[hash]`；单次查询、非轮询、不计费 |\n| 列出本 Skill 支持的源语种 / 目标语种（31 种） | `mps_video_dubbing.py --list-languages` | 不调用 MPS API，不产生费用 |\n| 检查 / 验证 MPS 环境变量配置 | `scripts/mps_load_env.py --check-only` | 不修改环境变量，**不产生费用** |\n\n> **注意**：`mps_poll_task.py` / `mps_cos_upload.py` / `mps_cos_download.py` 均为内部辅助模块，**不对用户暴露**，主脚本已内置上传 / 轮询 / 下载逻辑，用户无需直接调用。\n\n> **OCR vs ASR 模式选择**：\n> - **OCR**：从画面**硬字幕**识别。内置擦除原硬字幕步骤；耗时约为 ASR 的 2.6 倍；适用于带硬字幕的视频。\n> - **ASR**：从**音频**识别。不含擦除算子；适用于无硬字幕的视频；若画面有水印/Logo 需要擦除，本 Skill 不处理。\n> - **`--mode` 必填，无默认值**；AI 不得声称\"后端自动选择\"，必须由用户明确指定。\n\n## 生成命令的强制规则\n\n0. **【强制】生成任何 `mps_*.py` 命令之前，必须先用 Read 工具读取 [`references/mps_video_dubbing.md`](references/mps_video_dubbing.md)**。禁止仅凭 SKILL.md 拼命令，禁止使用 `coscli`、`cos-python-sdk-v5`、`ffmpeg`、`tccli` 等外部工具替代 skill 内的 `mps_*.py` 脚本。参数名、参数取值、语言简写、模式枚举、必填项与互斥项均以 references 为准；SKILL.md 与 references 冲突时以 references 为准。\n\n1. **脚本路径前缀**：所有生成的 python 命令必须包含 `scripts/` 路径前缀，格式为 `python3 scripts/mps_video_dubbing.py ...`。禁止生成 `python mps_video_dubbing.py ...`（缺少 `scripts/` 前缀）的命令。\n\n2. **禁止占位符**：所有参数值必须是真实值。若用户未提供必需值，**先询问**，不得用 `<视频URL>`、`YOUR_URL`、`<key>` 等占位符。\n\n3. **核心业务参数必须显式确认，不得使用默认值**：\n   - **必填**：`--mode`（`ocr` / `asr`）、`--src-lang`、`--dst-lang`（不得与 src 相同）、`--burn-subtitle` 或 `--no-burn-subtitle`（二选一）\n   - **OCR 模式追加必填**：`--subtitle-area`（`preset` / `custom`）；`custom` 时还需 `--subtitle-bbox LTX,LTY,RBX,RBY`\n   - 缺任一必填项 → **必须反问用户**或让脚本进入交互向导（`--interactive`），严禁代用户选默认值\n   - 参数详表见 [`references/mps_video_dubbing.md`](references/mps_video_dubbing.md)\n\n4. **输入源判断**：\n   - 用户**明确说明是 COS 文件**（如\"COS 路径\"、\"COS 上的\"、\"bucket 上\"）→ 使用 `--cos-input-key <key>`，bucket / region 由环境变量自动补全，不得询问用户\n   - 用户提供的是 **HTTP/HTTPS URL** → 使用 `-i <URL>` 或 `--input-url <URL>`，不得拆解\n   - 用户给 `cos://bucket/key` URL → 使用 `-i <URL>`（脚本自动解析为 `CosInputInfo`）\n   - 用户**未明确说明来源**，不管路径格式如何 → **一律使用 `--local-file <路径>` 按本地文件处理**；若本地文件不存在，脚本会自动提示并中止任务\n   - ✅ 正确：用户说\"处理视频 input/raw.mp4\" → 生成 `--local-file input/raw.mp4`\n   - ✅ 正确：用户说\"COS 路径：input/raw.mp4\" → 生成 `--cos-input-key input/raw.mp4`\n   - ❌ 错误：用户未说明来源时反问\"是 COS 还是本地文件？\"\n\n5. **费用确认强制**：每次生成提交命令（即非 `--query-task` / `--list-languages` / `--dry-run` 的命令）必须带 `--confirm-charges`，且**先在正文用自然语言告知用户将产生四项累加费用并征得同意，再输出命令**。\n\n6. **桶名禁止硬编码**：输出桶从 `$TENCENTCLOUD_COS_BUCKET` 读取（或 `--cos-bucket` 显式指定），除非用户当次明确给出。\n\n7. **`--no-wait` 默认禁用**：脚本默认行为 = 阻塞式轮询 + 自动下载，这是用户期望。**默认一律不加 `--no-wait`**，仅当用户当次对话字面命中\"不等待 / 异步提交 / 先拿任务 ID / 秒退 / 提交就退 / fire-and-forget\"才允许加。**严禁**以\"任务耗时太长、工具单次调用会超时、我帮你后台跑\"等 AI 侧便利性理由擅自加 `--no-wait`——工具超时是执行层问题，应用定时任务回查解决，而不是改变用户期望默认行为。\n\n8. **行为修饰词不影响触发判定**：用户说 `dry run`、`不等待`、`先预览命令`、`先提交任务`、`先拿任务 ID` 等修饰词时，仍触发本 Skill；这些词只影响命令参数（`--dry-run` / `--no-wait`），不改变路径判定。\n\n9. **`mps_load_env.py` 使用规则**：用户说\"检查环境变量\"、\"验证配置是否正确\"、\"检查配置\"时，必须生成 `python3 scripts/mps_load_env.py --check-only` 命令，不得省略 `--check-only` 参数。\n\n## API 参考\n\n| 场景 | 官方文档 |\n|---|---|\n| 配音级视频译制主路径 | [ProcessMedia AiAnalysisTask](https://cloud.tencent.com/document/product/862/37578) / [一站式译制接入](https://cloud.tencent.com/document/product/862/124504) |\n| 任务查询 | [DescribeTaskDetail](https://cloud.tencent.com/document/api/862/37614) |\n| MPS 计费 | [计费说明](https://cloud.tencent.com/document/product/862/36180) |\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn70yhz47k5f2a22dsfdhthzqx83k6t0\",\n  \"slug\": \"tencent-mps-video-dubbing\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1785316523525\n}\n\nFile v1.0.6:references/example.md\n\n# 视频译制 ProcessMedia 请求示例\n\n> 本文件收录 MPS `ProcessMedia` 接口在**视频配音译制**场景下的**请求 JSON 示例**。\n> 字段释义、关键规则、ExtendedParameter 完整结构 → 见 [`mps_video_dubbing.md`](./mps_video_dubbing.md)（特别是「参数说明」「强制规则」两节）。\n\n---\n\n## 公共模板\n\n5 个示例共用以下 `InputInfo` / `OutputStorage` / 接口元字段，下方各示例**仅展示 `ExtendedParameter` 差异部分**。\n\n```json\n{\n  \"regionId\": 1,\n  \"serviceType\": \"mps\",\n  \"cmd\": \"ProcessMedia\",\n  \"data\": {\n    \"Version\": \"2019-06-12\",\n    \"InputInfo\": {\n      \"Type\": \"COS\",\n      \"CosInputInfo\": {\n        \"Bucket\": \"mps-ollie-test-1308104797\",\n        \"Region\": \"ap-guangzhou\",\n        \"Object\": \"input/17_1773808857717.MP4\"\n      }\n    },\n    \"OutputStorage\": {\n      \"Type\": \"COS\",\n      \"CosOutputStorage\": {\n        \"Bucket\": \"mps-ollie-test-1308104797\",\n        \"Region\": \"ap-guangzhou\"\n      }\n    },\n    \"AiAnalysisTask\": {\n      \"Definition\": 25,\n      \"ExtendedParameter\": \"<见下方各示例>\"\n    }\n  }\n}\n```\n\n---\n\n## 1. ASR + 不压制字幕\n\n无硬字幕视频，ASR 识别 + 翻译，**不**压字幕，仅替换配音。\n\n```text\nExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_asr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":false,\\\"font_type\\\":\\\"auto\\\"}}}\"\n```\n\n差异点：`CustomerAppId=audio_clone_asr`，`use_draw=false`。\n\n---\n\n## 2. ASR + 压制字幕\n\n无硬字幕视频，ASR 识别 + 翻译，并把翻译字幕**压制**到画面，同时替换配音。\n\n```text\nExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_asr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":true,\\\"font_type\\\":\\\"auto\\\"}}}\"\n```\n\n差异点：`use_draw=true`。\n\n---\n\n## 3. OCR + 预设字幕区域（推荐，90% 场景）\n\n画面有硬字幕，OCR 识别 + 擦除 + 翻译 + 压新字幕 + AI 配音。**不传** `als_filter`，由后端使用默认区域（画面中部靠下）。\n\n```text\nExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_ocr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":true,\\\"font_type\\\":\\\"auto\\\"}}}\"\n```\n\n差异点：`CustomerAppId=audio_clone_ocr`，**无 `als_filter`**。\n\n---\n\n## 4. OCR + 自定义字幕区域（底部）\n\n画面有硬字幕但位置非中下部，需自定义识别/擦除像素矩形区域。\n\n```text\nExtendedParameter（转义形式）:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_ocr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":true,\\\"font_type\\\":\\\"auto\\\"},\\\"als_filter\\\":{\\\"active_areas\\\":[{\\\"type\\\":2,\\\"lt_x\\\":53,\\\"lt_y\\\":741,\\\"rb_x\\\":953,\\\"rb_y\\\":922}]}}}\"\n```\n\n解包形式：\n\n```json\n{\n  \"delogo\": {\n    \"cluster_id\": \"gpu_zhiyan\",\n    \"CustomerAppId\": \"audio_clone_ocr\",\n    \"subtitle_param\": {\n      \"translate_src_language\": \"zh\",\n      \"translate_dst_language\": \"en\",\n      \"use_draw\": true,\n      \"font_type\": \"auto\"\n    },\n    \"als_filter\": {\n      \"active_areas\": [\n        { \"type\": 2, \"lt_x\": 53, \"lt_y\": 741, \"rb_x\": 953, \"rb_y\": 922 }\n      ]\n    }\n  }\n}\n```\n\n差异点：新增 `als_filter.active_areas`，矩形像素坐标 `(53,741)→(953,922)`。\n\n---\n\n## 5. OCR + 自定义字幕区域（中上部）\n\n同 #4，换一组坐标（如顶部横幅字幕）。\n\n```text\nExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_ocr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":true,\\\"font_type\\\":\\\"auto\\\"},\\\"als_filter\\\":{\\\"active_areas\\\":[{\\\"type\\\":2,\\\"lt_x\\\":200,\\\"lt_y\\\":400,\\\"rb_x\\\":900,\\\"rb_y\\\":700}]}}}\"\n```\n\n差异点：坐标改为 `(200,400)→(900,700)`。\n\n---\n\n> 字段释义、关键规则（cluster_id / use_draw / font_type / als_filter / preview_size 等）→ 见 [`mps_video_dubbing.md`](./mps_video_dubbing.md)（特别是「强制规则」一节）。\n\nFile v1.0.6:references/mps_video_dubbing.md\n\n# 视频译制参数与示例 — `mps_video_dubbing.py`\n\n**功能**：腾讯云 MPS 一站式视频译制 — 单次任务端到端完成「擦除原字幕 / ASR → 翻译 → 压制目标语言字幕 → AI 克隆原声配音」。底层调用 `ProcessMedia` 接口的 `AiAnalysisTask`（Definition=25），通过 `ExtendedParameter` 传扩展参数。\n\n> 输入 → 去字幕(OCR) / ASR → 翻译 → 压新字幕 → AI 克隆配音 → 输出新视频\n\n## 模式说明\n\n| 维度 | `ocr` | `asr` |\n|------|-------|-------|\n| 适用视频 | 画面有硬字幕 | 画面无硬字幕 |\n| 翻译来源 | OCR 提取的画面字幕文本 | 语音识别结果 |\n| 自动擦除原画面字幕 | ✅ | ❌ 不擦除 |\n| 字幕区域参数 | `--subtitle-area` 必填 | 忽略 |\n| `CustomerAppId`（内部字段，脚本自动设置） | `audio_clone_ocr` | `audio_clone_asr` |\n| 典型耗时（1080p / 5min） | 15~25 分钟 | 5~10 分钟 |\n\n**OCR 字幕区域两种模式（`--subtitle-area`）**：\n\n| 取值 | 适用场景 | `als_filter` 写入 | 必带参数 |\n|------|---------|------------------|---------|\n| `preset`（推荐） | 画面中部靠下的常规硬字幕（覆盖 90% 视频） | ❌ 不写（后端按默认区域） | — |\n| `custom` | 顶部 / 竖屏 / 双语对照等非常规位置 | ✅ 写矩形像素坐标 | `--subtitle-bbox LTX,LTY,RBX,RBY` |\n\n## 参数说明\n\n| 参数 | 说明 |\n|------|------|\n| `-i, --input-url` | 视频公网 URL（支持 `https://` 或 `cos://bucket/key`，后者自动识别为 `CosInputInfo`） |\n| `--local-file` | 本地文件路径，自动上传到 COS 后处理（与 `-i` / `--cos-input-key` 互斥） |\n| `--cos-input-key` | COS 输入对象 key（如 `input/video.mp4`） |\n| `--cos-input-bucket` | COS 输入桶（仅 `--cos-input-key` 路径下生效，未传则沿用 `--cos-bucket`） |\n| `--cos-input-region` | COS 输入地域（仅 `--cos-input-key` 路径下生效，未传则沿用 `--cos-region`） |\n| `--mode` | **【必填】** 译制模式：`ocr`（画面有硬字幕）/ `asr`（无硬字幕） |\n| `--src-lang` | **【必填】** 源语言 code（31 种，见下方「支持语种」表或 `--list-languages`） |\n| `--dst-lang` | **【必填】** 目标语言 code，**不得与 src 相同** |\n| `--burn-subtitle` / `--no-burn-subtitle` | **【必填，二选一】** 是否压制翻译后字幕到画面 |\n| `--subtitle-area` | **【OCR 必填】** 字幕区域模式：`preset` / `custom` |\n| `--subtitle-bbox` | 自定义矩形 4 点整数像素坐标，格式 `LTX,LTY,RBX,RBY`（如 `53,741,953,922`），仅 `--subtitle-area=custom` 时必填 |\n| `--cos-bucket` | **【必填】** 输出 COS 桶（未传则从 `TENCENTCLOUD_COS_BUCKET` 读取，未设置则报错） |\n| `--cos-region` | **【必填】** 输出 COS 地域（未传则从 `TENCENTCLOUD_COS_REGION` 读取，未设置则报错） |\n| `--output-dir` | COS 输出目录，默认 `/output/video-dubbing/` |\n| `--no-wait` | 仅提交不等待（默认自动轮询） |\n| `--poll-interval` | 轮询间隔（秒），默认 `15` |\n| `--max-wait` | 最长等待（秒），默认 `3600` |\n| `--download-dir` | 任务完成后下载成品到本地目录 |\n| `--session-id` | 任务去重识别码（同一 ID 在 3 天内重复提交会报错；适用于幂等重试场景）|\n| `--region` | **【必填】** MPS API 区域（未传则从 `TENCENTCLOUD_API_REGION` 读取，未设置则报错） |\n| `--interactive` | 强制进入交互向导 |\n| `--confirm-charges` | **CLI 模式必需**：确认产生费用；漏传则脚本自动降级 dry-run 不实际提交 |\n| `--dry-run` | 不调用 API；打印「配置摘要」+「完整 ProcessMedia 请求 JSON」 |\n| `--query-task <TaskId>` | 单次查询已提交任务（输出原始 JSON，不计费、不轮询） |\n| `--list-languages` | 列出 31 种支持语种（完整对照表 + 地区分组） |\n| `--verbose, -v` | 详细输出（影响环境加载日志和轮询过程日志的详细度） |\n\n## 支持语种（31 种，官方文档声明双向支持翻译）\n\n> 与脚本内的 `SUPPORTED_LANGUAGES` 字典**同源**。运行 `python3 scripts/mps_video_dubbing.py --list-languages` 可在终端实时查看完整对照表 + 地区分组。\n\n| # | 语种 | Code | | # | 语种 | Code | | # | 语种 | Code |\n|:-:|---|:-:|---|:-:|---|:-:|---|:-:|---|:-:|\n| 1  | 中文           | `zh`  | | 12 | 印度尼西亚语 | `id`  | | 23 | 印地语       | `hi`  |\n| 2  | 英语           | `en`  | | 13 | 荷兰语       | `nl`  | | 24 | 保加利亚语   | `bg`  |\n| 3  | 日语           | `ja`  | | 14 | 土耳其语     | `tr`  | | 25 | 罗马尼亚语   | `ro`  |\n| 4  | 韩语           | `ko`  | | 15 | 菲律宾语     | `fil` | | 26 | 阿拉伯语     | `ar`  |\n| 5  | 德语           | `de`  | | 16 | 马来语       | `ms`  | | 27 | 捷克语       | `cs`  |\n| 6  | 法语           | `fr`  | | 17 | 希腊语       | `el`  | | 28 | 丹麦语       | `da`  |\n| 7  | 俄语           | `ru`  | | 18 | 芬兰语       | `fi`  | | 29 | 泰米尔语     | `ta`  |\n| 8  | 乌克兰语       | `uk`  | | 19 | 克罗地亚语   | `hr`  | | 30 | 匈牙利语     | `hun` |\n| 9  | 葡萄牙语       | `pt`  | | 20 | 斯洛伐克语   | `sk`  | | 31 | 越南语       | `vi`  |\n| 10 | 意大利语       | `it`  | | 21 | 波兰语       | `pl`  | |    |              |       |\n| 11 | 西班牙语       | `es`  | | 22 | 瑞典语       | `sv`  | |    |              |       |\n\n> 区分大小写，必须用小写 code。脚本只校验 `src ≠ dst`，不对 30×30 组合矩阵做更细校验；遇到具体语种对返回 60000 类错误时，建议用更高频语种对（如 `zh ↔ en`）交叉验证。\n\n## 强制规则\n\n- **核心业务参数无默认值，必须显式传**：`--mode` / `--src-lang` / `--dst-lang` / `--burn-subtitle`(or `--no-burn-subtitle`) / `--subtitle-area`（仅 OCR）。CLI 缺任一项 → exit=2 + 列出全部缺失项；交互向导前 5 步必填，OCR 模式还要走必填的第 6 步（字幕区域 preset/custom 二选一）。\n- **`--subtitle-bbox` 校验**：4 个逗号分隔的非负整数，且 `lt_x < rb_x`、`lt_y < rb_y`，违反即 exit=2。\n- **`--subtitle-area=custom` 假成功陷阱** ⚠️：自定义 bbox 没圈中真实字幕时，后端**仍返回 SUCCESS** 但产物 = 源视频。规避：优先 `preset`；必须 `custom` 时先用 VLC 暂停截图精确量取坐标，提交后抽查首段产物确认字幕已正确处理。\n- **OCR 后端隐式降级到 ASR**：`--mode ocr` 但视频实际无硬字幕时，后端可能跳过擦除算子走 ASR 路径，耗时大幅缩短，**不影响计费类型**。若确认无硬字幕，建议直接 `--mode asr` 行为更确定。\n- **ASR 模式忽略字幕区域参数**：`--mode asr` 时即使传了 `--subtitle-area` / `--subtitle-bbox` 也会被脚本静默忽略并打印警告，`als_filter` 不写入。\n- **费用确认强制**：CLI 模式漏传 `--confirm-charges` → 自动降级 dry-run 退出（不真正提交、不计费）；交互向导最后一步必须键入 `YES`。\n- **`--cos-input-key` 的 region 兜底链**：`--cos-input-region` → `$TENCENTCLOUD_COS_REGION` → `--cos-region`（即输出地域）。均缺时直接 `sys.exit(1)` 退出。\n- **`--input-url cos://...` 的 region 兜底链**：`--cos-input-region` → `$TENCENTCLOUD_COS_REGION`（仅两级，不会从 `--cos-region` 兜底）。均缺时直接 `ValueError` 退出。\n- **`--local-file` + 未指定 `--cos-bucket`**：脚本自动以**上传桶**作为输出桶；如需区分输入/输出桶请显式传 `--cos-bucket` / `--cos-region`。\n- **后端硬约束**（脚本已固化，违反会被后端拒绝）：`cluster_id` 必须为 `gpu_zhiyan`；`subtitle_param` 必须同时含 `use_draw` 和 `font_type=\"auto\"`；预设区域（`preset`）→ **不写** `als_filter` 键；ASR 模式 → **不写** `als_filter`；配音级译制**不写** `preview_size`（与字幕级译制不同）。\n\n## 输出产物\n\n任务完成后 MPS 在指定 COS 输出目录（默认 `/output/video-dubbing/`）生成**主成品**：译制后完整视频，文件名形如 `delogo-<hash>.mp4`（前缀 `delogo` 来自底层 DeLogoTask 算子）。\n\n## 示例命令\n\n```bash\n# 中→英 OCR 模式 + 预设字幕区域 + 压新字幕 + AI 配音（最常见）\npython3 scripts/mps_video_dubbing.py -i https://example.com/cn.mp4 \\\n    --mode ocr --src-lang zh --dst-lang en --burn-subtitle \\\n    --subtitle-area preset \\\n    --confirm-charges\n\n# 中→英 OCR 模式 + 自定义字幕区域（顶部 / 竖屏 / 双语对照等）\npython3 scripts/mps_video_dubbing.py -i https://example.com/cn.mp4 \\\n    --mode ocr --src-lang zh --dst-lang en --burn-subtitle \\\n    --subtitle-area custom --subtitle-bbox 53,741,953,922 \\\n    --confirm-charges\n\n# 本地文件自动上传 + ASR 模式\npython3 scripts/mps_video_dubbing.py --local-file ./video.mp4 \\\n    --mode asr --src-lang zh --dst-lang en --burn-subtitle \\\n    --confirm-charges\n\n# 日→中 ASR + 不压字幕（仅替换配音）\npython3 scripts/mps_video_dubbing.py -i https://example.com/ja.mp4 \\\n    --mode asr --src-lang ja --dst-lang zh --no-burn-subtitle \\\n    --confirm-charges\n\n# COS 路径输入 + 自动下载成品到本地\npython3 scripts/mps_video_dubbing.py \\\n    --cos-input-key input/fr_video.mp4 \\\n    --mode asr --src-lang fr --dst-lang id --burn-subtitle \\\n    --download-dir ./output/ \\\n    --confirm-charges\n\n# cos:// URL 输入（自动识别为 CosInputInfo）\npython3 scripts/mps_video_dubbing.py \\\n    -i cos://<your-bucket>-<appid>/input/video.mp4 \\\n    --mode ocr --src-lang zh --dst-lang en --burn-subtitle \\\n    --subtitle-area preset \\\n    --confirm-charges\n\n# 交互向导（零配置启动，逐步引导填参数）\npython3 scripts/mps_video_dubbing.py\n\n# 查询已提交任务（单次查询，输出原始 JSON，不计费）\npython3 scripts/mps_video_dubbing.py --query-task 2600011633-WorkflowTask-xxxxxx\n```\n\n## 参考文档\n\n- [一站式译制接入](https://cloud.tencent.com/document/product/862/124504)\n- [ProcessMedia 接口](https://cloud.tencent.com/document/product/862/37578)\n- [任务查询 DescribeTaskDetail](https://cloud.tencent.com/document/api/862/37614)\n- [MPS 计费说明](https://cloud.tencent.com/document/product/862/36180)\n\nFile v1.0.6:scripts/requirements.txt\n\n# Tencent Cloud MPS 视频译制 Skill — Python dependencies\n#\n# All packages are official open-source libraries.\n# tencentcloud-sdk-python ships frequent updates (often weekly) to support new\n# MPS models / parameters. pip will install the latest version satisfying the\n# constraint; to force an upgrade later, run:\n#     python3 -m pip install -r scripts/requirements.txt --upgrade\n#\n#   tencentcloud-sdk-python : Tencent Cloud MPS API client (publisher: Tencent Cloud)\n#     repo: https://github.com/TencentCloud/tencentcloud-sdk-python\n#     used by mps_video_dubbing.py / mps_poll_task.py\n#\n#   cos-python-sdk-v5       : Tencent Cloud COS SDK (object storage)\n#     repo: https://github.com/tencentyun/cos-python-sdk-v5\n#     used by mps_cos_upload.py / mps_cos_download.py\n#\n#   python-dotenv           : Load credentials from .env files (used by mps_load_env.py)\n#     repo: https://github.com/theskumar/python-dotenv\n#     used by 1 script (mps_load_env.py) for automatic dotenv loading\n\ntencentcloud-sdk-python>=3.1.139\ncos-python-sdk-v5>=1.9.30\npython-dotenv>=1.0.0\n\nFile v1.0.6:skill-card.md\n\n## Description:\n\nTencent MPS Video Dubbing helps agents generate commands for Tencent Cloud MPS workflows that translate a video's language, optionally burn translated subtitles, and create AI-cloned dubbed audio.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[tencent-mpaas-skills](https://clawhub.ai/user/tencent-mpaas-skills)\n\n### License/Terms of Use:\n\nApache 2.0\n\n## Use Case:\n\nDevelopers, operators, and content localization teams use this skill to generate Tencent Cloud MPS commands for end-to-end video localization from a video input to a translated, dubbed output video. It also supports command generation for dry runs, language listing, environment checks, task submission, task polling, result queries, and output download.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill uses Tencent Cloud credentials and can submit paid MPS and COS operations.\n\nMitigation: Use least-privilege, preferably temporary Tencent Cloud credentials; run dry runs before submission; keep budget alerts or spending limits enabled; and require explicit charge confirmation before paid processing.\n\nRisk: The bundled scripts can automatically install or upgrade Python dependencies.\n\nMitigation: Run the skill in an isolated virtual environment with reviewed or pinned dependencies, or disable the auto-upgrade path before use in controlled environments.\n\nRisk: The environment loader reads local dotenv and shell configuration files to find Tencent Cloud settings.\n\nMitigation: Run from trusted directories, keep secrets out of command arguments and repositories, and review local dotenv files before execution.\n\nRisk: Video files and generated outputs are uploaded to or downloaded from Tencent Cloud COS.\n\nMitigation: Confirm that the selected buckets, regions, retention settings, and access policies meet the user's data handling requirements before processing media.\n\n## Reference(s):\n\n- [Tencent Cloud MPS Video Dubbing Parameters and Examples](references/mps_video_dubbing.md)\n- [Video Dubbing ProcessMedia Request Examples](references/example.md)\n- [Tencent Cloud MPS One-Stop Dubbing Integration](https://cloud.tencent.com/document/product/862/124504)\n- [Tencent Cloud MPS ProcessMedia API](https://cloud.tencent.com/document/product/862/37578)\n- [Tencent Cloud MPS DescribeTaskDetail API](https://cloud.tencent.com/document/api/862/37614)\n- [Tencent Cloud MPS Pricing](https://cloud.tencent.com/document/product/862/36180)\n- [Tencent Cloud MPS Region List](https://cloud.tencent.com/document/product/862/37572)\n- [Tencent Cloud COS Region List](https://cloud.tencent.com/document/product/436/6224)\n\n## Skill Output:\n\n**Output Type(s):** [shell commands, configuration, guidance, markdown]\n\n**Output Format:** [Markdown text with shell command snippets, task identifiers, and result links when available]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Commands may cover dry runs, environment checks, language listing, interactive setup, paid task submission, polling, querying, upload, and download.]\n\n## Skill Version(s):\n\n1.0.6 (source: evidence release, SKILL.md metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.6:LICENSE.txt\n\nApache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\nArchive v1.0.4: 13 files, 49326 bytes\n\nFiles: LICENSE.txt (709b), references/example.md (4223b), references/mps_video_dubbing.md (10326b), scripts/mps_auto_upgrade.py (5944b), scripts/mps_cos_download.py (8271b), scripts/mps_cos_upload.py (9655b), scripts/mps_load_env.py (12807b), scripts/mps_poll_task.py (24434b), scripts/mps_video_dubbing.py (48424b), scripts/requirements.txt (1078b), skill-card.md (2965b), SKILL.md (12994b), _meta.json (144b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: tencent-mps-video-dubbing\ndescription: Tencent Cloud MPS 一站式端到端视频译制专用 Skill，在单次任务中**不可拆分**地完成「提取原视频语音/字幕 → 翻译为目标语言 → 压制目标语言字幕 → AI 克隆原声配音」整条跨语言本地化流水线。**触发的硬条件（必须同时满足）：(1) 用户的输入是一段视频；(2) 明确要求变更音视频的语言（翻译 + 配音 / 翻译 + 换语言 / 做成另一语言版本）；(3) 是端到端产出一个全新语言版本的视频，而不是只做流水线中的某一步子任务**。满足硬条件的典型表达：把这段视频翻译成英文并配音、中文视频做成韩语版、韩剧中配、短剧出海译制、做一个日语配音版、 跨语言视频制作 / 视频本地化一站式处理。**额外触发场景（查询类豁免）**：用户明确要求查询一个\"视频译制任务\"的状态/结果/进展，也应触发本 Skill。**仅询问工具推荐或咨询而不进行实际处理时不触发**。\nmetadata:\n  version: \"1.0.4\"\n---\n\n# 腾讯云 MPS · 配音级视频译制（video-dubbing）\n\n## 角色定义\n\n你是腾讯云 MPS 一站式**配音级视频译制**的专业助手，帮助用户生成正确的 Python 脚本命令。本 Skill 端到端产出新语言版本视频，**不可拆分为子任务**。\n\n参数细节、枚举值、JSON 结构、命令模板、运行时陷阱与强制规则以 `references/mps_video_dubbing.md` 为**唯一真相来源**，本 SKILL.md 只做**行为约束与通用规则**，不复述具体参数，避免双向漂移。\n\n## 输出规范\n\n1. **只输出命令**，不要解释，不要废话\n2. 命令格式：`python3 scripts/mps_video_dubbing.py [参数]`\n3. 脚本支持 `--dry-run`（打印请求不调 API、不计费），**默认自动轮询等待完成**（若指定了 `--download-dir` 则完成后自动下载产物），加 `--no-wait` 才只提交不等待\n4. 输入源判断：URL（HTTP/HTTPS 或 `cos://bucket/key`）用 `--input-url` / `-i`，COS 路径用 `--cos-input-key`，未说明来源一律用 `--local-file`（详见强制规则第 4 条）\n5. **任务完成后输出的链接（预签名下载链接、COS URL 等）必须用 Markdown 超链接格式呈现**，即 `[描述文字](URL)`，不得以代码块或纯文本形式输出链接\n6. **【强制】每次执行处理类任务后，无论是否等待完成、无论成功失败，必须在回复中明确展示 TaskId**：脚本 stdout 会输出 `🆔 TaskId: <id>` 格式的行，从中提取并以 `🆔 任务 ID：<TaskId>` 格式告知用户（方便后续 `--query-task` 手动查询）\n\n> 💰 **费用提示**：本 Skill 调用腾讯云 MPS 服务会产生相应费用；一个任务未拿到结果时不得手动重复发起，否则会重复计费。具体计费标准请参考 [腾讯云 MPS 定价](https://cloud.tencent.com/document/product/862/36180)。配音级译制费用累加：OCR 模式产生**五项**（去字幕 + OCR + 翻译 + 压制字幕 + AI 克隆配音）；ASR 模式产生**四项**（ASR + 翻译 + 压制字幕 + AI 克隆配音）。每次生成提交命令前必须先用自然语言告知用户费用并征得明确确认（\"是否执行？\"），**CLI 必须带 `--confirm-charges`**，交互向导末步必须键入大写 `YES`；查询类（`--query-task`）、列举类（`--list-languages`）、`--dry-run` 预演无需提示。建议用户在 [腾讯云费用中心](https://console.cloud.tencent.com/expense/budget) 设置预算告警与月度上限。\n\n通过腾讯云官方 Python SDK 调用 MPS API，主脚本位于 `scripts/mps_video_dubbing.py`，详细参数与示例见 `references/mps_video_dubbing.md`。\n\n## 环境配置\n\n检查环境变量：\n```bash\npython3 scripts/mps_load_env.py --check-only\n```\n如果变量没有配置，明确提醒用户在 `~/.env`（用户级 dotenv，最高优先级）或 `<SKILL_DIR>/.env`（脚本目录级）或 `~/.bashrc` 或 `~/.profile` 自己配置，禁止向用户索取密钥帮用户配置。\n**`<SKILL_DIR>` 为 `tencent-mps-video-dubbing` 所在目录。**\n\n```bash\n# 必须（所有命令）\nexport TENCENTCLOUD_SECRET_ID=\"<请替换为真实 SecretId>\"\nexport TENCENTCLOUD_SECRET_KEY=\"<请替换为真实 SecretKey>\"\n# MPS API 调用地域（必须，影响 MPS API 接入点）\n# 未设置时脚本会直接报错退出\nexport TENCENTCLOUD_API_REGION=\"<请替换为真实 API 区域，如 ap-guangzhou>\"\n\n# COS 桶/地域（必须），用于输入和输出，输入是COS是必需的，输出一定是必须的； \nexport TENCENTCLOUD_COS_BUCKET=\"<请替换为真实存储桶名>\"\nexport TENCENTCLOUD_COS_REGION=\"<请替换为真实存储桶地域，如 ap-guangzhou>\"\n```\n\n> ⚠️ 上述带 `<...>` 的值是**占位符示意**，必须替换为真实凭证；若直接照抄会导致认证失败（`AuthFailure.SecretIdNotFound`）。\n\n### MPS API 支持的地域\n\n> ⚠️ 此处指 **MPS 接入区域**（API endpoint 的签名地域），非翻译语种。未设置 `TENCENTCLOUD_API_REGION` 时脚本将直接报错退出。\n\n可选区域：`ap-guangzhou`、`ap-shanghai`、`ap-beijing`、`ap-hongkong`、`ap-singapore`、`ap-chengdu`、`ap-chongqing`、`ap-jakarta`、`ap-bangkok`、`ap-seoul`、`ap-tokyo`、`na-ashburn`、`na-siliconvalley`、`sa-saopaulo`、`eu-frankfurt`\n\n> 来源：[MPS 请求结构 - 地域列表](https://cloud.tencent.com/document/product/862/37572)\n\n### COS 支持的地域\n> 来源：[COS地域列表](https://cloud.tencent.com/document/product/436/6224)，建议与MPS API保持同一个地域。\n\n## 依赖说明\n\n本 Skill 通过腾讯云**官方 SDK** 调用 MPS API 与 COS 存储：\n\n- `tencentcloud-sdk-python`（腾讯云官方）— 用于 MPS API 调用\n- `cos-python-sdk-v5`（腾讯云官方）— 用于 COS 上传 / 下载\n- `python-dotenv` — 用于 `mps_load_env.py` 自动加载 dotenv 格式的环境变量文件\n\n首次安装：\n```bash\npython3 -m pip install -r scripts/requirements.txt\n```\n\n> 💡 各脚本首次运行时会通过 `mps_auto_upgrade.py` 自动检查并安装缺失依赖，通常无需手工执行上面的命令。\n\n升级到最新版（推荐每 1~2 个月执行一次，以获取新模型 / 新功能支持）：\n```bash\npython3 -m pip install -r scripts/requirements.txt --upgrade\n```\n\n## 异步任务说明\n\n主脚本**默认自动轮询等待完成**，每 15 秒查询一次，最长等待 3600 秒，完成后下载产物到 `--download-dir`（若指定）。\n- 只提交不等待：加 `--no-wait`，脚本仅返回 TaskId\n- 手动查询任务：`python3 scripts/mps_video_dubbing.py --query-task <TaskId>`（单次查询，非轮询）\n- 在轮询阶段超时拿不到结果时，脚本会提示用户手动 `--query-task`\n- **典型耗时**（实测参考）：\n  - OCR 模式（含擦除原硬字幕）：1080p 5 分钟视频约 15~25 分钟；4K/AV1/175s/86MB 约 15 分钟\n  - ASR 模式（不含擦除）：1080p 5 分钟视频约 5~10 分钟（约为同等视频 OCR 模式的 1/2.6）\n\n## 脚本功能映射（职责边界）\n\n> 💰 处理类调用（即非 `--query-task` / `--list-languages` / `--dry-run`）会调用腾讯云 MPS 服务并产生费用，必须遵循 §「输出规范」中的费用确认流程。\n\n本 Skill 仅有**一个对外主脚本**，按用户需求映射到不同的调用方式，**不得混用**：\n\n| 用户需求类型 | 调用方式 | 说明 |\n|---|---|---|\n| 提交配音级视频译制任务（端到端：提取语音/字幕 → 翻译 → 压字幕 → AI 克隆配音） | `mps_video_dubbing.py` 配合必填参数 | 必填：`--mode`（`ocr`/`asr`）、`--src-lang`、`--dst-lang`、`--burn-subtitle` 或 `--no-burn-subtitle`；OCR 还需 `--subtitle-area`（`preset` / `custom`）；`custom` 还需 `--subtitle-bbox LTX,LTY,RBX,RBY` |\n| 进入交互向导逐项收集参数（用户未提供完整参数时优先推荐） | `mps_video_dubbing.py --interactive` | 无参直接运行也会进入向导；末步必须键入大写 `YES` 才会真正提交 |\n| 查询配音级译制任务状态 / 结果 | `mps_video_dubbing.py --query-task <TaskId>` | TaskId 形如 `[AppId]-WorkflowTask-[hash]`；单次查询、非轮询、不计费 |\n| 列出本 Skill 支持的源语种 / 目标语种（31 种） | `mps_video_dubbing.py --list-languages` | 不调用 MPS API，不产生费用 |\n| 检查 / 验证 MPS 环境变量配置 | `scripts/mps_load_env.py --check-only` | 不修改环境变量，**不产生费用** |\n\n> **注意**：`mps_poll_task.py` / `mps_cos_upload.py` / `mps_cos_download.py` 均为内部辅助模块，**不对用户暴露**，主脚本已内置上传 / 轮询 / 下载逻辑，用户无需直接调用。\n\n> **OCR vs ASR 模式选择**：\n> - **OCR**：从画面**硬字幕**识别。内置擦除原硬字幕步骤；耗时约为 ASR 的 2.6 倍；适用于带硬字幕的视频。\n> - **ASR**：从**音频**识别。不含擦除算子；适用于无硬字幕的视频；若画面有水印/Logo 需要擦除，本 Skill 不处理。\n> - **`--mode` 必填，无默认值**；AI 不得声称\"后端自动选择\"，必须由用户明确指定。\n\n## 生成命令的强制规则\n\n1. **脚本路径前缀**：所有生成的 python 命令必须包含 `scripts/` 路径前缀，格式为 `python3 scripts/mps_video_dubbing.py ...`。禁止生成 `python mps_video_dubbing.py ...`（缺少 `scripts/` 前缀）的命令。\n\n2. **禁止占位符**：所有参数值必须是真实值。若用户未提供必需值，**先询问**，不得用 `<视频URL>`、`YOUR_URL`、`<key>` 等占位符。\n\n3. **核心业务参数必须显式确认，不得使用默认值**：\n   - **必填**：`--mode`（`ocr` / `asr`）、`--src-lang`、`--dst-lang`（不得与 src 相同）、`--burn-subtitle` 或 `--no-burn-subtitle`（二选一）\n   - **OCR 模式追加必填**：`--subtitle-area`（`preset` / `custom`）；`custom` 时还需 `--subtitle-bbox LTX,LTY,RBX,RBY`\n   - 缺任一必填项 → **必须反问用户**或让脚本进入交互向导（`--interactive`），严禁代用户选默认值\n   - 参数详表见 [`references/mps_video_dubbing.md`](references/mps_video_dubbing.md)\n\n4. **输入源判断**：\n   - 用户**明确说明是 COS 文件**（如\"COS 路径\"、\"COS 上的\"、\"bucket 上\"）→ 使用 `--cos-input-key <key>`，bucket / region 由环境变量自动补全，不得询问用户\n   - 用户提供的是 **HTTP/HTTPS URL** → 使用 `-i <URL>` 或 `--input-url <URL>`，不得拆解\n   - 用户给 `cos://bucket/key` URL → 使用 `-i <URL>`（脚本自动解析为 `CosInputInfo`）\n   - 用户**未明确说明来源**，不管路径格式如何 → **一律使用 `--local-file <路径>` 按本地文件处理**；若本地文件不存在，脚本会自动提示并中止任务\n   - ✅ 正确：用户说\"处理视频 input/raw.mp4\" → 生成 `--local-file input/raw.mp4`\n   - ✅ 正确：用户说\"COS 路径：input/raw.mp4\" → 生成 `--cos-input-key input/raw.mp4`\n   - ❌ 错误：用户未说明来源时反问\"是 COS 还是本地文件？\"\n\n5. **费用确认强制**：每次生成提交命令（即非 `--query-task` / `--list-languages` / `--dry-run` 的命令）必须带 `--confirm-charges`，且**先在正文用自然语言告知用户将产生四项累加费用并征得同意，再输出命令**。\n\n6. **桶名禁止硬编码**：输出桶从 `$TENCENTCLOUD_COS_BUCKET` 读取（或 `--cos-bucket` 显式指定），除非用户当次明确给出。\n\n7. **`--no-wait` 默认禁用**：脚本默认行为 = 阻塞式轮询 + 自动下载，这是用户期望。**默认一律不加 `--no-wait`**，仅当用户当次对话字面命中\"不等待 / 异步提交 / 先拿任务 ID / 秒退 / 提交就退 / fire-and-forget\"才允许加。**严禁**以\"任务耗时太长、工具单次调用会超时、我帮你后台跑\"等 AI 侧便利性理由擅自加 `--no-wait`——工具超时是执行层问题，应用定时任务回查解决，而不是改变用户期望默认行为。\n\n8. **行为修饰词不影响触发判定**：用户说 `dry run`、`不等待`、`先预览命令`、`先提交任务`、`先拿任务 ID` 等修饰词时，仍触发本 Skill；这些词只影响命令参数（`--dry-run` / `--no-wait`），不改变路径判定。\n\n9. **`mps_load_env.py` 使用规则**：用户说\"检查环境变量\"、\"验证配置是否正确\"、\"检查配置\"时，必须生成 `python3 scripts/mps_load_env.py --check-only` 命令，不得省略 `--check-only` 参数。\n\n## API 参考\n\n| 场景 | 官方文档 |\n|---|---|\n| 配音级视频译制主路径 | [ProcessMedia AiAnalysisTask](https://cloud.tencent.com/document/product/862/37578) / [一站式译制接入](https://cloud.tencent.com/document/product/862/124504) |\n| 任务查询 | [DescribeTaskDetail](https://cloud.tencent.com/document/api/862/37614) |\n| MPS 计费 | [计费说明](https://cloud.tencent.com/document/product/862/36180) |\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn70yhz47k5f2a22dsfdhthzqx83k6t0\",\n  \"slug\": \"tencent-mps-video-dubbing\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1783004238026\n}\n\nFile v1.0.4:references/example.md\n\n# 视频译制 ProcessMedia 请求示例\n\n> 本文件收录 MPS `ProcessMedia` 接口在**视频配音译制**场景下的**请求 JSON 示例**。\n> 字段释义、关键规则、ExtendedParameter 完整结构 → 见 [`mps_video_dubbing.md`](./mps_video_dubbing.md)（特别是「参数说明」「强制规则」两节）。\n\n---\n\n## 公共模板\n\n5 个示例共用以下 `InputInfo` / `OutputStorage` / 接口元字段，下方各示例**仅展示 `ExtendedParameter` 差异部分**。\n\n```json\n{\n  \"regionId\": 1,\n  \"serviceType\": \"mps\",\n  \"cmd\": \"ProcessMedia\",\n  \"data\": {\n    \"Version\": \"2019-06-12\",\n    \"InputInfo\": {\n      \"Type\": \"COS\",\n      \"CosInputInfo\": {\n        \"Bucket\": \"mps-ollie-test-1308104797\",\n        \"Region\": \"ap-guangzhou\",\n        \"Object\": \"input/17_1773808857717.MP4\"\n      }\n    },\n    \"OutputStorage\": {\n      \"Type\": \"COS\",\n      \"CosOutputStorage\": {\n        \"Bucket\": \"mps-ollie-test-1308104797\",\n        \"Region\": \"ap-guangzhou\"\n      }\n    },\n    \"AiAnalysisTask\": {\n      \"Definition\": 25,\n      \"ExtendedParameter\": \"<见下方各示例>\"\n    }\n  }\n}\n```\n\n---\n\n## 1. ASR + 不压制字幕\n\n无硬字幕视频，ASR 识别 + 翻译，**不**压字幕，仅替换配音。\n\n```text\nExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_asr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":false,\\\"font_type\\\":\\\"auto\\\"}}}\"\n```\n\n差异点：`CustomerAppId=audio_clone_asr`，`use_draw=false`。\n\n---\n\n## 2. ASR + 压制字幕\n\n无硬字幕视频，ASR 识别 + 翻译，并把翻译字幕**压制**到画面，同时替换配音。\n\n```text\nExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_asr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":true,\\\"font_type\\\":\\\"auto\\\"}}}\"\n```\n\n差异点：`use_draw=true`。\n\n---\n\n## 3. OCR + 预设字幕区域（推荐，90% 场景）\n\n画面有硬字幕，OCR 识别 + 擦除 + 翻译 + 压新字幕 + AI 配音。**不传** `als_filter`，由后端使用默认区域（画面中部靠下）。\n\n```text\nExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_ocr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":true,\\\"font_type\\\":\\\"auto\\\"}}}\"\n```\n\n差异点：`CustomerAppId=audio_clone_ocr`，**无 `als_filter`**。\n\n---\n\n## 4. OCR + 自定义字幕区域（底部）\n\n画面有硬字幕但位置非中下部，需自定义识别/擦除像素矩形区域。\n\n```text\nExtendedParameter（转义形式）:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_ocr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":true,\\\"font_type\\\":\\\"auto\\\"},\\\"als_filter\\\":{\\\"active_areas\\\":[{\\\"type\\\":2,\\\"lt_x\\\":53,\\\"lt_y\\\":741,\\\"rb_x\\\":953,\\\"rb_y\\\":922}]}}}\"\n```\n\n解包形式：\n\n```json\n{\n  \"delogo\": {\n    \"cluster_id\": \"gpu_zhiyan\",\n    \"CustomerAppId\": \"audio_clone_ocr\",\n    \"subtitle_param\": {\n      \"translate_src_language\": \"zh\",\n      \"translate_dst_language\": \"en\",\n      \"use_draw\": true,\n      \"font_type\": \"auto\"\n    },\n    \"als_filter\": {\n      \"active_areas\": [\n        { \"type\": 2, \"lt_x\": 53, \"lt_y\": 741, \"rb_x\": 953, \"rb_y\": 922 }\n      ]\n    }\n  }\n}\n```\n\n差异点：新增 `als_filter.active_areas`，矩形像素坐标 `(53,741)→(953,922)`。\n\n---\n\n## 5. OCR + 自定义字幕区域（中上部）\n\n同 #4，换一组坐标（如顶部横幅字幕）。\n\n```text\nExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_ocr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":true,\\\"font_type\\\":\\\"auto\\\"},\\\"als_filter\\\":{\\\"active_areas\\\":[{\\\"type\\\":2,\\\"lt_x\\\":200,\\\"lt_y\\\":400,\\\"rb_x\\\":900,\\\"rb_y\\\":700}]}}}\"\n```\n\n差异点：坐标改为 `(200,400)→(900,700)`。\n\n---\n\n> 字段释义、关键规则（cluster_id / use_draw / font_type / als_filter / preview_size 等）→ 见 [`mps_video_dubbing.md`](./mps_video_dubbing.md)（特别是「强制规则」一节）。\n\nFile v1.0.4:references/mps_video_dubbing.md\n\n# 视频译制参数与示例 — `mps_video_dubbing.py`\n\n**功能**：腾讯云 MPS 一站式视频译制 — 单次任务端到端完成「擦除原字幕 / ASR → 翻译 → 压制目标语言字幕 → AI 克隆原声配音」。底层调用 `ProcessMedia` 接口的 `AiAnalysisTask`（Definition=25），通过 `ExtendedParameter` 传扩展参数。\n\n> 输入 → 去字幕(OCR) / ASR → 翻译 → 压新字幕 → AI 克隆配音 → 输出新视频\n\n## 模式说明\n\n| 维度 | `ocr` | `asr` |\n|------|-------|-------|\n| 适用视频 | 画面有硬字幕 | 画面无硬字幕 |\n| 翻译来源 | OCR 提取的画面字幕文本 | 语音识别结果 |\n| 自动擦除原画面字幕 | ✅ | ❌ 不擦除 |\n| 字幕区域参数 | `--subtitle-area` 必填 | 忽略 |\n| `CustomerAppId`（内部字段，脚本自动设置） | `audio_clone_ocr` | `audio_clone_asr` |\n| 典型耗时（1080p / 5min） | 15~25 分钟 | 5~10 分钟 |\n\n**OCR 字幕区域两种模式（`--subtitle-area`）**：\n\n| 取值 | 适用场景 | `als_filter` 写入 | 必带参数 |\n|------|---------|------------------|---------|\n| `preset`（推荐） | 画面中部靠下的常规硬字幕（覆盖 90% 视频） | ❌ 不写（后端按默认区域） | — |\n| `custom` | 顶部 / 竖屏 / 双语对照等非常规位置 | ✅ 写矩形像素坐标 | `--subtitle-bbox LTX,LTY,RBX,RBY` |\n\n## 参数说明\n\n| 参数 | 说明 |\n|------|------|\n| `-i, --input-url` | 视频公网 URL（支持 `https://` 或 `cos://bucket/key`，后者自动识别为 `CosInputInfo`） |\n| `--local-file` | 本地文件路径，自动上传到 COS 后处理（与 `-i` / `--cos-input-key` 互斥） |\n| `--cos-input-key` | COS 输入对象 key（如 `input/video.mp4`） |\n| `--cos-input-bucket` | COS 输入桶（仅 `--cos-input-key` 路径下生效，未传则沿用 `--cos-bucket`） |\n| `--cos-input-region` | COS 输入地域（仅 `--cos-input-key` 路径下生效，未传则沿用 `--cos-region`） |\n| `--mode` | **【必填】** 译制模式：`ocr`（画面有硬字幕）/ `asr`（无硬字幕） |\n| `--src-lang` | **【必填】** 源语言 code（31 种，见下方「支持语种」表或 `--list-languages`） |\n| `--dst-lang` | **【必填】** 目标语言 code，**不得与 src 相同** |\n| `--burn-subtitle` / `--no-burn-subtitle` | **【必填，二选一】** 是否压制翻译后字幕到画面 |\n| `--subtitle-area` | **【OCR 必填】** 字幕区域模式：`preset` / `custom` |\n| `--subtitle-bbox` | 自定义矩形 4 点整数像素坐标，格式 `LTX,LTY,RBX,RBY`（如 `53,741,953,922`），仅 `--subtitle-area=custom` 时必填 |\n| `--cos-bucket` | **【必填】** 输出 COS 桶（未传则从 `TENCENTCLOUD_COS_BUCKET` 读取，未设置则报错） |\n| `--cos-region` | **【必填】** 输出 COS 地域（未传则从 `TENCENTCLOUD_COS_REGION` 读取，未设置则报错） |\n| `--output-dir` | COS 输出目录，默认 `/output/video-dubbing/` |\n| `--no-wait` | 仅提交不等待（默认自动轮询） |\n| `--poll-interval` | 轮询间隔（秒），默认 `15` |\n| `--max-wait` | 最长等待（秒），默认 `3600` |\n| `--download-dir` | 任务完成后下载成品到本地目录 |\n| `--session-id` | 任务去重识别码（同一 ID 在 3 天内重复提交会报错；适用于幂等重试场景）|\n| `--region` | **【必填】** MPS API 区域（未传则从 `TENCENTCLOUD_API_REGION` 读取，未设置则报错） |\n| `--interactive` | 强制进入交互向导 |\n| `--confirm-charges` | **CLI 模式必需**：确认产生费用；漏传则脚本自动降级 dry-run 不实际提交 |\n| `--dry-run` | 不调用 API；打印「配置摘要」+「完整 ProcessMedia 请求 JSON」 |\n| `--query-task <TaskId>` | 单次查询已提交任务（输出原始 JSON，不计费、不轮询） |\n| `--list-languages` | 列出 31 种支持语种（完整对照表 + 地区分组） |\n| `--verbose, -v` | 详细输出（影响环境加载日志和轮询过程日志的详细度） |\n\n## 支持语种（31 种，官方文档声明双向支持翻译）\n\n> 与脚本内的 `SUPPORTED_LANGUAGES` 字典**同源**。运行 `python3 scripts/mps_video_dubbing.py --list-languages` 可在终端实时查看完整对照表 + 地区分组。\n\n| # | 语种 | Code | | # | 语种 | Code | | # | 语种 | Code |\n|:-:|---|:-:|---|:-:|---|:-:|---|:-:|---|:-:|\n| 1  | 中文           | `zh`  | | 12 | 印度尼西亚语 | `id`  | | 23 | 印地语       | `hi`  |\n| 2  | 英语           | `en`  | | 13 | 荷兰语       | `nl`  | | 24 | 保加利亚语   | `bg`  |\n| 3  | 日语           | `ja`  | | 14 | 土耳其语     | `tr`  | | 25 | 罗马尼亚语   | `ro`  |\n| 4  | 韩语           | `ko`  | | 15 | 菲律宾语     | `fil` | | 26 | 阿拉伯语     | `ar`  |\n| 5  | 德语           | `de`  | | 16 | 马来语       | `ms`  | | 27 | 捷克语       | `cs`  |\n| 6  | 法语           | `fr`  | | 17 | 希腊语       | `el`  | | 28 | 丹麦语       | `da`  |\n| 7  | 俄语           | `ru`  | | 18 | 芬兰语       | `fi`  | | 29 | 泰米尔语     | `ta`  |\n| 8  | 乌克兰语       | `uk`  | | 19 | 克罗地亚语   | `hr`  | | 30 | 匈牙利语     | `hun` |\n| 9  | 葡萄牙语       | `pt`  | | 20 | 斯洛伐克语   | `sk`  | | 31 | 越南语       | `vi`  |\n| 10 | 意大利语       | `it`  | | 21 | 波兰语       | `pl`  | |    |              |       |\n| 11 | 西班牙语       | `es`  | | 22 | 瑞典语       | `sv`  | |    |              |       |\n\n> 区分大小写，必须用小写 code。脚本只校验 `src ≠ dst`，不对 30×30 组合矩阵做更细校验；遇到具体语种对返回 60000 类错误时，建议用更高频语种对（如 `zh ↔ en`）交叉验证。\n\n## 强制规则\n\n- **核心业务参数无默认值，必须显式传**：`--mode` / `--src-lang` / `--dst-lang` / `--burn-subtitle`(or `--no-burn-subtitle`) / `--subtitle-area`（仅 OCR）。CLI 缺任一项 → exit=2 + 列出全部缺失项；交互向导前 5 步必填，OCR 模式还要走必填的第 6 步（字幕区域 preset/custom 二选一）。\n- **`--subtitle-bbox` 校验**：4 个逗号分隔的非负整数，且 `lt_x < rb_x`、`lt_y < rb_y`，违反即 exit=2。\n- **`--subtitle-area=custom` 假成功陷阱** ⚠️：自定义 bbox 没圈中真实字幕时，后端**仍返回 SUCCESS** 但产物 = 源视频。规避：优先 `preset`；必须 `custom` 时先用 VLC 暂停截图精确量取坐标，提交后抽查首段产物确认字幕已正确处理。\n- **OCR 后端隐式降级到 ASR**：`--mode ocr` 但视频实际无硬字幕时，后端可能跳过擦除算子走 ASR 路径，耗时大幅缩短，**不影响计费类型**。若确认无硬字幕，建议直接 `--mode asr` 行为更确定。\n- **ASR 模式忽略字幕区域参数**：`--mode asr` 时即使传了 `--subtitle-area` / `--subtitle-bbox` 也会被脚本静默忽略并打印警告，`als_filter` 不写入。\n- **费用确认强制**：CLI 模式漏传 `--confirm-charges` → 自动降级 dry-run 退出（不真正提交、不计费）；交互向导最后一步必须键入 `YES`。\n- **`--cos-input-key` 的 region 兜底链**：`--cos-input-region` → `$TENCENTCLOUD_COS_REGION` → `--cos-region`（即输出地域）。均缺时直接 `sys.exit(1)` 退出。\n- **`--input-url cos://...` 的 region 兜底链**：`--cos-input-region` → `$TENCENTCLOUD_COS_REGION`（仅两级，不会从 `--cos-region` 兜底）。均缺时直接 `ValueError` 退出。\n- **`--local-file` + 未指定 `--cos-bucket`**：脚本自动以**上传桶**作为输出桶；如需区分输入/输出桶请显式传 `--cos-bucket` / `--cos-region`。\n- **后端硬约束**（脚本已固化，违反会被后端拒绝）：`cluster_id` 必须为 `gpu_zhiyan`；`subtitle_param` 必须同时含 `use_draw` 和 `font_type=\"auto\"`；预设区域（`preset`）→ **不写** `als_filter` 键；ASR 模式 → **不写** `als_filter`；配音级译制**不写** `preview_size`（与字幕级译制不同）。\n\n## 输出产物\n\n任务完成后 MPS 在指定 COS 输出目录（默认 `/output/video-dubbing/`）生成**主成品**：译制后完整视频，文件名形如 `delogo-<hash>.mp4`（前缀 `delogo` 来自底层 DeLogoTask 算子）。\n\n## 示例命令\n\n```bash\n# 中→英 OCR 模式 + 预设字幕区域 + 压新字幕 + AI 配音（最常见）\npython3 scripts/mps_video_dubbing.py -i https://example.com/cn.mp4 \\\n    --mode ocr --src-lang zh --dst-lang en --burn-subtitle \\\n    --subtitle-area preset \\\n    --confirm-charges\n\n# 中→英 OCR 模式 + 自定义字幕区域（顶部 / 竖屏 / 双语对照等）\npython3 scripts/mps_video_dubbing.py -i https://example.com/cn.mp4 \\\n    --mode ocr --src-lang zh --dst-lang en --burn-subtitle \\\n    --subtitle-area custom --subtitle-bbox 53,741,953,922 \\\n    --confirm-charges\n\n# 本地文件自动上传 + ASR 模式\npython3 scripts/mps_video_dubbing.py --local-file ./video.mp4 \\\n    --mode asr --src-lang zh --dst-lang en --burn-subtitle \\\n    --confirm-charges\n\n# 日→中 ASR + 不压字幕（仅替换配音）\npython3 scripts/mps_video_dubbing.py -i https://example.com/ja.mp4 \\\n    --mode asr --src-lang ja --dst-lang zh --no-burn-subtitle \\\n    --confirm-charges\n\n# COS 路径输入 + 自动下载成品到本地\npython3 scripts/mps_video_dubbing.py \\\n    --cos-input-key input/fr_video.mp4 \\\n    --mode asr --src-lang fr --dst-lang id --burn-subtitle \\\n    --download-dir ./output/ \\\n    --confirm-charges\n\n# cos:// URL 输入（自动识别为 CosInputInfo）\npython3 scripts/mps_video_dubbing.py \\\n    -i cos://<your-bucket>-<appid>/input/video.mp4 \\\n    --mode ocr --src-lang zh --dst-lang en --burn-subtitle \\\n    --subtitle-area preset \\\n    --confirm-charges\n\n# 交互向导（零配置启动，逐步引导填参数）\npython3 scripts/mps_video_dubbing.py\n\n# 查询已提交任务（单次查询，输出原始 JSON，不计费）\npython3 scripts/mps_video_dubbing.py --query-task 2600011633-WorkflowTask-xxxxxx\n```\n\n## 参考文档\n\n- [一站式译制接入](https://cloud.tencent.com/document/product/862/124504)\n- [ProcessMedia 接口](https://cloud.tencent.com/document/product/862/37578)\n- [任务查询 DescribeTaskDetail](https://cloud.tencent.com/document/api/862/37614)\n- [MPS 计费说明](https://cloud.tencent.com/document/product/862/36180)\n\nFile v1.0.4:scripts/requirements.txt\n\n# Tencent Cloud MPS 视频译制 Skill — Python dependencies\n#\n# All packages are official open-source libraries.\n# tencentcloud-sdk-python ships frequent updates (often weekly) to support new\n# MPS models / parameters. pip will install the latest version satisfying the\n# constraint; to force an upgrade later, run:\n#     python3 -m pip install -r scripts/requirements.txt --upgrade\n#\n#   tencentcloud-sdk-python : Tencent Cloud MPS API client (publisher: Tencent Cloud)\n#     repo: https://github.com/TencentCloud/tencentcloud-sdk-python\n#     used by mps_video_dubbing.py / mps_poll_task.py\n#\n#   cos-python-sdk-v5       : Tencent Cloud COS SDK (object storage)\n#     repo: https://github.com/tencentyun/cos-python-sdk-v5\n#     used by mps_cos_upload.py / mps_cos_download.py\n#\n#   python-dotenv           : Load credentials from .env files (used by mps_load_env.py)\n#     repo: https://github.com/theskumar/python-dotenv\n#     used by 1 script (mps_load_env.py) for automatic dotenv loading\n\ntencentcloud-sdk-python>=3.1.125\ncos-python-sdk-v5>=1.9.30\npython-dotenv>=1.0.0\n\nFile v1.0.4:skill-card.md\n\n## Description: <br>\nGenerates commands for Tencent Cloud MPS to create an end-to-end translated and dubbed version of a video, including OCR or ASR extraction, translation, subtitle burn-in, and AI voice dubbing. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[tencent-mpaas-skills](https://clawhub.ai/user/tencent-mpaas-skills) <br>\n\n### License/Terms of Use: <br>\nApache 2.0 <br>\n\n\n## Use Case: <br>\nDevelopers and media localization operators use this skill to generate command lines and configuration checks for submitting, querying, and downloading Tencent Cloud MPS end-to-end video translation and dubbing jobs. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can auto-install or upgrade Python packages before running its Tencent Cloud helper scripts. <br>\nMitigation: Review the dependency list first, run in a dedicated virtual environment, and manually control upgrades when operating in sensitive environments. <br>\nRisk: The helper scripts read local environment and dotenv-style files that may contain Tencent Cloud credentials. <br>\nMitigation: Use least-privilege Tencent credentials, keep credential files outside untrusted directories, and avoid running from directories that may contain stray .env files. <br>\nRisk: The skill handles video uploads, cloud storage objects, task outputs, and presigned download URLs. <br>\nMitigation: Limit COS bucket permissions, avoid sharing presigned URLs, and confirm storage locations before submitting jobs. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/tencent-mpaas-skills/skills/tencent-mps-video-dubbing) <br>\n- [Video dubbing parameters and examples](references/mps_video_dubbing.md) <br>\n- [ProcessMedia request examples](references/example.md) <br>\n- [Tencent Cloud one-stop video dubbing documentation](https://cloud.tencent.com/document/product/862/124504) <br>\n- [Tencent Cloud ProcessMedia API](https://cloud.tencent.com/document/product/862/37578) <br>\n- [Tencent Cloud DescribeTaskDetail API](https://cloud.tencent.com/document/api/862/37614) <br>\n- [Tencent Cloud MPS pricing](https://cloud.tencent.com/document/product/862/36180) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Shell commands, Markdown, Configuration, Guidance] <br>\n**Output Format:** [Markdown text with command lines, task identifiers, and links] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Commands may include dry-run, query, polling, upload, download, and charge-confirmation options.] <br>\n\n## Skill Version(s): <br>\n1.0.4 (source: frontmatter and server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.4:LICENSE.txt\n\nApache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\nArchive v1.0.3: 12 files, 45585 bytes\n\nFiles: LICENSE.txt (709b), references/example.md (4223b), references/mps_video_dubbing.md (10317b), scripts/mps_cos_download.py (8042b), scripts/mps_cos_upload.py (9426b), scripts/mps_load_env.py (12392b), scripts/mps_poll_task.py (24045b), scripts/mps_video_dubbing.py (48069b), scripts/requirements.txt (1068b), skill-card.md (3076b), SKILL.md (12629b), _meta.json (144b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: tencent-mps-video-dubbing\ndescription: Tencent Cloud MPS 一站式端到端视频译制专用 Skill，在单次任务中**不可拆分**地完成「提取原视频语音/字幕 → 翻译为目标语言 → 压制目标语言字幕 → AI 克隆原声配音」整条跨语言本地化流水线。**触发的硬条件（必须同时满足）：(1) 用户的输入是一段视频；(2) 明确要求变更音视频的语言（翻译 + 配音 / 翻译 + 换语言 / 做成另一语言版本）；(3) 是端到端产出一个全新语言版本的视频，而不是只做流水线中的某一步子任务**。满足硬条件的典型表达：把这段视频翻译成英文并配音、中文视频做成韩语版、韩剧中配、短剧出海译制、做一个日语配音版、 跨语言视频制作 / 视频本地化一站式处理。**额外触发场景（查询类豁免）**：用户明确要求查询一个\"视频译制任务\"的状态/结果/进展，也应触发本 Skill。**仅询问工具推荐或咨询而不进行实际处理时不触发**。\nmetadata:\n  version: \"1.0.3\"\n---\n\n# 腾讯云 MPS · 配音级视频译制（video-dubbing）\n\n## 角色定义\n\n你是腾讯云 MPS 一站式**配音级视频译制**的专业助手，帮助用户生成正确的 Python 脚本命令。本 Skill 端到端产出新语言版本视频，**不可拆分为子任务**。\n\n参数细节、枚举值、JSON 结构、命令模板、运行时陷阱与强制规则以 `references/mps_video_dubbing.md` 为**唯一真相来源**，本 SKILL.md 只做**行为约束与通用规则**，不复述具体参数，避免双向漂移。\n\n## 输出规范\n\n1. **只输出命令**，不要解释，不要废话\n2. 命令格式：`python scripts/mps_video_dubbing.py [参数]`\n3. 脚本支持 `--dry-run`（打印请求不调 API、不计费），**默认自动轮询等待完成**（若指定了 `--download-dir` 则完成后自动下载产物），加 `--no-wait` 才只提交不等待\n4. 输入源判断：URL（HTTP/HTTPS 或 `cos://bucket/key`）用 `--input-url` / `-i`，COS 路径用 `--cos-input-key`，未说明来源一律用 `--local-file`（详见强制规则第 4 条）\n5. **任务完成后输出的链接（预签名下载链接、COS URL 等）必须用 Markdown 超链接格式呈现**，即 `[描述文字](URL)`，不得以代码块或纯文本形式输出链接\n6. **【强制】每次执行处理类任务后，无论是否等待完成、无论成功失败，必须在回复中明确展示 TaskId**：脚本 stdout 会输出 `🆔 TaskId: <id>` 格式的行，从中提取并以 `🆔 任务 ID：<TaskId>` 格式告知用户（方便后续 `--query-task` 手动查询）\n\n> 💰 **费用提示**：本 Skill 调用腾讯云 MPS 服务会产生相应费用；一个任务未拿到结果时不得手动重复发起，否则会重复计费。具体计费标准请参考 [腾讯云 MPS 定价](https://cloud.tencent.com/document/product/862/36180)。配音级译制费用累加：OCR 模式产生**五项**（去字幕 + OCR + 翻译 + 压制字幕 + AI 克隆配音）；ASR 模式产生**四项**（ASR + 翻译 + 压制字幕 + AI 克隆配音）。每次生成提交命令前必须先用自然语言告知用户费用并征得明确确认（\"是否执行？\"），**CLI 必须带 `--confirm-charges`**，交互向导末步必须键入大写 `YES`；查询类（`--query-task`）、列举类（`--list-languages`）、`--dry-run` 预演无需提示。建议用户在 [腾讯云费用中心](https://console.cloud.tencent.com/expense/budget) 设置预算告警与月度上限。\n\n通过腾讯云官方 Python SDK 调用 MPS API，主脚本位于 `scripts/mps_video_dubbing.py`，详细参数与示例见 `references/mps_video_dubbing.md`。\n\n## 环境配置\n\n检查环境变量：\n```bash\npython scripts/mps_load_env.py --check-only\n```\n如果变量没有配置，明确提醒用户在 `~/.env`（用户级 dotenv，最高优先级）或 `<SKILL_DIR>/.env`（脚本目录级）或 `~/.bashrc` 或 `~/.profile` 自己配置，禁止向用户索取密钥帮用户配置。\n**`<SKILL_DIR>` 为 `tencent-mps-video-dubbing` 所在目录。**\n\n> 实际加载顺序（与 `mps_load_env.py` 一致，先加载者优先 / 不覆盖已存在变量）：\n> ① `find_dotenv(usecwd=True)` 从当前目录向上递归找最近的 `.env` → ② `~/.env` → ③ `~/.bashrc` → ④ `~/.profile` → ⑤ `<SKILL_DIR>/.env`\n\n```bash\n# 必须（所有命令）\nexport TENCENTCLOUD_SECRET_ID=\"<请替换为真实 SecretId>\"\nexport TENCENTCLOUD_SECRET_KEY=\"<请替换为真实 SecretKey>\"\n# MPS API 调用地域（必须，影响 MPS API 接入点）\n# 未设置时脚本会直接报错退出\nexport TENCENTCLOUD_API_REGION=\"<请替换为真实 API 区域，如 ap-guangzhou>\"\n\n# COS 桶/地域（必须），用于输入和输出，输入是COS是必需的，输出一定是必须的； \nexport TENCENTCLOUD_COS_BUCKET=\"<请替换为真实存储桶名>\"\nexport TENCENTCLOUD_COS_REGION=\"<请替换为真实存储桶地域，如 ap-guangzhou>\"\n```\n\n> ⚠️ 上述带 `<...>` 的值是**占位符示意**，必须替换为真实凭证；若直接照抄会导致认证失败（`AuthFailure.SecretIdNotFound`）。\n\n### MPS API 支持的地域\n\n> ⚠️ 此处指 **MPS 接入区域**（API endpoint 的签名地域），非翻译语种。未设置 `TENCENTCLOUD_API_REGION` 时脚本将直接报错退出。\n\n可选区域：`ap-guangzhou`、`ap-shanghai`、`ap-beijing`、`ap-hongkong`、`ap-singapore`、`ap-chengdu`、`ap-chongqing`、`ap-jakarta`、`ap-bangkok`、`ap-seoul`、`ap-tokyo`、`na-ashburn`、`na-siliconvalley`、`sa-saopaulo`、`eu-frankfurt`\n\n> 来源：[MPS 请求结构 - 地域列表](https://cloud.tencent.com/document/product/862/37572)\n\n## 依赖说明\n\n首次安装：\n```bash\npip install -r scripts/requirements.txt\n```\n\n升级到最新版（推荐每 1~2 个月执行一次，以获取新模型 / 新功能支持）：\n```bash\npip install -r scripts/requirements.txt --upgrade\n```\n\n## 异步任务说明\n\n主脚本**默认自动轮询等待完成**，每 15 秒查询一次，最长等待 3600 秒，完成后下载产物到 `--download-dir`（若指定）。\n- 只提交不等待：加 `--no-wait`，脚本仅返回 TaskId\n- 手动查询任务：`python scripts/mps_video_dubbing.py --query-task <TaskId>`（单次查询，非轮询）\n- 在轮询阶段超时拿不到结果时，脚本会提示用户手动 `--query-task`\n- **典型耗时**（实测参考）：\n  - OCR 模式（含擦除原硬字幕）：1080p 5 分钟视频约 15~25 分钟；4K/AV1/175s/86MB 约 15 分钟\n  - ASR 模式（不含擦除）：1080p 5 分钟视频约 5~10 分钟（约为同等视频 OCR 模式的 1/2.6）\n\n## 脚本功能映射（职责边界）\n\n> 💰 处理类调用（即非 `--query-task` / `--list-languages` / `--dry-run`）会调用腾讯云 MPS 服务并产生费用，必须遵循 §「输出规范」中的费用确认流程。\n\n本 Skill 仅有**一个对外主脚本**，按用户需求映射到不同的调用方式，**不得混用**：\n\n| 用户需求类型 | 调用方式 | 说明 |\n|---|---|---|\n| 提交配音级视频译制任务（端到端：提取语音/字幕 → 翻译 → 压字幕 → AI 克隆配音） | `mps_video_dubbing.py` 配合必填参数 | 必填：`--mode`（`ocr`/`asr`）、`--src-lang`、`--dst-lang`、`--burn-subtitle` 或 `--no-burn-subtitle`；OCR 还需 `--subtitle-area`（`preset` / `custom`）；`custom` 还需 `--subtitle-bbox LTX,LTY,RBX,RBY` |\n| 进入交互向导逐项收集参数（用户未提供完整参数时优先推荐） | `mps_video_dubbing.py --interactive` | 无参直接运行也会进入向导；末步必须键入大写 `YES` 才会真正提交 |\n| 查询配音级译制任务状态 / 结果 | `mps_video_dubbing.py --query-task <TaskId>` | TaskId 形如 `[AppId]-WorkflowTask-[hash]`；单次查询、非轮询、不计费 |\n| 列出本 Skill 支持的源语种 / 目标语种（31 种） | `mps_video_dubbing.py --list-languages` | 不调用 MPS API，不产生费用 |\n| 检查 / 验证 MPS 环境变量配置 | `scripts/mps_load_env.py --check-only` | 不修改环境变量，**不产生费用** |\n\n> **注意**：`mps_poll_task.py` / `mps_cos_upload.py` / `mps_cos_download.py` 均为内部辅助模块，**不对用户暴露**，主脚本已内置上传 / 轮询 / 下载逻辑，用户无需直接调用。\n\n> **OCR vs ASR 模式选择**：\n> - **OCR**：从画面**硬字幕**识别。内置擦除原硬字幕步骤；耗时约为 ASR 的 2.6 倍；适用于带硬字幕的视频。\n> - **ASR**：从**音频**识别。不含擦除算子；适用于无硬字幕的视频；若画面有水印/Logo 需要擦除，本 Skill 不处理。\n> - **`--mode` 必填，无默认值**；AI 不得声称\"后端自动选择\"，必须由用户明确指定。\n\n## 生成命令的强制规则\n\n1. **脚本路径前缀**：所有生成的 python 命令必须包含 `scripts/` 路径前缀，格式为 `python scripts/mps_video_dubbing.py ...`。禁止生成 `python mps_video_dubbing.py ...`（缺少 `scripts/` 前缀）的命令。\n\n2. **禁止占位符**：所有参数值必须是真实值。若用户未提供必需值，**先询问**，不得用 `<视频URL>`、`YOUR_URL`、`<key>` 等占位符。\n\n3. **核心业务参数必须显式确认，不得使用默认值**：\n   - **必填**：`--mode`（`ocr` / `asr`）、`--src-lang`、`--dst-lang`（不得与 src 相同）、`--burn-subtitle` 或 `--no-burn-subtitle`（二选一）\n   - **OCR 模式追加必填**：`--subtitle-area`（`preset` / `custom`）；`custom` 时还需 `--subtitle-bbox LTX,LTY,RBX,RBY`\n   - 缺任一必填项 → **必须反问用户**或让脚本进入交互向导（`--interactive`），严禁代用户选默认值\n   - 参数详表见 [`references/mps_video_dubbing.md`](references/mps_video_dubbing.md)\n\n4. **输入源判断**：\n   - 用户**明确说明是 COS 文件**（如\"COS 路径\"、\"COS 上的\"、\"bucket 上\"）→ 使用 `--cos-input-key <key>`，bucket / region 由环境变量自动补全，不得询问用户\n   - 用户提供的是 **HTTP/HTTPS URL** → 使用 `-i <URL>` 或 `--input-url <URL>`，不得拆解\n   - 用户给 `cos://bucket/key` URL → 使用 `-i <URL>`（脚本自动解析为 `CosInputInfo`）\n   - 用户**未明确说明来源**，不管路径格式如何 → **一律使用 `--local-file <路径>` 按本地文件处理**；若本地文件不存在，脚本会自动提示并中止任务\n   - ✅ 正确：用户说\"处理视频 input/raw.mp4\" → 生成 `--local-file input/raw.mp4`\n   - ✅ 正确：用户说\"COS 路径：input/raw.mp4\" → 生成 `--cos-input-key input/raw.mp4`\n   - ❌ 错误：用户未说明来源时反问\"是 COS 还是本地文件？\"\n\n5. **费用确认强制**：每次生成提交命令（即非 `--query-task` / `--list-languages` / `--dry-run` 的命令）必须带 `--confirm-charges`，且**先在正文用自然语言告知用户将产生四项累加费用并征得同意，再输出命令**。\n\n6. **桶名禁止硬编码**：输出桶从 `$TENCENTCLOUD_COS_BUCKET` 读取（或 `--cos-bucket` 显式指定），除非用户当次明确给出。\n\n7. **`--no-wait` 默认禁用**：脚本默认行为 = 阻塞式轮询 + 自动下载，这是用户期望。**默认一律不加 `--no-wait`**，仅当用户当次对话字面命中\"不等待 / 异步提交 / 先拿任务 ID / 秒退 / 提交就退 / fire-and-forget\"才允许加。**严禁**以\"任务耗时太长、工具单次调用会超时、我帮你后台跑\"等 AI 侧便利性理由擅自加 `--no-wait`——工具超时是执行层问题，应用定时任务回查解决，而不是改变用户期望默认行为。\n\n8. **行为修饰词不影响触发判定**：用户说 `dry run`、`不等待`、`先预览命令`、`先提交任务`、`先拿任务 ID` 等修饰词时，仍触发本 Skill；这些词只影响命令参数（`--dry-run` / `--no-wait`），不改变路径判定。\n\n9. **`mps_load_env.py` 使用规则**：用户说\"检查环境变量\"、\"验证配置是否正确\"、\"检查配置\"时，必须生成 `python scripts/mps_load_env.py --check-only` 命令，不得省略 `--check-only` 参数。\n\n## API 参考\n\n| 场景 | 官方文档 |\n|---|---|\n| 配音级视频译制主路径 | [ProcessMedia AiAnalysisTask](https://cloud.tencent.com/document/product/862/37578) / [一站式译制接入](https://cloud.tencent.com/document/product/862/124504) |\n| 任务查询 | [DescribeTaskDetail](https://cloud.tencent.com/document/api/862/37614) |\n| MPS 计费 | [计费说明](https://cloud.tencent.com/document/product/862/36180) |\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn70yhz47k5f2a22dsfdhthzqx83k6t0\",\n  \"slug\": \"tencent-mps-video-dubbing\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1779348153771\n}\n\nFile v1.0.3:references/example.md\n\n# 视频译制 ProcessMedia 请求示例\n\n> 本文件收录 MPS `ProcessMedia` 接口在**视频配音译制**场景下的**请求 JSON 示例**。\n> 字段释义、关键规则、ExtendedParameter 完整结构 → 见 [`mps_video_dubbing.md`](./mps_video_dubbing.md)（特别是「参数说明」「强制规则」两节）。\n\n---\n\n## 公共模板\n\n5 个示例共用以下 `InputInfo` / `OutputStorage` / 接口元字段，下方各示例**仅展示 `ExtendedParameter` 差异部分**。\n\n```json\n{\n  \"regionId\": 1,\n  \"serviceType\": \"mps\",\n  \"cmd\": \"ProcessMedia\",\n  \"data\": {\n    \"Version\": \"2019-06-12\",\n    \"InputInfo\": {\n      \"Type\": \"COS\",\n      \"CosInputInfo\": {\n        \"Bucket\": \"mps-ollie-test-1308104797\",\n        \"Region\": \"ap-guangzhou\",\n        \"Object\": \"input/17_1773808857717.MP4\"\n      }\n    },\n    \"OutputStorage\": {\n      \"Type\": \"COS\",\n      \"CosOutputStorage\": {\n        \"Bucket\": \"mps-ollie-test-1308104797\",\n        \"Region\": \"ap-guangzhou\"\n      }\n    },\n    \"AiAnalysisTask\": {\n      \"Definition\": 25,\n      \"ExtendedParameter\": \"<见下方各示例>\"\n    }\n  }\n}\n```\n\n---\n\n## 1. ASR + 不压制字幕\n\n无硬字幕视频，ASR 识别 + 翻译，**不**压字幕，仅替换配音。\n\n```text\nExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_asr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":false,\\\"font_type\\\":\\\"auto\\\"}}}\"\n```\n\n差异点：`CustomerAppId=audio_clone_asr`，`use_draw=false`。\n\n---\n\n## 2. ASR + 压制字幕\n\n无硬字幕视频，ASR 识别 + 翻译，并把翻译字幕**压制**到画面，同时替换配音。\n\n```text\nExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_asr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":true,\\\"font_type\\\":\\\"auto\\\"}}}\"\n```\n\n差异点：`use_draw=true`。\n\n---\n\n## 3. OCR + 预设字幕区域（推荐，90% 场景）\n\n画面有硬字幕，OCR 识别 + 擦除 + 翻译 + 压新字幕 + AI 配音。**不传** `als_filter`，由后端使用默认区域（画面中部靠下）。\n\n```text\nExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_ocr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":true,\\\"font_type\\\":\\\"auto\\\"}}}\"\n```\n\n差异点：`CustomerAppId=audio_clone_ocr`，**无 `als_filter`**。\n\n---\n\n## 4. OCR + 自定义字幕区域（底部）\n\n画面有硬字幕但位置非中下部，需自定义识别/擦除像素矩形区域。\n\n```text\nExtendedParameter（转义形式）:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_ocr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":true,\\\"font_type\\\":\\\"auto\\\"},\\\"als_filter\\\":{\\\"active_areas\\\":[{\\\"type\\\":2,\\\"lt_x\\\":53,\\\"lt_y\\\":741,\\\"rb_x\\\":953,\\\"rb_y\\\":922}]}}}\"\n```\n\n解包形式：\n\n```json\n{\n  \"delogo\": {\n    \"cluster_id\": \"gpu_zhiyan\",\n    \"CustomerAppId\": \"audio_clone_ocr\",\n    \"subtitle_param\": {\n      \"translate_src_language\": \"zh\",\n      \"translate_dst_language\": \"en\",\n      \"use_draw\": true,\n      \"font_type\": \"auto\"\n    },\n    \"als_filter\": {\n      \"active_areas\": [\n        { \"type\": 2, \"lt_x\": 53, \"lt_y\": 741, \"rb_x\": 953, \"rb_y\": 922 }\n      ]\n    }\n  }\n}\n```\n\n差异点：新增 `als_filter.active_areas`，矩形像素坐标 `(53,741)→(953,922)`。\n\n---\n\n## 5. OCR + 自定义字幕区域（中上部）\n\n同 #4，换一组坐标（如顶部横幅字幕）。\n\n```text\nExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_ocr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":true,\\\"font_type\\\":\\\"auto\\\"},\\\"als_filter\\\":{\\\"active_areas\\\":[{\\\"type\\\":2,\\\"lt_x\\\":200,\\\"lt_y\\\":400,\\\"rb_x\\\":900,\\\"rb_y\\\":700}]}}}\"\n```\n\n差异点：坐标改为 `(200,400)→(900,700)`。\n\n---\n\n> 字段释义、关键规则（cluster_id / use_draw / font_type / als_filter / preview_size 等）→ 见 [`mps_video_dubbing.md`](./mps_video_dubbing.md)（特别是「强制规则」一节）。\n\nFile v1.0.3:references/mps_video_dubbing.md\n\n# 视频译制参数与示例 — `mps_video_dubbing.py`\n\n**功能**：腾讯云 MPS 一站式视频译制 — 单次任务端到端完成「擦除原字幕 / ASR → 翻译 → 压制目标语言字幕 → AI 克隆原声配音」。底层调用 `ProcessMedia` 接口的 `AiAnalysisTask`（Definition=25），通过 `ExtendedParameter` 传扩展参数。\n\n> 输入 → 去字幕(OCR) / ASR → 翻译 → 压新字幕 → AI 克隆配音 → 输出新视频\n\n## 模式说明\n\n| 维度 | `ocr` | `asr` |\n|------|-------|-------|\n| 适用视频 | 画面有硬字幕 | 画面无硬字幕 |\n| 翻译来源 | OCR 提取的画面字幕文本 | 语音识别结果 |\n| 自动擦除原画面字幕 | ✅ | ❌ 不擦除 |\n| 字幕区域参数 | `--subtitle-area` 必填 | 忽略 |\n| `CustomerAppId`（内部字段，脚本自动设置） | `audio_clone_ocr` | `audio_clone_asr` |\n| 典型耗时（1080p / 5min） | 15~25 分钟 | 5~10 分钟 |\n\n**OCR 字幕区域两种模式（`--subtitle-area`）**：\n\n| 取值 | 适用场景 | `als_filter` 写入 | 必带参数 |\n|------|---------|------------------|---------|\n| `preset`（推荐） | 画面中部靠下的常规硬字幕（覆盖 90% 视频） | ❌ 不写（后端按默认区域） | — |\n| `custom` | 顶部 / 竖屏 / 双语对照等非常规位置 | ✅ 写矩形像素坐标 | `--subtitle-bbox LTX,LTY,RBX,RBY` |\n\n## 参数说明\n\n| 参数 | 说明 |\n|------|------|\n| `-i, --input-url` | 视频公网 URL（支持 `https://` 或 `cos://bucket/key`，后者自动识别为 `CosInputInfo`） |\n| `--local-file` | 本地文件路径，自动上传到 COS 后处理（与 `-i` / `--cos-input-key` 互斥） |\n| `--cos-input-key` | COS 输入对象 key（如 `input/video.mp4`） |\n| `--cos-input-bucket` | COS 输入桶（仅 `--cos-input-key` 路径下生效，未传则沿用 `--cos-bucket`） |\n| `--cos-input-region` | COS 输入地域（仅 `--cos-input-key` 路径下生效，未传则沿用 `--cos-region`） |\n| `--mode` | **【必填】** 译制模式：`ocr`（画面有硬字幕）/ `asr`（无硬字幕） |\n| `--src-lang` | **【必填】** 源语言 code（31 种，见下方「支持语种」表或 `--list-languages`） |\n| `--dst-lang` | **【必填】** 目标语言 code，**不得与 src 相同** |\n| `--burn-subtitle` / `--no-burn-subtitle` | **【必填，二选一】** 是否压制翻译后字幕到画面 |\n| `--subtitle-area` | **【OCR 必填】** 字幕区域模式：`preset` / `custom` |\n| `--subtitle-bbox` | 自定义矩形 4 点整数像素坐标，格式 `LTX,LTY,RBX,RBY`（如 `53,741,953,922`），仅 `--subtitle-area=custom` 时必填 |\n| `--cos-bucket` | **【必填】** 输出 COS 桶（未传则从 `TENCENTCLOUD_COS_BUCKET` 读取，未设置则报错） |\n| `--cos-region` | **【必填】** 输出 COS 地域（未传则从 `TENCENTCLOUD_COS_REGION` 读取，未设置则报错） |\n| `--output-dir` | COS 输出目录，默认 `/output/video-dubbing/` |\n| `--no-wait` | 仅提交不等待（默认自动轮询） |\n| `--poll-interval` | 轮询间隔（秒），默认 `15` |\n| `--max-wait` | 最长等待（秒），默认 `3600` |\n| `--download-dir` | 任务完成后下载成品到本地目录 |\n| `--session-id` | 任务去重识别码（同一 ID 在 3 天内重复提交会报错；适用于幂等重试场景）|\n| `--region` | **【必填】** MPS API 区域（未传则从 `TENCENTCLOUD_API_REGION` 读取，未设置则报错） |\n| `--interactive` | 强制进入交互向导 |\n| `--confirm-charges` | **CLI 模式必需**：确认产生费用；漏传则脚本自动降级 dry-run 不实际提交 |\n| `--dry-run` | 不调用 API；打印「配置摘要」+「完整 ProcessMedia 请求 JSON」 |\n| `--query-task <TaskId>` | 单次查询已提交任务（输出原始 JSON，不计费、不轮询） |\n| `--list-languages` | 列出 31 种支持语种（完整对照表 + 地区分组） |\n| `--verbose, -v` | 详细输出（影响环境加载日志和轮询过程日志的详细度） |\n\n## 支持语种（31 种，官方文档声明双向支持翻译）\n\n> 与脚本内的 `SUPPORTED_LANGUAGES` 字典**同源**。运行 `python scripts/mps_video_dubbing.py --list-languages` 可在终端实时查看完整对照表 + 地区分组。\n\n| # | 语种 | Code | | # | 语种 | Code | | # | 语种 | Code |\n|:-:|---|:-:|---|:-:|---|:-:|---|:-:|---|:-:|\n| 1  | 中文           | `zh`  | | 12 | 印度尼西亚语 | `id`  | | 23 | 印地语       | `hi`  |\n| 2  | 英语           | `en`  | | 13 | 荷兰语       | `nl`  | | 24 | 保加利亚语   | `bg`  |\n| 3  | 日语           | `ja`  | | 14 | 土耳其语     | `tr`  | | 25 | 罗马尼亚语   | `ro`  |\n| 4  | 韩语           | `ko`  | | 15 | 菲律宾语     | `fil` | | 26 | 阿拉伯语     | `ar`  |\n| 5  | 德语           | `de`  | | 16 | 马来语       | `ms`  | | 27 | 捷克语       | `cs`  |\n| 6  | 法语           | `fr`  | | 17 | 希腊语       | `el`  | | 28 | 丹麦语       | `da`  |\n| 7  | 俄语           | `ru`  | | 18 | 芬兰语       | `fi`  | | 29 | 泰米尔语     | `ta`  |\n| 8  | 乌克兰语       | `uk`  | | 19 | 克罗地亚语   | `hr`  | | 30 | 匈牙利语     | `hun` |\n| 9  | 葡萄牙语       | `pt`  | | 20 | 斯洛伐克语   | `sk`  | | 31 | 越南语       | `vi`  |\n| 10 | 意大利语       | `it`  | | 21 | 波兰语       | `pl`  | |    |              |       |\n| 11 | 西班牙语       | `es`  | | 22 | 瑞典语       | `sv`  | |    |              |       |\n\n> 区分大小写，必须用小写 code。脚本只校验 `src ≠ dst`，不对 30×30 组合矩阵做更细校验；遇到具体语种对返回 60000 类错误时，建议用更高频语种对（如 `zh ↔ en`）交叉验证。\n\n## 强制规则\n\n- **核心业务参数无默认值，必须显式传**：`--mode` / `--src-lang` / `--dst-lang` / `--burn-subtitle`(or `--no-burn-subtitle`) / `--subtitle-area`（仅 OCR）。CLI 缺任一项 → exit=2 + 列出全部缺失项；交互向导前 5 步必填，OCR 模式还要走必填的第 6 步（字幕区域 preset/custom 二选一）。\n- **`--subtitle-bbox` 校验**：4 个逗号分隔的非负整数，且 `lt_x < rb_x`、`lt_y < rb_y`，违反即 exit=2。\n- **`--subtitle-area=custom` 假成功陷阱** ⚠️：自定义 bbox 没圈中真实字幕时，后端**仍返回 SUCCESS** 但产物 = 源视频。规避：优先 `preset`；必须 `custom` 时先用 VLC 暂停截图精确量取坐标，提交后抽查首段产物确认字幕已正确处理。\n- **OCR 后端隐式降级到 ASR**：`--mode ocr` 但视频实际无硬字幕时，后端可能跳过擦除算子走 ASR 路径，耗时大幅缩短，**不影响计费类型**。若确认无硬字幕，建议直接 `--mode asr` 行为更确定。\n- **ASR 模式忽略字幕区域参数**：`--mode asr` 时即使传了 `--subtitle-area` / `--subtitle-bbox` 也会被脚本静默忽略并打印警告，`als_filter` 不写入。\n- **费用确认强制**：CLI 模式漏传 `--confirm-charges` → 自动降级 dry-run 退出（不真正提交、不计费）；交互向导最后一步必须键入 `YES`。\n- **`--cos-input-key` 的 region 兜底链**：`--cos-input-region` → `$TENCENTCLOUD_COS_REGION` → `--cos-region`（即输出地域）。均缺时直接 `sys.exit(1)` 退出。\n- **`--input-url cos://...` 的 region 兜底链**：`--cos-input-region` → `$TENCENTCLOUD_COS_REGION`（仅两级，不会从 `--cos-region` 兜底）。均缺时直接 `ValueError` 退出。\n- **`--local-file` + 未指定 `--cos-bucket`**：脚本自动以**上传桶**作为输出桶；如需区分输入/输出桶请显式传 `--cos-bucket` / `--cos-region`。\n- **后端硬约束**（脚本已固化，违反会被后端拒绝）：`cluster_id` 必须为 `gpu_zhiyan`；`subtitle_param` 必须同时含 `use_draw` 和 `font_type=\"auto\"`；预设区域（`preset`）→ **不写** `als_filter` 键；ASR 模式 → **不写** `als_filter`；配音级译制**不写** `preview_size`（与字幕级译制不同）。\n\n## 输出产物\n\n任务完成后 MPS 在指定 COS 输出目录（默认 `/output/video-dubbing/`）生成**主成品**：译制后完整视频，文件名形如 `delogo-<hash>.mp4`（前缀 `delogo` 来自底层 DeLogoTask 算子）。\n\n## 示例命令\n\n```bash\n# 中→英 OCR 模式 + 预设字幕区域 + 压新字幕 + AI 配音（最常见）\npython scripts/mps_video_dubbing.py -i https://example.com/cn.mp4 \\\n    --mode ocr --src-lang zh --dst-lang en --burn-subtitle \\\n    --subtitle-area preset \\\n    --confirm-charges\n\n# 中→英 OCR 模式 + 自定义字幕区域（顶部 / 竖屏 / 双语对照等）\npython scripts/mps_video_dubbing.py -i https://example.com/cn.mp4 \\\n    --mode ocr --src-lang zh --dst-lang en --burn-subtitle \\\n    --subtitle-area custom --subtitle-bbox 53,741,953,922 \\\n    --confirm-charges\n\n# 本地文件自动上传 + ASR 模式\npython scripts/mps_video_dubbing.py --local-file ./video.mp4 \\\n    --mode asr --src-lang zh --dst-lang en --burn-subtitle \\\n    --confirm-charges\n\n# 日→中 ASR + 不压字幕（仅替换配音）\npython scripts/mps_video_dubbing.py -i https://example.com/ja.mp4 \\\n    --mode asr --src-lang ja --dst-lang zh --no-burn-subtitle \\\n    --confirm-charges\n\n# COS 路径输入 + 自动下载成品到本地\npython scripts/mps_video_dubbing.py \\\n    --cos-input-key input/fr_video.mp4 \\\n    --mode asr --src-lang fr --dst-lang id --burn-subtitle \\\n    --download-dir ./output/ \\\n    --confirm-charges\n\n# cos:// URL 输入（自动识别为 CosInputInfo）\npython scripts/mps_video_dubbing.py \\\n    -i cos://<your-bucket>-<appid>/input/video.mp4 \\\n    --mode ocr --src-lang zh --dst-lang en --burn-subtitle \\\n    --subtitle-area preset \\\n    --confirm-charges\n\n# 交互向导（零配置启动，逐步引导填参数）\npython scripts/mps_video_dubbing.py\n\n# 查询已提交任务（单次查询，输出原始 JSON，不计费）\npython scripts/mps_video_dubbing.py --query-task 2600011633-WorkflowTask-xxxxxx\n```\n\n## 参考文档\n\n- [一站式译制接入](https://cloud.tencent.com/document/product/862/124504)\n- [ProcessMedia 接口](https://cloud.tencent.com/document/product/862/37578)\n- [任务查询 DescribeTaskDetail](https://cloud.tencent.com/document/api/862/37614)\n- [MPS 计费说明](https://cloud.tencent.com/document/product/862/36180)\n\nFile v1.0.3:scripts/requirements.txt\n\n# Tencent Cloud MPS 视频译制 Skill — Python dependencies\n#\n# All packages are official open-source libraries.\n# tencentcloud-sdk-python ships frequent updates (often weekly) to support new\n# MPS models / parameters. pip will install the latest version satisfying the\n# constraint; to force an upgrade later, run:\n#     pip install -r scripts/requirements.txt --upgrade\n#\n#   tencentcloud-sdk-python : Tencent Cloud MPS API client (publisher: Tencent Cloud)\n#     repo: https://github.com/TencentCloud/tencentcloud-sdk-python\n#     used by mps_video_dubbing.py / mps_poll_task.py\n#\n#   cos-python-sdk-v5       : Tencent Cloud COS SDK (object storage)\n#     repo: https://github.com/tencentyun/cos-python-sdk-v5\n#     used by mps_cos_upload.py / mps_cos_download.py\n#\n#   python-dotenv           : Load credentials from .env files (used by mps_load_env.py)\n#     repo: https://github.com/theskumar/python-dotenv\n#     used by 1 script (mps_load_env.py) for automatic dotenv loading\n\ntencentcloud-sdk-python>=3.0.1300\ncos-python-sdk-v5>=1.9.30\npython-dotenv>=1.0.0\n\nFile v1.0.3:skill-card.md\n\n## Description: <br>\nGenerates commands and configuration guidance for Tencent Cloud MPS video dubbing workflows that translate video language, burn translated subtitles, clone voice dubbing, and query task results. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[tencent-mpaas-skills](https://clawhub.ai/user/tencent-mpaas-skills) <br>\n\n### License/Terms of Use: <br>\nApache 2.0 <br>\n\n\n## Use Case: <br>\nDevelopers and video localization operators use this skill to prepare and run Tencent Cloud MPS end-to-end dubbing tasks for producing a new language version of a video and checking task status. <br>\n\n### Deployment Geography for Use: <br>\nTencent Cloud MPS supported API regions listed by the skill: ap-guangzhou, ap-shanghai, ap-beijing, ap-hongkong, ap-singapore, ap-chengdu, ap-chongqing, ap-jakarta, ap-bangkok, ap-seoul, ap-tokyo, na-ashburn, na-siliconvalley, sa-saopaulo, eu-frankfurt. <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Selected videos may be uploaded to Tencent Cloud COS or processed by Tencent Cloud MPS, including local-file inputs used during previews. <br>\nMitigation: Use only approved media, avoid local-file dry runs unless upload is acceptable, and use dedicated least-privilege Tencent credentials for this skill. <br>\nRisk: Processing commands can incur Tencent Cloud MPS fees, and repeated submissions before a task result is available can duplicate charges. <br>\nMitigation: Require explicit charge confirmation for processing commands, use dry runs or task queries for previews and status checks, and track the TaskId before resubmitting. <br>\n\n\n## Reference(s): <br>\n- [Video Dubbing Parameters and Examples](references/mps_video_dubbing.md) <br>\n- [ProcessMedia Request Examples](references/example.md) <br>\n- [Tencent Cloud MPS ProcessMedia AiAnalysisTask](https://cloud.tencent.com/document/product/862/37578) <br>\n- [Tencent Cloud MPS One-Stop Dubbing Access](https://cloud.tencent.com/document/product/862/124504) <br>\n- [Tencent Cloud MPS DescribeTaskDetail](https://cloud.tencent.com/document/api/862/37614) <br>\n- [Tencent Cloud MPS Region List](https://cloud.tencent.com/document/product/862/37572) <br>\n- [Tencent Cloud MPS Pricing](https://cloud.tencent.com/document/product/862/36180) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown text with shell commands and Markdown result links] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Commands may submit Tencent Cloud MPS tasks, poll for completion, download outputs, list languages, query task status, or check environment configuration.] <br>\n\n## Skill Version(s): <br>\n1.0.3 (source: evidence release and SKILL.md metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.3:LICENSE.txt\n\nApache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.","readmeExcerpt":"Skill: Tencent MPS Video Dubbing Owner: tencent-mpaas-skills Summary: Tencent Cloud MPS 一站式端到端视频译制专用 Skill，在单次任务中**不可拆分**地完成「提取原视频语音/字幕 → 翻译为目标语言 → 压制目标语言字幕 → AI 克隆原声配音」整条跨语言本地化流水线。**触发的硬条件（必须同时满足）：(1) 用户的输入是一段视频；(2) 明确要求变更音视频的语言（翻译 + 配音 / 翻译 + 换语言 / 做成另一语言版本）；(3) 是端到端产出一个全新语言版本的视频，而不是只做流水线中的某一步子任务**。满足硬条件的典型表达：把这段视频翻译成英文并配音、中文视频做成韩语版、韩剧中配、短剧出海译制、做一个日语配音版、 跨语言视频制作 Tags: latest:1.0.6 Version history: v1.0.6 | 2026-07-","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"python3 scripts/mps_load_env.py --check-only"},{"language":"bash","snippet":"# 必须（所有命令）\nexport TENCENTCLOUD_SECRET_ID=\"<请替换为真实 SecretId>\"\nexport TENCENTCLOUD_SECRET_KEY=\"<请替换为真实 SecretKey>\"\n# MPS API 调用地域（必须，影响 MPS API 接入点）\n# 未设置时脚本会直接报错退出\nexport TENCENTCLOUD_API_REGION=\"<请替换为真实 API 区域，如 ap-guangzhou>\"\n\n# COS 桶/地域（必须），用于输入和输出，输入是COS是必需的，输出一定是必须的； \nexport TENCENTCLOUD_COS_BUCKET=\"<请替换为真实存储桶名>\"\nexport TENCENTCLOUD_COS_REGION=\"<请替换为真实存储桶地域，如 ap-guangzhou>\"\n\n# MPS API 接入点（可选），不设置时默认国内站 mps.tencentcloudapi.com\n# 使用国际站时才需要设置为 mps.intl.tencentcloudapi.com\nexport TENCENTCLOUD_MPS_ENDPOINT=\"mps.intl.tencentcloudapi.com\""},{"language":"bash","snippet":"python3 -m pip install -r scripts/requirements.txt"},{"language":"bash","snippet":"python3 -m pip install -r scripts/requirements.txt --upgrade"},{"language":"json","snippet":"{\n  \"regionId\": 1,\n  \"serviceType\": \"mps\",\n  \"cmd\": \"ProcessMedia\",\n  \"data\": {\n    \"Version\": \"2019-06-12\",\n    \"InputInfo\": {\n      \"Type\": \"COS\",\n      \"CosInputInfo\": {\n        \"Bucket\": \"mps-ollie-test-1308104797\",\n        \"Region\": \"ap-guangzhou\",\n        \"Object\": \"input/17_1773808857717.MP4\"\n      }\n    },\n    \"OutputStorage\": {\n      \"Type\": \"COS\",\n      \"CosOutputStorage\": {\n        \"Bucket\": \"mps-ollie-test-1308104797\",\n        \"Region\": \"ap-guangzhou\"\n      }\n    },\n    \"AiAnalysisTask\": {\n      \"Definition\": 25,\n      \"ExtendedParameter\": \"<见下方各示例>\"\n    }\n  }\n}"},{"language":"text","snippet":"ExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_asr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":false,\\\"font_type\\\":\\\"auto\\\"}}}\""}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: tencent-mps-video-dubbing\ndescription: Tencent Cloud MPS 一站式端到端视频译制专用 Skill，在单次任务中**不可拆分**地完成「提取原视频语音/字幕 → 翻译为目标语言 → 压制目标语言字幕 → AI 克隆原声配音」整条跨语言本地化流水线。**触发的硬条件（必须同时满足）：(1) 用户的输入是一段视频；(2) 明确要求变更音视频的语言（翻译 + 配音 / 翻译 + 换语言 / 做成另一语言版本）；(3) 是端到端产出一个全新语言版本的视频，而不是只做流水线中的某一步子任务**。满足硬条件的典型表达：把这段视频翻译成英文并配音、中文视频做成韩语版、韩剧中配、短剧出海译制、做一个日语配音版、 跨语言视频制作 / 视频本地化一站式处理。**额外触发场景（查询类豁免）**：用户明确要求查询一个\"视频译制任务\"的状态/结果/进展，也应触发本 Skill。**仅询问工具推荐或咨询而不进行实际处理时不触发**。\nmetadata:\n  version: \"1.0.6\"\n---\n\n# 腾讯云 MPS · 配音级视频译制（video-dubbing）\n\n## 角色定义\n\n你是腾讯云 MPS 一站式**配音级视频译制**的专业助手，帮助用户生成正确的 Python 脚本命令。本 Skill 端到端产出新语言版本视频，**不可拆分为子任务**。\n\n参数细节、枚举值、JSON 结构、命令模板、运行时陷阱与强制规则以 `references/mps_video_dubbing.md` 为**唯一真相来源**，本 SKILL.md 只做**行为约束与通用规则**，不复述具体参数，避免双向漂移。\n\n## 输出规范\n\n1. **只输出命令**，不要解释，不要废话\n2. 命令格式：`python3 scripts/mps_video_dubbing.py [参数]`\n3. 脚本支持 `--dry-run`（打印请求不调 API、不计费），**默认自动轮询等待完成**（若指定了 `--download-dir` 则完成后自动下载产物），加 `--no-wait` 才只提交不等待\n4. 输入源判断：URL（HTTP/HTTPS 或 `cos://bucket/key`）用 `--input-url` / `-i`，COS 路径用 `--cos-input-key`，未说明来源一律用 `--local-file`（详见强制规则第 4 条）\n5. **任务完成后输出的链接（预签名下载链接、COS URL 等）必须用 Markdown 超链接格式呈现**，即 `[描述文字](URL)`，不得以代码块或纯文本形式输出链接\n6. **【强制】每次执行处理类任务后，无论是否等待完成、无论成功失败，必须在回复中明确展示 TaskId**：脚本 stdout 会输出 `🆔 TaskId: <id>` 格式的行，从中提取并以 `🆔 任务 ID：<TaskId>` 格式告知用户（方便后续 `--query-task` 手动查询）\n\n> 💰 **费用提示**：本 Skill 调用腾讯云 MPS 服务会产生相应费用；一个任务未拿到结果时不得手动重复发起，否则会重复计费。具体计费标准请参考 [腾讯云 MPS 定价](https://cloud.tencent.com/document/product/862/36180)。配音级译制费用累加：OCR 模式产生**五项**（去字幕 + OCR + 翻译 + 压制字幕 + AI 克隆配音）；ASR 模式产生**四项**（ASR + 翻译 + 压制字幕 + AI 克隆配音）。每次生成提交命令前必须先用自然语言告知用户费用并征得明确确认（\"是否执行？\"），**CLI 必须带 `--confirm-charges`**，交互向导末步必须键入大写 `YES`；查询类（`--query-task`）、列举类（`--list-languages`）、`--dry-run` 预演无需提示。建议用户在 [腾讯云费用中心](https://console.cloud.tencent.com/expense/budget) 设置预算告警与月度上限。\n\n通过腾讯云官方 Python SDK 调用 MPS API，主脚本位于 `scripts/mps_video_dubbing.py`。**详细参数与示例见 `references/mps_video_dubbing.md`，生成命令前必须先 Read 该文档；未读 references 直接给命令视为违规**。\n\n## 环境配置\n\n检查环境变量：\n```bash\npython3 scripts/mps_load_env.py --check-only\n```\n如果变量没有配置，明确提醒用户在 `~/.env`（用户级 dotenv，最高优先级）或 `<SKILL_DIR>/.env`（脚本目录级）或 `~/.bashrc` 或 `~/.profile` 自己配置，禁止向用户索取密钥帮用户配置。\n**`<SKILL_DIR>` 为 `tencent-mps-video-dubbing` 所在目录。**\n\n```bash\n# 必须（所有命令）\nexport TENCENTCLOUD_SECRET_ID=\"<请替换为真实 SecretId>\"\nexport TENCENTCLOUD_SECRET_KEY=\"<请替换为真实 SecretKey>\"\n# MPS API 调用地域（必须，影响 MPS API 接入点）\n# 未设置时脚本会直接报错退出\nexport TENCENTCLOUD_API_REGION=\"<请替换为真实 API 区域，如 ap-guangzhou>\"\n\n# COS 桶/地域（必须），用于输入和输出，输入是COS是必需的，输出一定是必须的； \nexport TENCENTCLOUD_COS_BUCKET=\"<请替换为真实存储桶名>\"\nexport TENCENTCLOUD_COS_REGION=\"<请替换为真实存储桶地域，如 ap-guangzhou>\"\n\n# MPS API 接入点（可选），不设置时默认国内站 mps.tencentcloudapi.com\n# 使用国际站时才需要设置为 mps.intl.tencentcloudapi.com\nexport TENCENTCLOUD_MPS_ENDPOINT=\"mps.intl.tencentcloudapi.com\"\n```\n\n> ⚠️ 上述带 `<...>` 的值是**占位符示意**，必须替换为真实凭证；若直接照抄会导致认证失败（`AuthFailure.SecretIdNotFound`）。\n\n### MPS API 支持的地域\n\n> ⚠️ 此处指 **MPS 接入区域**（API endpoint 的签名地域），非翻译语种。未设置 `TENCENTCLOUD_API_REGION` 时脚本将直接报错退出。\n\n可选区域：`ap-guangzhou`、`ap-shanghai`、`ap-beijing`、`ap-hongkong"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn70yhz47k5f2a22dsfdhthzqx83k6t0\",\n  \"slug\": \"tencent-mps-video-dubbing\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1785316523525\n}"},{"path":"references/example.md","content":"# 视频译制 ProcessMedia 请求示例\n\n> 本文件收录 MPS `ProcessMedia` 接口在**视频配音译制**场景下的**请求 JSON 示例**。\n> 字段释义、关键规则、ExtendedParameter 完整结构 → 见 [`mps_video_dubbing.md`](./mps_video_dubbing.md)（特别是「参数说明」「强制规则」两节）。\n\n---\n\n## 公共模板\n\n5 个示例共用以下 `InputInfo` / `OutputStorage` / 接口元字段，下方各示例**仅展示 `ExtendedParameter` 差异部分**。\n\n```json\n{\n  \"regionId\": 1,\n  \"serviceType\": \"mps\",\n  \"cmd\": \"ProcessMedia\",\n  \"data\": {\n    \"Version\": \"2019-06-12\",\n    \"InputInfo\": {\n      \"Type\": \"COS\",\n      \"CosInputInfo\": {\n        \"Bucket\": \"mps-ollie-test-1308104797\",\n        \"Region\": \"ap-guangzhou\",\n        \"Object\": \"input/17_1773808857717.MP4\"\n      }\n    },\n    \"OutputStorage\": {\n      \"Type\": \"COS\",\n      \"CosOutputStorage\": {\n        \"Bucket\": \"mps-ollie-test-1308104797\",\n        \"Region\": \"ap-guangzhou\"\n      }\n    },\n    \"AiAnalysisTask\": {\n      \"Definition\": 25,\n      \"ExtendedParameter\": \"<见下方各示例>\"\n    }\n  }\n}\n```\n\n---\n\n## 1. ASR + 不压制字幕\n\n无硬字幕视频，ASR 识别 + 翻译，**不**压字幕，仅替换配音。\n\n```text\nExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_asr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":false,\\\"font_type\\\":\\\"auto\\\"}}}\"\n```\n\n差异点：`CustomerAppId=audio_clone_asr`，`use_draw=false`。\n\n---\n\n## 2. ASR + 压制字幕\n\n无硬字幕视频，ASR 识别 + 翻译，并把翻译字幕**压制**到画面，同时替换配音。\n\n```text\nExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_asr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":true,\\\"font_type\\\":\\\"auto\\\"}}}\"\n```\n\n差异点：`use_draw=true`。\n\n---\n\n## 3. OCR + 预设字幕区域（推荐，90% 场景）\n\n画面有硬字幕，OCR 识别 + 擦除 + 翻译 + 压新字幕 + AI 配音。**不传** `als_filter`，由后端使用默认区域（画面中部靠下）。\n\n```text\nExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_ocr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":true,\\\"font_type\\\":\\\"auto\\\"}}}\"\n```\n\n差异点：`CustomerAppId=audio_clone_ocr`，**无 `als_filter`**。\n\n---\n\n## 4. OCR + 自定义字幕区域（底部）\n\n画面有硬字幕但位置非中下部，需自定义识别/擦除像素矩形区域。\n\n```text\nExtendedParameter（转义形式）:\n  \"{\\\"delogo\\\":{\\\"cluster_id\\\":\\\"gpu_zhiyan\\\",\\\"CustomerAppId\\\":\\\"audio_clone_ocr\\\",\\\"subtitle_param\\\":{\\\"translate_src_language\\\":\\\"zh\\\",\\\"translate_dst_language\\\":\\\"en\\\",\\\"use_draw\\\":true,\\\"font_type\\\":\\\"auto\\\"},\\\"als_filter\\\":{\\\"active_areas\\\":[{\\\"type\\\":2,\\\"lt_x\\\":53,\\\"lt_y\\\":741,\\\"rb_x\\\":953,\\\"rb_y\\\":922}]}}}\"\n```\n\n解包形式：\n\n```json\n{\n  \"delogo\": {\n    \"cluster_id\": \"gpu_zhiyan\",\n    \"CustomerAppId\": \"audio_clone_ocr\",\n    \"subtitle_param\": {\n      \"translate_src_language\": \"zh\",\n      \"translate_dst_language\": \"en\",\n      \"use_draw\": true,\n      \"font_type\": \"auto\"\n    },\n    \"als_filter\": {\n      \"active_areas\": [\n        { \"type\": 2, \"lt_x\": 53, \"lt_y\": 741, \"rb_x\": 953, \"rb_y\": 922 }\n      ]\n    }\n  }\n}\n```\n\n差异点：新增 `als_filter.active_areas`，矩形像素坐标 `(53,741)→(953,922)`。\n\n---\n\n## 5. OCR + 自定义字幕区域（中上部）\n\n同 #4，换一组坐标（如顶部横幅字幕）。\n\n```text\nExtendedParameter:\n  \"{\\\"delogo\\\":{\\\"clust"},{"path":"references/mps_video_dubbing.md","content":"# 视频译制参数与示例 — `mps_video_dubbing.py`\n\n**功能**：腾讯云 MPS 一站式视频译制 — 单次任务端到端完成「擦除原字幕 / ASR → 翻译 → 压制目标语言字幕 → AI 克隆原声配音」。底层调用 `ProcessMedia` 接口的 `AiAnalysisTask`（Definition=25），通过 `ExtendedParameter` 传扩展参数。\n\n> 输入 → 去字幕(OCR) / ASR → 翻译 → 压新字幕 → AI 克隆配音 → 输出新视频\n\n## 模式说明\n\n| 维度 | `ocr` | `asr` |\n|------|-------|-------|\n| 适用视频 | 画面有硬字幕 | 画面无硬字幕 |\n| 翻译来源 | OCR 提取的画面字幕文本 | 语音识别结果 |\n| 自动擦除原画面字幕 | ✅ | ❌ 不擦除 |\n| 字幕区域参数 | `--subtitle-area` 必填 | 忽略 |\n| `CustomerAppId`（内部字段，脚本自动设置） | `audio_clone_ocr` | `audio_clone_asr` |\n| 典型耗时（1080p / 5min） | 15~25 分钟 | 5~10 分钟 |\n\n**OCR 字幕区域两种模式（`--subtitle-area`）**：\n\n| 取值 | 适用场景 | `als_filter` 写入 | 必带参数 |\n|------|---------|------------------|---------|\n| `preset`（推荐） | 画面中部靠下的常规硬字幕（覆盖 90% 视频） | ❌ 不写（后端按默认区域） | — |\n| `custom` | 顶部 / 竖屏 / 双语对照等非常规位置 | ✅ 写矩形像素坐标 | `--subtitle-bbox LTX,LTY,RBX,RBY` |\n\n## 参数说明\n\n| 参数 | 说明 |\n|------|------|\n| `-i, --input-url` | 视频公网 URL（支持 `https://` 或 `cos://bucket/key`，后者自动识别为 `CosInputInfo`） |\n| `--local-file` | 本地文件路径，自动上传到 COS 后处理（与 `-i` / `--cos-input-key` 互斥） |\n| `--cos-input-key` | COS 输入对象 key（如 `input/video.mp4`） |\n| `--cos-input-bucket` | COS 输入桶（仅 `--cos-input-key` 路径下生效，未传则沿用 `--cos-bucket`） |\n| `--cos-input-region` | COS 输入地域（仅 `--cos-input-key` 路径下生效，未传则沿用 `--cos-region`） |\n| `--mode` | **【必填】** 译制模式：`ocr`（画面有硬字幕）/ `asr`（无硬字幕） |\n| `--src-lang` | **【必填】** 源语言 code（31 种，见下方「支持语种」表或 `--list-languages`） |\n| `--dst-lang` | **【必填】** 目标语言 code，**不得与 src 相同** |\n| `--burn-subtitle` / `--no-burn-subtitle` | **【必填，二选一】** 是否压制翻译后字幕到画面 |\n| `--subtitle-area` | **【OCR 必填】** 字幕区域模式：`preset` / `custom` |\n| `--subtitle-bbox` | 自定义矩形 4 点整数像素坐标，格式 `LTX,LTY,RBX,RBY`（如 `53,741,953,922`），仅 `--subtitle-area=custom` 时必填 |\n| `--cos-bucket` | **【必填】** 输出 COS 桶（未传则从 `TENCENTCLOUD_COS_BUCKET` 读取，未设置则报错） |\n| `--cos-region` | **【必填】** 输出 COS 地域（未传则从 `TENCENTCLOUD_COS_REGION` 读取，未设置则报错） |\n| `--output-dir` | COS 输出目录，默认 `/output/video-dubbing/` |\n| `--no-wait` | 仅提交不等待（默认自动轮询） |\n| `--poll-interval` | 轮询间隔（秒），默认 `15` |\n| `--max-wait` | 最长等待（秒），默认 `3600` |\n| `--download-dir` | 任务完成后下载成品到本地目录 |\n| `--session-id` | 任务去重识别码（同一 ID 在 3 天内重复提交会报错；适用于幂等重试场景）|\n| `--region` | **【必填】** MPS API 区域（未传则从 `TENCENTCLOUD_API_REGION` 读取，未设置则报错） |\n| `--interactive` | 强制进入交互向导 |\n| `--confirm-charges` | **CLI 模式必需**：确认产生费用；漏传则脚本自动降级 dry-run 不实际提交 |\n| `--dry-run` | 不调用 API；打印「配置摘要」+「完整 ProcessMedia 请求 JSON」 |\n| `--query-task <TaskId>` | 单次查询已提交任务（输出原始 JSON，不计费、不轮询） |\n| `--list-languages` | 列出 31 种支持语种（完整对照表 + 地区分组） |\n| `--verbose, -v` | 详细输出（影响环境加载日志和轮询过程日志的详细度） |\n\n## 支持语种（31 种，官方文档声明双向支持翻译）\n\n> 与脚本内的 `SUPPORTED_LANGUAGES` 字典**同源**。运行 `python3 scripts/mps_video_dubbing.py --list-languages` 可在终端实时查看完整对照表 + 地区分组。\n\n| # | 语种 | Code | | # | 语种 | Code | | # | 语种 | Code |\n|:-:|---|:-:|---|:-:|---|:-:|---|:-:|---|:-:|\n| 1  | 中文           | `zh`  | | 12 | 印度尼西亚语 | `id`  | | 23 | 印地语       | `hi`  |\n| 2  | 英语           | `en`  | | 13 | 荷兰语       | `nl`  | | 24 | 保加利亚语   | `bg`  |\n| 3  | 日语           | `ja`  | | 14 | 土耳其语     | `tr`  | | 25 | 罗马尼亚语   | "},{"path":"scripts/requirements.txt","content":"# Tencent Cloud MPS 视频译制 Skill — Python dependencies\n#\n# All packages are official open-source libraries.\n# tencentcloud-sdk-python ships frequent updates (often weekly) to support new\n# MPS models / parameters. pip will install the latest version satisfying the\n# constraint; to force an upgrade later, run:\n#     python3 -m pip install -r scripts/requirements.txt --upgrade\n#\n#   tencentcloud-sdk-python : Tencent Cloud MPS API client (publisher: Tencent Cloud)\n#     repo: https://github.com/TencentCloud/tencentcloud-sdk-python\n#     used by mps_video_dubbing.py / mps_poll_task.py\n#\n#   cos-python-sdk-v5       : Tencent Cloud COS SDK (object storage)\n#     repo: https://github.com/tencentyun/cos-python-sdk-v5\n#     used by mps_cos_upload.py / mps_cos_download.py\n#\n#   python-dotenv           : Load credentials from .env files (used by mps_load_env.py)\n#     repo: https://github.com/theskumar/python-dotenv\n#     used by 1 script (mps_load_env.py) for automatic dotenv loading\n\ntencentcloud-sdk-python>=3.1.139\ncos-python-sdk-v5>=1.9.30\npython-dotenv>=1.0.0"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Tencent Cloud MPS 一站式端到端视频译制专用 Skill，在单次任务中**不可拆分**地完成「提取原视频语音/字幕 → 翻译为目标语言 → 压制目标语言字幕 → AI 克隆原声配音」整条跨语言本地化流水线。**触发的硬条件（必须同时满足）：(1) 用户的输入是一段视频；(2) 明确要求变更音视频的语言（翻译 + 配音 / 翻译 + 换语言 / 做成另一语言版本）；(3) 是端到端产出一个全新语言版本的视频，而不是只做流水线中的某一步子任务**。满足硬条件的典型表达：把这段视频翻译成英文并配音、中文视频做成韩语版、韩剧中配、短剧出海译制、做一个日语配音版、 跨语言视频制作 Skill: Tencent MPS Video Dubbing Owner: tencent-mpaas-skills Summary: Tencent Cloud MPS 一站式端到端视频译制专用 Skill，在单次任务中**不可拆分**地完成「提取原视频语音/字幕 → 翻译为目标语言 → 压制目标语言字幕 → AI 克隆原声配音」整条跨语言本地化流水线。**触发的硬条件（必须同时满足）：(1) 用户的输入是一段视频；(2) 明确要求变更音视频的语言（翻译 + 配音 / 翻译 + 换语言 / 做成另一语言版本）；(3) 是端到端产出一个全新语言版本的视频，而不是只做流水线中的某一步子任务**。满足硬条件的典型表达：把这段视频翻译成英文并配音、中文视频做成韩语版、韩剧中配、短剧出海译制、做一个日语配音版、 跨语言视频制作 Tags: latest:1.0.6 Version history: v1.0.6 | 2026-07-","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1088,"uniquenessScore":47,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T21:43:16.366Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T21:43:16.366Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-14T13:38:38.090Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}