auto-subtitle

auto-subtitle is a skill for Claude Code, Codex from ZJU-REAL/Easel. It costs 79 tokens per session (1,600 once invoked), scanned A, original, Apache-2.0.

A speech-to-text tool that turns spoken words in audio or video into subtitle files. It can create SRT, ASS, TXT, or JSON files and optionally place the subtitles directly onto a video.

In plain words
What is it for?
Use it to transcribe recordings, create subtitle files, or produce a video with permanent subtitles from formats such as MP4, MKV, MP3, WAV, or M4A.
Why use it?
It saves you from typing and timing subtitles by hand. It can detect the language or use a specified one, including Chinese or English.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Needs its repository: it runs a file that does not travel with it, so clone the repository first. The line is python skills/shared/scripts/asr.py transcribe \.

Good fit Use it to transcribe recordings, create subtitle files, or produce a video with permanent subtitles from formats such as MP4, MKV, MP3, WAV, or M4A.

Compare 6 skills from other repositories ↓
Install

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.

Clone the repo
git clone --depth 1 https://github.com/ZJU-REAL/Easel
agentmods
npx agentmods add skills/zju-real/easel/auto-subtitle

Made for: Claude Code, Codex.

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 auto-subtitle

README.md
[![agentmods](https://agentmods.dev/badge/skills/zju-real/easel/auto-subtitle/github.svg)](https://agentmods.dev/skills/zju-real/easel/auto-subtitle)
Your own site
<a href="https://agentmods.dev/skills/zju-real/easel/auto-subtitle"><img src="https://agentmods.dev/badge/skills/zju-real/easel/auto-subtitle/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 auto-subtitle

Your own site · 80×15
<a href="https://agentmods.dev/skills/zju-real/easel/auto-subtitle"><img src="https://agentmods.dev/badge/skills/zju-real/easel/auto-subtitle.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 79 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,600 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 pass 7 Sept 2026
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.00079 $0.01600
Opus 5 $0.00039 $0.00800
Sonnet 5 $0.00016 $0.00320
Haiku 4.5 $0.00008 $0.00160

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

Security

Grade A, and why

auto-subtitle 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.

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/openclaw/auto-subtitle/SKILL.md · 102 lines

How it starts

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

自动字幕(语音转字幕)

把音频/视频里的人声识别成字幕。基于共享脚本 skills/shared/scripts/asr.py(faster-whisper 封装), 参数确定、可复现,做中文友好断句。可选把字幕烧录进视频(复用 skills/shared/scripts/video_ops.py / ffmpeg subtitles 滤镜)。

只做"语音 → 字幕文件 (+ 可选烧录)"。通用视频剪辑见 video-editing;纯降噪见 audio-denoise;长视频智能切片+烧字幕见 clipify

输入

字段 必填 说明
input_file 音频或视频文件路径(视频自动提取音轨)
format srt(默认)/ ass / txt / json
language auto(默认)或 zh/en 等 ISO 639-1 码
model tiny/base(默认)/small/medium/large-v3,越大越准越慢
burn 是否把字幕烧录进视频(需视频输入)

支持:mp3/wav/m4a/aac/flac 等音频;mp4/mkv/mov/webm 等视频。

输出

  • 字幕文件放入 outputs/主题名/(SRT/ASS/TXT/JSON)
  • 若烧录:带硬字幕的视频(*-sub.mp4
  • 报告:识别语言、字幕条数、所用模型、输出路径

前置

  • 首次运行会从 HuggingFace 下模型,需外网代理。脚本读取 EASEL_PROXYhttp(s)_proxy 环境变量作代理; 都未设则直连。也可先 export https_proxy=... http_proxy=... 指定。
  • CPU 环境用默认 --device cpu --compute-type int8 即可。

执行步骤

脚本路径(相对项目根):skills/shared/scripts/asr.pyskills/shared/scripts/video_ops.py

1. 生成字幕文件

# 视频 → SRT(自动提取音轨 + 自动检测语言)
python skills/shared/scripts/asr.py transcribe \
  -i input.mp4 -o outputs/主题名/input.srt --language zh

# 视频 → ASS(带样式,**字号/边距按视频横竖屏自适应**):视频输入自动探测宽高
python skills/shared/scripts/asr.py transcribe \
  -i input.mp4 -o outputs/主题名/input.ass --format ass --model small
# 纯音频 → ASS:无法探测尺寸,默认竖屏 1080x1920;横屏加 --res 1920x1080
python skills/shared/scripts/asr.py transcribe \
  -i voice.mp3 -o outputs/主题名/voice.ass --format ass --res 1920x1080
  • ASS 样式按目标视频宽高自适应:字号按短边(min(w,h)*0.05,竖/横屏都≈合适、不再横屏过大), 底边距按高、左右边距按宽,PlayRes=真实宽高。视频输入自动探测;纯音频用 --res 宽x高 指定。 要带样式的硬字幕优先烧这份 ASS(下节),比裸 SRT + 手填 force_style 更省心、且自适应。
  • 中文默认每行 ~18 字,超长自动断行/拆条;--max-line-chars 可调。
  • 不给 -o 时按输入文件名建项目目录,例如 talk.mp4 输出到 outputs/talk/talk.srt;已有项目应显式 -o outputs/主题名/<文件名>.<format>
  • 查看可用模型/语言:python skills/shared/scripts/asr.py info

2.(可选)把字幕烧录进视频

用户要"硬字幕/烧进视频"时,用 ffmpeg 的 subtitles(SRT)或 ass(ASS)滤镜:

# 烧 SRT(可定制样式)
ffmpeg -y -i input.mp4 \
  -vf "subtitles=outputs/主题名/input.srt:force_style='FontName=Noto Sans CJK SC,FontSize=20,PrimaryColour=&H00FFFFFF,OutlineColour=&H80000000,BorderStyle=1,Outline=2'" \
  -c:a copy outputs/主题名/input-sub.mp4

# 烧 ASS(样式已在 ass 文件里,保真)
ffmpeg -y -i input.mp4 \
  -vf "ass=outputs/主题名/input.ass" \
  -c:a copy outputs/主题名/input-sub.mp4

Read the full file on GitHub · 102 lines

Files

What ships with it

1 file 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.

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 · 102 lines · 79 tokens per session scan A e718686f62ef

Subscribe to this mod's changes

auto-subtitle is a skill published in the GitHub repository ZJU-REAL/Easel (494 stars, last pushed yesterday), licensed Apache-2.0. It adds 79 tokens to every session and 1,600 once invoked, about $0.0004 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

chart-visualization

Generate charts: select type, extract data, render image.

HezaoHezao/poirot · 17 tokens

ppt-generation

Generate PPTX presentations from slide plan + content.

HezaoHezao/poirot · 13 tokens

jacky-motion2-0-srt

A workflow for turning a Chinese spoken script and matching SRT subtitle file into a single 16:9 HTML information animation. SRT is a subtitle file that stores text with start and end times; the animation follows those times and adds recorded-screen placeholders when needed.

Jackywxsz/Jacky-motion · 127 tokens

video-podcast-maker

Use when the user gives a topic and wants an automated topic-driven narrated explainer, podcast, or knowledge-summary video (Bilibili / YouTube / Xiaohongshu / Douyin / WeChat Channels), or asks to learn visual design patterns from a reference video/image. Trigger when the user mentions creating a knowledge video…

Agents365-ai/video-podcast-maker · 214 tokens

video-podcast-maker-lite

Minimal personal narrated-video pipeline — a topic becomes a talking-head-free explainer MP4 (1080p or 4K) via script → Azure TTS (SSML) → Remotion. Use when the user wants a quick narrated video from a topic without the full video-podcast-maker machinery (no extra skills, no thumbnails/shorts/publish matrix). Do NOT…

Agents365-ai/video-podcast-maker · 96 tokens

video-podcast-maker-nano

Smallest personal narrated-explainer-video pipeline (spoken narration over visuals, not an audio podcast), fully tool-agnostic and autonomous by default — topic → research ∥ asset collection → script → TTS → video → 4K render ∥ publish info + cover. The skill defines the pipeline logic and self-verified checkpoints…

Agents365-ai/video-podcast-maker · 163 tokens