Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/perso-ai/perso-dubbing-pluginnpx agentmods add skills/perso-ai/perso-dubbing-plugin/srtWrote 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.
[](https://agentmods.dev/skills/perso-ai/perso-dubbing-plugin/srt)<a href="https://agentmods.dev/skills/perso-ai/perso-dubbing-plugin/srt"><img src="https://agentmods.dev/badge/skills/perso-ai/perso-dubbing-plugin/srt.svg" alt="Measured on agentmods" height="20"></a>- NVIDIA SkillSpector warn
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 Output Handling · line 78 Output size or generation rate is not bounded. Unbounded output enables denial-of-service through resource exhaustion, log flooding, or context-window stuffing.Fix: Set explicit limits on output length, generation count, and rate. Use max_tokens and truncation to prevent unbounded output.
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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00027 | $0.04188 |
| Opus 5 | $0.00014 | $0.02094 |
| Sonnet 5 | $0.00005 | $0.00838 |
| Haiku 4.5 | $0.00003 | $0.00419 |
Grade A, and why
srt 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 8d ago.
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.
How it starts
The opening of the file, as written. The whole thing — 145 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/srt
A skill that extracts the source-language subtitles of a video/audio via the Perso AI STT API — and then you (the agent) translate them into the requested languages.
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 theXP-API-KEYheader only. - One command = the whole extraction.
scripts/srt.mjshandles upload · transcription · SRT download by itself. - Always run
srt.mjsin the background. Transcription takes minutes; a foreground shell timeout kills the run mid-way. - Language unspecified → target
en. - Transcription only, no translation (user asks for "the subtitles/transcript as-is", "just the SRT in the original language") → run with
--transcribe-onlyinstead of--target. The downloaded original SRT is the final deliverable — skip the Translate section entirely. - Multiple languages go in one command (
--target en,ja) — one subtitle project is created per input regardless of how many languages, and you translate its single original SRT into each of them. - Relay progress faithfully. Surface the worker's stdout
[progress]lines to chat, verbatim or summarized. The indented stderr detail logs don't need relaying. For a batch the worker streams a[progress]line per input and prints a[status]heartbeat (subtitles 3/20, with anext check ~Nmhint) — check the background output ~3 minutes after launch, then on the hinted interval, relaying new lines. Never invent percentages or ETAs. - 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.
- Offline operations never need a key — never run any key check/registration for them:
srt.mjs --check/--retime,style.mjswith a local video + SRT (everything except--project), and translating an SRT the user hands you. - This skill shares the dubbing skill's libraries: the
dubbingfolder must be installed next tosrt(every install method ships them together; only a manual copy of thesrtfolder alone breaks this).
What ships with it
8 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 8d ago First seen · 145 lines · 27 tokens per session scan A e93c5fc91895
srt is a skill published in the GitHub repository perso-ai/perso-dubbing-plugin (37 stars, last pushed 24d ago), licensed MIT. It adds 27 tokens to every session and 4,188 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.
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…
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.
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.
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…
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…
chinese-documentation
A Chinese technical-documentation style guide covering spacing, punctuation, numbers, terminology, and links when Chinese and English appear together.