Lyria
Generate 30-second instrumental music via Google Lyria (Vertex AI). Use when user requests music generation, specific styles/keys/instruments, or music itera...
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 wantname(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.jsonprompt(required): Text description of the musicname(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:
-
Get new token:
gcloud auth print-access-token -
Update config.json with the new token
-
Continue generating music
Workflow for Agents
When a user asks you to generate music:
-
Check if setup is complete:
- Verify
~/.openclaw/workspace/lyria/config.jsonexists - If not, guide user through First-Time Setup above
- Verify
-
Check if token is valid:
- If generation fails with 401/403, token expired
- Guide user to refresh token (see above)
-
Refine the prompt:
- Ask user for style, mood, instruments, key if not provided
- Help craft a descriptive prompt
-
Generate:
./scripts/music-gen.sh "<refined_prompt>" "<descriptive_name>" -
Deliver:
- Send the generated
.wavfile to user - Confirm success
- Send the generated
-
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
- Model:
lyria-002 - Endpoint:
https://{location}-aiplatform.googleapis.com/v1/projects/{project}/locations/{location}/publishers/google/models/lyria-002:predict - Docs: https://ai.google.dev/gemini-api/docs/music-generation
- Pricing: $0.06 per 30 seconds of generated music
Best Practices
- Use specific prompts — "jazz piano in F minor" works better than "jazz music"
- Specify what to exclude — "no drums" or "no vocals" helps steer output
- Generate variations — Create 2-3 versions and let user pick favorite
- Monitor costs — At $0.06 per 30s, 10 generations = $0.60
- 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)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!