Communitygithub.com

SrigadaAkshayKumar/ai-video-editor

Choose, fetch and place background music for an edit — Openverse search (commercial-use CC, or CC0-only), music_cues in work/audio-plan.json with fades, offsets and a deliberate silence gap; tools/mix.mjs conditions every bed, sets it to one measured house level under the voice and sidechain-ducks it. Use when adding, swapping or re-levelling music.

O que é ai-video-editor?

ai-video-editor is a Claude Code agent skill that choose, fetch and place background music for an edit — Openverse search (commercial-use CC, or CC0-only), music_cues in work/audio-plan.json with fades, offsets and a deliberate silence gap; tools/mix.mjs conditions every bed, sets it to one measured house level under the voice and sidechain-ducks it. Use when adding, swapping or re-levelling music.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/SrigadaAkshayKumar/ai-video-editor/tree/HEAD/.claude/skills/bgm

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

bgm — work/audio-plan.json → music_cues

{ "music_cues": [
    { "start": 0.0, "end": 46.2, "file": "assets/music/cold-tension.mp3", "gain_rel": 1.0,
      "fade_in": 0.8, "fade_out": 2.5, "music_start": 12.0, "mood": "cold tension" },
    { "start": 52.0, "end": 180.0, "file": "assets/music/cold-tension.mp3", "music_start": 60, "gain_rel": 0.9, "mood": "explainer bed" } ] }

Levels are measured — don't hand-tune them

tools/mix.mjs runs every bed through dynaudnorm (flattens the track's own 15 dB swings — the cause of "negligible at the start, dominant at the end"), puts it 9 dB under the narration (mean-to-mean; 20 dB read "negligible", 6.5 dB "dominant"), then sidechain-ducks it against the voice. gain_rel trims around that house level (1.0 = house; 1.2-1.3 for a bed that should punch at the peak; 0.8 to sit back). Measured numbers land in work/levels.json.

House policy (user, 2026-10-04)

  • Music only when the prompt asks for it (the user says so at the start of the prompt). Default: none.
  • CC0 only — always --cc0. These videos go to YouTube: no CC BY / BY-SA, no attribution strings, no claim risk (same reason stock comes only from Pexels/Pixabay). Nothing usable in CC0 → say so and offer no music; never fall back to BY.
  • SFX must cut through the bed. In talking-head-sample the bed (9 dB under the voice) drowned the SFX (~14 dB under). With music, sit the bed lower and dip it around each cue; check work/levels.json.

Choosing music

  1. Mood from the brief/direction: tech/tutorial → corporate, technology, lofi, minimal; motivational → upbeat, inspiring; vlog → acoustic, chill; story → piano, cinematic; hype → energetic, electronic; Indian flavour → indian, sitar, tabla.
  2. npm run bgm -- search <p> "upbeat corporate" [--min 60] [--cc0] — 1-3 generic words. Default licences allow commercial use (CC0/BY/BY-SA; BY needs the credit line); --cc0 = no attribution at all, smaller pool (try --source jamendo,ccmixter,freesound).
  3. Titles lie. The template got a vinyl-crackle texture for "warm nostalgia" and an alarm patch for "low tension". Pick by title + tags + duration; reject textures/field recordings; instrumental only.
  4. npm run bgm -- get <p> <id> --name slug → assets/music/slug.mp3 (+ credit).
  5. Check every cue: track length ≥ music_start + (end − start), else it runs out.

Placement

  • One bed at a time: cues don't overlap; at a mood change end one and start the next at the same time (fades cross). 3-5 distinct moods for a whole long video; re-use a bed at another music_start rather than adding a mood that returns junk.
  • A bed change is an event: put it at a turn, not at a chapter heading.
  • Leave one deliberate silence: no bed under the single most important line — the strongest emphasis available. fade_out 0.4s into that gap; otherwise fades 0.6-1.2s in, 2-3s out (2-3s in when a bed creeps under a calm passage).
  • Talking head: one bed is often enough; dense fast speech can take gain_rel 0.8.
  • The template's last documentary dropped music entirely after the viewer called it "distracting" — presence, not just level. If the user says the bed is too much, offer removing it.

Credits

npm run finalize writes output/credits.md; CC BY / BY-SA lines must go in the YouTube description and Instagram caption — say so. You cannot hear the bed: ask the user to listen.

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

SrigadaAkshayKumar/ai-video-editor

Turn a finished AI-edits video (projects/<p>, or several parts of one long video) into YouTube Shorts. Reuses the edit's word timestamps, reads the whole transcript, picks self-contained dialog moments, adds text hooks + comment prompts, renders 9:16 clips with Remotion. Use when the user asks to clip/make shorts from an edited project or a long video.

SrigadaAkshayKumar/ai-video-editor

Generate and style word-synced captions (Telugu, Hindi, English, code-mixed) as the HyperFrames captions pass over each format's Remotion picture, fix caption text, black captions out under on-screen text, and check caption content at every cut join. Use when creating, restyling, correcting or repositioning captions in any edit.

SrigadaAkshayKumar/ai-video-editor

Editorial rules for turning a raw talking video or voiceover into a clean cut — removing retakes, repetitions, false starts, stutters, fillers, mispronounced words, contradictions/inconsistencies, off-script chatter and dead air — by writing work/edl.json for tools/cut.mjs. Telugu, Hindi, English and code-mixed speech. Use for stage 2 of edit-video or whenever the user asks to tighten/re-cut a video.

SrigadaAkshayKumar/ai-video-editor

Turns a bare voiceover (no presenter on camera) into a finished faceless documentary/explainer for YouTube 16:9 and Instagram 9:16 — clean-cuts the narration, DIRECTS it (story spine, tension curve, hooks, involvement beats), researches the claims and screenshots the real sources, plans a scene track (stock b-roll, stills, news screenshots, pure-graphic beats) with motion graphics, designs music + SFX, renders, captions and credits it. Use when the user gives a voiceover/narration file (or says "faceless video", "make a video from this VO", "documentary").

SrigadaAkshayKumar/ai-video-editor

End-to-end editor for TALKING-HEAD videos (a person on camera) in this repo. Use when the user hands over a raw video with a speaker and wants a finished edit, or asks to continue/resume/redo any stage of an existing talking-head project — clean cut, motion graphics, b-roll, SFX, music, captions, final render, thumbnail. Delivers YouTube 16:9 and Instagram 9:16. Telugu, Hindi, English and code-mixed speech. For a voiceover with no presenter use edit-video-faceless.

SrigadaAkshayKumar/ai-video-editor

Plan the picture of an edit in work/visual-plan.json — motion graphics (28 component types across six stage layouts that dock/shrink/dim the video), b-roll cutaways from Pexels/Pixabay, camera moves, a-roll framing for 9:16 — validate it, QA it with stills in both formats, and render it with Remotion. Use for any titles, charts, stats, lower thirds, diagrams, b-roll or zooms in a talking-head or faceless edit.

SrigadaAkshayKumar/ai-video-editor

Design the sound effects of an edit in work/audio-plan.json sfx_events — which effect, where, how often — using the measured SFX library (repo assets/sfx, HyperFrames' bundled set, CC0 fetches from Openverse) and the spectral rule that sub-band cues carry structure while vocal-band cues are rationed. Mixed and levelled by tools/mix.mjs. Use when adding or adjusting SFX in any edit.

SrigadaAkshayKumar/ai-video-editor

Write the upload package for a video this repo edited — YouTube title options, description with chapters, tags, pinned comment, thumbnail text, and the Instagram Reels caption + hashtags for the 9:16 cut — optimised for whichever channel/client the user says it is for (config/brands/ profiles, only when named). Use when the user asks what to title a video, for a description, tags, chapters, "the YouTube metadata", an Instagram caption, or SEO/CTR advice on a finished render.

SrigadaAkshayKumar/ai-video-editor

Design and build a high-CTR thumbnail for a video this repo edited — hook selection, the real face frame pulled from the footage, background cut-out, type set with real fonts (Telugu/Devanagari included), the YouTube 1280x720 thumbnail and the Instagram 1080x1920 cover, an optional image-generation prompt for the background layer, and a feed-size legibility check. Use when the user asks for a thumbnail, thumbnail ideas, a cover image, or how to make the thumbnail more clickable.

Habilidades Relacionadas