[READ-ONLY] Mirror of https://github.com/FoxxMD/multi-scrobbler. Scrobble plays from multiple sources to multiple clients docs.multi-scrobbler.app
deezer docker jellyfin koito lastfm listenbrainz maloja mopidy mpris music music-assistant plex scrobble self-hosted spotify subsonic tautulli youtube-music
0

Configure Feed

Select the types of activity you want to include in your feed.

docs: Update examples with id

FoxxMD (May 14, 2026, 8:05 PM UTC) a0c1f711 7ef15944

+84 -38
+2 -1
config/azuracast.json.example
··· 2 2 { 3 3 "type": "azuracast", 4 4 "enable": true, 5 - "name": "azura", 5 + "name": "Cool Station", 6 + "id": "myAzura", 6 7 "data": { 7 8 "url": "ws://192.168.0.101", 8 9 "station": "my-station-name",
+2 -1
config/chromecast.json.example
··· 1 1 [ 2 2 { 3 - "name": "MyCast", 3 + "name": "My Cast", 4 + "id": "myCast", 4 5 "data": { 5 6 "blacklistedDevices": [], 6 7 "whitelistedDevices": [],
+2 -1
config/deezer.json.example
··· 1 1 [ 2 2 { 3 - "name": "DeezerARL", 3 + "name": "Family Account", 4 + "id": "myDeezerId" 4 5 "enable": true, 5 6 "clients": [], 6 7 "data": {
+2 -1
config/discord-local.json.example
··· 1 1 [ 2 2 { 3 - "name": "MS", 3 + "name": "Desktop", 4 4 "enable": true, 5 + "id": "myDiscordLocal" 5 6 "data": { 6 7 "applicationId": "8190211179716453570", 7 8 "ipcLocations": ["192.168.0.105:6655"]
+2 -1
config/discord.json.example
··· 1 1 [ 2 2 { 3 - "name": "MS", 3 + "name": "Discord", 4 4 "enable": true, 5 + "id": "myDiscordRemote", 5 6 "data": { 6 7 "token": "Ma7XBvzRERK3gQdkX4dkb3OQ.6aaGmJ.rvFiiVrzG4VXHHL3LyhZYhpWdG3Ph_if9aKz5E", 7 8 "applicationId": "8190211179716453570"
+2 -1
config/endpointlfm.json.example
··· 1 1 [ 2 2 { 3 - "name": "myLfm", 3 + "name": "LFM For App", 4 4 "enable": true, 5 + "id": "myLfmApp", 5 6 "data": { 6 7 "slug": "mySlug" 7 8 }
+2 -1
config/endpointlz.json.example
··· 1 1 [ 2 2 { 3 - "name": "myLz", 3 + "name": "LZ for Navidrome", 4 + "id": "myLzNavidrome", 4 5 "enable": true, 5 6 "data": { 6 7 "token": "myToken"
+2 -1
config/icecast.json.example
··· 1 1 [ 2 2 { 3 - "name": "myIcy", 3 + "name": "Station 1", 4 4 "enable": true, 5 + "id": "myIceStation1", 5 6 "data": { 6 7 "url": "http://myIcecast.com/radio" 7 8 }
+2 -1
config/jellyfin.json.example
··· 1 1 [ 2 2 { 3 - "name": "MyJellyfin", 3 + "name": "Cool JF Server", 4 4 "enable": true, 5 + "id": "myJellyfin", 5 6 "clients": [], 6 7 "data": { 7 8 "url": "http://localhost:8096",
+2 -1
config/jriver.json.example
··· 1 1 [ 2 2 { 3 - "name": "MyJriver", 3 + "name": "My JRiver Server", 4 + "id": "myRiver", 4 5 "enable": true, 5 6 "data": { 6 7 "url": "0.0.0.0",
+2 -1
config/kodi.json.example
··· 1 1 [ 2 2 { 3 - "name": "MyKodi", 3 + "name": "My Kodi Server", 4 + "id: "myKodi", 4 5 "enable": true, 5 6 "data": { 6 7 "url": "http://localhost:8080/jsonrpc",
+5 -3
config/koito.json.example
··· 1 1 [ 2 - { 3 - "name": "koito-client", 2 + { 3 + "name": "Koito Client A", 4 + "id": "myKoitoClient", 4 5 "configureAs": "client", 5 6 "data": { 6 7 "token": "029b081ba-9156-4pe7-88e5-3be671f5ea2b", ··· 9 10 } 10 11 }, 11 12 { 12 - "name": "koito-source", 13 + "name": "Koito Source B", 14 + "id": "myKoitoSource", 13 15 "configureAs": "source", 14 16 "data": { 15 17 "token": "029b081ba-9156-4pe7-88e5-3be671f5ea2b",
+4 -2
config/lastfm.json.example
··· 1 1 [ 2 2 { 3 - "name": "myLastFmClient", 3 + "name": "Foxx LFM Client", 4 + "id": "myLastFmClient", 4 5 "enable": true, 5 6 "configureAs": "client", 6 7 "data": { ··· 10 11 } 11 12 }, 12 13 { 13 - "name": "myLastFmSource", 14 + "name": "Foxx LFM Source", 15 + "id": "myLastFmSource", 14 16 "enable": true, 15 17 "configureAs": "source", 16 18 "data": {
+4 -2
config/librefm.json.example
··· 1 1 [ 2 2 { 3 - "name": "myLibreFmClient", 3 + "name": "Foxx Libre Client", 4 + "id": "myLibreFmClient", 4 5 "enable": true, 5 6 "configureAs": "client", 6 7 "data": { ··· 10 11 } 11 12 }, 12 13 { 13 - "name": "myLibreFmSource", 14 + "name: "Foxx Libre Source", 15 + "id": "myLibreFmSource", 14 16 "enable": true, 15 17 "configureAs": "source", 16 18 "data": {
+4 -2
config/listenbrainz.json.example
··· 1 1 [ 2 2 { 3 - "name": "brainzClient", 3 + "name": "Foxx LZ Client", 4 + "id": "brainzClient", 4 5 "enable": true, 5 6 "configureAs": "client", 6 7 "data": { ··· 10 11 } 11 12 }, 12 13 { 13 - "name": "brainzSource", 14 + "name": "Foxx LZ Source", 15 + "id": "brainzSource", 14 16 "enable": true, 15 17 "configureAs": "source", 16 18 "data": {
+4 -2
config/maloja.json.example
··· 1 1 [ 2 2 { 3 - "name": "myMaloja-client", 3 + "name": "Maloja Client", 4 + "id": "myMalojaClient", 4 5 "enable": true, 5 6 "configureAs": "client", 6 7 "data": { ··· 9 10 } 10 11 }, 11 12 { 12 - "name": "myMaloja-source", 13 + "name": "Maloja Source", 14 + "id": "myMalojaSource", 13 15 "enable": true, 14 16 "configureAs": "source", 15 17 "data": {
+2 -1
config/mopidy.json.example
··· 1 1 [ 2 2 { 3 - "name": "MyMopidy", 3 + "name": "Mopidy Desktop", 4 + "id": "MyMopidy", 4 5 "enable": true, 5 6 "data": { 6 7 "url": "localhost",
+2 -1
config/mpd.json.example
··· 1 1 [ 2 2 { 3 3 "enable": true, 4 - "name": "MyMPD", 4 + "id": "myMPD", 5 + "name": "Desktop", 5 6 "data": { 6 7 "url": "192.168.0.100:6600", 7 8 "password": "MY_PASSWORD"
+2 -1
config/mpris.json.example
··· 1 1 [ 2 2 { 3 - "name": "ubuntu", 3 + "name": "Desktop", 4 + "id": "myMprisUbuntu" 4 5 "enable": true, 5 6 "data": { 6 7 "whitelist": ["vlc", "mpd"],
+2 -1
config/musiccast.json.example
··· 1 1 [ 2 2 { 3 - "name": "myYamaha", 3 + "name": "Livingroom Reciever", 4 + "id": "myYamaha" 4 5 "enable": true, 5 6 "data": { 6 7 "url": "192.168.0.101"
+2 -1
config/musikcube.json.example
··· 2 2 { 3 3 "type": "musikcube", 4 4 "enable": true, 5 - "name": "musikcube", 5 + "name": "Desktop", 6 + "id": "myMusikcube", 6 7 "data": { 7 8 "url": "ws://localhost:7905", 8 9 "password": "MY_PASSWORD"
+2 -1
config/plex.json.example
··· 1 1 [ 2 2 { 3 - "name": "MyPlexApi", 3 + "name": "Foxx Plex", 4 + "id": "MyPlexApi", 4 5 "enable": true, 5 6 "clients": [], 6 7 "data": {
+4 -2
config/rocksky.json.example
··· 1 1 [ 2 2 { 3 - "name": "myRockskyClient", 3 + "id": "myRockskyClient", 4 + "name": "FoxxMD Rocksky Client", 4 5 "configureAs": "client", 5 6 "data": { 6 7 "key": "7cdr86vis3mpq5b1pi01md0hkm7ykzzxjy81r", ··· 8 9 } 9 10 }, 10 11 { 11 - "name": "myRockskySource", 12 + "id": "myRockskySource", 13 + "name": "FoxxMD Rocksky Source", 12 14 "configureAs": "source", 13 15 "data": { 14 16 "key": "e4xwktm7jxm607x8el1fcda30eu14dzb64h3j",
+2 -1
config/sonos.json.example
··· 1 1 [ 2 2 { 3 3 "enable": true, 4 - "name": "MySonos", 4 + "id": "MySonos", 5 + "name": "Boom 2", 5 6 "data": { 6 7 "host": "192.168.0.150", 7 8 "devicesAllow": ["move","beam"],
+2 -1
config/spotify.json.example
··· 1 1 [ 2 2 { 3 - "name": "MySpotify", 3 + "id": "MySpotify", 4 + "name": "Foxx Spotify", 4 5 "enable": true, 5 6 "clients": [], 6 7 "data": {
+2 -1
config/subsonic.json.example
··· 1 1 [ 2 2 { 3 - "name": "MySubsonic", 3 + "id": "mySubsonic", 4 + "name": "Airsonic Server" 4 5 "enable": true, 5 6 "data": { 6 7 "url": "http://localhost:4040/airsonic",
+4 -2
config/tealfm.json.example
··· 1 1 [ 2 2 { 3 - "name": "myTeal", 3 + "id": "myTealClient", 4 + "name": "Foxx Teal Client", 4 5 "configureAs": "client", 5 6 "data": { 6 7 "identifier": "alice.bsky.social", ··· 8 9 } 9 10 }, 10 11 { 11 - "name": "myTealSource", 12 + "id": "myTealSource", 13 + "name": "Foxx Teal Source", 12 14 "configureAs": "source", 13 15 "data": { 14 16 "identifier": "alice.bsky.social",
+2 -1
config/vlc.json.example
··· 1 1 [ 2 2 { 3 3 "enable": true, 4 - "name": "MyVlc", 4 + "id": "myVlc", 5 + "name": "Desktop", 5 6 "data": { 6 7 "url": "localhost:8080", 7 8 "password": "changeme"
+2 -1
config/webscrobbler.json.example
··· 1 1 [ 2 2 { 3 - "name": "MyWebScrobbler", 3 + "id": "MyWebScrobbler", 4 + "name": "Firefox Laptop", 4 5 "data": { 5 6 "slug": "MyOptionalSlug", 6 7 "whitelist": [],
+1
config/ymbridge.json.example
··· 1 1 [ 2 2 { 3 + "id": "myYandex", 3 4 "name": "Yandex Music", 4 5 "type": "ymbridge", 5 6 "data": {
+2 -1
config/ytmusic.json.example
··· 1 1 [ 2 2 { 3 - "name": "MyYTMusic", 3 + "id": "myYtMusic", 4 + "name": "Foxx YT Music", 4 5 "enable": true, 5 6 "clients": [], 6 7 "data": {
+8
docsite/docs/quickstart.mdx
··· 54 54 - JELLYFIN_URL=192.168.0.110:8096 # URL to Jellyfin UI 55 55 - JELLYFIN_APIKEY=c9fae8756fbf481ebd9c5bb56b # Api Key created in previous step 56 56 - JELLYFIN_USER=MyUser # Your username in Jellyfin 57 + - JELLYFIN_ID=myJellyin 57 58 ``` 58 59 </TabItem> 59 60 <TabItem value="spotify" label="Spotify"> ··· 68 69 - SPOTIFY_CLIENT_ID=yourClientId 69 70 - SPOTIFY_CLIENT_SECRET=yourClientSecret 70 71 - SPOTIFY_REDIRECT_URI=https://multi-scrobbler.mydomain.com/callback 72 + - SPOTIFY_ID=mySpotify 71 73 ``` 72 74 73 75 Later, after [starting multi-scrobbler](#start-multi-scrobbler), visit the dashboard at `http://192.168.0.100:9078` and click **(Re)authenticate** on the Spotify card to authorize multi-scrobbler to use your account. Monitoring will begin automatically after authorization is complete. ··· 83 85 84 86 ```yaml title="~/msData/docker-compose.yml" 85 87 - LZE_TOKEN=myCoolToken 88 + - LZE_ID=navidromeLZ 86 89 ``` 87 90 88 91 The token can be anything. [(Re)start multi-scrobbler](#start-multi-scrobbler) after making this change. ··· 105 108 ```yaml title="~/msData/docker-compose.yml" 106 109 - PLEX_URL=http://192.168.0.101:32400 107 110 - PLEX_TOKEN=6c0ihz8j7__f5r18oa0zm8 111 + - PLEX_ID=myPlex 108 112 # optional, restrict scrobbling to a list of comma-delimited users 109 113 #- PLEX_USERS_ALLOW=myPlexUsername 110 114 ``` ··· 132 136 - SOURCE_LASTFM_API_KEY=MY_API_KEY_PLACEDHOLDER 133 137 - SOURCE_LASTFM_SECRET=MY_SECRET_PLACEHOLDER 134 138 - SOURCE_LASTFM_REDIRECT_URI=http://192.168.0.100:9078/lastfm/callback 139 + - SOURCE_LASTFM_ID=myLFMSource 135 140 ``` 136 141 137 142 Later, after [starting multi-scrobbler](#start-multi-scrobbler), visit the dashboard at `http://192.168.0.100:9078` and click **(Re)authenticate** on the **Last.fm (Source)** card to authorize multi-scrobbler to use your account. Monitoring will begin automatically after authorization is complete. ··· 251 256 - KOITO_TOKEN=myToken 252 257 - KOITO_USER=myUser 253 258 - KOITO_URL=myURL 259 + - KOITO_ID=myKoito 254 260 ``` 255 261 256 262 :::tip ··· 274 280 ```yaml title="~/msData/docker-compose.yml" 275 281 - LASTFM_API_KEY=myApiKey 276 282 - LASTFM_SECRET=myApiSecret 283 + - LASTFM_ID=myLfmClient 277 284 ``` 278 285 </TabItem> 279 286 <TabItem value="maloja" label="Maloja"> ··· 306 313 ```yaml title="~/msData/docker-compose.yml" 307 314 - MALOJA_URL=http://192.168.0.100:42010 308 315 - MALOJA_API_KEY=myApiKey 316 + - MALOJA_ID=myMaloja 309 317 ``` 310 318 </TabItem> 311 319 </Tabs>