wjs-burning-subtitles
Use when the user has a video + an SRT and wants the subtitles either burned into the pixels (libass, always-visible) or soft-muxed as a togglable track. Also handles the final composite step for the localization pipeline — burn subs, mix a dub track, and keep the original audio as a low-volume bed, all in ONE ffmpeg encode (no cascade). Verifies libass availability and auto-downloads a static evermeet ffmpeg build when Homebrew's stripped binary lacks it. Triggers — "烧字幕", "硬字幕", "burn subtitles", "burn-in subs", "embed subtitle", "soft mux SRT", "把字幕烧进视频", "做最终合成".
npx skills add jianshuo/claude-skills --skill wjs-burning-subtitles --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
# wjs-burning-subtitles Video + SRT → video with subtitles. Also the final-encode stage for the localization pipeline: takes a video, an optional dub track from `/wjs-dubbing-video`, and an optional SRT to burn, and produces the upload-ready MP4 in **one** ffmpeg pass. No cascade of decodes/re-encodes. ## When to use - User has an SRT and wants it always-visible on the video (burn-in for 微信视频号 / 抖音 / WeChat — players that won't honor embedded subtitle tracks). - User wants a togglable subtitle track (soft-mux) for QuickTime / VLC / IINA / mobile players that support `mov_text`. - Final composite after `/wjs-dubbing-video`: burn target-language subs + mix dub over original-as-bed in one encode. ## When NOT to use - No SRT yet → run `/wjs-transcribing-audio` then `/wjs-translating-subtitles` first. - HTML/CSS captions (kinetic, per-word highlights, custom fonts) on a clip composed in HyperFrames → use `/wjs-overlaying-video` instead. Don't mix libass burn-in with HyperFrames captions on the same output. - The "subtitles" are actually motion graphics (animated callouts, lower-thirds with logos, kinetic typography) → that's `/wjs-overlaying-video`, not this skill. ## The 3 modes of `re
- When to use
- When NOT to use
- The 3 modes of render.py
- Soft-mux (togglable subtitle track)
- Hardcoded burn-in (always visible, libass)
- Verify libass is available BEFORE promising burn-in
- Fastest fix on macOS — drop in a static build, no system changes
- Burn-in render with style overrides
- Fontsize calibration — critical
- Style cheatsheet
- SRT line-length discipline for burn-in
- Audio mixing — keep the original as a low-volume bed
- Combining dub + burn-in + bed (the full job)
- Running render.py
ffmpeg -i input.mp4 -i input.zh-CN.srt \ output.mp4 ffmpeg -filters 2>&1 | grep -E "subtitles|^.. ass " curl -fsSL -o /tmp/ff.zip https://evermeet.cx/ffmpeg/getrelease/zip unzip -o /tmp/ff.zip -d /tmp/ff_bin >/dev/null then Read /tmp/frame.png to verify the longest-line cue fits Subtitles only (burn): python3 ~/.claude/skills/wjs-burning-subtitles/scripts/render.py \ Dub only (replace audio, no subs): Full localized cut (burn + dub + original bed):
What does the wjs-burning-subtitles skill do?
Use when the user has a video + an SRT and wants the subtitles either burned into the pixels (libass, always-visible) or soft-muxed as a togglable track. Also handles the final composite step for the localization pipeline — burn subs, mix a dub track, and keep the original audio as a low-volume bed, all in ONE ffmpeg encode (no cascade). Verifies libass availability and auto-downloads a static evermeet ffmpeg build when Homebrew's stripped binary lacks it. Triggers — "烧字幕", "硬字幕", "burn subtitles", "burn-in subs", "embed subtitle", "soft mux SRT", "把字幕烧进视频", "做最终合成".
How do I install it?
Run `npx skills add jianshuo/claude-skills --skill wjs-burning-subtitles --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From jianshuo/claude-skills, a repository with 112 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.
