Loading...
Loading...
This skill should be used when the user asks to "edit a video to music", "create a beat-synced edit", "make a montage", "sync cuts to beats", "cut a video to the beat", "make a music video edit", "edit clips to a song", "build FFmpeg filters for video editing", or mentions combining video clips with audio tracks using timed cuts. Provides knowledge of the EditPlan format, FFmpeg filter_complex construction, and beat-sync editing workflows.
npx skill4agent add ecliptic-ai/skills beat-sync-video-editing{
"audio_start": "00:13",
"audio_duration": 6.5,
"clips": [
{ "video_start": "00:08", "duration": 2.0, "description": "Opening shot" },
{ "video_start": "00:45", "duration": 1.5, "description": "Action moment" },
{ "video_start": "01:22", "duration": 3.0, "description": "Build-up" }
],
"reasoning": "Matches rising intensity with beat drops"
}audio_startvideo_start"01:15"audio_durationdurationaudio_startaudio_durationvideo_startdurationaudio_duration# Fresh upload (files auto-deleted after):
bash ${CLAUDE_PLUGIN_ROOT}/scripts/gemini-edit-plan.sh \
--video <video_path> \
--audio <audio_path> \
--prompt "<user's edit description>"
# Keep files for reuse (outputs ECLIPTIC_FILES JSON to stderr):
bash ${CLAUDE_PLUGIN_ROOT}/scripts/gemini-edit-plan.sh \
--video <video_path> \
--audio <audio_path> \
--prompt "<description>" --no-cleanup
# Reuse previously uploaded files (skips upload, much faster):
bash ${CLAUDE_PLUGIN_ROOT}/scripts/gemini-edit-plan.sh \
--video-uri <uri> --video-mime <mime> \
--audio-uri <uri> --audio-mime <mime> \
--prompt "<different description>"GEMINI_API_KEYcurljq--no-cleanupecho '<plan_json>' | bash ${CLAUDE_PLUGIN_ROOT}/scripts/validate-plan.sh{"valid": true, "errors": []}{"valid": false, "errors": [...]}echo '<plan_json>' | bash ${CLAUDE_PLUGIN_ROOT}/scripts/build-filter.sh{"videoFilter": "...", "audioFilter": "...", "fullFilter": "..."}fullFilter-filter_complexffmpeg -y -i "<video_path>" -i "<audio_path>" \
-filter_complex "<fullFilter>" \
-map "[outv]" -map "[outa]" \
-c:v libx264 -preset fast -crf 23 \
-c:a aac -shortest \
"<output_path>"fullFilter[0:v]trim=start=8.000:duration=2.000,setpts=PTS-STARTPTS[v0];
[0:v]trim=start=45.000:duration=1.500,setpts=PTS-STARTPTS[v1];
[0:v]trim=start=22.000:duration=3.000,setpts=PTS-STARTPTS[v2];
[v0][v1][v2]concat=n=3:v=1:a=0[outv];
[1:a]atrim=start=13.000:duration=6.500,asetpts=PTS-STARTPTS[outa][0:v][1:a]trimsetpts=PTS-STARTPTSconcatatrimreferences/ffmpeg-filters.mdaudio_durationNo such fileInvalid dataConversion failedreferences/ffmpeg-filters.mdreferences/edit-plan-schema.md${CLAUDE_PLUGIN_ROOT}/scripts/gemini-edit-plan.sh--no-cleanup${CLAUDE_PLUGIN_ROOT}/scripts/validate-plan.sh${CLAUDE_PLUGIN_ROOT}/scripts/build-filter.sh${CLAUDE_PLUGIN_ROOT}/scripts/cleanup-gemini-files.sh