Open-source skills and tools for our AI-karaoke platform (currently belto.music). MIT licensed, community-friendly, and safe to run yourself. Everything here is client-side tooling that you run on your own accounts.
One command to bring your Suno songs onto the platform: the mixed track, the full stem set (Suno's 12-track split), and the lyrics / style / caption. The instrumental backing + guide vocal are derived server-side from the stems, so the tool just fetches and uploads. Already-stemmed songs import for zero credits.
cp .env.example .env # fill in your two tokens (see below)
node bin/suno-import.mjs --limit 5 # your 5 newest songs
node bin/suno-import.mjs <sunoSongId> … # or specific songsRequires Node 20+ and a paid Suno plan (stems are Pro/Premier). No
dependencies — it uses Node's built-in fetch/FormData.
SUNO_CLIENT_TOKEN— your Suno__clientcookie. Sign in to suno.com, open DevTools → Application → Cookies →https://suno.com, copy the__clientvalue. It is your own session token, so keep it private and never commit it; it rotates, so refresh it if calls start returning 401. (This is the same value the community's bulk-downloaders and Chrome extensions capture.)BELTO_TOKEN— a Belto API token (blt_…), minted in your Belto profile under "API tokens".
Layout:
skills/suno-import/SKILL.md— the Claude Code skill definition.src/suno.mjs— Suno client (auth + library + stems), talks to your own session.src/belto.mjs— Belto ingest client (POST /api/v1/ingest).src/import.mjs— the orchestration;bin/suno-import.mjs— the CLI.
- Personal automation, your own account. These tools use your own session and act on your own content. Not a scraper; not for anyone else's account.
- Unofficial Suno API. Suno has no official public API. The Suno client here talks to Suno's undocumented internal endpoints, which can change at any time and may need occasional upkeep. Contributions welcome.
- Bring your own keys. You supply your own tokens. Nothing here stores or transmits your credentials to us.
- Stems cost credits / need a paid plan. The tool checks up front.
Working, lightly seasoned. The Suno endpoints, plan check (get_stems), library
shape, and 12-track stem labels were validated against a live Premier account,
and the platform-side ingest + backing derivation are tested end to end. The one
path still to be exercised on a real machine is the Node → Suno Clerk auth (the
in-browser session confirmed the endpoints; the JWT mint runs with your token).
If something's off, it'll be an endpoint or field-name detail in src/suno.mjs.
Suno endpoint knowledge was informed by prior open-source work, notably gcui-art/suno-api (LGPL-3.0) and SunoAI-API/Suno-API (MIT). This is an independent implementation (no code copied); we learned which endpoints exist, which are facts, and wrote our own client.
MIT.