Skywork Music Maker logo

Skywork Music Maker

Organization
SkyworkAI
skywork-music-maker

Create professional music with Mureka AI API — songs, instrumentals, and lyrics from natural language descriptions in any language. Use when users want to generate a song, create a beat or instrumental, write lyrics, clone vocals, upload reference tracks, or do anything related to AI music creation, even casual requests like "make me a chill lo-fi beat".

Overview

PublisherSkyworkAI
RepositorySkywork-Skills
Skill nameskywork-music-maker
Stars
205
Forks
30
Bundled files
2
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 2 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by SkyworkAI on GitHub. Read the source before you install it.

Installation

Install the Skywork Music Maker AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/SkyworkAI/Skywork-Skills/tree/main/skywork-music-maker
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/SkyworkAI/Skywork-Skills.git /tmp/Skywork-Skills
mkdir -p .claude/skills
cp -r /tmp/Skywork-Skills/skywork-music-maker .claude/skills/skywork-music-maker
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Skywork Music Maker in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Skywork Music Maker on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Skywork Music Maker is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Skywork Music Maker (Mureka API)

Generate professional-quality music using the Mureka API at https://api.mureka.ai. This skill covers the complete music production workflow: lyrics writing → song/instrumental generation.

First-Time Setup

Before running any API command, check if MUREKA_API_KEY is set. If not, guide the user to get an API key at https://platform.mureka.ai/ (register → API Keys → generate key → export MUREKA_API_KEY="..."), then STOP — do not attempt any API calls until the key is configured.


Smart Prompt Conversion (CRITICAL WORKFLOW)

Default behavior: When the user doesn't specify song type, always generate a song with lyrics (use mureka.py song). Only use mureka.py instrumental when the user explicitly asks for instrumental, BGM, background music, or "no vocals".

Output defaults: Use mp3 format unless the user requests otherwise. The --output flag specifies a directory — the script creates it and saves all results inside (audio files + lyrics.txt for songs). If the user doesn't specify a location, choose a user-friendly path with a descriptive folder name based on the song theme (e.g., summer_pop_song/).

When users provide music descriptions in natural language (in any language), you MUST convert them to structured Mureka API prompts using this workflow:

Conversion Process

User Input Examples:

  • "upbeat pop song, female vocals, guitar, perfect for summer"
  • "sad piano ballad about lost love"
  • "epic orchestral music for a fantasy game"
  • "traditional Chinese music with bamboo flute and zither, misty atmosphere"

Your Task:

  1. Extract structured parameters using the extraction rules below
  2. Validate the prompt meets quality standards (see Quality Checklist)
  3. Present to user for confirmation before generating
  4. Run the generation command with the structured prompt

Parameter Extraction Rules

When users provide natural language music descriptions, directly extract and structure the following parameters:

Required Parameters:

  • genres: music genres including fusion styles (e.g., Pop, Rock, Jazz, Pop Rap Fusion, Alternative Rock, Guofeng)
  • moods: emotional tones (e.g., Happy, Melancholic, Energetic, Nostalgic, Bright)
  • instruments: specific instruments (e.g., Piano, Guitar, Drums, Erhu, Guzheng, Synth Pads, Dizi)
  • rhythms: rhythm characteristics (e.g., 4/4, Slow, Syncopated, Driving, Flowing)
  • vocals: vocal attributes (e.g., Female, Husky, Whispered, Male, Soft, Clear) or "instrumental only"
  • key: musical key if specified (e.g., C Major, A Minor, C# Major)
  • bpm: beats per minute (e.g., 120) or tempo descriptor (e.g., "slow groove", "uptempo")
  • description: concise summary (under 50 words) capturing mood progression, melody, harmony, timbre, texture, dynamics

Extraction Instructions:

  1. Translate non-English terms: Convert ALL non-English musical terms to English while preserving cultural and musical meaning
  2. Preserve specificity: Keep detailed information including specific styles, subgenres, and cultural context (e.g., "Chinese traditional guofeng" not just "Chinese music")
  3. Design dynamic arc: Include mood progression where appropriate (e.g., "sparse opening → building tension → cathartic chorus")
  4. Infer intelligently: Make reasonable assumptions based on genre conventions when parameters are not explicitly stated
  5. English output: Final prompt string MUST be entirely in English

Generate Structured Prompt: Combine all extracted parameters into a comprehensive, natural-flowing description that captures the essence of the user's vision.

Quality Checklist (Validate BEFORE Generation)

Before running the generation command, verify the prompt meets these criteria:

MUST HAVE:

  • Specific genre (NOT "pop song" but "synth-pop, 2020s")
  • BPM or tempo descriptor (e.g., "120 BPM" or "slow groove")
  • 3-5 instruments explicitly named
  • Mood/emotion descriptors (2-3 words)
  • Vocal style (or "instrumental only")
  • Structure tags in lyrics: [Verse], [Chorus], [Bridge], [Outro]

WATCH OUT FOR:

  • Vague terms: "nice", "good", "beautiful" → replace with specific descriptors
  • Contradictions: "slow" + "energetic", "sad" + "uplifting" → pick one direction
  • Too short: <50 chars → add more detail
  • Long lyric lines: >10 words per line → split into shorter lines
  • No dynamic arc: add mood progression (e.g., "sparse → building → full")

AVOID:

  • Command verbs: "create a song" → use descriptions "upbeat pop song"
  • Famous artist names: "sounds like Taylor Swift" → describe qualities instead
  • Unrealistic combos: melody_id cannot combine with other control options

After validation, present the generated prompt to the user for confirmation before proceeding.


Core Workflow: Production Pipeline

1. Conceptualize → User describes in natural language → YOU convert to structured prompt
2. Validate → Check prompt quality against Quality Checklist (see above)
3. Write Lyrics → Use lyrics/generate or write manually
4. Upload References → Optional: reference track, vocal sample, melody
5. Generate → Submit song/instrumental task (async) with validated prompt
6. Evaluate → Listen to all N choices, pick best
7. Iterate → Refine prompt based on what you heard

Critical Steps:

  • Step 1 is mandatory when user provides natural language input (especially non-English)
  • Step 2 validation prevents 80% of common generation failures
  • Step 3: Read references/prompt_guide.md for prompt crafting examples, lyrics structure rules (line length, syllable count, rhyme patterns, hook writing), and iteration best practices
  • Do NOT skip conceptualization — jumping straight to generation without a clear concept is the #1 reason for generic results

Your Role as AI Assistant:

  1. Convert user's natural language → structured Mureka prompt (using Smart Prompt Conversion)
  2. Validate prompt quality → flag issues → suggest fixes
  3. Write or generate lyrics with proper structure
  4. Present prompt to user for confirmation
  5. Execute generation command with validated prompt
  6. Help iterate and refine based on generation results

CLI Tool

All operations go through a single script: scripts/mureka.py

mureka.py song           Generate a song with lyrics and vocals
mureka.py instrumental   Generate an instrumental track
mureka.py lyrics         Generate or extend lyrics
mureka.py upload         Upload reference audio, vocals, melodies

Run python scripts/mureka.py --help for full usage. Note: use -n 2 (single dash) to generate multiple choices, not --n.


Common Scenarios

"I just want background music for my video"

bash
python scripts/mureka.py instrumental \
  --prompt "ambient electronic, calm, 80 BPM, soft pads, no percussion, background music for tech product video" \
  --output ./bg_music

"I want a song but don't have lyrics"

bash
# Step 1: Generate lyrics with proper structure
python scripts/mureka.py lyrics generate "a nostalgic summer love song, bittersweet, looking back at memories"

# Step 2: Copy/refine the output, then generate the song
python scripts/mureka.py song \
  --lyrics "[Verse]\n(paste lyrics here)\n[Chorus]\n(paste chorus here)" \
  --prompt "indie pop, warm, 110 BPM, acoustic guitar, soft drums, male vocal" \
  --output ./summer_song

Advanced Features

Reference-Based Generation

Upload a reference track (must be exactly 30s, mp3/m4a) to guide the style:

bash
python scripts/mureka.py upload my_reference.mp3 --purpose reference
# → File ID: 542321
python scripts/mureka.py song --lyrics "[Verse]\n..." --reference-id 542321 --output ./song

Vocal Cloning

Upload a vocal sample (15-30s, mp3/m4a) to use a specific voice:

bash
python scripts/mureka.py upload my_voice.mp3 --purpose vocal
# → File ID: 789012
python scripts/mureka.py song --lyrics "[Verse]\n..." --vocal-id 789012 --prompt "R&B, smooth, 90 BPM" --output ./song

Control Options & Rules

Song Generation Control Combos

When generating songs, these control options work together:

Combopromptreference_idvocal_idmelody_id
Style only✅
Reference only✅
Voice only✅
Melody only✅
Style + Voice✅✅
Reference + Voice✅✅

Important:

  • melody_id does NOT support any combination — use it alone
  • prompt and reference_id are mutually exclusive — use one or the other

Instrumental Generation Rules

For instrumentals, prompt and instrumental_id are mutually exclusive — use one or the other.

File Upload Requirements

PurposeFormatDurationNotes
referencemp3/m4aexactly 30sExcess trimmed
vocalmp3/m4a15-30sExcess trimmed
melodymp3/m4a/mid5-60sMIDI recommended
instrumentalmp3/m4aexactly 30sFor instrumental reference

Model Selection

Always use mureka-8 — it is the latest and highest quality model.


Error Handling

Scripts raise RuntimeError or requests.HTTPError on failure. Handle common errors:

ErrorCauseAction
401 UnauthorizedInvalid or expired API keyAsk user to verify MUREKA_API_KEY
429 Too Many RequestsRate limit exceededWait 30-60 seconds, then retry
402 / Insufficient balanceAccount balance depletedDirect user to https://platform.mureka.ai to top up
Task ended with status: failedGeneration failed (bad prompt, server error)Check prompt against Quality Checklist, retry
Task ended with status: timeoutedGeneration took too longRetry; if persistent, simplify the prompt or try a different model
ConnectionError / TimeoutNetwork issueRetry after a few seconds

General strategy: Read the error message carefully. If it's a client error (4xx), fix the input. If it's a server error (5xx) or timeout, retry once before escalating to the user.


Troubleshooting Common Issues

ProblemSolution
Task failed or timeouted• Check prompt meets quality checklist• Verify lyrics have structure tags• Retry the generation
Vocals sound rushed• Shorten lyric lines (≤10 words)• Reduce syllables per line
Listed instruments not audible• Verify each instrument named explicitly in prompt• Add more specific descriptors (e.g., "acoustic guitar strumming")
Prompt doesn't match output• Increase specificity (exact genre, BPM, instruments)• Add mood progression ("sparse → full")• Generate n=3 choices
melody_id error• melody_id MUST be used alone• Remove --prompt, --reference-id, --vocal-id
Invalid file_id• File IDs only valid for account that uploaded• Re-upload file if from another session

For parameter help:

bash
python scripts/mureka.py --help
python scripts/mureka.py song --help

Environment

  • API Key: MUREKA_API_KEY environment variable (required)
  • Base URL: https://api.mureka.ai
  • Dependencies: Python 3, requests library
  • Billing: Check balance with curl -H "Authorization: Bearer $MUREKA_API_KEY" https://api.mureka.ai/v1/account/billing

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Skywork Music Maker AI skill do?

Create professional music with Mureka AI API — songs, instrumentals, and lyrics from natural language descriptions in any language. Use when users want to generate a song, create a beat or instrumental, write lyrics, clone vocals, upload reference tracks, or do anything related to AI music creation, even casual requests like "make me a chill lo-fi beat".

Why use Skywork Music Maker on TypingMind?

Because you install it once and use it with any model. Skywork Music Maker is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Skywork Music Maker in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/SkyworkAI/Skywork-Skills/tree/main/skywork-music-maker. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Skywork Music Maker?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Skywork Music Maker?

As many as you like. As long as a model supports skills, you can use Skywork Music Maker with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Skywork Music Maker AI skill free?

Yes. It is published on GitHub by SkyworkAI under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇