Skip to main content

creative-studio

Generate and edit media through the connected ElevenLabs MCP server — speech, images, video, music, and transcription. Use when the user asks to generate a voiceover, image, video, or soundtrack, edit an image, or transcribe audio directly, rather than writing application code. Requires the ElevenLabs MCP server bundled with this plugin.

Source facts

Repository
elevenlabs/plugin
Last source activity
August 28, 2026 at 17:10
Detected SKILL.md language
English
Stars
3
Forks
4

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
creative-studio
description
Generate and edit media through the connected ElevenLabs MCP server — speech, images, video, music, and transcription. Use when the user asks to generate a voiceover, image, video, or soundtrack, edit an image, or transcribe audio directly, rather than writing application code. Requires the ElevenLabs MCP server bundled with this plugin.
license
MIT
# ElevenLabs Creative Studio (via MCP) Workflow guidance for the `creative_*` tools on the ElevenLabs MCP server. Every tool takes a `context` parameter — briefly state the user's goal in it. For building media features into the user's own codebase (SDK, API), use the general skills instead (`text-to-speech`, `music`, `sound-effects`, `speech-to-text`). ## How generations work - `creative_generate_speech`, `creative_generate_image`, and `creative_generate_video` return immediately with a `flow_id`, `node_id`, `session_ids`, and a canvas `url` the user can open to keep editing. If the result doesn't render in a view, poll `creative_get_flow_run_status` until `all_completed` or `has_failures` is true. - **Generations spend credits.** Pass `estimate_only: true` to price a long video or a batch of variations before committing. Never call a generation tool a second time to "retry" — that starts and charges a second generation. - `generations_count` defaults to 4 variations so the user can pick; keep the default unless they ask for a specific number. ## Speech - `voice_id` is required and only ever comes from `creative_list_voices` (or the user) — never from memory. Pick a voice matching what the user described; if they gave no hint, pick a clear general-purpose voice rather than asking. - Default model: `eleven_multilingual_v2`. Use `eleven_v3` when the script uses inline audio direction tags like `[whispering]` or `[laughs softly]`. ## Images - Default model: `gemini-2.5-flash-image`. Pick by need: `gpt-image-2` for rendered text, infographics, UI mockups, or reference-driven edits; `flux-2-pro` for fine detail and strict prompt adherence. - `creative_get_flow_node_types` lists what the workspace can run; `creative_get_model_guide` explains how to prompt a specific model. ## Flows: combining generations - Nodes on different flows cannot be connected. When one generation feeds another (lipsync, a voiceover over video), call `creative_create_flow` first and pass that `flow_id` to every related call. - Wire upstream nodes with `connect_from`. A `node_id` only ever comes from a tool result or `creative_get_flow` — never invent one. - `creative_edit_image` requires `connect_from`: a node from an earlier generation on the same flow, a library asset, or an upload. ## Reference files and transcription - For a file already reachable (attached to the conversation, or a direct link): `creative_attach_reference_file` — returns a node with content. - For a file on the user's machine: `creative_upload_flow_reference` — the node stays empty until the user picks a file, so confirm it has an asset (via `creative_get_flow`) before generating from it. - Transcribe with `creative_transcribe_audio`, passing the audio node's id as `connect_from`; without it, a picker handles upload and transcription on its own — don't call the tool again or poll while it's open.
View on GitHub