HyperFrames Media Use
heygen-com/hyperframes
Finds, generates and edits media for HyperFrames video projects: music, sound effects, images, icons, logos, voiceovers, captions and color grades.
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.
$ npx skills add jianshuo/claude-skills --skill wjs-segmenting-video -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jianshuo/claude-skills wjs-segmenting-video --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-segmenting-video .claude/skills/wjs-segmenting-video && 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-segmenting-video" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-segmenting-video into .claude/skills/wjs-segmenting-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-segmenting-video", 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-segmenting-videoType 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-segmenting-video -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jianshuo/claude-skills wjs-segmenting-video --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-segmenting-video .agents/skills/wjs-segmenting-video && 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-segmenting-video" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-segmenting-video into .agents/skills/wjs-segmenting-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-segmenting-video", 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-segmenting-video -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jianshuo/claude-skills wjs-segmenting-video --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-segmenting-video .cursor/skills/wjs-segmenting-video && 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-segmenting-video" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-segmenting-video into .cursor/skills/wjs-segmenting-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-segmenting-video", 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-segmenting-video--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-segmenting-video -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jianshuo/claude-skills wjs-segmenting-video --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-segmenting-video .gemini/skills/wjs-segmenting-video && 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-segmenting-video" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-segmenting-video into .gemini/skills/wjs-segmenting-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-segmenting-video", 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-segmenting-videoInstalls 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-segmenting-video -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-segmenting-video .github/skills/wjs-segmenting-video && 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-segmenting-video" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-segmenting-video into .github/skills/wjs-segmenting-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-segmenting-video", 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-segmenting-video -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-segmenting-video --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-segmenting-video .opencode/skills/wjs-segmenting-video && 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-segmenting-video" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-segmenting-video into .opencode/skills/wjs-segmenting-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-segmenting-video", 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-segmenting-videoA 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.
Wjs Segmenting Video is an agent skill from jianshuo/claude-skills. Use 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. This skill ONLY cuts and crops — it produces raw clips + per-clip SRTs as a hand-off package for downstream post-production (/wjs-overlaying-video). Triggers — "切成几段", "分主题", "拆成短视频", "切片", "topic segments", "split into clips".
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including scripts and reference files (for example `references/example_segments.json`, `references/platform_sizes.md` and `references/segments_schema.json`).
It sits in Media & Creative, covering Transcription. 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.
4 steps, taken from the step headings 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 5 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
ffmpegffprobepython3pythonuvFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.
From 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 Segmenting Video loads about 3.5k tokens when it runs, and up to ~4.5k if it reads all its reference files. Until then it costs about 106 tokens; SKILL.md has 1,299 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,299 words, ~3,461 tokens.
.claude/skills/wjs-segmenting-video/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.Cut a long video + SRT into multiple stand-alone short clips, each
oriented for the target platform. This skill stops after cutting +
cropping — it hands off the raw clips to /wjs-overlaying-video for
covers, captions, illustrations, CTA, and final render.
/wjs-overlaying-video.ffmpeg -ss A -to B./wjs-transcribing-audio first (then /wjs-translating-subtitles if the segments need a non-source language)./wjs-editing-multicam.| Is | Is not |
|---|---|
| You (the agent) read the full SRT and decide the topic boundaries | A script that runs NLP topic modeling, silence detection, or "viral moment" scoring. Topic boundaries are semantic; competing tools (Descript, OpusClip, Riverside Magic Clips) all get this wrong by automating it. |
segment.py cuts; /wjs-reframing-video reorients | An end-to-end "magic" pipeline |
| Accurate-seek cuts by default (re-encode) — clip starts EXACTLY at requested timestamp | Stream-copy cuts (those produce keyframe-snap drift up to GOP duration) |
| Hands off raw cropped clips + per-clip SRTs | Burned subtitles, covers, intros, CTAs (those live in /wjs-overlaying-video) |
long video + SRT
↓ (agent reads SRT, decides topics — judgment, not parsing)
segments.json
↓ segment.py --reencode (accurate seek; clip starts exactly at requested t)
clip_NN.mp4 + frame_NN.jpg
↓ ASK: target platform orientation match source?
↓ /wjs-reframing-video on each clip (if 16:9 → 9:16, etc.)
↓ re-extract frames from cropped clips
clip_NN.mp4 (now in target orientation) + clip_NN.zh-CN.burn.srt
↓
HAND OFF → /wjs-overlaying-video
(does covers + captions + illustrations + CTA + final render)segments.jsonDon't outsource topic identification to a script. For each candidate segment, judge:
3–6 strong segments from a 10-minute source is normal. Drop boring middles. Quality > quantity.
Schema (full spec in references/segments_schema.json, example in references/example_segments.json):
{
"source_video": "input.mp4",
"source_srt": "input.zh-CN.srt",
"platform": "wechat_channels",
"segments": [{
"id": 1, "slug": "intent-not-code",
"title": "AI 时代不是写代码\n而是写意图",
"summary": "Two-sentence pitch — what's the insight, what's at stake.",
"start": "00:00:43.460", "end": "00:02:35.220",
"cover_prompt": "Visual concept for gpt-image-2 (style anchor, not literal scene)"
}]
}slug = kebab-case English (used in filenames). title uses \n for line break, 2 lines max, 8–12 Chinese chars per line. cover_prompt is consumed downstream by /wjs-overlaying-video's cover-generation step — keep it written here so the overlay skill can pick it up without re-asking.
python3 ~/.claude/skills/wjs-segmenting-video/scripts/segment.py \
--segments segments.json --out output/ --reencode--reencode is the default recommended mode. It cuts with
ffmpeg -ss N -i src -c:v libx264 -c:a aac so the output starts
EXACTLY at the requested timestamp. ~30s per clip on CPU. Also extracts
a midpoint frame per segment to output/frame_NN_slug.jpg.
Why default to --reencode and not stream-copy:
Stream-copy via ffmpeg -ss N -c copy seeks to the nearest keyframe
before N (it can't re-encode). The output's t=0 then maps to source
t=keyframe, so the clip plays a fraction of a second of "lead-in"
content before the requested speech. Captions sliced from the master
SRT at boundary N appear AHEAD of the audio by exactly that GOP
fraction — listeners feel "subtitles lead the voice."
In practice on H.264 source with GOP=2s: every clip is off by 0.6–1.5s. Looks like a synchronization bug downstream; it's actually a cut-time bug upstream.
If the source has been re-encoded with -force_key_frames at every
requested cut boundary, stream-copy IS accurate. Workflow:
# Build the comma-separated keyframe list from segments.json
KF=$(python3 -c "import json; s=json.load(open('segments.json'))
ts=[]
for seg in s['segments']:
ts += [seg['start'], seg['end']]
print(','.join(ts))")
# Re-encode master once, forcing keyframes at all segment boundaries
ffmpeg -i master.mp4 \
-c:v libx264 -preset medium -crf 18 \
-force_key_frames "$KF" \
-c:a copy master_kf.mp4
# Now stream-copy cuts land exactly:
python3 segment.py --segments segments.json --source master_kf.mp4 --out output/Use this only when iterating on segment boundaries (you'll re-cut the
same source many times). For one-shot work, --reencode is simpler
and just as correct.
ffprobe -v error -select_streams v:0 -read_intervals "$((N-2))%$((N+5))" \
-show_entries packet=pts_time,flags -of csv=p=0 master.mp4 | grep "K_"Output like 360.023,K__ 362.023,K__ → GOP=2s. A -c copy cut at
361.000 actually starts at 360.023, captions are 0.977s ahead of audio.
The retroactive fix is a per-clip SRT offset shim
(requested_start − nearest_preceding_keyframe) added to every cue's
start/end, but the root fix is to re-cut with --reencode.
Compare source video aspect ratio to the target platform:
| Platform | Native orientation | Aspect |
|---|---|---|
| 视频号 (WeChat Channels) | vertical | 9:16 |
| 抖音 / TikTok / Reels | vertical | 9:16 |
| 小红书 (Xiaohongshu video) | vertical | 9:16 |
| YouTube Shorts | vertical | 9:16 |
| YouTube (regular) | horizontal | 16:9 |
| B站 (Bilibili) | horizontal | 16:9 |
Probe with ffprobe:
ffprobe -v error -select_streams v:0 \
-show_entries stream=width,height -of csv=p=0 clip_01_*.mp4If source aspect already matches the platform → skip this step.
If mismatch → ASK THE USER before converting. Sample phrasing:
源视频是横屏 (1920×1080),平台 视频号 需要竖屏 (9:16)。是否对每段 调用
/wjs-reframing-video转成竖屏?(crop 会用 MediaPipe 跟踪正在说话 的人的脸,保持说话人始终在画面中)
Never silently skip the check — finding out at upload time that your horizontal clip needs to be vertical is a frustrating failure mode the skill exists to prevent.
/wjs-reframing-videoThe crop script needs mediapipe + opencv + numpy in a Python 3.12
venv (mediapipe doesn't ship wheels for 3.14+). One-time setup:
uv venv --python 3.12 /tmp/_crop_venv
/tmp/_crop_venv/bin/python -m pip install mediapipe opencv-python numpyPer-clip invocation:
for n in 01 02 03 04 05; do
slug=$(ls clip_${n}_*.mp4 | grep -v -E "_intro|_burned|_vert" | head -1 | sed -E "s/clip_${n}_(.+)\.mp4/\1/")
/tmp/_crop_venv/bin/python ~/.claude/skills/wjs-reframing-video/scripts/crop.py \
"clip_${n}_${slug}.mp4" \
--out "clip_${n}_${slug}_vert.mp4" \
--target portrait \
--bitrate 8M # 视频号 caps at 10Mbps
doneAfter cropping, swap the cropped versions to canonical names so downstream pipelines find them:
mkdir -p _horizontal_archive
for n in 01 02 03 04 05; do
base=$(ls clip_${n}_*_vert.mp4 | sed -E "s/_vert\.mp4$//")
mv "${base}.mp4" "_horizontal_archive/"
mv "${base}_vert.mp4" "${base}.mp4"
# Re-extract midpoint frame:
mid=$(ffprobe -v error -show_entries format=duration -of csv=p=0 "${base}.mp4" | awk '{print $1/2}')
slug=$(echo "$base" | sed -E "s/^clip_${n}_//")
ffmpeg -hide_banner -loglevel error -ss "$mid" -i "${base}.mp4" \
-frames:v 1 -q:v 3 "frame_${n}_${slug}.jpg" -y
doneSanity check: face-on-screen detection rate in the crop log can
read low (e.g. face#0: 9.6s on screen (9%)) when speakers sit
further than ~2 m from the camera. A low number is OK — the
active-speaker hysteresis + fallback-to-largest-face still produces
well-centered crops. But 0 face observations / (no face / fallback): 100% is NOT OK: with zero landmarks the crop falls back
to the frame center, which on a two-person interview set lands on the
background between the speakers (fireplace / plant), not on anyone. When
you see that, abandon the MediaPipe crop and do a deterministic fixed
crop on the speaker's known screen position — see
/wjs-reframing-video → "Zero-detection fallback". Always verify
visually by extracting a midpoint frame and confirming the speaker is
centered before committing.
python3 ~/.claude/skills/wjs-segmenting-video/scripts/burn_subs.py \
--segments segments.json --out output/ --no-burnThe --no-burn flag emits per-clip SRTs (clip_NN_slug.zh-CN.burn.srt)
with timestamps already shifted to start at 0 — exactly the input
/wjs-overlaying-video captions expect (its compositions start the
body at t=cover_duration, not the master clock).
Despite the legacy name burn_subs.py, this step does NOT burn pixels
in --no-burn mode — it's just an SRT slicer. (The burn-pixels mode
exists for the legacy "Path A" workflow but is deprecated in favor of
/wjs-overlaying-video's HTML/CSS caption rendering.)
/wjs-overlaying-videoAfter Steps 1–4, deliver EXACTLY these per-segment artifacts:
output/
clip_NN_slug.mp4 # raw cropped clip (target orientation, no subs, no cover)
clip_NN_slug.zh-CN.burn.srt # per-clip SRT, timestamps shifted to start at 0
frame_NN_slug.jpg # midpoint frame (cover reference)
segments.json # for slug/title/summary/cover_prompt metadataThen invoke /wjs-overlaying-video to add covers, captions, illustrations,
CTA, and produce the upload-ready MP4 per clip. The overlay skill
generates ONE final composition per clip and renders it in a single
encode (no cascade of re-encodes).
| Task | Command |
|---|---|
| Cut clips (accurate, default) | segment.py --segments S.json --out output/ --reencode |
| Probe source aspect | ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 IN.mp4 |
| Convert orientation (ask first) | invoke /wjs-reframing-video per clip |
| Slice per-clip SRTs | burn_subs.py --segments S.json --out output/ --no-burn |
| Diagnose keyframe positions | ffprobe -v error -select_streams v:0 -read_intervals A%B -show_entries packet=pts_time,flags -of csv=p=0 src.mp4 | grep K_ |
--force_key_frames preprocessing — produces clips with audio ahead of captions by up to 1 GOP. Use --reencode (default) unless the source was specifically prepared./wjs-overlaying-video. This skill stops after Step 4./wjs-transcribing-audio — produce the source SRT first if missing. The word-level Whisper output (or Volcano/豆包 ASR output) is preferred for accurate cue timing. If the segments need translating, chain into /wjs-translating-subtitles./wjs-reframing-video — call in Step 3 when source orientation doesn't match target platform. Face-tracked active-speaker following keeps the talker in frame./wjs-editing-multicam — if the source is multi-cam, render the synced single MP4 first, then segment./wjs-overlaying-video — the default downstream for everything after Step 4. Covers, captions, illustrations, CTA, and final render all happen there. Don't add post-production in this skill.scripts/segment.py — accurate-seek + stream-copy cuttingscripts/burn_subs.py — SRT slicer (--no-burn mode); legacy libass burn-in mode is deprecated in favor of /wjs-overlaying-videoreferences/segments_schema.json — JSON Schema for segments.jsonreferences/example_segments.json — worked example© 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 8 other files (scripts, references) in wjs-segmenting-video of jianshuo/claude-skills.
Open the folder on GitHubat commit b2690f5
Wjs Segmenting Video 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 Segmenting Video this skilljianshuo/claude-skills | 131 | — | ~3.5k | Automated safety check: Pass | MIT | |
| HyperFrames Media Useheygen-com/hyperframes | 60k | — | ~2.4k | Automated safety check: Pass | Apache-2.0 | |
| Native Subtitle Quote Imagechengyi-ai/native-subtitle-quote-image | 2.6k | — | ~1.8k | Automated safety check: Pass | MIT | |
| Edu Chem Videowy51ai/edulab | 1.4k | — | ~2.1k | Automated safety check: Notes | Apache-2.0 | |
| Transcription Memory ReconstructionNxcoreAI/EverRoom | 3k | — | ~714 | Automated safety check: Pass | Custom licence | |
| Edu Math Videowy51ai/edulab | 1.4k | — | ~2.5k | Automated safety check: Notes | Apache-2.0 |
heygen-com/hyperframes
Finds, generates and edits media for HyperFrames video projects: music, sound effects, images, icons, logos, voiceovers, captions and color grades.
chengyi-ai/native-subtitle-quote-image
将本地视频或用户有权处理的在线视频,经过来源获取、文字稿定位、选题选句、精确取帧、紧凑裁切、拼图和逐张质检,制作成 3:4 或保留画面原比例的视频字幕长图。支持两种明确分开的输出:保留画面内已烧录字幕的原生字幕模式,以及把已审核的时间点与台词绘制到真实视频帧上的脚本字幕模式。用户要求原生字幕截图、字幕帧拼图、YouTube…
wy51ai/edulab
A skill your agent uses when asked to make an explainer / walkthrough video (讲解视频、解题视频、例题精讲、微课) for a chemistry problem (化学题: 氧化还原配平 双线桥 电子守恒, 物质的量计算, 化学平衡 三段式 平衡常数 转化率 反应速率, 离子反应, 电化学, 溶液 滴定…
NxcoreAI/EverRoom
Reconstruct a complete, searchable memory from an untrusted meeting or conversation transcript.
wy51ai/edulab
A skill your agent uses when asked to make an explainer / walkthrough video (讲解视频、解题视频、例题精讲、微课) for a math problem (数学题, geometry, algebra, functions, motion/行程 problems), from a problem screenshot…
JetBrains/skills
Transcribe audio files to text with optional diarization and known-speaker hints.
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 has a video + an SRT and wants the subtitles either burned into the pixels (libass, always-visible) or soft-muxed as a togglable track.
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 long-form video (interview / lecture / podcast / conversation) and a transcript SRT, and wants to extract 3–6 stand-alone topical short clips from it. Wjs Segmenting Video is an agent skill from jianshuo/claude-skills. Use 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.
Wjs Segmenting Video fits situations like: the user has a long-form video (interview / lecture / podcast / conversation) and a transcript SRT; wants to extract 3–6 stand-alone topical short clips from it; split into clips.
Run `npx skills add jianshuo/claude-skills --skill wjs-segmenting-video -a claude-code`. Or copy the skill folder (wjs-segmenting-video in jianshuo/claude-skills) into .claude/skills/wjs-segmenting-video in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jianshuo/claude-skills --skill wjs-segmenting-video -a codex`. Or copy the skill folder (wjs-segmenting-video in jianshuo/claude-skills) into .agents/skills/wjs-segmenting-video 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-segmenting-video -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-segmenting-video, .gemini/skills/wjs-segmenting-video, .github/skills/wjs-segmenting-video and .opencode/skills/wjs-segmenting-video in your project.
Going by SKILL.md and its folder, Wjs Segmenting Video needs Python for the scripts in its folder and the command-line tools its instructions call (ffmpeg, ffprobe, python3, python and uv). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. 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 Segmenting Video is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Wjs Segmenting Video: HyperFrames Media Use (heygen-com/hyperframes, 60k stars), Native Subtitle Quote Image (chengyi-ai/native-subtitle-quote-image, 2.6k stars), Edu Chem Video (wy51ai/edulab, 1.4k stars) and Transcription Memory Reconstruction (NxcoreAI/EverRoom, 3k 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.