Rocksky
To monitor and re-scrobble activity from Rocksky create a Rocksky (Source)
Rocksky is music tracking and discovery platform built on the AT Protocol (Bluesky).
How does that work?
The AT Protocol is a standard to allow different applications to share and interpret your social data.
Your data is stored in a personal repository in a PDS (Personal Data Server), which is data-type agnostic (it's just JSON). Each application defines their own datatypes and pulls data from your repository to render to you, your network, etc...
Even though the application and the PDS/repository are independent, all of this is done for you automatically when you create a Bluesky account.
So...
- multi-scrobbler "scrobbles" your plays to your repository
- in a JSON data structure which includes Rocksky's data type and structure
- at a known location for Rocksky's data (
app.rocksky), in a list that is appended to as you continue to scrobble
- when accessing Rocksky, or another application that knows how to read it, your data is pulled from the repository to render the app
Your Data Is Public
The default Bluesky PDS is public, meaning your scrobbles are also public (read-only). This isn't any different than using Last.fm or Listenbrainz, in terms of privacy.
No Scrobbling Guarantee
Rocksky does not guarantee that every scrobble you send will be persisted. Rocksky's design goal is to store scrobbles with metdata-complete, 3rd party verifiable track information so that it can be a metadata-rich discovery platform, rather than an exhaustive scrobble data source-of-truth.
To do this it asynchronously matches your scrobble data against Musicbrainz's and/or Spotify's catalogs, after the scrobble has been submitted. If the scrobble does not end up matching then it is not persisted.
If you need your scrobbles to be 100% captured then you should scrobble to an additional Scrobble Client.
Setup
You will need a Bluesky, or other ATmosphere, account to use Rocksky.
- Navigate to rocksky.app and sign up/logn using your ATmosphere account
- Then, navigate to the Access Tokens in the Rocksky settings dropdown, and create a new token
Configuration
Handle
The handle used with multi-scrobbler should be your full ATProto handle, including TLD.
- For regular Bluesky account this will be like:
alice.bsky.social - For Bluesky accounts that use their website as their account this is your domain:
mydomain.com - For non-Bluesky users, you probably already know your handle
If you do not include a TLD then multi-scrobbler will automatically append .bsky.social to your handle value.
API Applications Deprecated
In < 0.14.1, Multi-Scrobber used Rocksky's API Appication "API Key" for communication with a Listenbrainz-compatible API from Rocksky.
Going forward, this should be replaced with the official guidance in the Setup section above: use an Access Token. This uses the native Rocksky API which has more functionality.
If your configuration is using either
- (File/AIO)
'key': ... - (ENV)
ROCKSKY_KEY
you should redo the Setup modify your configuration to use an Access Token instead.
Keys are now deprecated and functionality for them will be removed in a future version of Multi-Scrobbler.
- ENV
- File
- AIO
This is configuration for the ENV Config Type.
| Environmental Variable | Required? | Default | Description |
|---|---|---|---|
ROCKSKY_ID | Yes | A unique ID used in MS | |
ROCKSKY_HANDLE | Yes | Your full ATProto handle. For Bluesky account this is like myUser.bsky.social | |
ROCKSKY_TOKEN | Yes | Access Token obtained from Rocksky | |
ROCKSKY_NAME | No | A vanity name different than ID |
Config Structure
This displays the structure of the File Configuration for a rocksky type Client with all possible properties, their shape, and descriptions/types. Use this to understand how to write a valid config.
Config Example
This displays an example config file of a rocksky Client File Configuration that adheres to the shown Config Structure.
- text mode lets you edit the JSON directly.
- tree mode gives you a guided point-and-click editing experience that always keeps the JSON syntax valid.
Both modes validate that the configuraion is correct. Any errors show up as squiggly lines.
After you finish editing, switch to text and then copy all text to get a completed config.
Config Example Mobile Experience
This displays an example config file of a rocksky Client File Configuration that adheres to the shown Config Structure.
The example config file editor is meant for a larger screen experience so only the read-only example is shown. Please use this site on a tablet/laptop/desktop to enable file editor features.
[
{
"id": "myRockskyClient",
"name": "FoxxMD Rocksky Client",
"configureAs": "client",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkaWQiOiJkaWQ6cGxjOng0NjVwZmtyeW5zaDZ...",
"handle": "alice.bsky.social"
}
}
]
Config Structure
This displays the structure of the all-in-one (config.json) configuration with all possible properties, their shape, and descriptions/types. Use this to understand how to write a valid config.
Select the rocksky type from the respective clients node below, then expand it.
Config Example
This displays an example config file of a all-in-one (config.json) configuration that includes a rocksky Client that adheres to the shown Config Structure.
- text mode lets you edit the JSON directly.
- tree mode gives you a guided point-and-click editing experience that always keeps the JSON syntax valid.
Both modes validate that the configuraion is correct. Any errors show up as squiggly lines.
After you finish editing, switch to text and then copy all text to get a completed config.
Config Example Mobile Experience
This displays an example config file of a all-in-one (config.json) configuration that includes a rocksky Client that adheres to the shown Config Structure.
The example config file editor is meant for a larger screen experience so only the read-only example is shown. Please use this site on a tablet/laptop/desktop to enable file editor features.
{
"clients": [
{
"id": "myRockskyClient",
"name": "FoxxMD Rocksky Client",
"configureAs": "client",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkaWQiOiJkaWQ6cGxjOng0NjVwZmtyeW5zaDZ...",
"handle": "alice.bsky.social"
},
"type": "rocksky"
}
]
}