dubbing

dubbing is a skill for Claude Code, Codex from perso-ai/perso-dubbing-plugin. It costs 26 tokens per session (5,796 once invoked), scanned A, original, MIT.

A video voice-translation workflow that uses the Perso AI Dubbing service to create dubbed versions in other languages and synchronize speech with the speaker's mouth movements. It defines how to run jobs, choose languages, protect the API key, and report progress.

In plain words
What is it for?
Uploading videos, translating their speech, generating one or more language versions, combining the processed video, and saving the finished dubbed files.
Why use it?
It prevents duplicate uploads, exposed credentials, interrupted long jobs, and misleading progress updates during video processing.

Skill for Claude CodeCodex

Written for Claude Code and Codex: allowed-tools in frontmatter, but also agents/openai.yaml present. Also seen: mentions Claude Code; mentions Codex.

Part of the perso-dubbing plugin — 3 skills, 1 hook shipped together

Good fit Uploading videos, translating their speech, generating one or more language versions, combining the processed video, and saving the finished dubbed files.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/perso-ai/perso-dubbing-plugin/dubbing
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add perso-ai/perso-dubbing-plugin --skill dubbing
Clone the repo
git clone --depth 1 https://github.com/perso-ai/perso-dubbing-plugin

Made for: Claude Code, Codex.

Or install perso-dubbing, the plugin that ships this one along with the rest of its 3 skills, 1 hook.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for dubbing

README.md
[![agentmods](https://agentmods.dev/badge/skills/perso-ai/perso-dubbing-plugin/dubbing/github.svg)](https://agentmods.dev/skills/perso-ai/perso-dubbing-plugin/dubbing)
Your own site
<a href="https://agentmods.dev/skills/perso-ai/perso-dubbing-plugin/dubbing"><img src="https://agentmods.dev/badge/skills/perso-ai/perso-dubbing-plugin/dubbing/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for dubbing

Your own site · 80×15
<a href="https://agentmods.dev/skills/perso-ai/perso-dubbing-plugin/dubbing"><img src="https://agentmods.dev/badge/skills/perso-ai/perso-dubbing-plugin/dubbing.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 26 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 5,796 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector warn 7 Sept 2026
SkillSpector: 1 finding, up to medium

These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →

  • medium MCP Rug Pull · line 158
    npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
    Fix: Pin the version: npx @scope/[email protected]
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00026 $0.05796
Opus 5 $0.00013 $0.02898
Sonnet 5 $0.00005 $0.01159
Haiku 4.5 $0.00003 $0.00580

Measured 9d ago against content hash 4730589af0ce, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade A, and why

dubbing scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.

The scan reads SKILL.md. This mod also ships 30 executable files (lib/api_adapter.mjs, lib/billing.mjs, lib/client_info.mjs, …), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/dubbing/SKILL.md · 184 lines

How it starts

The opening of the file, as written. The whole thing — 184 lines — stays where its author put it; the contents beside it link to each section on GitHub.

/dubbing

A skill that auto-dubs videos via the Perso AI Dubbing API.

Core rules (must follow)

  • Only the worker sees the raw key. Never open the key with Read, echo it, or pass it as a command-line argument. Workers send it in the XP-API-KEY header only.
  • One command = the whole job. scripts/dubbing.mjs handles upload · split · translate · merge · save by itself. Never run prepare_input.mjs or probe_split.mjs before it — they are debug tools, and probe_split.mjs performs a real upload (the video would upload twice).
  • Always run dubbing.mjs in the background. Jobs take minutes to hours; a foreground shell timeout kills the run mid-way.
  • Languages unspecified → source auto, target en.
  • Multiple languages go in one command (--target en,zh,ja) — upload/split happens once and is reused per language. Never run once per language (re-uploads the source each time).
  • Relay progress faithfully. Surface the worker's stdout [progress] lines to chat, verbatim or summarized — and don't announce steps that didn't appear (splitting/merging exist only for over-limit videos). The indented stderr detail logs don't need relaying.
  • Keep the user informed while it runs. Dubbing, lip-sync, and audio separation all print a [status] heartbeat (stage + item counts, e.g. ja 4/6 · en 1/6 or separating — file 2/5, with a next check ~Nm hint), and each finished item streams as a [progress] line. Check the background output ~3 minutes after launch, then on the hinted interval (10 min for media ≤10 min, 30 min for longer): relay any new [progress] line right away, otherwise post the latest [status] line as a one-line update. Never invent percentages, elapsed time, or ETAs — relay only what the lines say. Stops that need the user ([space-select], [split-confirm], [free-limit], [resume-check], [credit-check], credit-out, completion) end the process, so they surface without polling.
  • Name your runtime for telemetry (silent). Add --host <claude-code|codex|cursor|antigravity|gemini> to the worker command, naming the agent you are running as, if you can tell. It only tags usage telemetry — never surface it to the user and never ask them about it. Omit it if unsure.
  • Unsupported formats are skipped automatically and the rest keep processing — relay the skip notice.
  • A pause is not a failure. A [space-select], [split-confirm], [free-limit], [credit-check], or [resume-check] line means the run stopped to ask you something — it exits 0 (so it never looks like an error), but the job is not complete. Whenever one of these lines is present, never report the run as done: relay it and act on it. The lines are the signal, not the exit code.

Read the full file on GitHub · 184 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 9d ago First seen · 184 lines · 26 tokens per session scan A 4730589af0ce

Subscribe to this mod's changes

dubbing is a skill published in the GitHub repository perso-ai/perso-dubbing-plugin (37 stars, last pushed 25d ago), licensed MIT. It adds 26 tokens to every session and 5,796 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

video-translate

Translate and dub existing videos into multiple languages using HeyGen. Use when: (1) Translating a video into another language, (2) Dubbing video content with lip-sync, (3) Creating multi-language versions of existing videos, (4) Audio-only translation without lip-sync, (5) Working with HeyGen's /v2/videotranslate…

calesthio/OpenMontage · 77 tokens

lov-image-translation-errata

A workflow for correcting machine-translated text inside screenshots or other images while keeping the original wording, mistakes, layout, and visible correction marks.

lovstudio/skills · 66 tokens

fec-svg-animation

A workflow for creating or reviewing animated SVG graphics, which are scalable vector images such as icons, logos, illustrations, and diagrams. It covers CSS, SMIL, Framer Motion, GSAP, accessibility, and reduced-motion behavior.

bovinphang/frontend-craft · 76 tokens

video-translator

Dub a video into another language and generate subtitles using the default Together + Cartesia stack. Trigger when the user wants to translate / dub / voice-over a video file, or generate subtitles for it. Handles .mp4 / .mkv / .webm. Installs as the violin CLI (and violin-api for the FastAPI server) via uv tool…

shang-zhu/violin · 0 tokens

pn-tts

Text-to-speech for video and audio production. Covers tool selection (ElevenLabs, OpenAI, Kokoro/local), voice and model choice, SSML expressivity, caption-track alignment (SRT/VTT), loudness normalization, retry strategy, and accessibility requirements. Use when a composition or generative video needs narration audio…

perniemann/pnCore · 73 tokens

chinese-documentation

A Chinese technical-documentation style guide covering spacing, punctuation, numbers, terminology, and links when Chinese and English appear together.

jnMetaCode/superpowers-zh · 62 tokens