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/ZJU-REAL/Easelnpx agentmods add skills/zju-real/easel/auto-subtitleWrote 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/zju-real/easel/auto-subtitle)<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.
<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>- NVIDIA SkillSpector pass
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.00079 | $0.01600 |
| Opus 5 | $0.00039 | $0.00800 |
| Sonnet 5 | $0.00016 | $0.00320 |
| Haiku 4.5 | $0.00008 | $0.00160 |
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.
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_PROXY或http(s)_proxy环境变量作代理; 都未设则直连。也可先export https_proxy=... http_proxy=...指定。 - CPU 环境用默认
--device cpu --compute-type int8即可。
执行步骤
脚本路径(相对项目根):skills/shared/scripts/asr.py、skills/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
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.
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.
- 9d ago First seen · 102 lines · 79 tokens per session scan A e718686f62ef
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.
Other skills, from other repositories
chart-visualization
Generate charts: select type, extract data, render image.
ppt-generation
Generate PPTX presentations from slide plan + content.
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.
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…
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…
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…