Save To Spotify
Create polished audio content and save to Spotify. Produces episodes with TTS narration, a rich timeline (chapters plus in-player images, external links, and... Skill: Save To Spotify Owner: spotify Summary: Create polished audio content and save to Spotify. Produces episodes with TTS narration, a rich timeline (chapters plus in-player images, external links, and... Tags: latest:0.2.0 Version history: v0.2.0 | 2026-07-20T09:12:21.820Z | auto save-to-spotify v0.2.0 - Added comprehensive onboarding documentation and flow for first-time users ($1), enabling guided setup if the
Rank
62
Safety
84
Downloads
1.4k
Updated
Oct 10, 2026
Version
0.2.0
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.4K downloads reported by the source. Last updated 10/10/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 10, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 10, 2026
- Adoption signal
- 1.4K downloadsadoption · observed Oct 10, 2026
- Latest release
- 0.2.0release · observed Jul 20, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s178q1njn7prgvajksxt46zez58649bp:save-to-spotify- Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-spotify-save-to-spotify/snapshot"
Documentation
CLAWHUB
146,108 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
--- id: save-to-spotify name: save-to-spotify description: Create polished audio content and save to Spotify. Produces episodes with TTS narration, a rich timeline (chapters plus in-player images, external links, and Spotify entity cards), and a cover image. Also use for raw media saves, show/episode management, and timeline navigation. enabled: true --- # Audio Content Production Skill `save-to-spotify` saves audio files to the user's Spotify library. Anything they can play locally — lecture recordings, voice memos, conference talks, language lessons — they can save to Spotify and listen from any device. Shows are folders for organizing saves. You are a podcast and audio content production agent. You create polished audio episodes from a variety of sources and formats, produce them with a rich in-player timeline (chapters plus image, link, and Spotify entity companions that appear during playback in the Now Playing View), and save to Spotify. This skill defines the **shared production pipeline** — core principles, the user interview checkpoint, and the execution checklist. ## Reference Directory These files cover the detailed rules. Load the one you need — don't inline them. - [references/cli-usage.md](references/cli-usage.md) — Binary install, auth, `upload`/`shows`/`episodes`/`timeline` commands, JSON mode, error handling, troubleshooting, and common end-to-end workflows - [references/spotify-api.md](references/spotify-api.md) — Using `developer.spotify.com/llms.txt`, the Spotify Web API OpenAPI spec, and the CLI's token to resolve album / track / artist / playlist / show / episode names to `spotify:...` URIs for `spotify_entity` timeline companions - [references/audio-providers.md](references/audio-providers.md) — TTS engine selection, voice config, ffmpeg assembly, silence generation, timeline timestamp calculation - [references/cover-image.md](references/cover-image.md) — Cover image paths (user-provided, AI-generated, CDN artwork), typography rules, font & RTL, Pillow compositing recipe - [references/timeline.md](references/timeline.md) — Timeline data model, validation rules, companion images (sourced / AI-generated / mixed / skip), including DALL-E / Stable Diffusion code and batch generation - [references/episode-description.md](references/episode-description.md) — HTML description format, Python builder from `timeline.json`, formatting rules - [references/content-quality.md](references/content-quality.md) — Editorial guidelines: voice, transitions, person context, depth control, visual description, pacing, self-critique --- ## Install If `save-to-spotify` is not available on `PATH`, ask the user to confirm CLI installation first, then install it: ```shell curl -fsSL https://saveto.spotify.com/install.sh | bash ``` On Windows, run this in **Git Bash** (ships with Git for Windows) — it installs `save-to-spotify.exe` to `~/.local/bin`. The unsigned .exe may trigger a SmartScreen prompt on first run; unblock with `Unblock-File
_meta.json
{
"ownerId": "kn73w4eqhcyrcqet64x9rz87a184g2fx",
"slug": "save-to-spotify",
"version": "0.2.0",
"publishedAt": 1784538741820
}references/audio-providers.md
# Audio Providers & Assembly
Reference for generating speech and assembling audio files for saving via `save-to-spotify`. The user picks their own TTS engine and voice — this documents how to use each one.
Tell the user:
> The skill produces audio content that may be distributed via a streaming platform.
> Every episode must be grounded in content you have the right to reproduce in this form.
## Production pipeline
Every episode walks the same steps. Recipes define what to write (sourcing, scripting, segment map). This reference covers generation and assembly.
1. Generate TTS audio per segment (one file each for exact chapter timing)
2. Generate silence files for transitions (300ms minimum between segments, 500ms+ between major shifts)
3. Concatenate all segments into a single MP3
4. Normalize volume levels
5. Calculate chapter timestamps from cumulative segment durations
6. Build `timeline.json` with chapters, Spotify entity companions, external link companions, and image companions (see [timeline.md](timeline.md))
**Accepted formats:** `.mp3`, `.m4a`, `.wav`, `.ogg` (max 1 GB). Default to `.mp3`. Convert anything else with ffmpeg before upload — see "Convert formats" below.
### Voice selection guide
- **Kokoro** (local, free): suggest the recipe's default voice first (the `Kokoro voice` row in [recipes.md](recipes.md)); full voice list in the Kokoro section below
- **ElevenLabs** (high quality, paid): Amelia, George, Bella
- **Edge TTS** (free, 300+ voices): `en-US-AriaNeural` (F), `en-US-GuyNeural` (M)
- **OpenAI TTS** (high quality, paid): `nova`, `alloy`, `echo`, `onyx`
### Multi-voice / bilingual segments
Default to one voice per episode, but when the content is bilingual, role-played, or otherwise needs multiple voices, use a part-based segment schema and a flattened render manifest.
Example source schema:
```json
{
"segments": [
{
"title": "Swedish intro",
"parts": [
{"lang": "sv", "voice": "sv-SE-SofieNeural", "text": "Hej och valkommen."},
{"lang": "en", "voice": "en-GB-LibbyNeural", "text": "Welcome back to the show."}
]
}
]
}
```
Flatten that into a render manifest before synthesis:
```json
[
{"segment_index": 0, "part_index": 0, "lang": "sv", "voice": "sv-SE-SofieNeural", "text": "Hej och valkommen.", "out": "seg_00_00.mp3"},
{"segment_index": 0, "part_index": 1, "lang": "en", "voice": "en-GB-LibbyNeural", "text": "Welcome back to the show.", "out": "seg_00_01.mp3"}
]
```
Concatenate manifest outputs in order, then compute chapter timestamps from the flattened audio segments.
## Provider selection
Whenever offering Kokoro to the user, include its license — [Apache-2.0](https://raw.githubusercontent.com/hexgrad/kokoro/refs/heads/main/LICENSE) — as a clickable link in the **question text**, where markdown renders. Never put the link inside choice option labels: those render as plain text and the raw URL is unreadable.
When a content creation recipe is triggered and nreferences/cli-usage.md
# Save to Spotify ## CLI Usage Reference for the `save-to-spotify` binary: installation, authentication, commands, flags, JSON mode, error handling, and common agent workflows. ## Installation ### One-line install (recommended) ```shell curl -fsSL https://saveto.spotify.com/install.sh | bash ``` Detects OS and architecture, downloads the binary from GitHub Releases, verifies the SHA256 checksum, and installs to `/usr/local/bin` (or `~/.local/bin` if not writable). Pin a version or change the install directory: ```shell # Specific version curl -fsSL https://saveto.spotify.com/install.sh | bash -s -- --version 0.2.0 # Custom directory curl -fsSL https://saveto.spotify.com/install.sh | bash -s -- --dir ~/.local/bin # Via environment variables SAVE_TO_SPOTIFY_VERSION=0.2.0 SAVE_TO_SPOTIFY_INSTALL_DIR=~/.local/bin \ curl -fsSL https://saveto.spotify.com/install.sh | bash ``` ### Download a binary manually Grab the latest release for the platform from [releases](https://github.com/spotify/save-to-spotify/releases): ```shell # macOS Apple Silicon gh release download --repo spotify/save-to-spotify --pattern "save-to-spotify-darwin-arm64" chmod +x save-to-spotify-darwin-arm64 sudo mv save-to-spotify-darwin-arm64 /usr/local/bin/save-to-spotify # macOS Intel gh release download --repo spotify/save-to-spotify --pattern "save-to-spotify-darwin-amd64" chmod +x save-to-spotify-darwin-amd64 sudo mv save-to-spotify-darwin-amd64 /usr/local/bin/save-to-spotify # Linux x86_64 gh release download --repo spotify/save-to-spotify --pattern "save-to-spotify-linux-amd64" chmod +x save-to-spotify-linux-amd64 sudo mv save-to-spotify-linux-amd64 /usr/local/bin/save-to-spotify ``` ### Build from source Requires Go 1.21+. ```shell git clone https://github.com/spotify/save-to-spotify.git && cd save-to-spotify go build -ldflags "-X github.com/spotify/save-to-spotify/cmd.commit=$(git rev-parse --short HEAD)" \ -o save-to-spotify . sudo mv save-to-spotify /usr/local/bin/ ``` Verify installation: ```shell save-to-spotify version ``` ## First-run setup After installation, run the guided setup to authenticate and detect TTS engines: ```shell save-to-spotify setup ``` This handles auth + TTS detection in one pass. It auto-detects headless environments and uses the appropriate auth flow. After setup, verify everything is ready: ```shell save-to-spotify doctor ``` Reports binary, auth, TTS engines, and ffmpeg status. In JSON mode (`--json`), returns a structured report for agents to use as a preflight check. ## TTS engine management The CLI detects and manages TTS engines used for audio generation: ```shell # Check which engines are available save-to-spotify tts status # Install Kokoro (free, local, no API key) save-to-spotify tts setup # Install or configure a specific engine save-to-spotify tts setup --engine openai # List voices for an engine save-to-spotify tts voices --engine kokoro # Test a voice with a sample phrase save-to-spotify tts test --
references/content-quality.md
# Content Quality & Editorial Guidelines Reference for writing scripts that sound good when spoken aloud. Applies to all content recipes. Audio content has different constraints than written content — these guidelines encode production learnings from hundreds of generated episodes. ## The golden rule: write for the ear Text is forgiving. Readers can re-read a sentence, scan ahead, or slow down. Audio is linear and unforgiving — if the listener misses something, it's gone. Every line must land on first hearing. ## Voice and tone ### Match voice to format | Format | Voice | Energy | |--------|-------|--------| | Factual summary | Sharp analyst | Confident, declarative, varied energy per segment | | Travel guide | Well-traveled friend | Conversational, specific, enthusiastic but honest | | Explainer | Patient teacher | Clear, builds from simple to complex | | Daily briefing | Briefing companion | Brisk, clear, energetic | | Language lesson | Encouraging tutor | Patient, repetitive, affirming | ### Universal voice principles - **Declarative beats tentative.** "This matters because..." not "This could potentially be interesting..." - **Concrete beats abstract.** "They're trying to lock in developers" not "they're enhancing ecosystem engagement" - **Short beats long.** Mix short punchy sentences with longer analytical ones. Never more than two long sentences in a row - **Active beats passive.** "Sweden cut Chinese research ties" not "Chinese research ties were cut by Sweden" - **Specific beats vague.** "Expect to pay 15 euros for a main course" not "food is reasonably priced" ## Transitions between segments This is the single most important audio production skill. **Listeners cannot see segment boundaries.** Without clear verbal signals, segments blur together into mush. Every segment must open with a clear transition. Vary these — using the same transition every time is as bad as having none: - **Subject lead:** "Keychron just open-sourced their hardware..." / "The housing market is shifting..." - **Framing hooks:** "This is huge." / "Here's what caught my eye." / "Quick note:" - **Topic shifts:** "On the security side..." / "Turning to the economy..." - **Related bridges:** "That same dynamic is playing out in..." - **Simple transitions:** "Moving on." / "Meanwhile..." / "Next up..." - **Travel transitions:** "From there, head south to..." / "After lunch, the plan takes you to..." - **Time markers:** "Back in 1927..." / "Fast forward to today..." ## Person context When introducing someone by name, briefly explain WHO they are. Listeners don't have hyperlinks — they can't look someone up mid-sentence. - "Marie Curie, the first person to win Nobel Prizes in two sciences..." - "Ada Lovelace, the 19th-century mathematician often called the first computer programmer..." - "John Constable, one of England's greatest landscape painters..." One clause, not a bio. If the person isn't well-known, anchor them to something the listener knows, but
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/spotify/skills/save-to-spotify",
"sourceUrl": "https://clawhub.ai/spotify/skills/save-to-spotify",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T11:58:02.991Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-spotify-save-to-spotify/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-spotify-save-to-spotify/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-10T11:58:02.991Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.4K downloads",
"href": "https://clawhub.ai/spotify/save-to-spotify",
"sourceUrl": "https://clawhub.ai/spotify/save-to-spotify",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T11:58:02.991Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "0.2.0",
"href": "https://clawhub.ai/spotify/save-to-spotify",
"sourceUrl": "https://clawhub.ai/spotify/save-to-spotify",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-07-20T09:12:21.820Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-spotify-save-to-spotify/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-spotify-save-to-spotify/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 0.2.0",
"description": "## save-to-spotify v0.2.0 - Added comprehensive onboarding documentation and flow for first-time users ([references/onboarding.md](references/onboarding.md)), enabling guided setup if the user is new or requests onboarding, regardless of existing shows. - Introduced [references/local-preview.md](references/local-preview.md), covering previewing and validating episodes before upload. - Included [references/recipes.md](references/recipes.md) detailing voice and pipeline defaults by content type. - Updated the user interview: streamlined to only ask what is missing, with sensible defaults for language, length, voice, cover image, and companion images. - Expanded installation instructions with clearer Windows support and SmartScreen details. - Removed outdated skill-card documentation; reorganized and updated references for clarity and maintainability.",
"href": "https://clawhub.ai/spotify/save-to-spotify",
"sourceUrl": "https://clawhub.ai/spotify/save-to-spotify",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-07-20T09:12:21.820Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
