Capcut Export logo

Capcut Export

Community
mrpaidsocial
capcut-export

Export a finished layered edit (footage + graphic cards + alpha fx overlay + captions + SFX/music/VO) into a CapCut desktop draft where EVERY element stays editable — footage segments split at zoom boundaries, per-card graphic clips, a true-alpha fx overlay, native text captions, per-hit SFX clips, and separate music/VO tracks. Use when someone says "export to CapCut", "make this editable in CapCut", "CapCut draft", "hand the edit off to a human editor", "open my render in CapCut with layers", or mentions pyJianYingDraft / JianYing drafts / draft_content.json / draft_info.json / root_meta_info.json. Builds the draft via pyJianYingDraft, then applies a work-in-progress schema patch for modern CapCut (~181.x) and registers the draft. NOT for rendering the video itself (that is the edit skill's job) — this consumes an already-finished layered edit and its render passes.

Overview

Publishermrpaidsocial
Repositorymrpaidsocial-video-editor-agent
Skill namecapcut-export
Stars
114
Forks
34
Bundled files
1
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by mrpaidsocial on GitHub. Read the source before you install it.

Installation

Install the Capcut Export AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/mrpaidsocial/mrpaidsocial-video-editor-agent/tree/main/.claude/skills/capcut-export
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/mrpaidsocial/mrpaidsocial-video-editor-agent.git /tmp/mrpaidsocial-video-editor-agent
mkdir -p .claude/skills
cp -r /tmp/mrpaidsocial-video-editor-agent/.claude/skills/capcut-export .claude/skills/capcut-export
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Capcut Export in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Capcut Export on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Capcut Export is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

CapCut Export

Turn a finished layered edit into a CapCut desktop draft where an editor can grab any element — nudge a caption, swap a card, mute one SFX hit — instead of receiving a baked MP4.

Honest status up front: the draft generation works and is well understood. The "modern CapCut opens it" step is a documented work-in-progress. pyJianYingDraft writes JianYing-era drafts; current CapCut desktop expects a newer schema. Before the patch described below, CapCut refused the draft with "Couldn't use project: unusual path". The patch is implemented in the script but has not been field-verified end to end on a current CapCut build. Treat the last mile as debugging work, not a guaranteed one-shot (see Debugging — the method is a diff against a native draft).

Prerequisites

  • macOS with CapCut desktop installed (drafts live in ~/Movies/CapCut/User Data/Projects/com.lveditor.draft/).
  • python3 with pyJianYingDraft in a venv (pip install pyJianYingDraft). Do not install globally; the library moves fast and its API varies between versions.
  • ffmpeg on PATH (or FFMPEG env var) — used to split the cards render pass and grab a cover thumbnail.
  • Optional: PIL (pip install pillow) if you want the procedural vignette PNG.
  • The finished edit's render passes (see next section). Rendering those is the edit skill's job, not this skill's.

Inputs — what the edit pipeline must hand you

InputWhat it is
Base footage file(s)The talking-head / footage video (already reframed to canvas aspect)
Cards-only passA render of the composition with only the graphic cards visible (opaque background is fine — cards are stacked as opaque clips)
Alpha fx passEverything that must composite over footage with transparency (progress bar, light leaks). Render with --format mov → true-alpha ProRes, yuva444p. An MP4 cannot carry alpha
Word-level transcriptJSON [{"text","start","end"},...] for native captions
VO / music / SFX filesThe exact audio used in the edit, one file per SFX hit name
The edit's timing dataZoom boundaries, card in/out times, SFX hit list, caption style beats — copied into the script's CONFIG block

Workflow

  1. Copy the template scripts/export-capcut-template.py into the edit's project folder and fill in the CONFIG block (durations, cards, hits, caption windows).
  2. Stage media to the local disk. The script does this automatically into ~/Movies/capcut-export-media (override with CAPCUT_MEDIA_DIR). This is not optional tidiness: media referenced by a draft from an external volume can trip macOS permission (TCC) prompts inside CapCut and break media resolution. Keep every referenced file on the boot disk.
  3. Build the draft: .venv/bin/python export-capcut-template.py — writes the draft to ~/Movies/capcut-draft-staging/<name>/.
  4. Patch the schema (see below): rerun with --skip-build --patch-native <path-to-a-native-draft-folder>.
  5. Quit CapCut completely (Cmd+Q), then --skip-build --install --register.
  6. Open CapCut. If the draft opens: verify tracks, done. If not: Debugging.

The schema gap (read this before blaming your CONFIG)

pyJianYingDraft targets the JianYing (Chinese CapCut) draft format:

  • writes draft_content.json with new_version: "110.0.0".

Current CapCut desktop (international) loads draft_info.json with new_version ≈ "181.0.0" and 8 extra top-level keys that the old schema lacks:

draft_type, function_assistant_info, is_drop_frame_timecode, lyrics_effects,
mixed_track_mode_on, path, smart_ads_info, uneven_animation_template_info

The fix implemented in --patch-native:

  1. On the target machine, create any throwaway project in CapCut natively (this gives you a draft written by that exact CapCut build).
  2. Clone those 8 keys from the native draft into the generated draft; copy the native new_version / version fields; set path to the draft's final installed folder.
  3. Write the result as BOTH filenames — draft_content.json and draft_info.json — so either loader path finds it.

Status, plainly: before this patch CapCut showed "Couldn't use project: unusual path"; the patched draft was not yet verified to open on the CapCut build that produced the error. Expect to iterate via the diff method below.

Draft installation and the registry

Copying the folder into com.lveditor.draft/ is not enough — CapCut only lists drafts that are registered in root_meta_info.json (top-level key all_draft_store).

Rules the script enforces / you must respect:

  • Back up root_meta_info.json first (script writes a timestamped .bak-*).
  • Only edit the registry while CapCut is fully quit — CapCut rewrites it on exit and will clobber (or crash on) concurrent edits. The script refuses to run --install/--register while a CapCut process exists.
  • New entries are made by cloning a native entry and fixing: draft_name, every path field containing the old name, a fresh uppercase-UUID draft_id, tm_duration (microseconds), timestamps, and draft_cover (the script grabs a frame with ffmpeg as draft_cover.jpg).

Track layout — mapping a layered edit onto CapCut tracks

Bottom → top:

TrackContentTechnique
footageBase videoSplit at every zoom boundary; each segment gets its own scale_x/scale_y in ClipSettings — that's how a punch-in stays editable
overlayPositioned second video (e.g. a head-card band during split-screen beats)ClipSettings(scale_x, scale_y, transform_y). Negative transform_y = down, positive = up (e.g. -0.5625 parks a 0.9556-scale band in the lower half of 9:16)
cardsOne opaque clip per graphic cardRender a cards-only pass of the composition, then ffmpeg-split it at card boundaries (-crf 16 -g 15 keeps cuts frame-accurate). Editors can retime/swap individual cards
fxONE alpha overlay for the whole timelineThe true-alpha ProRes .mov. Don't split it — it's a single ambient layer
image-NStatic PNGs (vignette etc.)PNG placed as image segments over specific windows
captionsNative TextSegmentsTextStyle(size, bold, italic, color), TextBorder(width, color), position via ClipSettings(transform_y=...). Fully editable text in CapCut
text-NCTAs / keyword popsSame as captions, on extra tracks
vo, music, sfx-NAudioOne clip per SFX hit so each hit is individually mutable/movable

Text-track hard rules

  • A track cannot hold overlapping segments. Two texts on screen at once must go on separate tracks — the script packs extra texts greedily onto text-1, text-2, …
  • Clamp caption windows strictly monotonic. Word-level timestamps from a transcriber routinely overlap; the script forces start ≥ prev_end + 2ms and end ≤ next_start − 40ms before creating segments. Skip this and add_segment throws (or worse, CapCut mis-renders).

pyJianYingDraft API gotchas

  • Clamp every segment duration to the material duration — d = min(d, material.duration/1e6 - source_start) — or the library throws. material.duration is in microseconds.
  • VideoSegment(material, target_timerange, source_timerange=…, volume=…, clip_settings=…) — source_timerange selects which slice of the file plays; omit it for stills/full clips.
  • TextStyle(italic=…) doesn't exist in every version — wrap in try/except TypeError and degrade to non-italic (the script does).
  • Time ranges are built with trange("12.5s", "0.8s") (start, duration).

Debugging

When CapCut refuses or mangles the draft, the method is a diff against a native draft made by that exact CapCut install:

  1. In CapCut, create a minimal native project: one video clip, one text, one audio. Quit CapCut.
  2. Pretty-print both drafts and diff: python3 -m json.tool <native>/draft_info.json > a.json (same for yours), then diff top-level keys first, then per-track/per-segment structure.
  3. Fix the highest-level differences first (missing keys, version strings, path), reinstall, retest. Iterate downward into track/material structure only if the draft opens but elements are broken.
  4. Registry problems look different from schema problems: a draft that never appears in the project list = registry; a draft that appears but errors on open = schema.
  5. If CapCut "repairs" your draft on open, immediately copy the repaired draft_info.json out and diff it against what you wrote — CapCut just told you the correct schema.

Scripts

  • scripts/export-capcut-template.py — the full exporter template. CONFIG block at top; --patch-native, --install, --register, --skip-build flags. Read its docstring before running.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Capcut Export AI skill do?

Export a finished layered edit (footage + graphic cards + alpha fx overlay + captions + SFX/music/VO) into a CapCut desktop draft where EVERY element stays editable — footage segments split at zoom boundaries, per-card graphic clips, a true-alpha fx overlay, native text captions, per-hit SFX clips, and separate music/VO tracks. Use when someone says "export to CapCut", "make this editable in CapCut", "CapCut draft", "hand the edit off to a human editor", "open my render in CapCut with layers", or mentions pyJianYingDraft / JianYing drafts / draft_content.json / draft_info.json / root_meta_i...

Why use Capcut Export on TypingMind?

Because you install it once and use it with any model. Capcut Export is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Capcut Export in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/mrpaidsocial/mrpaidsocial-video-editor-agent/tree/main/.claude/skills/capcut-export. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Capcut Export?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Capcut Export?

As many as you like. As long as a model supports skills, you can use Capcut Export with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Capcut Export AI skill free?

It is published on GitHub by mrpaidsocial. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇