A Node.js application that displays your current Jellyfin viewing activity as a Discord Rich Presence status. Updates your Discord status to show what you're watching, including details like series name, episode, and playback state (playing/paused).
- Detailed Information: Shows series name, season/episode number, and episode title for TV shows.
- Playback State: Indicates whether the media is
PlayingorPausedwith a corresponding icon. - Idle Status: Displays a generic "On Homepage" status when you are not actively watching anything on Jellyfin.
- Configurable: Easily configured to point to your Jellyfin server and track a specific user account via environment variables.
- Node.js
>=21 - Discord Desktop client
-
Clone the repository:
git clone https://github.com/adwerygaming/jellyfin-discord-presence.git cd jellyfin-discord-presence -
Install dependencies:
npm install
-
Create a
.envfile from the example:cp .env.example .env
-
Configure your environment variables in the
.envfile. See the Configuration section for details. -
Run the application in development mode:
npm run dev
The application will start, connect to Discord, and begin polling your Jellyfin server.
The application is configured using environment variables. These must be defined in a .env file in the project root.
| Variable | Description |
|---|---|
DISCORD_CLIENT_ID |
The client ID of your Discord application. Used to authenticate with Discord RPC. |
JELLYFIN_URL |
The full URL of your Jellyfin server instance. Used as the base URL for API requests. |
JELLYFIN_TARGET_USERID |
The user ID of the Jellyfin account you want to track. Used to find the correct session. |
JELLYFIN_ACCESS_TOKEN |
An API access token for your Jellyfin account. Used to authenticate API requests. |
Instructions for obtaining JELLYFIN_TARGET_USERID and JELLYFIN_ACCESS_TOKEN are provided in .env.example.
The project includes scripts for development, production execution, and building.
-
Run:
npm run dev
-
Build:
npm run build
This project is licensed under the ISC License.
