Cinematic Video Editing
Before other AI agents use, install, or package this skill, first read agent-compatibility.md and set up the skill directory and local configuration according to the target platform.
Turn the user's audio and video assets into viewable, editable videos. Automatically handles FFmpeg, Remotion, faster-whisper, and OpenCC; for fine-tuning, it selects the installed DaVinci Resolve or Shotcut based on local-environment.json's preferred_editor. Does not rely on MCP, paid APIs, cloud rendering, or paid effects. Uses the editor, style, and delivery format specified by the user.
Local Environment
Before first use, copy local-environment.example.json to references/local-environment.json and fill in the actual tool paths; the example paths do not imply the tools are installed.
First read references/local-environment.json to confirm the absolute paths of the tools. Python dependencies are placed in a dedicated venv; use its python, not the system Python, for speech recognition. Run scripts/project.py doctor to check the environment. Commands for project creation, preview, and export are in project-commands.md. scripts/ and assets/ are relative to this Skill folder; commands should use absolute paths and parameter arrays, correctly handling Chinese characters and paths with spaces.
Getting Started
Only read environment-notes.md when you need to move or rebuild the tool environment; rebuild with locked versions based on tested versions.
- Based on requirements and assets, infer the approach, asking only for information whose absence would affect the final product. Confirm duration, aspect ratio, important content, and style; if not specified, you may first create a 16:9, 1080p, 30fps preview.
- If asset paths are unclear, first inventory the current working directory, and do not mistake empty folders for existing assets. Preserve original files; store derived files in a new working folder.
- Use
media.py inventoryto create an inventory including duration, aspect ratio, audio information, and thumbnails. Only generate proxies or usemedia.py scenesto find cut points when needed. Read media-commands.md for actual commands. - Look at representative frames, listen to voices, and read transcripts before selecting assets; cut detection only indicates visual changes, and frame extraction may miss actions. Do not treat guessed visuals, names, or event facts as confirmed content.
Editing and Motion Design
- Create a list of segments and asset start/end points. A school inauguration video could use: intro, campus & history, activities & interviews, vision, thank you outro; adjust based on assets.
- Use
scripts/project.py init <new project directory>to copy a prepared Remotion template. Copy selected assets to that project'spublic/media/, avoiding modifications to originals. - Edit
public/project.jsonfor scenes, in-points, lengths, transitions, subtitles, and name tags. Read motion-template.md for data specifications; use ffprobe on video assets to confirm crop ranges. The template supports intros, chapters, photo zooms, videos, quotes, thank you outros, and fade/wipe/slide transitions. - First preview a small segment, then render the full video. Use
project.py stillto see a specific time, andproject.py render --scale 0.5for a quick preview; only use full resolution for final delivery.
Maintain consistent fonts, color schemes, safe margins, and animation pacing. Use letter spacing reveals, line reveals, masks, and ease-in/ease-out to enhance quality. Keep names, titles, dates, titles, and color schemes in editable data. Wrap or shorten long text instead of forcing it into tiny font sizes.
For additional effects, add custom animations in the template source code. When necessary, read the installed official remotion-best-practices, remotion-captions, remotion-render Skills or official documentation; the basic template can run independently. Only use free and compatible effects. Only use Blender for 3D scenes when there is an actual need; do not automatically install large optional tools.
Traditional Chinese Subtitles and Audio
- Use
scripts/transcribe.pyand a prepared local small model to generate SRT andcaptions.jsonwith word timings; CPU/int8 is usable, no CUDA required. GPU acceleration requires confirming dependencies first. - OpenCC only converts characters and words; still proofread for school names, person names, titles, dates, homophones, and Taiwanese. Keep unclear recognitions as pending confirmation markers; do not fabricate.
- Recognize the edited dialogue track, or calculate based on each asset's trim and transition overlaps to map to the final timeline. Do not directly apply original asset subtitle timings to the edited video.
- The
captionsarray incaptions.jsoncan be moved intoproject.json; start and end times are final video seconds. Word-by-word highlighting requires reliable word timings; with only full-sentence timings, display the entire sentence. - Subtitles and name tags should remain readable and not obscure each other. Audio transitions play overlapping segments simultaneously; cut interviews at sentence boundaries when possible; handle audio independently when needed. Keep background music at a level that preserves voice clarity, with appropriate volume and fade in/out for the asset.
Delivery and Checks
- Use
media.py checkto verify decoding, black frames, and silence; black frames and silence may be intentional—judge manually. Spot-check the beginning, transition midpoints, longest subtitle sections, name tags, and end; listen for voice and music. - Preserve the source code,
project.json, used assets, and SRT; deliver MP4, thumbnail, and modification instructions. Do not silently overwrite existing output; render a new version or explicitly use--overwrite. project.py shotcutcan create a Shotcut fine-tuning starting point with rendered results. Text will not become native Shotcut text layers; to change text or animations, rebuild from the Remotion project. Do not claim that rendered effects are natively editable per-word.- For transparent animations, create a dedicated transparent Composition, output and test RGBA PNG sequences or compatible alpha encoding; standard H.264 MP4 does not preserve transparency.
- When using Resolve for fine-tuning or direct control, read resolve-guide.md. Resolve control depends on the target computer's practical testing; use the built-in Lua Console to create projects, import assets, create timelines, and export DRP/MP4. Use available computer-use Skills for GUI operations. Do not assume external scripting connectivity for the free version.
scripts/resolve_verify.luais only for control verification up to 9.8 seconds; for actual editing, use the official API and screen operations step by step, verifying results. For effects that require natively editable text, create Fusion templates and verify them practically; do not treat Remotion renders as native nodes.
When finished, state the location of the final video and editable project, verified features, and pending proofreading items. Installation status is based on doctor output and actual execution; editing engines are locally free, AI agent account credits are separate.