---
title: Rocksky
toc_min_heading_level: 2
toc_max_heading_level: 5
---

import Bluesky from "@site/src/components/snippets/_bluesky.mdx";
import JsonConfig from '!!raw-loader!@site/../config/rocksky.json.example';

:::tip[Other Uses]

To monitor and re-scrobble activity **from** Rocksky create a [Rocksky (Source)](/configuration/sources/rocksky-source)

:::

[**Rocksky**](https://rocksky.app/) is music tracking and discovery platform built on the AT Protocol (Bluesky).

<details>

<summary>How does that work?</summary>

<Bluesky name="Rocksky" lexicon="app.rocksky"/>

</details>

:::warning[Public Data]

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.

:::

:::warning[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](/configuration/clients).

:::

## Setup

You will need a [Bluesky](https://bsky.app/) account to use Rocksky.

:::note 

Usage is adapted from [Rocksky docs](https://docs.rocksky.app/migrating-to-rocksky-scrobble-api-957839m0) on [docs.rocksky.app](https://docs.rocksky.app)

:::

* Navigate to [rocksky.app](https://rocksky.app/) and sign up/logn using your Bluesky account
* Then, navigate to the [RockSky developer dashboard](https://rocksky.app/apikeys) and obtain an API Key

## 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](https://bsky.social/about/blog/4-28-2023-domain-handle-tutorial) 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.

<Config config="RockskyClientConfig" fileContent={JsonConfig} client name="rocksky">
        | Environmental Variable | Required? | Default | Description                                                                         |
        | :--------------------- | --------- | ------- | ----------------------------------------------------------------------------------- |
        | ROCKSKY_HANDLE         | Yes       |         | Your **full** ATProto handle. For Bluesky account this is like `myUser.bsky.social` |
        | ROCKSKY_KEY            | Yes       |         | API Key obtained from Rocksky developer dashboard                                   |
</Config>