pp-suno
The correct, offline-first Suno CLI — every feature the abandoned clients have, plus a local SQLite library Trigger phrases: `generate a song with suno`, `make music with suno`, `search my suno library`, `download my suno tracks`, `download a wav from suno`, `organize my suno tracks into a workspace`, `what are my top suno songs`, `use suno`, `run suno`.
What this skill does
<!-- GENERATED FILE — DO NOT EDIT.
This file is a verbatim mirror of library/media-and-entertainment/suno/SKILL.md,
regenerated post-merge by tools/generate-skills/. Hand-edits here are
silently overwritten on the next regen. Edit the library/ source instead.
See the repository agent guide, section "Generated artifacts: registry.json, cli-skills/". -->
# Suno — Printing Press CLI
## Prerequisites: Install the CLI
This skill drives the `suno-pp-cli` binary. **You must verify the CLI is installed before invoking any command from this skill.** If it is missing, install it first:
1. Install via the Printing Press installer. It defaults binaries to `$HOME/.local/bin` on macOS/Linux and `%LOCALAPPDATA%\Programs\PrintingPress\bin` on Windows:
```bash
npx -y @mvanhorn/printing-press-library install suno --cli-only
```
2. Verify: `suno-pp-cli --version`
3. Ensure the reported install directory is on `$PATH` for the agent/runtime that will invoke this skill.
If the `npx` install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.4 or newer). This installs into `$GOPATH/bin` (default `$HOME/go/bin`), so add that directory to `$PATH` instead:
```bash
go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/suno/cmd/suno-pp-cli@latest
```
If `--version` reports "command not found" after install, the runtime cannot see the binary directory on `$PATH`. Do not proceed with skill commands until verification succeeds.
Suno has no official API and every reverse-engineered client is abandoned and wrong in ways that matter today: broken pagination, broken cover, stale pre-2026 auth, no local persistence. This CLI is built from the current contract. It walks the real opaque feed cursor, sends the now-required cover title, tolerates the drifted billing schema, authenticates against the current auth.suno.com Clerk flow via your logged-in browser, and persists your whole library to local SQLite for offline grep, SQL, lineage, and analytics. Generate, extend, cover, remaster, stems, lyrics, WAV download, and workspaces, all with --json, --select, --dry-run, and typed exit codes.
## When to Use This CLI
Use this CLI when an agent or script needs to generate Suno music programmatically, manage and search a personal Suno library offline, or run reproducible generate/poll/download pipelines with typed exit codes and JSON output. It is the right choice over the abandoned community wrappers because it tracks the current Suno contract and persists everything locally.
## Unique Capabilities
These capabilities aren't available in any other tool for this API.
### Local library no Suno tool has
- **`grep`** — Find clips by remembered lyric, prompt, or tag phrases via local full-text search.
_Reach for this when an agent needs to locate a specific past song by its content, not its title._
```bash
suno-pp-cli grep "rain" --json --select id,title,tags
```
- **`analytics`** — Grouped roll-ups across your whole library: counts, average duration/bpm, total plays and upvotes by any clip field.
_Use this to see which models or settings produced your most-played tracks before the next session._
```bash
suno-pp-cli analytics --type clips --group-by model_name --json
```
- **`lineage`** — Render the iteration tree of a track: its extends, covers, and remixes, reconstructed from local links.
_Reach for this to trace which seed a finished song descended from across many variations._
```bash
suno-pp-cli lineage 7d869de4-9476-4a4d-a6f2-c0eec968a3e2 --json
```
- **`top`** — Ranked flat list of your best clips by plays, upvotes, or duration, with machine-readable output.
_Use this to pipe your strongest tracks into a publishing or playlist workflow._
```bash
suno-pp-cli top --by upvote_count --limit 10 --json
```
- **`sql`** — Run read-only SQL directly against your local synced clip store.
_Reach for this when an agent needs an arbitrary query no fixed command covers._
```bash
suno-pp-cli sql "SELECT title, duration FROM clips WHERE make_instrumental = 1 ORDER BY duration DESC LIMIT 5" --json
```
### Reachability awareness
- **`credits --forecast`** — Remaining credits plus your recent generation volume measured against Suno's captcha-throttle threshold.
_Use this before a batch session to judge how many more generations you can run before hCaptcha kicks in._
```bash
suno-pp-cli credits --forecast --json
```
## Command Reference
**billing** — Account credits, plan, and available models
- `suno-pp-cli billing` — Show credits, plan, and models
- `suno-pp-cli billing eligible-discounts` — Show discounts you're eligible for
- `suno-pp-cli billing usage-plan` — Show the plan comparison table
- `suno-pp-cli billing usage-plan-faq` — Show plan/usage FAQ
**clips** — Your Suno songs (clips) — list, fetch, manage
- `suno-pp-cli clips list` — List your library (walks the opaque next_cursor; use --all to drain). Shows a `workspace` column from the local membership index.
- `suno-pp-cli clips get` — Fetch clip(s) by ID (comma-separated; Suno batches 2 at a time)
- `suno-pp-cli clips set <clip_id>` — Update a clip's title, caption, or lyrics
- `suno-pp-cli clips publish <clip_id>` — Toggle a clip public or private
- `suno-pp-cli clips delete <clip_id>…` — Trash (or, with `--undo`, restore) one or more clips
- `suno-pp-cli clips timed-lyrics <clip_id>` — Word-level timestamped lyrics for a clip
- `suno-pp-cli clips stems <clip_id>` — Separate a clip into stems (vocals + instruments)
- `suno-pp-cli clips convert-wav <clip_id>` — Trigger WAV (lossless) conversion (Pro/Premier); poll wav-url
- `suno-pp-cli clips wav-url <clip_id>` — Get the WAV download URL (null until conversion finishes)
- `suno-pp-cli clips attribution <clip_id>` — Show a clip's sample/attribution info
- `suno-pp-cli clips comments <clip_id>` — List comments on a clip
- `suno-pp-cli clips parent <clip_id>` — Show a clip's parent (the clip it was derived from)
- `suno-pp-cli clips similar <clip_id>` — Find clips similar to a given clip
- `suno-pp-cli clips direct-children-count <clip_ids>` — Count direct children (extends/covers)
**generate** — Music, lyrics, and video generation jobs
- `suno-pp-cli generate create` — Generate a custom song from lyrics (captcha-gated). `--variation high|normal|subtle`, `--project <id>`.
- `suno-pp-cli generate describe` — Description-driven (inspiration) generation. `--variation`, `--instrumental`.
All captcha-gated generate commands accept `--wait-for-gate` (with `--gate-timeout`, default 30m): when Suno's adaptive gate is tripped (HTTP 422 `token_validation_failed`), the command backs off and retries until the gate reopens or the timeout elapses. Off by default. It composes with the auto-solver — the solver runs first and `--wait-for-gate` rides out any residual gate, while under `--no-captcha` it drives the passive, no-browser fallback on its own. In `--agent`/JSON mode a gate failure is emitted as a structured envelope on stdout with `error_type: "captcha_required"` and `retriable: true`, so agents branch on a field rather than parsing prose.
- `suno-pp-cli generate extend <clip_id>` — Extend a clip from a timestamp
- `suno-pp-cli generate cover <clip_id>` — Cover / restyle a clip
- `suno-pp-cli generate remaster <clip_id>` — Remaster a clip
- `suno-pp-cli generate concat` — Finalize/concatenate an extended clip into a full song
- `suno-pp-cli generate lyrics` — Submit a lyrics-generation job (returns an id to poll)
- `suno-pp-cli generate lyrics-status <id>` — Poll a lyrics-generation job by id
- `suno-pp-cli generate video-status <id>` — Check video-generation status for a clip
**persona** — Voice personas
- `suno-pp-cli persona get <persona_id>` — View a voice persona
- `suno-pp-cli persona usage` — Show how many clips use each persona (and which are orphans)
**project** — Workspaces (Suno 'projects') — organize your tracks into collectiRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.