danielrosehill/claude-video-editor-plugin/dedupe-clips
Claude Code and agent skill by danielrosehill/claude-video-editor-plugin
- community
Checking that the SKILL.md file is still in the repository.
Find duplicate or near-duplicate clips in a folder. Two modes — `exact` (sha256 of file bytes, fastest, catches true duplicates) and `perceptual` (sample frames + dHash, catches re-encodes / format converts of the same source). Use when the user says "find duplicate clips", "dedupe this folder", "remove duplicate videos", "flatten and dedupe". Quarantines duplicates to `_duplicates/` by default; never deletes without explicit confirmation.
Install
npx vskill@latest install danielrosehill/claude-video-editor-plugin/dedupe-clipsSKILL.md
Dedupe Clips
Identify duplicate or near-duplicate video clips in a folder. Always quarantine, never auto-delete.
Procedure
1. Inputs
| Field | Default | |
|---|---|---|
| Source folder | required | |
| Mode | exact (sha256) — perceptual (frame-hash) for finding re-encodes | |
| Recursive | no | |
| Hamming threshold (perceptual) | 8 (out of 64 bits) | |
| Frames to sample (perceptual) | 5 | |
| Action | quarantine (move dups to _duplicates/) — delete requires explicit confirmation | |
| Keeper | largest (keep biggest file) — alternatives: oldest, newest, first (alpha) |
2. Enumerate
3a. Mode: exact
For each duplicate hash, group the files. Apply the keeper rule and mark the rest for quarantine.
3b. Mode: perceptual
For each file, sample N frames at evenly-spaced timestamps and compute a dHash per frame. Concatenate the per-frame dHashes; two clips are near-duplicates if all frame-pair Hamming distances are ≤ THRESHOLD.
Use a Python helper (one-shot, inline) — only needs Pillow (already in many envs; if missing, instruct to uv pip install Pillow into the plugin venv).
Hamming compare:
Run pairwise comparison; group transitively (union-find) so chains of near-dups become one cluster.
4. Preview
Print clusters:
Show total clusters, total dup files, total reclaimable bytes. Ask the user to confirm. For delete mode, require an extra confirmation.
5. Apply
For quarantine:
For delete (only after explicit second confirmation): rm -f -- each file.
6. Optional: flatten + dedupe
If the source has nested subfolders and the user asks for "flatten and dedupe" (the legacy videos-here workflow):
- Move every video file to the top level (renaming on collision:
name.mp4→name__1.mp4). - Remove now-empty subfolders.
- Run dedupe in
exactmode on the flattened folder.
Always preview the move plan before executing. This supersedes the legacy commands/videos-here.md.
Notes
exactmode is fast and safe;perceptualmode is slower and can have false positives — always preview.- Quarantine is the default; the
_duplicates/folder is preserved for the user to spot-check before manual deletion. - The keeper rule is applied per cluster, so the user always retains exactly one file per duplicate group.
- Hidden files and existing
_duplicates/contents are excluded.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/dedupe-clips/SKILL.md
Popularity
- Repository stars
- 6
- 7-day trend score
- 10
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/danielrosehill/claude-video-editor-plugin/dedupe-clips)