From 78bf507226ebed40680df4092e123ed8640b64e7 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 12 Nov 2025 15:35:39 +0000 Subject: [PATCH] docs: Update docs to include Rocksky Source and updated config --- .../docs/configuration/clients/rocksky.mdx | 52 ++++++++++++++++--- docsite/docs/configuration/clients/tealfm.mdx | 14 +---- .../configuration/sources/rocksky-source.mdx | 39 ++++++++++++++ .../docs/configuration/sources/sources.mdx | 3 +- docsite/docs/index.mdx | 1 + docsite/src/components/snippets/_bluesky.mdx | 14 +++++ 6 files changed, 104 insertions(+), 19 deletions(-) create mode 100644 docsite/docs/configuration/sources/rocksky-source.mdx create mode 100644 docsite/src/components/snippets/_bluesky.mdx diff --git a/docsite/docs/configuration/clients/rocksky.mdx b/docsite/docs/configuration/clients/rocksky.mdx index e9f2cc3d..2561bded 100644 --- a/docsite/docs/configuration/clients/rocksky.mdx +++ b/docsite/docs/configuration/clients/rocksky.mdx @@ -4,19 +4,59 @@ toc_min_heading_level: 2 toc_max_heading_level: 5 --- -[**Rocksky**](https://docs.rocksky.app/) is music tracking and discovery platform built on the AT Protocol (Bluesky). It is compatible with the Listenbrainz API and so can be configured as a multi-scrobbler [Listenbrainz Client](/configuration/clients/listenbrainz) using a custom URL. +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://docs.rocksky.app/) is music tracking and discovery platform built on the AT Protocol (Bluesky). + +
+ +How does that work? + + + +
+ +:::warning + +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. + +::: + +## Setup You will need a [Bluesky](https://bsky.app/) account to use Rocksky. :::note -Usage is adapted from [the Listenbrainz to Rocksky docs](https://docs.rocksky.app/migrating-from-listenbrainz-to-rocksky-1040189m0) on [docs.rocksky.app](https://docs.rocksky.app) +Usage is adapted from [Rocksky docs](https://docs.rocksky.app/migrating-to-rocksky-scrobble-api-957839m0) on [docs.rocksky.app](https://docs.rocksky.app) ::: -While logged in to Bluesky, navigate to [RockSky API Application](https://rocksky.app/apikeys) and obtain an API Key. +* 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 -Then, follow the directions to create a normal multi-scrobbler [Listenbrainz Client](/configuration/clients/listenbrainz) and use: +If you do not include a TLD then multi-scrobbler will automatically append `.bsky.social` to your handle value. -* **Listenbrainz Token** (`LZ_TOKEN`) - The API Key from RockSky -* **Listenbrainz URL** (`LZ_URL`) - `https://audioscrobbler.rocksky.app` + + | 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 | + \ No newline at end of file diff --git a/docsite/docs/configuration/clients/tealfm.mdx b/docsite/docs/configuration/clients/tealfm.mdx index 063bbf14..cb7d597c 100644 --- a/docsite/docs/configuration/clients/tealfm.mdx +++ b/docsite/docs/configuration/clients/tealfm.mdx @@ -8,6 +8,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; import JsonConfig from '!!raw-loader!@site/../config/tealfm.json.example'; +import Bluesky from "@site/src/components/snippets/_bluesky.mdx"; :::tip[Other Uses] @@ -21,18 +22,7 @@ To monitor and re-scrobble activity from a ATProto Profile create a [teal.fm (So How does that work? -The [AT Protocol](https://docs.bsky.app/docs/advanced-guides/atproto) is a standard to allow different applications to share and interpret your social data. - -Your data is stored in a personal [repository](https://atproto.com/guides/data-repos) in a [PDS (Personal Data Server)](https://github.com/Bluesky-social/pds), 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](https://bsky.social/about) account. - -So... - -* multi-scrobbler "scrobbles" your plays to your repository - * in a JSON data structure which includes [teal.fm's data type and structure](https://atproto.com/specs/lexicon) - * at a [known location for teal.fm's data](https://atproto.com/guides/glossary#collection) (`fm.teal.alpha.feed.play`), in a list that is appended to as you continue to scrobble -* when accessing teal.fm, or another application that knows how to read it, your data is pulled from the repository to render the app + diff --git a/docsite/docs/configuration/sources/rocksky-source.mdx b/docsite/docs/configuration/sources/rocksky-source.mdx new file mode 100644 index 00000000..3c800cc5 --- /dev/null +++ b/docsite/docs/configuration/sources/rocksky-source.mdx @@ -0,0 +1,39 @@ +--- +title: Rocksky +toc_min_heading_level: 2 +toc_max_heading_level: 5 +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import CodeBlock from '@theme/CodeBlock'; +import JsonConfig from '!!raw-loader!@site/../config/rocksky.json.example'; + +:::tip[Other Uses] + +* To **scrobble to** Rocksky, create a [Rocksky (Client)](/configuration/clients/rocksky) + +::: + +[**Rocksky**](https://docs.rocksky.app/) is music tracking and discovery platform built on the AT Protocol (Bluesky). + +This Source monitors the Rocksky scrobbles in your PDS and then re-scrobbles discovered tracks to configured clients. + +Learn more about how Rocksky scrobbles work in the [Rocksky (Client)](/configuration/clients/rocksky) docs. + +## Setup + +Follow the **Setup** instructions in the [Rocksky (Client)](/configuration/clients/rocksky#setup) docs to get access to your Bluesky PDS repository and scrobble data. + +## Configuration + +See the [Rocksky (Client)](/configuration/clients/rocksky#setup) configuration for general setup. The only difference for **Source** configuration: + +* Cannot be setup with ENV config +* [File/AIO config](/configuration?configType=file#configuration-types) must include `"configureAs": "source"` + + + :::note + You cannot use ENV variables shown in the [Rocksky Client config](/configuration/clients/rocksky#configuration) -- multi-scrobbler assumes Rocksky ENVs are always used for the **client** configuration. You must use the [File or AIO](/configuration?configType=file#configuration-types) config to setup Rocksky as a Source. + ::: + \ No newline at end of file diff --git a/docsite/docs/configuration/sources/sources.mdx b/docsite/docs/configuration/sources/sources.mdx index 3814c540..3221118f 100644 --- a/docsite/docs/configuration/sources/sources.mdx +++ b/docsite/docs/configuration/sources/sources.mdx @@ -31,9 +31,10 @@ A **Source** is a data source that contains information about tracks you are pla | [MPD (Music Player Daemon)](/configuration/sources/mpd) | [Active](./?sourceComm=active#by-communication-method) | [Activity](./?sot=activity#by-data-source-of-truth) | ❌ | ✅ | ✅ | ❌ | | [Musikcube](/configuration/sources/musikcube) | [Active](./?sourceComm=active#by-communication-method) | [Activity](./?sot=activity#by-data-source-of-truth) | ❌ | ✅ | ✅ | ❌ | | [Plex](/configuration/sources/plex) | [Active](./?sourceComm=active#by-communication-method) | [Activity](./?sot=activity#by-data-source-of-truth) | ✅ | ✅ | ✅ | ❌ | +| [Rocksky](/configuration/sources/rocksky-source) | [Active](./?sourceComm=active#by-communication-method) | [History](./?sot=history#by-data-source-of-truth) | ❌ | ✅ | ❌ | ❌ | | [Spotify](/configuration/sources/spotify) | [Active](./?sourceComm=active#by-communication-method) | [Activity](./?sot=activity#by-data-source-of-truth) | ✅ | ✅ | ✅ | ❌ | | [Subsonic-compatible APIs](/configuration/sources/subsonic) | [Active](./?sourceComm=active#by-communication-method) | [Activity](./?sot=activity#by-data-source-of-truth) | ✅ | ✅ | ✅ | ❌ | -| [teal.fm](/configuration/sources/tealfm-source) | [Active](./?sourceComm=active#by-communication-method) | [History](./?sot=history#by-data-source-of-truth) | ❌ | ✅ | ✅ | ❌ | +| [teal.fm](/configuration/sources/tealfm-source) | [Active](./?sourceComm=active#by-communication-method) | [History](./?sot=history#by-data-source-of-truth) | ❌ | ✅ | ❌ | ❌ | | [WebScrobbler](/configuration/sources/webscrobbler) | [Ingress](./?sourceComm=active#by-communication-method) | [History](./?sot=history#by-data-source-of-truth) | ❌ | ✅ | ❌ | ❌ | | [VLC](/configuration/sources/vlc) | [Active](./?sourceComm=active#by-communication-method) | [Activity](./?sot=activity#by-data-source-of-truth) | ❌ | ✅ | ✅ | ❌ | | [Yamaha MusicCast](/configuration/sources/yamaha-musiccast) | [Active](./?sourceComm=active#by-communication-method) | [Activity](./?sot=activity#by-data-source-of-truth) | ❌ | ✅ | ✅ | ❌ | diff --git a/docsite/docs/index.mdx b/docsite/docs/index.mdx index 90930a47..8fa32b2e 100644 --- a/docsite/docs/index.mdx +++ b/docsite/docs/index.mdx @@ -31,6 +31,7 @@ A javascript app to scrobble music you listened to, to [Maloja](https://github.c * [MPRIS (Linux Desktop)](/configuration/sources/mpris) * [Musikcube](/configuration/sources/musikcube) * [Plex](/configuration/sources/plex) + * [Rocksky](/configuration/sources/rocksky-source) * [Spotify](/configuration/sources/spotify) * [Subsonic-compatible APIs](/configuration/sources/subsonic) (like [Airsonic](https://airsonic.github.io/) and [Navidrome](https://www.navidrome.org/)) * [teal.fm](/configuration/sources/tealfm-source) diff --git a/docsite/src/components/snippets/_bluesky.mdx b/docsite/src/components/snippets/_bluesky.mdx new file mode 100644 index 00000000..3d6db9c9 --- /dev/null +++ b/docsite/src/components/snippets/_bluesky.mdx @@ -0,0 +1,14 @@ +import CodeInline from '@theme/CodeInline'; + +The [AT Protocol](https://docs.bsky.app/docs/advanced-guides/atproto) is a standard to allow different applications to share and interpret your social data. + +Your data is stored in a personal [repository](https://atproto.com/guides/data-repos) in a [PDS (Personal Data Server)](https://github.com/Bluesky-social/pds), 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](https://bsky.social/about) account. + +So... + +* multi-scrobbler "scrobbles" your plays to your repository + * in a JSON data structure which includes [{props.name}'s data type and structure](https://atproto.com/specs/lexicon) + * at a [known location for {props.name}'s data](https://atproto.com/guides/glossary#collection) ({props.lexicon}), in a list that is appended to as you continue to scrobble +* when accessing {props.name}, or another application that knows how to read it, your data is pulled from the repository to render the app -- 2.51.2