Video Clipper
gooseworks-ai/goose-skills
Repurposes long-form video (podcasts, interviews, talks) into short-form vertical clips for Instagram Reels, TikTok, and YouTube Shorts.
Interactive longform-to-shortform video creator. An agent skill from AgriciDaniel/claude-shorts.
$ npx skills add AgriciDaniel/claude-shorts --skill shorts -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install AgriciDaniel/claude-shorts shorts --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "shorts" agent skill from https://github.com/AgriciDaniel/claude-shorts/tree/main into .claude/skills/shorts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shorts", 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.
$ npx skills add AgriciDaniel/claude-shorts --skill shorts -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install AgriciDaniel/claude-shorts shorts --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "shorts" agent skill from https://github.com/AgriciDaniel/claude-shorts/tree/main into .agents/skills/shorts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shorts", 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 AgriciDaniel/claude-shorts --skill shorts -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install AgriciDaniel/claude-shorts shorts --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "shorts" agent skill from https://github.com/AgriciDaniel/claude-shorts/tree/main into .cursor/skills/shorts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shorts", 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.
$ npx skills add AgriciDaniel/claude-shorts --skill shorts -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install AgriciDaniel/claude-shorts shorts --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "shorts" agent skill from https://github.com/AgriciDaniel/claude-shorts/tree/main into .gemini/skills/shorts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shorts", 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 AgriciDaniel/claude-shorts shortsInstalls 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 AgriciDaniel/claude-shorts --skill shorts -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "shorts" agent skill from https://github.com/AgriciDaniel/claude-shorts/tree/main into .github/skills/shorts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shorts", 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 AgriciDaniel/claude-shorts --skill shorts -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install AgriciDaniel/claude-shorts shorts --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "shorts" agent skill from https://github.com/AgriciDaniel/claude-shorts/tree/main into .opencode/skills/shorts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shorts", 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.
shortsInteractive longform-to-shortform video creator. An agent skill from AgriciDaniel/claude-shorts.
Shorts is an agent skill from AgriciDaniel/claude-shorts. Interactive longform-to-shortform video creator. Extracts viral-ready short clips from long videos using Claude as the orchestrator. Transcribes with faster-whisper (GPU), Claude scores and presents candidate segments interactively, user picks and adjusts, Remotion renders premium animated captions (Bold/Bounce/Clean styles), FFmpeg exports platform-optimized files (YouTube Shorts, TikTok, Instagram Reels). Use when user says "shorts", "short clips", "shortform", "extract clips", "tiktok from video", "reels from…
Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 68 other files, including scripts and reference files (for example `.claude-plugin/plugin.json`, `.github/ISSUE_TEMPLATE/bug_report.yml` and `.github/ISSUE_TEMPLATE/config.yml`).
It sits in Media & Creative, covering Video production, Video scripts and shorts and Transcription. It works with TikTok, Whisper, Remotion and FFmpeg. The repository describes itself as: Interactive longform-to-shortform video creator — Claude Code skill with Remotion-rendered animated captions, AI segment scoring, cursor tracking, and audio-aware boundary snapping. The licence is MIT.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a369fad. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadWriteEditAskUserQuestionTaskFrom allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Shell, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
bashpython3ffmpegnodenpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, 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.
Shorts loads about 3.2k tokens when it runs, and up to ~7.6k if it reads all its reference files. Until then it costs about 143 tokens; SKILL.md has 1,140 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Write, Edit, AskUserQuestion, TaskAutomated 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 AgriciDaniel/claude-shorts at commit a369fad, republished under its MIT licence (© AgriciDaniel). 1,140 words, ~3,196 tokens.
.claude/skills/shorts/SKILL.md (or your agent's skills folder). This skill also uses 65 other files; get the full folder from GitHub.You are an interactive shortform video producer. You guide the user through a 10-step pipeline where YOU (Claude) analyze the transcript, identify the best segments, present them for approval, snap boundaries to natural audio cut points, and render premium vertical videos with animated captions.
Before starting, locate the project root:
# Try common locations in priority order
SHORTS_ROOT=""
for dir in "$HOME/.claude/skills/shorts" "$HOME/.claude/skills/claude-shorts" "$HOME/claude-shorts" "$(pwd)"; do
if [ -f "$dir/SKILL.md" ]; then
SHORTS_ROOT="$dir"
break
fi
done
if [ -z "$SHORTS_ROOT" ]; then
echo "ERROR: shorts skill project root not found. Please run from the project directory or install with install.sh"
fiSet up the temp directory (configurable via SHORTS_TMP environment variable):
SHORTS_TMP="${SHORTS_TMP:-/tmp/claude-shorts}"
mkdir -p "$SHORTS_TMP/clips"Run safety checks on the input video:
bash "$SHORTS_ROOT/scripts/preflight.sh" INPUT_FILE [OUTPUT_DIR]If preflight fails, report errors and stop. If warnings exist, report them and ask the user whether to proceed.
Also detect GPU capabilities:
bash "$SHORTS_ROOT/scripts/detect_gpu.sh"Report to user: input duration, resolution, GPU status, estimated processing time.
Transcribe with faster-whisper (GPU-accelerated, word-level timestamps). Audio extraction is handled internally by transcribe.py:
VENV="$HOME/.video-skill"
[ -d "$VENV" ] || VENV="$HOME/.shorts-skill"
source "$VENV/bin/activate"
python3 "$SHORTS_ROOT/scripts/transcribe.py" INPUT_FILE \
--output $SHORTS_TMP/transcript.jsonOutput is dual-format JSON:
segments[] — WhisperX-style with word timestamps (for Claude to read)captions[] — Remotion-native {text, startMs, endMs} array (for rendering)Report to user: transcription time, word count, language detected.
Auto-detect whether the video is talking-head, screen recording, or podcast:
python3 "$SHORTS_ROOT/scripts/detect_content.py" INPUT_FILE \
--output $SHORTS_TMP/content_type.jsonReport detected type to user. Ask if they want to override.
Read the full transcript directly:
Read $SHORTS_TMP/transcript.jsonAlso load the scoring rubric:
Read $SHORTS_ROOT/references/scoring-rubric.mdScore 8-12 candidate segments (15-55 seconds each) on 5 dimensions:
| Dimension | Weight | What to look for |
|---|---|---|
| Hook strength | 0.30 | Bold claims, curiosity gaps, value promises, pattern interrupts |
| Standalone coherence | 0.25 | Makes complete sense without any context from the rest of the video |
| Emotional intensity | 0.20 | Strong opinions, surprise reveals, humor, passion |
| Value density | 0.15 | Actionable insights, data points, frameworks per second |
| Payoff quality | 0.10 | Satisfying conclusion — punchline, reveal, call-to-action |
Weighted score = sum of (dimension_score * weight), scale 0-100.
For each candidate, identify:
Transcript cleanup: While analyzing, also produce cleaned captions for rendering.
Read the captions[] array from transcript.json, then:
text fieldWrite the cleaned transcript to $SHORTS_TMP/transcript_cleaned.json using the same
JSON structure as transcript.json (both segments and captions arrays). The captions
array should contain the cleaned text; copy segments as-is.
Present candidates in a formatted table:
| # | Time | Dur | Score | Hook | Why |
|---|---------------|------|-------|-----------------------------------|----------------------------------------|
| 1 | 04:22 → 05:01 | 39s | 87 | "Nobody talks about this..." | Contrarian take with data backing |
| 2 | 12:45 → 13:28 | 43s | 82 | "Here's the exact framework..." | Complete actionable method, clean arc |
| 3 | 08:11 → 08:52 | 41s | 79 | "I tested this for 6 months..." | Personal story + surprising result |Then ask the user using AskUserQuestion:
After user selects segments:
Write approved segments to:
cat > $SHORTS_TMP/approved_segments.json << 'EOF'
{
"segments": [
{
"id": 1,
"start": 262.0,
"end": 301.0,
"hook_line1": "Nobody talks about this...",
"hook_line2": "The hidden cost of scaling",
"score": 87
}
],
"style": "bold",
"platform": "all",
"content_type": "talking-head"
}
EOFSnap segment boundaries to natural audio cut points so clips never cut mid-word or mid-sentence:
python3 "$SHORTS_ROOT/scripts/snap_boundaries.py" \
--segments $SHORTS_TMP/approved_segments.json \
--transcript $SHORTS_TMP/transcript.json \
--input-video INPUT_FILE \
--output $SHORTS_TMP/snapped_segments.jsonThe script:
Use --no-silence to skip silence detection (faster, word-boundary snapping only).
Report to user: adjustment deltas per segment (e.g., "start +150ms, end +362ms").
From this point forward, use snapped_segments.json instead of approved_segments.json.
Extract each snapped segment via FFmpeg stream copy (near-instant, lossless).
Use the snapped start/end times from $SHORTS_TMP/snapped_segments.json:
ffmpeg -y -ss START -to END -i INPUT_FILE -c copy \
$SHORTS_TMP/clips/clip_01.mp4Compute reframe coordinates for each clip:
python3 "$SHORTS_ROOT/scripts/compute_reframe.py" \
--clips-dir $SHORTS_TMP/clips/ \
--content-type CONTENT_TYPE \
--output $SHORTS_TMP/reframe.jsonReport to user: clips extracted, content type per clip, reframe strategy.
Render all snapped segments with the selected caption style:
node "$SHORTS_ROOT/remotion/render.mjs" \
--segments $SHORTS_TMP/snapped_segments.json \
--reframe $SHORTS_TMP/reframe.json \
--captions $SHORTS_TMP/transcript_cleaned.json \
--style STYLE \
--clips-dir $SHORTS_TMP/clips/ \
--output-dir $SHORTS_TMP/render/The render script:
Report progress to user as each segment renders.
Export rendered shorts with platform-specific encoding:
bash "$SHORTS_ROOT/scripts/export.sh" \
--input-dir $SHORTS_TMP/render/ \
--platform PLATFORM \
--output-dir ./shorts/Platform encoding specs:
With NVENC GPU: h264_nvenc -preset p5 -tune hq for 5-10x faster encoding.
Present final summary table:
| # | File | Platform | Duration | Size |
|---|---------------------------|-----------|----------|--------|
| 1 | shorts/short_01_yt.mp4 | YouTube | 39s | 12.3MB |
| 1 | shorts/short_01_tt.mp4 | TikTok | 39s | 8.7MB |
| 1 | shorts/short_01_ig.mp4 | Instagram | 39s | 7.1MB |Post-export validation: Run validation on all exported files:
bash "$SHORTS_ROOT/scripts/validate.sh" --output-dir ./shorts/Checks: file is playable, resolution is 1080x1920, audio track exists and isn't silent, file size is within platform limits, video codec is H.264, duration is 3-90 seconds. If any file fails, report the issues to the user. Failed files should be re-rendered or re-exported before delivery.
| Style | Font | Look | Best for |
|---|---|---|---|
| bold | Montserrat Bold | ALL CAPS, pop-in, yellow active word | Business, education, motivation |
| bounce | Bangers | Bouncy scale, rotating bright colors | Entertainment, reactions, energy |
| clean | Inter Bold | Minimal fade-in, white + shadow | Professional, calm, interviews |
Load references/caption-styles.md for detailed visual specs and spring configs.
These defaults work well for most content. Offer alternatives when the user has specific needs.
| Parameter | Default | Flag/Var | When to change |
|---|---|---|---|
| Whisper model | large-v3 | --model small | Low VRAM (< 6 GB) |
| Screen zoom | 0.55 | --zoom 0.4 | More context visible in screen recordings |
| Cursor tracking | enabled | --no-cursor-track | Static screen content (slides, documents) |
| Silence detection | enabled | --no-silence | Faster processing, word-boundary-only snapping |
| Score threshold | 60 | (SKILL.md instruction) | Lower for longer videos with fewer highlights |
| Segment duration | 15-55s | (SKILL.md instruction) | Adjust per platform (TikTok prefers 21-34s) |
| Temp directory | /tmp/claude-shorts/ | SHORTS_TMP env var | Systems with limited /tmp space |
| Export platform | all | --platform youtube | Single-platform targeting |
--model small for less VRAMcd remotion && npm install, verify node_modules existsffmpeg -version), try CPU encoding if NVENC failsdf -h /tmp© AgriciDaniel, 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 65 other files (scripts, references) in the repository root of AgriciDaniel/claude-shorts.
Open the folder on GitHubat commit a369fad
Shorts 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 |
|---|---|---|---|---|---|---|
| Shorts this skillAgriciDaniel/claude-shorts | 219 | — | ~3.2k | Automated safety check: Notes | MIT | |
| Video Clippergooseworks-ai/goose-skills | 1.2k | 1 repos | ~3.1k | Automated safety check: Notes | MIT | |
| Bggg Tiktok Readvideobinggandata/bggg-skills | 604 | — | ~1.6k | Automated safety check: Pass | MIT | |
| AutoshortsUpload-Post/skill-autoshorts | 151 | — | ~5.3k | Automated safety check: Notes | MIT | |
| Ffmpeg Skillkajisho5/ffmpeg-skill | 1.9k | — | ~7.4k | Automated safety check: Pass | MIT | |
| ShowtimeFavioVazquez/showtime | 206 | — | ~3k | Automated safety check: Pass | MIT |
gooseworks-ai/goose-skills
Repurposes long-form video (podcasts, interviews, talks) into short-form vertical clips for Instagram Reels, TikTok, and YouTube Shorts.
binggandata/bggg-skills
把 TikTok、Reels、YouTube Shorts、UGC 广告、本地 MP4/MOV/WebM 等视频拆成 Codex 可读的视频上下文。
Upload-Post/skill-autoshorts
Daily pipeline that picks one long video from a folder, transcribes it with Whisper, uses Gemini 3 Flash multimodal to find every viral short-form moment, cuts each candidate with FFmpeg, adds a…
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…
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…
mathiaschu/watch
Watch a video from YouTube, Instagram, X/Twitter, Vimeo, TikTok or any of ~1800 yt-dlp sites (or a local path).
Categories
Interactive longform-to-shortform video creator. An agent skill from AgriciDaniel/claude-shorts. Shorts is an agent skill from AgriciDaniel/claude-shorts. Interactive longform-to-shortform video creator.
Shorts fits situations like: user says shorts; tiktok from video; reels from video.
Run `npx skills add AgriciDaniel/claude-shorts --skill shorts -a claude-code`. Or copy the skill folder (the AgriciDaniel/claude-shorts repository) into .claude/skills/shorts in your project. Claude Code loads it when a task matches its description.
Run `npx skills add AgriciDaniel/claude-shorts --skill shorts -a codex`. Or copy the skill folder (the AgriciDaniel/claude-shorts repository) into .agents/skills/shorts 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 AgriciDaniel/claude-shorts --skill shorts -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/shorts, .gemini/skills/shorts, .github/skills/shorts and .opencode/skills/shorts in your project.
Going by SKILL.md and its folder, Shorts needs a shell for the scripts in its folder and the command-line tools its instructions call (bash, python3, ffmpeg, node and npm). Our summary lists: Python 3; A Bash shell. Its frontmatter pre-approves these tools: Bash, Read, Write, Edit, AskUserQuestion, Task.
SKILL.md contains no URLs. Its commands use npm, 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 notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. 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.
Shorts is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.2k tokens (SKILL.md is roughly 13k 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 4.4k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Shorts: Video Clipper (gooseworks-ai/goose-skills, 1.2k stars), Bggg Tiktok Readvideo (binggandata/bggg-skills, 604 stars), Autoshorts (Upload-Post/skill-autoshorts, 151 stars) and Ffmpeg Skill (kajisho5/ffmpeg-skill, 1.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
AgriciDaniel (a GitHub user) maintains it in AgriciDaniel/claude-shorts, which has 219 GitHub stars. The repository was last updated on July 11, 2026.
Source: AgriciDaniel/claude-shorts on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.