Disclaimer: This is an independent, community-maintained project. It is not affiliated with, sponsored by, or endorsed by CapCut, JianYing, or ByteDance Ltd. "CapCut" and "JianYing" (剪映) are trademarks of ByteDance Ltd.
FAQ
capcut-cli is a Claude Code plugin with 1 hand-picked skill for content work, indexed on Flowy. Install it with the command on its page. It includes capcut-edit. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
> /plugin marketplace add renezander030/capcut-cli> /plugin install capcut-cli@capcut-cli
Repo: renezander030/capcut-cli
English | 中文
Disclaimer: This is an independent, community-maintained project. It is not affiliated with, sponsored by, or endorsed by CapCut, JianYing, or ByteDance Ltd. "CapCut" and "JianYing" (剪映) are trademarks of ByteDance Ltd. All product names, logos, and brands are the property of their respective owners and are used here only for identification (nominative) purposes.
An independent CLI for CapCut / JianYing that any LLM agent can drive — zero dependencies, no server, both namespaces in one binary.
JSON in, JSON out: every command reads and writes the local draft store directly, with no MCP server or HTTP daemon. On newer CapCut versions it detects and synchronizes every readable timeline target instead of assuming draft_content.json is the only source of truth. That gives any model (Claude, DeepSeek, GLM, Kimi) a deterministic boundary for inspection, building, subtitles, captions, translation, and long-form cuts.
Use it three ways:
npm install -g capcut-cli, then capcut <command> <project>import { loadDraft, lintDraft, saveDraft } from "capcut-cli" (typed, zero-dep)capcut serve reads JSONL jobs from stdin, for n8n / Make / CozeNew in v0.16.0: first-class support for the newer Mac draft layout (
draft_info.json-primary) across edits,sync-timelines,register, anddiagnose, version-aware mask writes with--mask-fieldand a lint mismatch check, the cut exported as OpenTimelineIO (export-timeline) for DaVinci Resolve handoff, learning store effect ids from app-authored drafts (harvest-enums), VFR and unreadable-media checks inlintwith concrete ffmpeg fixes, and safe auto-repair of dangling companion refs (lint --fix). Full details in the changelog.
New in v0.15.0: a write-time version guard that refuses beyond-evidence or known-broken drafts unless
--force-write, in-place segment deletion with orphaned-material cleanup (remove), raw store resource ids, working--intensity, and whole-timeline--fullonadd-filter/add-effect, experimental per-segment--bindonadd-effect, andlintunknown-slug coverage extended to transitions, masks, sound effects, bubbles, and fonts. Full details in the changelog.
Prerequisites: Node ≥ 18 (built-ins only — no native modules). Optional tools unlock specific commands: Whisper for caption, FFmpeg for render, ffprobe for automatic media metadata, and ANTHROPIC_API_KEY for translate.
npm install -g capcut-cli # or: npx capcut-cli <command>
Build from source instead: git clone https://github.com/renezander030/capcut-cli && cd capcut-cli && npm install && npm run build (then npm link to expose capcut).
capcut doctor # verify Node, FFmpeg, whisper, draft dirs
capcut quickstart my-first --video clip.mp4 # create + add input + lint, prints the "open in CapCut" step
capcut info ./my-first/ # inspect the draft (add -H for a table)
Then open the project in CapCut to review and render. Every short-video platform forbids automated upload, so the publish click stays human.
JSON by default (pipe to jq); add -H for a human-readable table. Pass --jianying to use the JianYing enum namespace. Run capcut <command> --help for full flags.
| Group | Commands |
|---|---|
| Inspect | info · tracks · materials · version · lint |
| Browse / drill in | segments · texts · segment · material |
| Create | init · quickstart · compile (build a draft from a JSON spec) |
| Preview | render (low-res ffmpeg proxy — not CapCut's final render) |
| Add | add-video · add-audio · add-text (Wikimedia URLs supported, license-checked) |
| Edit / animate | trim · speed · volume · transitions · masks · text/image animations · easing curves |
| Templates | apply and extract reusable layouts · make-preset (portable text-style presets) |
| Subtitles & i18n | caption · import-srt · export-srt (line/word SRT + VTT) · translate (multi-language draft clone) |
| Effects | sfx · chroma (chroma key) |
| Long-form → short | cut · detect-scenes (ffmpeg scene-cut detection) |
| Automation | serve (stateless JSONL runner) · migrate · doctor · sync-timelines (8.7 mirror repair) |
Full reference for every command, option, and exit code: docs/command-reference.md.
capcut-cli is MIT and free forever. Sponsoring funds faster releases and same-week support for new CapCut / JianYing versions — and unlocks power-user extras:
BACKERS.md. Keep the project moving.capcut-cli-pro repo: premium template and caption-style packs, the full Claude viral-shorts pipeline, ready-to-run compile specs, and early-access builds. Plus priority issue triage.Using capcut-cli at work? The Team tier pays for itself the first afternoon it saves your engineers.
CapCut/JianYing store each project as local JSON. capcut-cli loads that store, validates against a version-aware schema, applies your edit, and writes it back atomically (with a .bak). No project files are uploaded anywhere; nothing runs as a service. See docs/version-support.md for the CapCut/JianYing versions and schema flags it understands.
CapCut™ and JianYing™ (剪映) are trademarks of ByteDance Ltd. This project is unofficial and is not affiliated with or endorsed by ByteDance; the marks are used nominatively to describe interoperability.
MIT
.claude-plugin/
marketplace.json
plugin.json
.dockerignore
.github/
FUNDING.yml
workflows/
ci.yml
.gitignore
.husky/
pre-commit
action.yml
bin/
capcut
biome.json
CHANGELOG.md
CONTRIBUTING.md
Dockerfile
docs/
command-reference.json
command-reference.md
draft-schema/
00-overview.md
01-tracks-and-segments.md
02-materials.md
03-keyframes-and-animations.md
04-effects-filters-stickers.md
05-version-differences.md
README.md
jianying-encryption.md
README.md
version-support.md
examples/
batch-fix-subtitles.md
build-short-from-scratch.md
cut-to-shorts.md
keyframe-pan.md
keyframe-zoom.md
README.md
reusable-title-template.md
scripts/
apply-pan.py
apply-zoom.py
verify-vo-timestamps.py
serve-automation.md
translate-subtitles.md
verify-vo-alignment.md
hooks/
hooks.json
LICENSE
media/
og-card.png
two-sisters-vietnam-short.mp4
package-lock.json
package.json
PLAN.md
README.md
README.zh-CN.md
scripts/
extract-enums.py
generate-command-docs.mjs
skills/
capcut-edit/
assets/
animations.json
examples/
ken-burns.jsonl
subscribe-cta.json
references/
api-reference.md
pitfalls.md
workflows.md
scripts/
_test.sh
anim.sh
fade-in.sh
fade-out.sh
ken-burns.sh
long-to-short.sh
stamp-cta.sh
SKILL.md
src/
ass.ts
bom.ts
caption.ts
chroma.ts
command-specs.ts
compile.ts
decorators.ts
decrypt.ts
doctor.ts
draft.ts
enums.json
enums.ts
export-batch.ts
factory.ts
fixture.ts
index.ts
interchange.ts
lib.ts
lint.ts
migrate.ts
preset.ts
probe.ts
quickstart.ts
render.ts
replace.ts
runner.ts
scenes.ts
serve.ts
sfx.ts
srt.ts
store.ts
time.ts
translate.ts
user-enums.ts
version.ts
wikimedia.ts
templates/
_init/
draft_content.json
draft_info.json
caption-pop.json
end-card.json
gold-title.json
hook-question.json
lower-third.json
subscribe-cta.json
test/
add-cover.test.mjs
add-effect.test.mjs
add-filter.test.mjs
asset-collision.test.mjs
audio-fade.test.mjs
batch-transaction.test.mjs
bom-tolerance.test.mjs
bubble-text.test.mjs
caption.test.mjs
chroma.test.mjs
cli-version.test.mjs
compile.test.mjs
completions.test.mjs
concat.test.mjs
config.test.mjs
create.test.mjs
crop.test.mjs
decorators.test.mjs
decrypt.test.mjs
default-drafts-dir.test.mjs
describe.test.mjs
detect-scenes.test.mjs
diff.test.mjs
doctor.test.mjs
draft_content.json
draft-info-primary.test.mjs
dry-run.test.mjs
duplicate.test.mjs
edit.test.mjs
export-batch.test.mjs
export-srt.test.mjs
export-timeline.test.mjs
export-windows.test.mjs
fixture.test.mjs
fixtures/
capcut-8.7-windows/
draft_content.json
README.md
template-2.tmp
flag-scoping.test.mjs
fuzz.test.mjs
harvest-enums.test.mjs
helpers/
load-fixture.mjs
spawn-cli.mjs
tmp-draft.mjs
import-ass.test.mjs
inspect.test.mjs
keyframe-easing.test.mjs
keyword-emphasis.test.mjs
lib.test.mjs
lint.test.mjs
make-preset.test.mjs
mask-field.test.mjs
media-compat.test.mjs
migrate.test.mjs
mix-mode.test.mjs
probe.test.mjs
projects.test.mjs
prune.test.mjs
quickstart.test.mjs
register.test.mjs
relink.test.mjs
remove.test.mjs
render.test.mjs
replace.test.mjs
restore-history.test.mjs
restore.test.mjs
serve.test.mjs
sfx.test.mjs
showTemplates.test.mjs
store.test.mjs
sync-timelines.test.mjs
template.test.mjs
timeline.test.mjs
track-order.test.mjs
translate.test.mjs
version.test.mjs
write-guard.test.mjs
tsconfig.json© 2026 Flowy · Free and open source
Built for Claude Code · Not affiliated with Anthropic