Interactive cover-frame picker + 小红书-style text overlay for short video clips. Opens a browser UI where the user scrubs the video (with subtitle-segment sidebar if an SRT is provided), enters up to three lines of title text, picks position and font size, and previews/exports a 1080×1920 cover JPG. Use whenever the user wants to make a "封面图 / 小红书封面 / cover image / 选封面帧 / 加封面文字" for a short video. Output: `<stem>_cover.jpg` next to the source video.
How this skill is triggered — by the user, by Claude, or both
Slash command
/podcast-video-toolkit:clip-coverThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Pick a frame, overlay a title, export a cover.
Pick a frame, overlay a title, export a cover.
Identify the input video (and optional .srt). Default font fallback chain follows AGENTS.md → macOS font fallback chain.
Bootstrap the shared plugin venv (one-time ~10s; cached ~100ms after that), then launch the picker server. The server binds to 127.0.0.1 only and generates a per-session token:
PY="$(bash "${CLAUDE_PLUGIN_ROOT}/scripts/preflight.sh")"
"$PY" "${CLAUDE_PLUGIN_ROOT}/skills/clip-cover/scripts/server.py" \
<video> [--srt path.srt] [--initial-text "line1|line2|line3"]
The server prints a http://127.0.0.1:<port>/?token=… URL — open it.
In the browser:
「…」 for yellow-highlighted segments).ffmpeg -ss <t> -i video -frames:v 1 server-side and composites in Pillow, so the preview is byte-accurate to what gets exported (handles VFR / sparse keyframes).<stem>_cover.jpg next to the source video and shuts the server down.The server also auto-shuts down on POST /shutdown or after 30 min idle.
127.0.0.1 only — not reachable on the LAN.GET / requires the per-session token.<video-dir>/<stem>_cover.jpg; arbitrary paths rejected.ffmpeg and Pillow are invoked via argv lists.See scripts/compose.py:
「…」 segments.npx claudepluginhub pierrelzw/podcast-video-toolkit --plugin podcast-video-toolkitCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.