music-generation

Generate ambient background music using Lyria via the Interactions API.

npx skills add https://github.com/google-gemini/gemini-managed-agents-templates --skill music-generation

Music Generation

Generate background music for the radio show using the Lyria model via the Interactions API.

Embedded Script

python3 skills/music-generation/scripts/generate_music.py --workspace ./workspace --mood tech

Arguments

ArgumentDefaultDescription
--workspaceworkspaceRoot workspace directory
--mooddefaultMusic mood (see moods below)

Moods

MoodStylePair with --style
tech (default)Clean synths, electronic pulse, Silicon Valley startup vibeexplainer, debate
chillSoft pads, gentle piano, lo-fi warmthroundtable, explainer
debateBuilding tension, brass-like synths, panel discussion openerdebate, interview

What it does

  1. Selects the music prompt based on --mood.
  2. Calls the Interactions API with the lyria-3-clip-preview model.
  3. Generates a ~30-second music clip.
  4. Saves as MP3 to {workspace}/audio/music/background.mp3.
  5. Gracefully handles failures — the pipeline continues without music.

Dependencies

  • google-genai (>= 2.0.0)

Output

  • File: {workspace}/audio/music/background.mp3
  • Format: MP3
  • Duration: ~30 seconds

Fallback

Lyria is experimental. If generation fails with a policy error or returns no music, the script will attempt to retry once with a simpler fallback prompt: "Create a 30-second simple ambient background track. Instrumental only, calm and neutral."

If the fallback attempt also fails, the pipeline proceeds without background music — the audio-mixing step handles this gracefully.

More skills from google-gemini

agent-tui
google-gemini
Main Agents: Do NOT use this skill directly. If you need to test the TUI, invoke the `tui_tester` subagent. Drive terminal UI (TUI) applications…
gemini-api-cli
google-gemini
Guide for using the Gemini API CLI tool. Use when you need to interact with the Gemini API via the command line, manage agents, or generate media (images,…
behavioral-evals
google-gemini
Guidance for creating, running, fixing, and promoting behavioral evaluations. Use when verifying agent decision logic, debugging failures, debugging prompt…
gemini-live-api-dev
google-gemini
Real-time bidirectional streaming with Gemini over WebSockets for audio, video, and text conversations. Supports audio input/output (16 kHz PCM), video frames, text, and automatic transcriptions with voice activity detection for interruption handling Includes native audio features: affective dialog, proactive audio, and thinking mode; function calling for synchronous and asynchronous tool use; and Google Search grounding Offers session management with context compression, resumption, and...
gemini-omni-flash-api
google-gemini
Use this skill for generative video editing, text-to-video, image-referenced video generation, and first-frame-to-video transition animations using the…
gemini-api-dev
google-gemini
Build applications with Google's Gemini models, supporting multimodal content, function calling, and structured outputs across Python, JavaScript, Go, and Java. Access current Gemini 3 models (Pro, Flash, Pro Image) with 1M token context; legacy Gemini 2.x and 1.5 models are deprecated Supports text generation, image/audio/video understanding, function calling, structured JSON output, code execution, context caching, and embeddings Official SDKs available: google-genai (Python),...
gemini-interactions-api
google-gemini
Unified interface for Gemini models and agents with server-side state, streaming, and tool orchestration. Supports multiple current models (gemini-3-flash-preview, gemini-3-pro-preview, gemini-2.5-flash/pro) and the Deep Research agent; automatically substitute deprecated model IDs with current alternatives Offload conversation history to the server via previous_interaction_id for stateful multi-turn interactions without manual history management Built-in tool orchestration including...
deliver
google-gemini
Posts a condensed version of the briefing to a Google Chat or Slack incoming webhook, so the daily run delivers itself — skips silently when no webhook is…