clip
Cut a video into short-form clips (highlights/shorts) — cut given timecodes directly, or pick the best moments from a Perso AI STT project.
Skill by perso-ai
Chalk Labs
Need help deploying clip?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/perso-ai-clip
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Network hosts it talks to 2
codeload.github.com· found in install commandportal-media.perso.ai· found in code
Files it touches
~/.claude/skills/clip
Tools it pre-approves 6
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Bash(nodescripts/clip.mjs*),../dubbing/scripts/resolve_key.mjs${CLAUDE_SKILL_DIR}/scripts/*),${CLAUDE_SKILL_DIR}/../dubbing/scripts/*)
What's inside
- Skill name
clip- Description
- Cut a video into short-form clips (highlights/shorts) — cut given timecodes directly, or pick the best moments from a Perso AI STT project. Reframes 16:9→9:16. Subtitles are added separately by the srt skill.
- License
- MIT
- Allowed tools
- Bash(node, scripts/clip.mjs, *),, Bash(node, ../dubbing/scripts/resolve_key.mjs, *),, Bash(node, ${CLAUDE_SKILL_DIR}/scripts/*),, Bash(node, ${CLAUDE_SKILL_DIR}/../dubbing/scripts/*)
- Instructions
- 52 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Pre-approves some shell commands
Files (3)
- SKILL.md
- clipper.mjs · lib/
- clip.mjs · scripts/
SKILL.md (first lines)
# /clip
Cut a video into short clips + reframe. **Subtitles are not this skill's job** — after cutting, the `srt` skill styles them (see the handoff below).
## Entry points
- **Explicit timecodes** ("cut 2:00–3:00 of this video") → cut the local file directly: `--video "<file>" --ranges "2:00-3:00,..."`. No STT, no key, no credits.
- **AI highlight selection on an STT project** → `--plan` then `--clips` (the flow below). Needs the project's transcript + word timestamps.
- **Raw video, "find the good moments"** (no timecodes given) → you can't pick highlights without a transcript, so **ask the user which they want**:
- **STT** (proper selection, uses credits): run the `srt` skill's STT first to create the project, then clip it with `--plan`/`--clips`.
- **Free** (no STT): the user gives the timecodes and you cut them with `--video --ranges`.
Proceed with their choice — don't run STT (which bills credits) without asking.
## Core rules
- **Only the worker sees the raw key** — never open, echo, or pass it as an argument.
- **The key gate applies only to `--project`/`--plan`/`--clips`.** `--video --ranges` and `--sidecars` are fully offline — never run a key check/registration for them.
- **Run in the background** — encoding takes time.
- This skill shares the dubbing skill's libraries: the `dubbing` folder must be installed next to `clip`.
## Flow
**Phase 1 — plan.** `node scripts/clip.mjs --project <seq> --plan` prints the summary's section map (topic guide) plus the full sentence transcript, each line as `order [start-end] text`.
**Phase 2 — pick, then cut.** Read the transcript and choose clips, each `{ "title": "...", "start_order": N, "end_order": M }`. Rubric:
- **Hook first** — start on a sentence that grabs attention (question, bold claim, funny/surprising line).
- **End where the moment resolves, not at the first complete sentence.** Ride the beat to its end — the whole reaction, follow-through, and any secondary punchline. Read a few sentences past the apparent ending; keep them if still the same reaction.
- **Cut at the transition** — end just before the energy drops or the tone shifts (excited reaction → calm narration).
- **Peak** — favour funny / surprising / emotional / quotable moments; the high point often sits a sentence or two after the literal reveal.
- **Length 30–90s** — the worker warns when outside; prefer the full arc over a premature cut.
- **Title** — describes the moment; becomes the file name (`01_<title>.mp4`).
Sections are chapter-length — use the section map only as a guide, then tighten to a hook.
Run: `node scripts/clip.mjs --project <seq> --clips '<json>' [--out folder]` (`--clips` also accepts `@path`). Landscape (16:9) sources are reframed to 9:16 (drama-shorts letterbox); portrait sources are kept. The worker writes the clips plus a `clips.json` manifest (records each clip + the transcript slice needed for subtitles later). Relay `[progress]`; deliver the files from `[clips-output]`.
## Subtitles → hand off to the srt skill
Subtitles are off by default. After cutting, tell the user clips are ready and **ask whether to add subtitles**. If they want subtitles, **show the presets first — never jump straight to one**, exactly as the srt skill's styling flow does: the interactive **gallery** (select + Apply) in the Claude app, or the static `../srt/assets/style_presets.png` + `node ../srt/scripts/style.mjs --list-presets` menu elsewhere. Let the user pick a preset or describe a style (short-form presets like `karaoke`/`bold-punch` suit clips). Only after they pick:
1. Write the sidecars: `node scripts/clip.mjs --sidecars "<out>/clips.json"` — add `--karaoke` **only** for a karaoke preset (it also writes `<clip>.timestamps.json` for measured word timing; a plain preset needs just the `.srt`).
2. Style each clip with the **srt** skill: `node ../srt/scripts/style.mjs "<clip>.mp4" "<clip>.srt" --preset <id>` (append `--word-timestamps "<clip>.timestamps.json"` for karaoke). See the srt skill's "Style & burn subtitles" section.
Add `--host <runtime>` for telemetry (silent), same as the other workers.
## Config (env)
Same as `/dubbing` / `/srt` (`PERSO_API_BASE`/`PERSO_MEDIA_BASE` — https `perso.ai` hosts only, `PERSO_SPACE_SEQ`, `XP_API_KEY`, `PERSO_NO_TELEMETRY`, …).From perso-ai/perso-dubbing-plugin, MIT.
More from perso-ai/perso-dubbing-plugin
- 0.654score
dubbing
perso-ai
Auto-dub (voice-translate) videos into other languages, with lip-sync (Perso AI Dubbing).
SkillAFreshness: A★ 40Claude Code +9 - 0.614score
srt
perso-ai
Extract subtitles (SRT) from video/audio/URLs and translate them into other languages (Perso AI STT).
SkillBFreshness: B★ 40Claude Code +9
Signals
- Stars
- 40
- Forks
- 4
- Open issues
- 1
- Last commit (this folder)
- Aug 5, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/perso-ai/perso-dubbing-plugin
- Website
- perso.ai/dubbing
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from perso-ai
- 0.654score
dubbing
perso-ai
Auto-dub (voice-translate) videos into other languages, with lip-sync (Perso AI Dubbing).
SkillAFreshness: A★ 40Claude Code +9 - 0.614score
srt
perso-ai
Extract subtitles (SRT) from video/audio/URLs and translate them into other languages (Perso AI STT).
SkillBFreshness: B★ 40Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get clip running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
clip skill. Agent Mart. https://agentmart.dev/skills/perso-ai-clip (last updated 2026-10-24)