Agent skill

Video To Sfx

by sonilo-ai in sonilo-ai/skills

Generate sound effects matched to a video using Sonilo — footsteps, impacts, ambience, foley — optionally scripted to specific timed segments, returning either the audio or a new video with the SFX…

MITAuto-check: notesMedia & Creative

Install Video To Sfx

skills CLI
$ npx skills add sonilo-ai/skills --skill video-to-sfx -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install sonilo-ai/skills video-to-sfx --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/sonilo-ai/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/video-to-sfx .claude/skills/video-to-sfx && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
video-to-sfx
GitHub stars
115
Token cost
~2.3k tokens
SKILL.md length
930 words
Files
1
Skills in repo
13
Repo updated
First seen
Licence
MIT

At a glance

Generate sound effects matched to a video using Sonilo — footsteps, impacts, ambience, foley — optionally scripted to specific timed segments, returning either the audio or a new video with the SFX…

  • Works in 3 steps: Sonilo MCP tools visible in this session… → No usable Sonilo MCP tools, but sonilo… → Neither — stop and run the setup-api-key…
  • The user has footage that needs sound design
  • SKILL.md covers Transport: MCP or CLI, Quick Start, Tools and Parameters, plus 5 more sections
  • Calls pip, npm and curl; reaches api.sonilo.com; needs SONILO_API_KEY

What it does

Video To Sfx is an agent skill from sonilo-ai/skills. Generate sound effects matched to a video using Sonilo — footsteps, impacts, ambience, foley — optionally scripted to specific timed segments, returning either the audio or a new video with the SFX muxed in. Use when the user has footage that needs sound design. For SFX from a text description alone, use the text-to-sfx skill; for music, use video-to-music.

Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Requires Sonilo through either transport — the MCP server connected, or the sonilo CLI installed and signed in — plus credentials: a sonilo login sign-in, the…

It sits in Media & Creative, covering Music and audio generation. It works with Model Context Protocol. The repository describes itself as: Agent skills for Sonilo's licensed music, sound-effects, dubbing, and audio-ducking API. The licence is MIT.

When your agent uses it

  • The user has footage that needs sound design
  • Tasks that involve Music and audio generation

Example prompts

  • “/video-to-sfx”

Requirements

  • Python 3
  • Node.js
  • A credential in SONILO_API_KEY
  • Compatibility (from SKILL.md): Requires Sonilo through either transport — the MCP server connected, or the `sonilo` CLI installed and signed in — plus credentials: a `sonilo login` sign-in, the hosted OAuth plugin, or SONILO_API_KEY. See the setup-api-key skill.
  • Pre-approved tools (allowed-tools): Bash, Read, Write, mcp__sonilo__*

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Sonilo MCP tools visible in this session (video_to_sfx and friends) — use them. This is the preferred path: it needs no shell, and it is…
  2. No usable Sonilo MCP tools, but sonilo account exits 0 — use the CLI commands below. Same API, same account, same credential file. Probe…
  3. Neither — stop and run the setup-api-key skill. Do not call api.sonilo.com with curl to work around it; both transports handle uploads…

What it can do on your machine

Read from SKILL.md and the folder at commit 1ce1bd8. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • Write
    • mcp__sonilo__*

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pip
    • npm
    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.sonilo.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • SONILO_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires Sonilo through either transport — the MCP server connected, or the `sonilo` CLI installed and signed in — plus credentials: a `sonilo login` sign-in, the hosted OAuth plugin, or SONILO_API_KEY. See the setup-api-key skill.

    From compatibility in the SKILL.md frontmatter.

Context cost

Video To Sfx loads about 2.3k tokens when it runs. Until then it costs about 93 tokens; SKILL.md has 930 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~93
When it runs · the whole SKILL.md, loaded when a task matches
~2.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Write, mcp__sonilo__*

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from sonilo-ai/skills at commit 1ce1bd8, republished under its MIT licence (© sonilo-ai). 930 words, ~2,255 tokens.

Download SKILL.mdSave it as .claude/skills/video-to-sfx/SKILL.md (or your agent's skills folder).
name
video-to-sfx
description
Generate sound effects matched to a video using Sonilo — footsteps, impacts, ambience, foley — optionally scripted to specific timed segments, returning either the audio or a new video with the SFX muxed in. Use when the user has footage that needs sound design. For SFX from a text description alone, use the text-to-sfx skill; for music, use video-to-music.
allowed-tools
Bash, Read, Write, mcp__sonilo__*
compatibility
Requires Sonilo through either transport — the MCP server connected, or the `sonilo` CLI installed and signed in — plus credentials: a `sonilo login` sign-in, the hosted OAuth plugin, or SONILO_API_KEY. See the setup-api-key skill.
license
MIT

Sonilo Video-to-SFX

Hand Sonilo a video and it generates sound effects matching what it sees — footsteps, impacts, ambience, UI sounds, whatever the scene calls for — or pin specific sounds to specific moments with segments. Generation runs as an async task on the backend; the tools poll internally and hand back the saved file.

Setup: See the setup-api-key skill.

⚠️ Cost: every tool below makes an API call that may incur charges. Only call it when explicitly requested.

Transport: MCP or CLI

Pick one at the start of the session and stay on it. Do not mix the two inside a single job, and do not announce the choice.

  1. Sonilo MCP tools visible in this session (video_to_sfx and friends) — use them. This is the preferred path: it needs no shell, and it is the only one that survives a very long generation. If a call fails to authenticate — rather than failing on its inputs — this transport is not usable in this session: go to 2 instead of retrying it.
  2. No usable Sonilo MCP tools, but sonilo account exits 0 — use the CLI commands below. Same API, same account, same credential file. Probe with sonilo account, not sonilo whoami: whoami exits 0 even when signed out, so it cannot tell the two states apart.
  3. Neither — stop and run the setup-api-key skill. Do not call api.sonilo.com with curl to work around it; both transports handle uploads, polling and retries that a bare request does not.

Quick Start

video_to_sfx(
    video_path="~/Desktop/action-scene.mp4",
    prompt="Footsteps on gravel, distant traffic, a door slam"
)
Python (pip install sonilo)
python
from sonilo import Sonilo

client = Sonilo()  # reads SONILO_API_KEY

foley = client.video_to_sfx.generate(video="action-scene.mp4", prompt="Footsteps on gravel, distant traffic, a door slam")
foley.save("foley.wav")

# video_to_video_sfx: get the video back with the effects muxed in
video = client.video_to_video_sfx.generate(video="action-scene.mp4", segments=[{"start": 0, "end": 2, "prompt": "footsteps on gravel"}])
video.save("with_sfx.mp4")
JavaScript / TypeScript (npm install sonilo)
ts
import { SoniloClient } from "sonilo";

const client = new SoniloClient(); // reads SONILO_API_KEY

const foley = await client.videoToSfx.generate({
  video: "./action-scene.mp4",
  prompt: "Footsteps on gravel, distant traffic, a door slam",
});

// video_to_video_sfx: get the video back with the effects muxed in
const video = await client.videoToVideoSfx.generate({
  video: "./action-scene.mp4",
  segments: [{ start: 0, end: 2, prompt: "footsteps on gravel" }],
});
CLI (npm install -g sonilo-cli or pip install sonilo-cli)
bash
sonilo video-to-sfx --video action-scene.mp4 --output foley.wav

Always async under the hood — the CLI submits and polls for you. --format accepts wav|mp3|aac|flac.

bash
# the muxed video, from the CLI
sonilo video-to-video-sfx --video clip.mp4 --prompt "footsteps, distant thunder" --output foley.mp4
cURL (raw REST API, no MCP host)
bash
curl -X POST "https://api.sonilo.com/v1/video-to-sfx" \
  -H "Authorization: Bearer $SONILO_API_KEY" \
  -F "video=@action-scene.mp4" \
  -F "prompt=Footsteps on gravel, distant traffic, a door slam"
# -> {"task_id": "..."}  poll GET /v1/tasks/{task_id} until status is succeeded/failed

Every call is task-based: the endpoint returns {"task_id": ...} (HTTP 202), and the result is fetched from GET /v1/tasks/{task_id} once status is terminal. The MCP tools do this polling for you and return the saved path directly — you only see the task_id if the call times out (see task-recovery).

Tools

ToolDescription
video_to_sfx(video_path? | video_url?, prompt?, segments?, audio_format?, output_directory?)Generate SFX matched to a video. Returns audio only (not the source video).
video_to_video_sfx(video_path? | video_url?, prompt?, segments?, output_directory?)Same, but returns a new .mp4 with the SFX muxed in.

Parameters

ParameterTypeDefaultNotes
promptstring—Optional overall description (max 2000 chars) — omit it to let Sonilo interpret the video on its own.
video_pathstring—.mp4/.mov/.webm/.m4v/.gif (gif must be animated) — a narrower set than the music tools. Max 480s (8 min), subject to the account's upload-size cap.
video_urlstring—HTTPS/HTTP URL to a video. Exactly one of video_path/video_url.
segmentslist[dict]—Script SFX to specific time ranges: [{"start": float, "end": float, "prompt": str}, ...]. See rules below. Max 30 segments.
audio_formatstringaac (.m4a)wav, mp3, aac, or flac. video_to_sfx only (video-to-video always outputs .mp4).
output_directorystringSONILO_MCP_BASE_PATHAbsolute, or relative to the base path.
segments rules

Validated by the backend before any charge — an invalid list is rejected with a 422/400 and nothing is billed:

  • First segment's start must be 0.
  • Segments must be contiguous: each end must equal the next segment's start.
  • Every end must be greater than its start.
  • Every prompt must be non-empty, max 200 chars.
  • The last end must not exceed the video's actual duration.
  • Max 30 segments total.
Show full SKILL.md (381 more words)Show less

Prompting

No prompt is required — the model reads the cut. Quality comes from a time-segmented action map: what is on screen, what it's made of, what it does, second by second. The footage is the source of truth.

Before a paid call: probe the exact duration and existing audio, respect the 480 s cap (over = 422 reject, never truncated), and get sign-off — failed runs auto-refund, but your own retry is a new charge.

Workflow Tips

  • Leave prompt/segments unset to let Sonilo read the whole video and decide; use segments when you need specific sounds pinned to specific moments (e.g. a punch landing at 2.3s, a door slam at 5.0s).
  • Want the video back with SFX baked in? Use video_to_video_sfx instead of video_to_sfx.
  • Prompting: be specific and combine elements — "Heavy rain on a tin roof" beats "Rain".
  • Don't confuse this with music. For a background score or soundtrack, use video-to-music instead. To generate both music and SFX together in one balanced, single-charge call, use video-to-sound.
  • No footage? text-to-sfx generates a single clip from a description alone.
  • Don't know what it should sound like? Run video-analysis first: one call returns a sound-design brief read off the footage — shot-sized sfx_segments plus a ready-to-use whole-clip sfx_prompt (and a music brief too, unless you pass mode="sfx") — which beats guessing a prompt and rerolling. It is a paid call that generates nothing, so use it when the brief is genuinely unclear — not when the user already told you what they want.

Recovering a Timed-Out Call

Every tool here is async on the backend already; a long generation can still exceed TIME_OUT_SECONDS. If it does, the error carries a task_id — the job keeps running (and is already charged). Call get_sfx_task(task_id) — get_generation_task(task_id) on the hosted server — later to retrieve the result; see task-recovery.

Output Files

  • video_to_sfx: saved in the requested audio_format (.wav/.mp3/.flac, or .m4a for the aac default), named from the prompt (slugified) or sfx-<first 8 chars of the task id>.
  • video_to_video_sfx: a single .mp4 with the SFX muxed in.

Error Handling

Common errors: 401 invalid key, 402 insufficient balance / trial exhausted, 413 file too large, 422 invalid parameters or malformed segments, 429 rate limit. See the account skill.

© sonilo-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in video-to-sfx of sonilo-ai/skills.

Open the folder on GitHubat commit 1ce1bd8

Compare with similar skills

Video To Sfx next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Video To Sfx compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Video To Sfx this skillsonilo-ai/skills115—~2.3kAutomated safety check: NotesMIT
Musicguaardvark/guaardvark258—~710Automated safety check: PassMIT
Scenario Audioscenario-labs/skills946—~3kAutomated safety check: PassMIT
ShowtimeFavioVazquez/showtime220—~3kAutomated safety check: PassMIT
BlockrunBlockRunAI/blockrun-mcp391—~2.7kAutomated safety check: PassMIT
Videoguaardvark/guaardvark258—~1.2kAutomated safety check: PassMIT

Similar skills

  • Music

    guaardvark/guaardvark

    Generate full songs with vocals or instrumentals (ACE-Step) and sound effects or ambience (Stable Audio Open) on the user's GPU through Guaardvark's Audio Foundry.

    258 GitHub stars~710 tokensUpdated today
    Media & CreativeAuto-check passed
  • Scenario Audio

    scenario-labs/skills

    A skill your agent uses when generating or handling audio on Scenario via MCP.

    946 GitHub stars~3k tokensUpdated yesterday
    Media & CreativeAuto-check passed
  • Showtime

    FavioVazquez/showtime

    A skill your agent uses when the user wants a video made, edited or finished: a launch or promo, product demo, explainer, trailer or teaser, tutorial or walkthrough, a screen recording turned into a…

    220 GitHub stars~3k tokensUpdated 2 days ago
    Media & CreativeAuto-check passed
  • Blockrun

    BlockRunAI/blockrun-mcp

    Pay-per-call access to AI models, real-time data, media generation and multi-chain RPC over x402 micropayments (USDC on Base or Solana), or a BlockRun account API key.

    391 GitHub stars~2.7k tokensUpdated 3 days ago
    Media & CreativeAuto-check passed
  • Video

    guaardvark/guaardvark

    Generate video clips on the user's own GPU through Guaardvark: text-to-video, image-to-video, first+last frame animation, clips with their own soundtrack and dialogue (MiniMax H3), short looping…

    258 GitHub stars~1.2k tokensUpdated today
    Media & CreativeAuto-check passed
  • Audio And Video

    glifxyz/glif-mcp-server

    Make or edit audio and video with Glif, from a text brief or from a reference image, video or audio file.

    213 GitHub stars~1.6k tokensUpdated 2 days ago
    Media & CreativeAuto-check passed

More from sonilo-ai/skills

All 13 skills in this repo
  • Text To Sfx

    sonilo-ai/skills

    Generate a sound effect from a text description using Sonilo — a UI chime, a whoosh, an impact, ambience, a stylized cue — when there is no video to match.

    115 GitHub starsUsed in 1 repo~1.6k tokens
    Auto-check: notes
  • Video To Music

    sonilo-ai/skills

    Score a video with original music using Sonilo — the model watches the cut and matches pacing, motion, and emotion, returning either the audio or a new video with the score muxed in.

    115 GitHub starsUsed in 1 repo~4k tokens
    Auto-check: notes
  • Account

    sonilo-ai/skills

    Check the Sonilo account's available services, rate limits, free-trial allowance, and usage/billing history.

    115 GitHub stars~1.4k tokensUpdated 2 days ago
    Auto-check: notes
  • Audio Ducking

    sonilo-ai/skills

    Duck a music bed under a voice track using Sonilo — automatically lowers the music wherever the voice speaks and lifts it back in the gaps.

    115 GitHub stars~1.8k tokensUpdated 2 days ago
    Auto-check: notes
  • Audio Playback

    sonilo-ai/skills

    Play a local audio file through the system's default speakers using Sonilo's MCP server.

    115 GitHub stars~813 tokensUpdated 2 days ago
    Auto-check: notes
  • Auto Dubbing

    sonilo-ai/skills

    Dub a video into one or more other languages using Sonilo, translating and re-voicing the speech into a new video per language.

    115 GitHub stars~4.5k tokensUpdated 2 days ago
    Auto-check: notes

Questions about Video To Sfx

What does Video To Sfx do?

Generate sound effects matched to a video using Sonilo — footsteps, impacts, ambience, foley — optionally scripted to specific timed segments, returning either the audio or a new video with the SFX…. Video To Sfx is an agent skill from sonilo-ai/skills. Generate sound effects matched to a video using Sonilo — footsteps, impacts, ambience, foley — optionally scripted to specific timed segments, returning either the audio or a new video with the SFX muxed in.

When should I use Video To Sfx?

Video To Sfx fits situations like: the user has footage that needs sound design; tasks that involve Music and audio generation.

How do I install Video To Sfx in Claude Code?

Run `npx skills add sonilo-ai/skills --skill video-to-sfx -a claude-code`. Or copy the skill folder (video-to-sfx in sonilo-ai/skills) into .claude/skills/video-to-sfx in your project. Claude Code loads it when a task matches its description.

How do I install Video To Sfx in Codex?

Run `npx skills add sonilo-ai/skills --skill video-to-sfx -a codex`. Or copy the skill folder (video-to-sfx in sonilo-ai/skills) into .agents/skills/video-to-sfx in your project. Codex loads it when a task matches its description.

Can I use Video To Sfx in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sonilo-ai/skills --skill video-to-sfx -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/video-to-sfx, .gemini/skills/video-to-sfx, .github/skills/video-to-sfx and .opencode/skills/video-to-sfx in your project.

What does Video To Sfx need to run?

Going by SKILL.md and its folder, Video To Sfx needs the command-line tools its instructions call (pip, npm and curl) and credentials named SONILO_API_KEY. Our summary lists: Python 3; Node.js; A credential in SONILO_API_KEY. Its frontmatter pre-approves these tools: Bash, Read, Write, mcp__sonilo__*. Compatibility (from SKILL.md): Requires Sonilo through either transport — the MCP server connected, or the `sonilo` CLI installed and signed in — plus credentials: a `sonilo login` sign-in, the hosted OAuth plugin, or SONILO_API_KEY. See the setup-api-key skill..

Does Video To Sfx access the network?

SKILL.md names 1 domain. In commands or code: api.sonilo.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Video To Sfx safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Video To Sfx use?

Video To Sfx is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Video To Sfx use?

About 2.3k tokens (SKILL.md is roughly 9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Video To Sfx?

Skills that share tags, products or a category with Video To Sfx: Music (guaardvark/guaardvark, 258 stars), Scenario Audio (scenario-labs/skills, 946 stars), Showtime (FavioVazquez/showtime, 220 stars) and Blockrun (BlockRunAI/blockrun-mcp, 391 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Video To Sfx?

sonilo-ai (a GitHub organization) maintains it in sonilo-ai/skills, which has 115 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on October 9, 2026.

Source: sonilo-ai/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.