Ffmpeg Skill
kajisho5/ffmpeg-skill
Edit video and audio with local FFmpeg from natural-language requests: cut, trim, join, resize/reframe (9:16, 1:1), speed change, captions and subtitles (SRT/ASS, animated, karaoke), logos and text…
A skill your agent uses 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.
$ npx skills add jianshuo/claude-skills --skill wjs-burning-subtitles -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jianshuo/claude-skills wjs-burning-subtitles --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/jianshuo/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/wjs-burning-subtitles .claude/skills/wjs-burning-subtitles && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "wjs-burning-subtitles" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-burning-subtitles into .claude/skills/wjs-burning-subtitles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-burning-subtitles", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jianshuo/claude-skills/tree/main/wjs-burning-subtitlesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jianshuo/claude-skills --skill wjs-burning-subtitles -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jianshuo/claude-skills wjs-burning-subtitles --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jianshuo/claude-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/wjs-burning-subtitles .agents/skills/wjs-burning-subtitles && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "wjs-burning-subtitles" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-burning-subtitles into .agents/skills/wjs-burning-subtitles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-burning-subtitles", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jianshuo/claude-skills --skill wjs-burning-subtitles -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jianshuo/claude-skills wjs-burning-subtitles --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jianshuo/claude-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/wjs-burning-subtitles .cursor/skills/wjs-burning-subtitles && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "wjs-burning-subtitles" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-burning-subtitles into .cursor/skills/wjs-burning-subtitles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-burning-subtitles", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jianshuo/claude-skills.git --path wjs-burning-subtitles--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jianshuo/claude-skills --skill wjs-burning-subtitles -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jianshuo/claude-skills wjs-burning-subtitles --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jianshuo/claude-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/wjs-burning-subtitles .gemini/skills/wjs-burning-subtitles && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "wjs-burning-subtitles" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-burning-subtitles into .gemini/skills/wjs-burning-subtitles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-burning-subtitles", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jianshuo/claude-skills wjs-burning-subtitlesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jianshuo/claude-skills --skill wjs-burning-subtitles -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jianshuo/claude-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/wjs-burning-subtitles .github/skills/wjs-burning-subtitles && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "wjs-burning-subtitles" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-burning-subtitles into .github/skills/wjs-burning-subtitles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-burning-subtitles", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jianshuo/claude-skills --skill wjs-burning-subtitles -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jianshuo/claude-skills wjs-burning-subtitles --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jianshuo/claude-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/wjs-burning-subtitles .opencode/skills/wjs-burning-subtitles && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "wjs-burning-subtitles" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-burning-subtitles into .opencode/skills/wjs-burning-subtitles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-burning-subtitles", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
wjs-burning-subtitlesA skill your agent uses 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.
Wjs Burning Subtitles is an agent skill from jianshuo/claude-skills. 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…
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/render.py`).
It sits in Media & Creative, covering Transcription and Video production. It works with FFmpeg and Homebrew. The repository describes itself as: 13 Claude Code skills for video production (transcribe / translate / dub / multicam / subtitles / reframe) + WeChat publishing. Compatible with Claude Code, OpenAI Codex CLI… The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit b2690f5. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
ffmpegpython3curlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
evermeet.cxFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Wjs Burning Subtitles loads about 3k tokens when it runs. Until then it costs about 149 tokens; SKILL.md has 1,216 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from jianshuo/claude-skills at commit b2690f5, republished under its MIT licence (© jianshuo). 1,216 words, ~2,962 tokens.
.claude/skills/wjs-burning-subtitles/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.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.
mov_text./wjs-dubbing-video: burn target-language subs + mix dub over original-as-bed in one encode./wjs-transcribing-audio then /wjs-translating-subtitles first./wjs-overlaying-video instead. Don't mix libass burn-in with HyperFrames captions on the same output./wjs-overlaying-video, not this skill.render.pyscripts/render.py auto-detects mode from flags:
--video + --srt → re-encodes video with burned subs, original audio passes through.--video + --dub → keeps original video stream; replaces or mixes the audio track.--video + --srt + --dub → burns subs AND mixes dub. By default keeps original audio at low volume as a "bed" under the dub (set --bed-volume 0 or --no-original-audio to drop it).Burn-in requires an ffmpeg built with libass. The script auto-downloads a static libass-enabled build from evermeet.cx into /tmp/ff_bin/ on first use if needed.
Player apps can show/hide. Works with any ffmpeg build — does not need libass:
ffmpeg -i input.mp4 -i input.zh-CN.srt \
-map 0:v -map 0:a -map 1:0 \
-c:v copy -c:a copy -c:s mov_text \
-metadata:s:s:0 language=zho -metadata:s:s:0 title="中文" \
output.mp4This is fast (stream-copy) and reversible. Use it when:
render.py --video IN.mp4 --srt SUB.srt --soft-mux runs this path.
Required for WeChat/抖音/朋友圈 etc. where the player will not honor embedded subtitle tracks.
ffmpeg -filters 2>&1 | grep -E "subtitles|^.. ass "If neither subtitles nor ass shows up, the build lacks libass. Homebrew's default ffmpeg formula is often stripped (no --enable-libass, no --enable-libfreetype, no drawtext). Don't waste time fighting the comma-escaping inside force_style — it will fail with No such filter: 'subtitles' no matter how the shell quotes it.
curl -fsSL -o /tmp/ff.zip https://evermeet.cx/ffmpeg/getrelease/zip
unzip -o /tmp/ff.zip -d /tmp/ff_bin >/dev/null
FF=/tmp/ff_bin/ffmpeg
$FF -version | grep -oE -- "--enable-(libass|libfreetype)"Then use $FF instead of ffmpeg for the render. The brew binary is fine for everything else (probe, audio extraction, soft-mux). render.py does this auto-fallback if its default ffmpeg lacks libass.
🛑 Checkpoint — confirm before full-render. Burn-in re-encodes the entire video (minutes of CPU on a 5-min clip). Before kicking it off:
-t 30 for a fast preview.Skip the checkpoint only if the user has already approved a full render of this exact video at this exact font config in the same conversation.
$FF -i input.mp4 \
-vf "subtitles=input.zh-CN.srt:force_style='Fontname=PingFang SC\,Fontsize=12\,PrimaryColour=&H00FFFFFF\,OutlineColour=&H00000000\,BorderStyle=1\,Outline=2\,Shadow=1\,MarginL=20\,MarginR=20\,MarginV=40'" \
-c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p \
-c:a copy output.mp4Inside force_style, escape every comma as \, (the filter graph parser eats the bare comma as a chain separator). All other special chars are fine.
libass scales its internal PlayRes up to the actual video resolution. The number you pass is not pixels in the output. As a starting calibration on a 544×960 vertical phone video, Fontsize=22 rendered each Chinese character at ~55px wide and overflowed the frame, while Fontsize=12 rendered at ~30–35px wide and fit cleanly with 15-char lines.
Rule of thumb: start at Fontsize=12, render, then always extract a frame and look:
$FF -ss 30 -i output.mp4 -frames:v 1 /tmp/frame.png -y
# then Read /tmp/frame.png to verify the longest-line cue fitsPick a timestamp that lands on the cue with the most characters per line — short lines won't expose overflow. Add MarginL=20 MarginR=20 as a safety inset; never trust default left/right margins.
Keys that matter (libass force_style):
Fontname=PingFang SC — macOS default CJK; alternates: Songti SC, Heiti SC, STHeiti, Hiragino Sans GB.Fontsize=12 — start small, scale up only after frame check.PrimaryColour=&H00FFFFFF — white text (BBGGRR + alpha).OutlineColour=&H00000000 — black outline.BorderStyle=1 — outline only (clean over varied backgrounds). Use BorderStyle=3 for an opaque box behind text when the background is busy.Outline=2 — 2px outline thickness.Shadow=1 — subtle drop shadow.MarginL=20 MarginR=20 — keep text inside the frame.MarginV=40 — vertical distance from the bottom edge.Even with correct Fontsize, lines that are too long will wrap or overflow. Keep each on-screen line ≤ ~15 Chinese characters (~42 Latin chars). Use explicit \n line breaks inside the SRT block — do not rely on auto-wrapping. Two short lines beat one long one every time. (This is upstream discipline — /wjs-translating-subtitles should already cap cues at these limits.)
A pure dub-only track sounds dubbed (because it is). Mixing the original audio at low volume under the dub gives the "professional translation" feel — you still hear the speaker's breath, emphasis, and laughter, just under the new voice.
$FF -i original.mp4 -i dub.mp4 \
-filter_complex "[0:a]volume=0.18[orig];\
[1:a]volume=1.0[dub];\
[orig][dub]amix=inputs=2:duration=longest:normalize=0[a]" \
-map 0:v -map "[a]" \
-c:v copy -c:a aac -b:a 192k mixed.mp4Reasonable starting volumes:
0.15–0.25 (≈ −16 to −12 dB)1.0normalize=0 so amix doesn't auto-attenuate when both are active.To drop the original entirely: --no-original-audio (equivalent to --bed-volume 0).
One ffmpeg call does all three — burn the target subtitle onto the video stream and mix the two audio tracks:
$FF -i original.mp4 -i dub.mp4 \
-filter_complex "[0:v]subtitles=input.zh-CN.srt:force_style='Fontname=PingFang SC\,Fontsize=12\,PrimaryColour=&H00FFFFFF\,OutlineColour=&H00000000\,BorderStyle=1\,Outline=2\,Shadow=1\,MarginL=20\,MarginR=20\,MarginV=40'[v];\
[0:a]volume=0.18[orig];[1:a]volume=1.0[dub];\
[orig][dub]amix=inputs=2:duration=longest:normalize=0[a]" \
-map "[v]" -map "[a]" \
-c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p \
-c:a aac -b:a 192k final.mp4This is the "ship to social media" final cut. render.py --video original.mp4 --dub dub.mp4 --srt input.zh-CN.srt runs this exact pipeline.
render.py# Subtitles only (burn):
python3 ~/.claude/skills/wjs-burning-subtitles/scripts/render.py \
--video IN.mp4 --srt SUB.srt --out OUT.mp4
# Dub only (replace audio, no subs):
python3 ~/.claude/skills/wjs-burning-subtitles/scripts/render.py \
--video IN.mp4 --dub IN_zh_dub.mp4 --out OUT.mp4
# Full localized cut (burn + dub + original bed):
python3 ~/.claude/skills/wjs-burning-subtitles/scripts/render.py \
--video IN.mp4 --srt IN.zh-CN.srt --dub IN_zh_dub.mp4 --out OUT.mp4
# Soft-mux (no re-encode):
python3 ~/.claude/skills/wjs-burning-subtitles/scripts/render.py \
--video IN.mp4 --srt SUB.srt --soft-mux --out OUT.mp4See render.py --help for the full style/audio flag list (--font, --fontsize, --color, --outline-color, --margin-v, --bed-volume, --no-original-audio).
<source>_burned.mp4 (re-encoded, libass-rendered subs)<source>_softsub.mp4 (stream-copy, mov_text track)<source>_final.mp4 (re-encoded video with burned subs + mixed audio)ffmpeg -filters | grep subtitles first; auto-fall back to evermeet static build if missing.force_style. The filter graph parser eats them. Escape every internal comma as \,./wjs-overlaying-video, don't burn here too..mmm; libass tolerates it but other downstream tools choke. Normalize to ,mmm.BorderStyle=3 (opaque box). Use BorderStyle=1 (outline only) unless the background is genuinely busy — the box looks heavy and dated./wjs-transcribing-audio + /wjs-translating-subtitles — produce the SRT input./wjs-dubbing-video — produces the *_<lang>_dub.mp4 input for full-localized-cut mode. The dub-only file is technically a finished video; this skill is what mixes the original underneath and burns the subs to make it shippable.MarginL=20 MarginR=20 and MarginV=40 (or higher) explicitly.mov_text track shows up in QuickTime but not in some Android players. If the target audience is mobile-Chinese, soft-mux is unreliable; burn instead.Outline=2 → Outline=3, or switch to BorderStyle=3 for a translucent box (BackColour=&H80000000 for 50% black).© jianshuo, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (scripts) in wjs-burning-subtitles of jianshuo/claude-skills.
Open the folder on GitHubat commit b2690f5
Wjs Burning Subtitles next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Wjs Burning Subtitles this skilljianshuo/claude-skills | 131 | — | ~3k | Automated safety check: Pass | MIT | |
| Ffmpeg Skillkajisho5/ffmpeg-skill | 1.9k | — | ~7.4k | Automated safety check: Pass | MIT | |
| Explain Videolimin112/min-skill | 454 | — | ~2.4k | Automated safety check: Pass | None | |
| ShortsAgriciDaniel/claude-shorts | 219 | — | ~3.2k | Automated safety check: Notes | MIT | |
| Qiaomu Cutjoeseesun/qiaomu-cut-skill | 372 | — | ~6.8k | Automated safety check: Notes | MIT | |
| Cassette Video EditCassette-Editor/oh-my-cassette | 119 | 1 repos | ~3.4k | Automated safety check: Pass | MIT |
kajisho5/ffmpeg-skill
Edit video and audio with local FFmpeg from natural-language requests: cut, trim, join, resize/reframe (9:16, 1:1), speed change, captions and subtitles (SRT/ASS, animated, karaoke), logos and text…
limin112/min-skill
Build a narrated explainer video from a concept — discussion → structure → HTML slide deck → narration script → TTS voice → subtitles → background music → Playwright screen recording → ffmpeg…
AgriciDaniel/claude-shorts
Interactive longform-to-shortform video creator. An agent skill from AgriciDaniel/claude-shorts.
joeseesun/qiaomu-cut-skill
把一句话需求转成可复现、可验收视频工程的乔木智能剪辑导演。Use when the user asks to create, plan, edit, remix, explain, narrate, subtitle, animate, composite, or render a video—including one-line requests such as “制作一个科普视频:介绍…
Cassette-Editor/oh-my-cassette
Edit, trim, cut, caption, subtitle, reframe, combine, add background music to, or export video, audio, and image files through Cassette.
FavioVazquez/showtime
A skill your agent uses when the user wants a video made, edited or finished: a launch or promo, product demo, explainer, trailer or teaser, tutorial or walkthrough, a screen recording turned into a…
jianshuo/claude-skills
A skill your agent uses when the user has a long-form video (interview / lecture / podcast / conversation) and a transcript SRT, and wants to extract 3–6 stand-alone topical short clips from it.
jianshuo/claude-skills
Upload one or many videos to YouTube. An agent skill from jianshuo/claude-skills.
jianshuo/claude-skills
A skill your agent uses when migrating a WordPress site to a Hugo static site on GitHub Pages from a WXR export (.xml) plus the wp-content/uploads folder — preserving /archives/<id/ URLs, localizing…
jianshuo/claude-skills
A skill your agent uses when the user complains about spam on his X/Twitter posts — 同城面付 / 寻固炮 / 线下上门 / 免费破处 这类引流号在他推文下刷的 emoji 垃圾回复 — and wants them removed.
jianshuo/claude-skills
A skill your agent uses when the user wants a book turned into YouTube chapter videos — 每章用 VoiceDrop 读书的有声书 mp3 做音轨,配 GPT Image 2 画面和中心思想大字,输出 1920×1080 横屏视频发 YouTube。Triggers — "把这本书做成视频"…
jianshuo/claude-skills
A skill your agent uses when the user wants to add an in-site feedback loop to a website repo — a floating "提个建议" button where allowlisted visitors submit suggestions that become a GitHub Issue…
Categories
A skill your agent uses 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. Wjs Burning Subtitles is an agent skill from jianshuo/claude-skills. 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.
Wjs Burning Subtitles fits situations like: the user has a video + an SRT and wants the subtitles either burned into the pixels (libass; always-visible); soft-muxed as a togglable track.
Run `npx skills add jianshuo/claude-skills --skill wjs-burning-subtitles -a claude-code`. Or copy the skill folder (wjs-burning-subtitles in jianshuo/claude-skills) into .claude/skills/wjs-burning-subtitles in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jianshuo/claude-skills --skill wjs-burning-subtitles -a codex`. Or copy the skill folder (wjs-burning-subtitles in jianshuo/claude-skills) into .agents/skills/wjs-burning-subtitles in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jianshuo/claude-skills --skill wjs-burning-subtitles -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/wjs-burning-subtitles, .gemini/skills/wjs-burning-subtitles, .github/skills/wjs-burning-subtitles and .opencode/skills/wjs-burning-subtitles in your project.
Going by SKILL.md and its folder, Wjs Burning Subtitles needs Python for the scripts in its folder and the command-line tools its instructions call (ffmpeg, python3 and curl). Our summary lists: Python 3.
SKILL.md names 1 domain. In commands or code: evermeet.cx; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Wjs Burning Subtitles is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Wjs Burning Subtitles: Ffmpeg Skill (kajisho5/ffmpeg-skill, 1.9k stars), Explain Video (limin112/min-skill, 454 stars), Shorts (AgriciDaniel/claude-shorts, 219 stars) and Qiaomu Cut (joeseesun/qiaomu-cut-skill, 372 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jianshuo (a GitHub user) maintains it in jianshuo/claude-skills, which has 131 GitHub stars. The repository holds 38 skills in this directory. The repository was last updated on August 20, 2026.
Source: jianshuo/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.