Initial Commit

+11
CLI/Commands/albums.md
··· 1 + get the user's top albums. 2 + 3 + ```bash 4 + rocksky albums [options] [did] 5 + ``` 6 + 7 + ### Example 8 + 9 + ```bash 10 + rocksky albums did:plc:7vdlgi2bflelz7mmuxoqjfcr 11 + ```
+11
CLI/Commands/artists.md
··· 1 + get the user's top artists. 2 + 3 + ```bash 4 + rocksky artists [options] [did] 5 + ``` 6 + 7 + ### Example 8 + 9 + ```bash 10 + rocksky artists did:plc:7vdlgi2bflelz7mmuxoqjfcr 11 + ```
+11
CLI/Commands/create apikey.md
··· 1 + create a new API key. 2 + 3 + ```bash 4 + rocksky create apikey [options] <name> 5 + ``` 6 + 7 + ### Example 8 + 9 + ```bash 10 + rocksky create apikey -d "Used for my scrobbling bot" scrobbler-bot 11 + ```
+1
CLI/Commands/help.md
··· 1 + display help for command
+11
CLI/Commands/login.md
··· 1 + login with your BlueSky account and get a session token. 2 + 3 + ```bash 4 + rocksky login <handle> 5 + ``` 6 + 7 + ### Example 8 + 9 + ```bash 10 + rocksky login tsiry-sandratraina.com 11 + ```
+6
CLI/Commands/mcp.md
··· 1 + starts an MCP server to use with Claude or other LLMs 2 + 3 + ```bash 4 + rocksky mcp 5 + ``` 6 +
+11
CLI/Commands/nowplaying.md
··· 1 + get the currently playing track. 2 + 3 + ```bash 4 + rocksky nowplaying [did] 5 + ``` 6 + 7 + ### Example 8 + 9 + ```bash 10 + rocksky nowplaying did:plc:7vdlgi2bflelz7mmuxoqjfcr 11 + ```
+11
CLI/Commands/scrobble.md
··· 1 + scrobble a track to your profile. 2 + 3 + ```bash 4 + rocksky scrobble [options] <track> <artist> 5 + ``` 6 + 7 + ### Example 8 + 9 + ```bash 10 + rocksky scrobble "Karma Police" "Radiohead" 11 + ```
+11
CLI/Commands/scrobbles.md
··· 1 + display recently played tracks. 2 + 3 + ```bash 4 + rocksky scrobbles [options] [did] 5 + ``` 6 + 7 + ### Example 8 + 9 + ```bash 10 + rocksky scrobbles did:plc:7vdlgi2bflelz7mmuxoqjfcr 11 + ```
+11
CLI/Commands/search.md
··· 1 + search for tracks, albums, or accounts. 2 + 3 + ```bash 4 + rocksky search [options] <query> 5 + ``` 6 + 7 + ### Example 8 + 9 + ```bash 10 + rocksky seach "linkin park" 11 + ```
+11
CLI/Commands/stats.md
··· 1 + get the user's listening stats. 2 + 3 + ```bash 4 + rocksky stats [options] [did] 5 + ``` 6 + 7 + ### Example 8 + 9 + ```bash 10 + rocksky stats did:plc:7vdlgi2bflelz7mmuxoqjfcr 11 + ```
+11
CLI/Commands/tracks.md
··· 1 + get the user's top tracks. 2 + 3 + ```bash 4 + rocksky tracks [options] [did] 5 + ``` 6 + 7 + ### Example 8 + 9 + ```bash 10 + rocksky tracks did:plc:7vdlgi2bflelz7mmuxoqjfcr 11 + ```
+5
CLI/Commands/whoami.md
··· 1 + get the current logged-in user. 2 + 3 + ```bash 4 + rocksky whoami 5 + ```
+12
CLI/Overview.md
··· 1 + The Rocksky CLI is a command line interface that allows you scrobble tracks, view stats, and manage your listening history 2 + 3 + ## Installation 4 + 5 + ```bash 6 + npm install -g @rocksky/cli 7 + ``` 8 + You can also use the CLI without installing it globally by running `npx`: 9 + 10 + ```bash 11 + npx @rocksky/cli --help 12 + ```
+46
FAQ.md
··· 1 + Answers to common frequently asked questions. 2 + 3 + ## What is Rocksky? 4 + Rocksky is a decentralized, open-source (soon) music tracking and discovery platform built on the [AT Protocol](https://atproto.com). It works like [Last.fm](https://www.last.fm) but publishes your listening history directly to your Bluesky account. 5 + 6 + ## What are the supported players? 7 + Currently, Rocksky supports: 8 + 9 + - โœ… Spotify (via API) 10 + 11 + - โœ… any player with last.fm extension 12 + 13 + ## How do I sign up? 14 + You don't need to create a new account for Rocksky. All you need is a [Bluesky](https://bsky.app/) account. We use your Bluesky handle to associate and publish your listening activity using the AT Protocol. 15 + 16 + ## What is the AT Protocol? 17 + The AT Protocol (Authenticated Transfer Protocol) is an open, decentralized social networking protocol designed by the creators of Bluesky. It enables portable identities, composable data, and federation. 18 + 19 + Rocksky uses ATProto to publish your listening history to your own feed, making it discoverable and shareable across the decentralized social web. 20 + 21 + Learn more: https://atproto.com/ 22 + 23 + ## Is Rocksky open source? 24 + Not yet โ€” but it will be open source soon! You'll be able to self-host, build integrations, and contribute to the project via GitHub. 25 + 26 + Stay tuned for the launch announcement! 27 + 28 + ## How does Cloud Drive integration work? 29 + Rocksky lets you connect your Google Drive or Dropbox account to access and index your personal music collection stored in the cloud. Once connected, Rocksky scans your files and tracks your listening activity โ€” all tied to your Bluesky handle. 30 + 31 + ## Which cloud drives are supported? 32 + Currently, Rocksky supports: 33 + โœ… Google Drive 34 + โœ… Dropbox 35 + 36 + ## Is my data private? 37 + Yes. Your cloud drive data is never shared. Rocksky only scans audio files you give permission for and publishes listening activity (like "now playing" and scrobbles). Your actual music files stay private. 38 + 39 + ## Can I stream music directly from my cloud drive? 40 + Yes! Once your files are indexed, you can stream them directly from Google Drive or Dropbox through the Rocksky interface. 41 + 42 + ## Do I need to re-upload my music? 43 + No. As long as your music is already stored in Google Drive or Dropbox, Rocksky can access and play it โ€” no re-upload needed. 44 + 45 + ## Are you affiliated with Bluesky? 46 + No. Rocksky is an independent project built on top of the AT Protocol, the same protocol that powers Bluesky. We are not affiliated with or endorsed by Bluesky.
+47
How-Tos/How to Use Rocksky with Jellyfin.md
··· 1 + Rocksky now provides a **ListenBrainz-compatible scrobbling API**, allowing you to use the existing ListenBrainz plugin for Jellyfin with zero code changes, just a config update! 2 + 3 + ## Requirements 4 + 5 + - A running Jellyfin server 6 + - A Rocksky account 7 + - A Rocksky API Key from the [API Applications](https://rocksky.app/apikeys) page 8 + 9 + ## 1. Install the ListenBrainz Plugin for Jellyfin 10 + 11 + Use the community-maintained plugin: 12 + 13 + ### Plugin Repository: 14 + https://github.com/lyarenei/jellyfin-plugin-listenbrainz 15 + 16 + Once installed, go to: 17 + **Dashboard > Plugins > ListenBrainz > Settings** 18 + 19 + ## 2. Configure the Plugin to Use Rocksky 20 + 21 + Update the default ListenBrainz API URL and token: 22 + 23 + ### API URL: 24 + 25 + From: 26 + ``` 27 + https://api.listenbrainz.org 28 + ``` 29 + 30 + To: 31 + ``` 32 + https://audioscrobbler.rocksky.app 33 + ``` 34 + 35 + ### API Token: 36 + 1. Go to Rocksky [API Applications](https://rocksky.app/apikeys) 37 + 2. Create or copy your API Key 38 + 3. Paste it into the Token field in the plugin settings 39 + 40 + โœ… Save and restart the server if needed. 41 + 42 + 43 + ![Screenshot from 2025-05-24 15-50-39.png](https://api.apidog.com/api/v1/projects/821757/resources/355405/image-preview) 44 + 45 + ## 3. Verify Itโ€™s Working 46 + Start playing a track on Jellyfin 47 + Head to https://rocksky.app โ€” your recent scrobbles should appear in real time
+44
How-Tos/How to Use Rocksky with Kodi.md
··· 1 + Rocksky now supports the **ListenBrainz API**, so you can use [Kodi](https://kodi.tv/)'s built-in ListenBrainz scrobbler to track your listening directly to Rocksky โ€” no plugin modifications needed. 2 + 3 + ## Requirements 4 + - Kodi media center installed 5 + - A Rocksky account 6 + - A Rocksky API Key from the [API Applications](https://rocksky.app/apikeys) page 7 + 8 + ## 1. Install the ListenBrainz Add-on in Kodi 9 + 1. Open Kodi 10 + 2. Go to **Add-ons > Install from repository** 11 + 3. Select **Kodi Add-on repository** 12 + 4. Navigate to **Service Add-ons** 13 + 5. Search for **ListenBrainz Scrobbler** 14 + 6. **Click Install** 15 + 16 + Once installed, you'll see the plugin under **My Add-ons > Service Add-ons** 17 + 18 + 19 + ## 2. Configure the Plugin for Rocksky 20 + 1. Open the ListenBrainz plugin settings 21 + 2. Update the following: 22 + 23 + **API URL** 24 + Replace: 25 + ``` 26 + https://api.listenbrainz.org 27 + ``` 28 + With: 29 + ``` 30 + https://audioscrobbler.rocksky.app 31 + ``` 32 + **API Token** 33 + 1. Go to Rocksky [API Applications](https://rocksky.app/apikeys) page 34 + 2. Copy your API Key 35 + 3. Paste it into the Token field 36 + 37 + โœ… Save the settings and restart Kodi if needed. 38 + 39 + 40 + ![Screenshot from 2025-05-24 14-28-37.png](https://api.apidog.com/api/v1/projects/821757/resources/355406/image-preview) 41 + 42 + ## 3. Confirm Itโ€™s Working 43 + - Play any song in Kodi 44 + - Visit https://rocksky.app to see your recent scrobble
+65
How-Tos/Migrating from Listenbrainz to Rocksky.md
··· 1 + Rocksky now supports a **ListenBrainz-compatible API** for scrobbling! This means you can switch your existing [ListenBrainz](https://listenbrainz.org) integration to Rocksky in just a few simple steps. 2 + 3 + ## What You Need 4 + - A Rocksky account 5 + - A Rocksky API Key (you can generate one in the [API Applications](https://rocksky.app/apikeys) page) 6 + - A scrobbling app or script that supports the ListenBrainz API 7 + 8 + ## Step-by-Step Migration 9 + ### 1. Update the API URL 10 + Change the ListenBrainz API endpoint: 11 + 12 + From: 13 + 14 + ``` 15 + https://api.listenbrainz.org 16 + ``` 17 + To: 18 + 19 + ``` 20 + https://audioscrobbler.rocksky.app 21 + ``` 22 + 23 + ### 2. Replace the Authorization Token 24 + In ListenBrainz, you typically send a `Authorization: Token <token>` header. 25 + To switch to Rocksky: 26 + - Go to Rocksky [API Applications](https://rocksky.app/apikeys) 27 + - Copy your API Key 28 + - Use it as the token in the Authorization header: 29 + 30 + ``` 31 + Authorization: Token <rocksky_api_key> 32 + ``` 33 + 34 + ### 3. Test the Integration 35 + Try sending a test scrobble to: 36 + 37 + ``` 38 + POST https://audioscrobbler.rocksky.app/1/submit-listens 39 + Content-Type: application/json 40 + Authorization: Token <rocksky_api_key> 41 + ``` 42 + 43 + Example body: 44 + ```json 45 + { 46 + "listen_type": "playing_now", 47 + "payload": [ 48 + { 49 + "track_metadata": { 50 + "artist_name": "Daft Punk", 51 + "track_name": "Harder, Better, Faster, Stronger", 52 + "release_name": "Discovery" 53 + }, 54 + "listened_at": 1716541200 55 + } 56 + ] 57 + } 58 + ``` 59 + 60 + ## Notes 61 + - **Compatibility:** Rocksky mirrors the ListenBrainz API behavior for scrobbling (`/submit-listens, /validate-token`). 62 + 63 + 64 + - **Normalization**: Rocksky will attempt to normalize song metadata. If a match cannot be found, the scrobble may be skipped. 65 +
+79
How-Tos/Migrating to Rocksky Scrobble API.md
··· 1 + Rocksky offers a fully compatible implementation of the [Last.fm Audioscrobbler API](https://www.last.fm/api/show/track.scrobble) โ€” so you can seamlessly migrate your scrobbling apps or integrations to Rocksky by simply changing the API endpoint and credentials. 2 + 3 + ## Base URL 4 + 5 + Replace the Last.fm endpoint: 6 + 7 + ``` 8 + https://ws.audioscrobbler.com/2.0 9 + ``` 10 + 11 + With the Rocksky scrobble endpoint: 12 + 13 + ``` 14 + https://audioscrobbler.rocksky.app/2.0 15 + ``` 16 + 17 + ## Authentication 18 + 19 + - `api_key`: Your Rocksky API key (obtainable from your [Rocksky developer dashboard](https://rocksky.app/apikeys)). 20 + - `sk`: Your Rocksky session key (obtained after user authentication `rocksky login`) 21 + 22 + ## Legacy Last.fm API Compatibility 23 + Rocksky also supports older Last.fm clients using the legacy Audioscrobbler protocol (pre-2.0). You can use these legacy configurations in clients such as Deadbeef or older music players: 24 + 25 + ### Legacy API Config: 26 + 27 + | **Field** | **Value** | 28 + |---------------|-----------| 29 + | Username | Your Rocksky API key (obtainable from your [Rocksky developer dashboard](https://rocksky.app/apikeys)) | 30 + | Password | Your Rocksky shared secret (obtainable from your [Rocksky developer dashboard](https://rocksky.app/apikeys)) | 31 + | Scrobble URL | https://audioscrobbler.rocksky.app | 32 + 33 + โ„น๏ธ **Note**: Rocksky will also try to normalize songs metadata. If it cannot find a matching track, it will skip the scrobble. 34 + 35 + ## Example Scrobble Request 36 + 37 + **Method**: `POST` 38 + **URL**: `https://audioscrobbler.rocksky.app/2.0` 39 + **Headers**: `Content-Type: application/x-www-form-urlencoded` 40 + **Body** (as `x-www-form-urlencoded`): 41 + 42 + 43 + | **Parameter** | **Example Value** | 44 + |---------------|------------------------------------| 45 + | method | `track.scrobble` | 46 + | api_key | `YOUR_API_KEY` | 47 + | sk | `YOUR_SESSION_KEY` | 48 + | artist[0] | `Radiohead` | 49 + | track[0] | `Karma Police` | 50 + | timestamp[0] | `1744579159` | 51 + | api_sig | `532b7492411fdfcd79639b548b5ee8a8` | 52 + | format | `json` | 53 + 54 + ## Generating `api_sig` 55 + To compute the signature: 56 + 1. Sort all parameters (excluding api_sig and format) by key. 57 + 2. Concatenate key-value pairs (key1value1key2value2...). 58 + 3. Append your shared secret to the concatenated string. 59 + 4. MD5 hash the result. 60 + 61 + Example in pseudo-code: 62 + 63 + ```js 64 + const base = "api_keyAPI_KEYartist[0]Radioheadmethodtrack.scrobbleskSESSION_KEYtimestamp[0]1744579159track[0]Karma Police"; 65 + const sig = md5(base + shared_secret); 66 + ``` 67 + 68 + ## Migrating Your App 69 + To switch from Last.fm to Rocksky: 70 + 1. Change the API base URL. 71 + 2. Update your API key and session key (from `rocksky login`). 72 + 3. Use the same payload format and signature method. 73 + 4. Done! 74 + 75 + ## Why Switch to Rocksky? 76 + ๐Ÿ”„ Open Scrobble Infrastructure 77 + ๐Ÿ“Š Modern analytics and detailed stats 78 + ๐Ÿ” Built on top of [AT Protocol](https://atproto.com/) for portability 79 + ๐Ÿ”ง Compatible with existing Last.fm tools
+112
How-Tos/Use Rocksky with Claude Desktop.md
··· 1 + 2 + This guide will walk you through setting up Rocksky [MCP (Model Control Protocol)](https://modelcontextprotocol.io/introduction) and using it with [Claude Desktop](https://claude.ai/download) to interact with the Rocksky API. 3 + 4 + ![Screenshot from 2025-04-26 01-28-22.png](https://api.apidog.com/api/v1/projects/821757/resources/354190/image-preview) 5 + 6 + ## Prerequisites 7 + 8 + - [Node.js](https://nodejs.org/en) and [npm](https://www.npmjs.com) installed on your system 9 + - Claude Desktop application installed 10 + - A Rocksky account (if you don't have one, sign up at [rocksky.app](https://rocksky.app)) 11 + 12 + ## Setting Up Rocksky MCP 13 + 14 + ### Step 1: Install Rocksky CLI 15 + First, install the Rocksky CLI globally using npm: 16 + ```bash 17 + npm install -g @rocksky/cli 18 + ``` 19 + 20 + ### Step 2: Configure Claude Desktop for Rocksky MCP 21 + 22 + 1. Open Claude Desktop 23 + 2. Go to Settings (gear icon) > Advanced > Model Control Protocol 24 + 3. Enable MCP by toggling the switch to "On" 25 + 4. Click "Edit Configuration" to open the MCP config file 26 + 5. Add the following configuration to the file: 27 + 28 + ```json 29 + { 30 + "mcpServers": { 31 + "rocksky": { 32 + "command": "rocksky", 33 + "args": [ 34 + "mcp" 35 + ] 36 + } 37 + } 38 + } 39 + ``` 40 + 41 + 6. Save the configuration file 42 + 7. Restart Claude Desktop for the changes to take effect 43 + 44 + ## Using Rocksky with Claude 45 + Once you've set up Rocksky MCP, you can start interacting with the Rocksky API through Claude. Here are some examples of what you can do: 46 + 47 + ## Get Recently Played Tracks 48 + Simply ask Claude: 49 + ``` 50 + What are my recently played tracks? 51 + ``` 52 + 53 + Claude will use the Rocksky MCP to fetch your scrobble history and display it. 54 + 55 + ## View Your Top Artists 56 + Ask Claude: 57 + ``` 58 + Show me my top artists on Rocksky 59 + ``` 60 + 61 + ## Search for Music 62 + You can search for tracks, artists, or albums: 63 + ``` 64 + Search for tracks by Radiohead 65 + ``` 66 + 67 + ## View User Stats 68 + Get your listening statistics: 69 + ``` 70 + What are my Rocksky stats? 71 + ``` 72 + 73 + ## View Now Playing 74 + See what's currently playing: 75 + ``` 76 + What am I listening to right now? 77 + ``` 78 + 79 + ## Advanced Usage 80 + ### Viewing Other Users' Data 81 + 82 + You can also view other users' listening data by specifying their username or DID: 83 + ``` 84 + Show me the recently played tracks for username.bsky.social 85 + ``` 86 + 87 + ### Limiting Results 88 + You can specify how many results you want to see: 89 + ``` 90 + Show me my top 10 tracks 91 + ``` 92 + 93 + ### API Keys (For Developers) 94 + 95 + If you're developing with Rocksky, you can create API keys: 96 + ``` 97 + Create a new Rocksky API key called "My Application" 98 + ``` 99 + ### Troubleshooting 100 + 101 + If you encounter any issues: 102 + 103 + 1. Ensure the Rocksky CLI is properly installed 104 + 2. Verify your MCP configuration is correct 105 + 3. Check if you're logged into your Rocksky account 106 + 4. Restart Claude Desktop 107 + 108 + ## Further Resources 109 + 110 + - [AT Protocol Documentation](https://atproto.com) 111 + - [Claude MCP Documentation](https://docs.anthropic.com/en/docs/agents-and-tools/mcp) 112 +
+3
Introduction.md
··· 1 + ## What is Rocksky? 2 + 3 + Rocksky is a decentralized music tracking service. It connects with your favorite music players and streaming platforms (like Spotify, support for additional sources like Apple Music, Deezer, Tidal, etc is coming soon!) and publishes your listening history (aka "scrobbles") to your Bluesky account using the [AT Protocol](https://atproto.com).
+5
Overview.md
··· 1 + 2 + 3 + Rocksky is a music tracking and discovery platform built on top of the [AT Protocol](https://atproto.com/). Think of it as [Last.fm](https://www.last.fm/), reimagined for the decentralized social web. Rocksky lets you scrobble your listening activity, explore your stats, discover music trends, and share your music taste โ€” all without being tied to a single platform. 4 + 5 + ๐Ÿ› ๏ธ **Note**: Rocksky will be open-sourced soon. Youโ€™ll be able to run your own instance, build extensions, or contribute to the core!
+24
README.md
··· 1 + # ๐Ÿ“š Rocksky Docs 2 + 3 + This repository contains the source Markdown files for the [Rocksky Documentation](https://docs.rocksky.app). 4 + 5 + The docs are written in Markdown and hosted on [apidogs.com](https://apidogs.com), where they are rendered and published for easy access. 6 + 7 + ## ๐Ÿ”„ Syncing with apidogs.com 8 + 9 + The content of this repository is kept **in sync** with the live documentation on apidogs.com. 10 + > **Note:** Changes made here are **not automatically reflected** on the live docs website at the moment. Manual sync is required. 11 + 12 + ## ๐Ÿ› ๏ธ Editing the Docs 13 + 14 + To propose changes: 15 + 16 + 1. Fork this repository 17 + 2. Edit the relevant Markdown file(s) 18 + 3. Submit a pull request 19 + 20 + We welcome contributions, corrections, and improvements! 21 + 22 + ## ๐Ÿ“Œ Note 23 + 24 + This repository is **not** a standalone documentation site. It serves as the source of truth for documentation content deployed on [apidogs.com](https://docs.rocksky.app).