🧪 Skills

Lyria

Generate 30-second instrumental music via Google Lyria (Vertex AI). Use when user requests music generation, specific styles/keys/instruments, or music itera...

v1.0.0
❤️ 0
⬇️ 122
👁 1
Share

Description


name: lyria description: Generate 30-second instrumental music via Google Lyria (Vertex AI). Use when user requests music generation, specific styles/keys/instruments, or music iteration.

Music Generation Skill (Lyria)

Generate instrumental music from text prompts using Google Lyria API via Vertex AI.

Capabilities

  • Generate 30-second WAV instrumental tracks optimized for short-form content
  • Support style, mood, key, and instrument specifications
  • Save generated music to workspace with custom or timestamped filenames
  • Iterate based on user feedback

Use Cases

  • TikTok/YouTube Shorts — background music for 15-30s videos
  • Instagram Reels — quick musical intros/outros
  • Video transitions — short audio bridges
  • Loops — repeating segments for longer content

Limitations

  • 30 seconds max per generation (Lyria constraint)
  • Short-form only — designed for TikTok/Reels/Shorts, not full songs
  • Instrumental only (no vocals/lyrics)
  • Bearer token expires hourly (requires periodic refresh)
  • English prompts recommended

First-Time Setup

When using this skill for the first time on a machine, follow these steps:

Step 1: Create Directory Structure

# Create the lyria folder structure in workspace
mkdir -p ~/.openclaw/workspace/lyria/generated_music

Step 2: Install gcloud CLI (if not installed)

Check if gcloud is installed:

gcloud --version

If not installed, install Google Cloud SDK:

macOS (Homebrew):

brew install --cask google-cloud-sdk

Linux:

curl https://sdk.cloud.google.com | bash
exec -l $SHELL

Verify installation:

gcloud --version

Step 3: Authenticate with Google Cloud

gcloud auth login

Follow the browser prompt to authenticate.

Step 4: Get Your Configuration Values

Get project_id:

gcloud config get-value project

Get location:

gcloud config get-value compute/region

If no region is set, use: us-central1 (recommended for Lyria)

Get bearer_token:

gcloud auth print-access-token

⚠️ Note: This token expires in approximately 1 hour. You'll need to refresh it periodically.

Step 5: Create Config File

Create ~/.openclaw/workspace/lyria/config.json with your values:

{
  "project_id": "your-project-id-here",
  "location": "us-central1",
  "bearer_token": "ya29.a0AfH...your-token-here",
  "output_dir": "~/.openclaw/workspace/lyria/generated_music"
}

Replace the placeholders with your actual values from Step 4.


Usage

Quick Generate (Shell Wrapper)

The shell wrapper is the recommended way to generate music. It reads all configuration from the config file automatically.

./scripts/music-gen.sh "<prompt>" [name]

Arguments:

  • prompt (required): Text description of the music you want
  • name (optional): Custom filename (without extension). If omitted, uses timestamp.

Examples:

# With custom name:
./scripts/music-gen.sh "chill lo-fi piano C minor" "my_relaxing_track"
# Output: ~/.openclaw/workspace/lyria/generated_music/my_relaxing_track.wav

# With timestamp (default):
./scripts/music-gen.sh "energetic rock guitar solo"
# Output: ~/.openclaw/workspace/lyria/generated_music/music_20260302_143022.wav

Direct Python Usage

For more control or integration with other tools, call the Python script directly:

python3 scripts/music-gen.py <config_file> "<prompt>" [name]

Arguments:

  • config_file (required): Path to config.json
  • prompt (required): Text description of the music
  • name (optional): Custom filename (without extension)

Example:

python3 scripts/music-gen.py ~/.openclaw/workspace/lyria/config.json "jazz saxophone smooth" "evening_jazz"

Prompt Guidelines

Good prompts include:

  • Genre/Mood: "chill lo-fi", "energetic rock", "melancholic jazz", "epic orchestral"
  • Key: "C minor", "F major", "E Phrygian"
  • Instruments: "piano, strings, soft drums", "electric guitar, bass, drums"
  • Tempo/Feel: "slow and relaxing", "fast and driving", "mid-tempo groove"

Example prompts:

  • "A calm acoustic folk song in C minor with gentle guitar melody and soft strings, no drums"
  • "Upbeat electronic dance music with strong synth bass and driving beats, 128 BPM feel"
  • "Melancholic jazz piano in F minor with soft brush drums and upright bass"
  • "Epic cinematic orchestral with brass and strings, heroic and uplifting mood"

Refreshing Your Bearer Token

Since tokens expire hourly, you may need to refresh during long sessions:

  1. Get new token:

    gcloud auth print-access-token
    
  2. Update config.json with the new token

  3. Continue generating music


Workflow for Agents

When a user asks you to generate music:

  1. Check if setup is complete:

    • Verify ~/.openclaw/workspace/lyria/config.json exists
    • If not, guide user through First-Time Setup above
  2. Check if token is valid:

    • If generation fails with 401/403, token expired
    • Guide user to refresh token (see above)
  3. Refine the prompt:

    • Ask user for style, mood, instruments, key if not provided
    • Help craft a descriptive prompt
  4. Generate:

    ./scripts/music-gen.sh "<refined_prompt>" "<descriptive_name>"
    
  5. Deliver:

    • Send the generated .wav file to user
    • Confirm success
  6. Iterate (if needed):

    • Ask: "Want any changes? Faster? Different instruments?"
    • Update prompt, regenerate, deliver

Error Handling

Error Cause Solution
Config file not found First-time setup incomplete Follow First-Time Setup steps
401 Unauthorized Bearer token expired or invalid Refresh token: gcloud auth print-access-token
403 Forbidden No access to Lyria API Enable Vertex AI API in Google Cloud Console
404 Not Found Project or location incorrect Verify project_id and location in config
No predictions API issue or invalid prompt Retry with modified prompt

File Structure

~/.openclaw/workspace/
└── lyria/
    ├── config.json              # User credentials and settings
    └── generated_music/         # All generated audio files
        ├── music_20260302_143022.wav
        ├── my_relaxing_track.wav
        └── ...

API Reference


Best Practices

  1. Use specific prompts — "jazz piano in F minor" works better than "jazz music"
  2. Specify what to exclude — "no drums" or "no vocals" helps steer output
  3. Generate variations — Create 2-3 versions and let user pick favorite
  4. Monitor costs — At $0.06 per 30s, 10 generations = $0.60
  5. Refresh token proactively — If session >45 min, get fresh token before generating

Example Complete Session

User: Generate some lo-fi music for studying

Agent: I'll create a chill lo-fi track for you. First, let me check your setup...
[Checks config exists - yes]
[Checks token validity - yes]

Generating: "Chill lo-fi hip hop with soft piano melody, warm vinyl crackle, relaxed beats, no vocals"
...
Generated: ~/.openclaw/workspace/lyria/generated_music/lofi_study_track.wav
[Sends file]

Done! 30 seconds of chill lo-fi. Want me to make it longer by generating a continuation, or try a different vibe?

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs