Communitygithub.com

yunjundai/video-editing-skills

Edit existing videos and photos on computers without a dedicated GPU or with limited resources using Remotion, FFmpeg, Shotcut, and CPU-based speech recognition. Create Traditional Chinese subtitles, intros, name tags, and transitions while retaining editable project files. Suitable for school events, interviews, and commemorative videos; use the corresponding editing skill when DaVinci Resolve native projects are required.

What is video-editing-skills?

This skill empowers AI agents to perform professional video editing on low-resource or GPU-less computers. It leverages Remotion for animation and assembly, FFmpeg for audio/video processing, and Shotcut for fine-tuning, while using CPU-based speech recognition (faster-whisper with int8 quantization) and OpenCC for Traditional Chinese conversion. It explicitly avoids reliance on dedicated GPUs, CUDA, NVENC, or cloud rendering, making it ideal for environments like school labs or older laptops. The workflow includes creating Remotion projects, generating proxy files for preview, and producing Shotcut projects (MLT) for further refinement. All assets, subtitles, and project files are preserved for later modification. The skill automates inventory, transcription, rendering, and delivery, ensuring that even complex tasks like subtitle timing and multi-segment stitching are handled correctly. It is designed for agent platforms like Claude Code, Cursor, and Codex, with clear documentation for setup and cross-platform compatibility.

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/yunjundai/video-editing-skills/tree/HEAD/cpu-video-editing

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Video Editing Without a Dedicated GPU

When other AI agents use, install, or package this skill, first read agent-compatibility.md and handle the skill directory and local settings according to the target platform.

Use local Remotion for animation and assembly, FFmpeg for audio/video processing, and Shotcut for fine-tuning; subtitles use faster-whisper CPU/int8 and OpenCC. By default, it does not rely on a dedicated GPU, CUDA, NVENC, DaVinci Resolve, cloud rendering, or paid effects. It follows the user's specified style and delivery format.

Environment and Resources

Before first use, copy local-environment.example.json to references/local-environment.json and fill in the actual paths to the tools; the example paths do not imply the tools are installed.

  • First read references/local-environment.json and use the absolute paths of the tools listed. Run this skill's scripts/project.py doctor; subtitles use Python from a dedicated venv. doctor does not require CUDA or Resolve; it only checks for the existence of the Shotcut program, which does not guarantee the GUI has been verified.
  • This skill includes scripts, Remotion templates, and dependency lock files, and can be used independently of other editing skills; the locations of local tools and models are specified by the configuration file. When moving to another computer, read environment-notes.md, rebuild any missing dependencies, modify paths, and then test. Do not assume another computer has the tools installed.
  • Default settings: 16:9, 1920×1080, 30fps; first create a half-size preview. Remotion defaults to single job, SwiftShader software graphics backend, and H.264 software encoding; it does not automatically switch to CUDA. If memory is sufficient, use --concurrency 2; keep it at 1 for low memory.
  • Jobs are run sequentially; do not simultaneously execute full render, subtitle recognition, and proxy conversion. If memory is insufficient, first reduce the preview size, use proxy files, or split into segments; segments must maintain the same video and audio specs and correct subtitle timings, and check seams.
  • Recommended: 16GB RAM minimum, 32GB for more headroom, and use an SSD. This is a work recommendation and not a guarantee that all computers will run smoothly; do not estimate unmeasured output speeds based on core count or clip length.

Media and Editing

  1. If requirements are incomplete, first infer clip length, aspect ratio, and narrative based on existing media; only ask for missing information that affects the final output. If media locations are unknown, first inventory the working directory. Keep original files; place derived files in a new working folder.
  2. Read media-commands.md and use scripts/media.py inventory to create a list of lengths, aspect ratios, audio, and thumbnails. Review representative frames, listen to voices, read transcripts, then select segments; do not treat candidate cuts or guesses as confirmed facts.
  3. For 4K, high bitrate, or choppy preview, use media.py proxy --width 960 to generate H.264/AAC preview files. Record the mapping between original and proxy files; preview mode can use proxy files; before final output, restore original files and re-check crop ranges and sync. Do not deliver proxy files as original quality.
  4. Read project-commands.md and use scripts/project.py init to create a new Remotion project. Copy selected media to public/media/ and edit public/project.json; data specification is in motion-template.md. The template supports intros, chapters, photo zooms, videos, quotes, outros, subtitles, and name tags.
  5. First verify video in-points and lengths using ffprobe. Prioritize simple fades, wipes, gentle photo zooms, and short text animations; avoid defaulting to heavy blurs, particles, 3D, or high-resolution multi-layer effects. Adjust the design if quality is insufficient; do not cram content with overly small text.
  6. First create a short preview and static images to confirm the style and readability before producing the full video. Use project.py render --scale 0.5 for preview; for final delivery, use full size. Follow the skill's reference documents and script --help for specific commands, using absolute paths and parameter arrays to handle Chinese and paths with spaces.

Traditional Chinese Subtitles and Audio

  • scripts/transcribe.py explicitly passes --device cpu --compute-type int8 --model <local model path> --local-files-only, using a downloaded small model. If recognition fails, first check the venv, model, and compatible packages; do not request CUDA installation just because it is slow.
  • Transcribe the dialogue audio from the edited sequence, or convert each subtitle segment to final timeline timing based on cuts and transitions; do not directly apply original clip timings. Avoid generating subtitles from pure background music.
  • OpenCC only assists with converting Traditional Chinese characters; proofread school names, person names, titles, dates, homophones, and Taiwanese Hokkien. If recognition is unclear, keep unconfirmed markers; do not fabricate content.
  • captions.json captions can be placed into project.json. For word-by-word highlighting, first verify word timings and consistency across whole sentences/phrases; if only sentence timings are available, display the entire sentence.
  • Subtitles and name tags must maintain safe margins and not overlap each other; reduce background music volume so voices are clear; check if two dialogue segments overlap during transitions. Keep SRT and un-mixed dialogue sources for easy correction.

Shotcut Fine-Tuning and Delivery

  • Use project.py shotcut output.mp4 --output new_version.mlt to create a Shotcut fine-tuning starting point, containing rendered video segments that can be further adjusted for edits, background music, and volume levels. Shotcut uses general CPU effects and software output; if necessary, reduce Preview Scaling and enable proxy files. Do not ask users to enable hardware encoding.
  • Remotion text, subtitles, and transitions are baked into the segment, not Shotcut native text layers. To modify text or animations, return to the Remotion project and re-render; do not claim that MLT can modify these effects word by word. If layered or native text is requested, create and verify it separately.
  • Use media.py check to full-decode and check for black frames, silence, and errors, then manually spot-check intro, transition midpoint, longest subtitle, name tags, and outro; listen for dialogue/music and sync. Black frames and silence may be intentional; judgment is required.
  • Deliver MP4, thumbnail, Remotion project and media, project.json, SRT, and the actual created Shotcut MLT along with modification notes. Output a new version; do not silently overwrite existing outputs; do not modify original files or share node_modules.
  • Before delivering the MLT, actually load it with Shotcut or its MLT tools; if only the XML format passes, clearly state that editor loading has not been verified. Do not claim success for untested features.
  • Standard H.264 MP4 does not retain transparency. If transparency animation is required, create a separate transparent Composition and test with RGBA PNG sequences or compatible alpha encoding.

Upon completion, specify file locations, tested output settings, scope of modifications, subtitles needing proofreading, and unverified items. Tool licensing is subject to each software's terms; AI agent account quotas are separate.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Related Skills