A Jellyfin plugin that syncs Trakt lists to collections with tagging for advanced client customizations.
- Sync Trakt lists to Jellyfin collections
- Tag collections and items with
universe-collection:{slug}for client-side queries - Custom collection names, sort titles, and posters
- Preserve list order via file mtime manipulation
- Configurable via Jellyfin admin UI
- Scheduled or manual sync
- In Jellyfin, go to
Dashboard -> Plugins -> Catalog - Click the gear icon (⚙️) next to "Repositories" to add a new repository
- Add repository URL:
https://raw.githubusercontent.com/theimmortal68/jellyfin-universe-collections/main/manifest.json - Click "Save"
- Search for "Universe Collections" and install
- Restart Jellyfin
- Download
universe-collections-x.x.x.x.zipfrom the latest release - Extract
UniverseCollections.dllfrom the zip - Create the plugin folder:
- Linux:
/var/lib/jellyfin/plugins/UniverseCollections/ - Docker:
/config/plugins/UniverseCollections/ - Windows:
C:\ProgramData\Jellyfin\Server\plugins\UniverseCollections\
- Linux:
- Copy
UniverseCollections.dllto that folder - Restart Jellyfin
Prerequisites: .NET 8 SDK
git clone https://github.com/theimmortal68/jellyfin-universe-collections.git
cd jellyfin-universe-collections
dotnet build --configuration ReleaseThe plugin DLL will be in bin/Release/net8.0/UniverseCollections.dll
- Go to Dashboard → Plugins → Universe Collections
- Enter your Trakt API credentials:
- Get Client ID/Secret from https://trakt.tv/oauth/applications
- Click "Authenticate with Trakt" and follow the device auth flow
- Add Path Mappings (required for sort order in Docker):
- From: Jellyfin path (e.g.,
/media) - To: Actual filesystem path (e.g.,
/mnt/user/media)
- From: Jellyfin path (e.g.,
- Add your lists with:
- List ID: Trakt list ID (e.g.,
33354427) - Slug: URL-safe identifier for tagging (e.g.,
mcu) - Collection Name: Optional override
- Sort Title: For collection ordering (e.g.,
!040 MCU) - Poster Path: Path to custom poster image
- List ID: Trakt list ID (e.g.,
- Save and click "Sync Now"
For your MCU list:
| Field | Value |
|---|---|
| List ID | 33354427 |
| Slug | mcu |
| Sort Title | !040 Marvel Cinematic Universe |
| Poster Path | /config/posters/mcu.jpg |
If Jellyfin sees media at /media/movies but the actual path is /mnt/user/media/movies:
| From | To |
|---|---|
/media |
/mnt/user/media |
This is required for the "Preserve List Order" feature to work, as it needs to modify file timestamps.
After sync, query collections and items by tag:
// Get all Universe Collections
GET /Items?IncludeItemTypes=BoxSet&Tags=universe-collection
// Get movies in MCU collection
GET /Items?IncludeItemTypes=Movie&Tags=universe-collection:mcu| Tag | Applied To | Purpose |
|---|---|---|
universe-collection |
Collections | Identifies plugin-managed collections |
universe-collection:{slug} |
Collections + Items | Links items to their collection |
The plugin registers a scheduled task "Sync Universe Collections" that runs at the configured interval. You can also run it manually from Dashboard → Scheduled Tasks.
- Check Jellyfin logs for errors
- Ensure DLL is in a subfolder (e.g.,
plugins/UniverseCollections/) - Verify .NET 8 compatibility with your Jellyfin version
- Verify Client ID/Secret are correct
- Check if your Trakt app is approved
- Look at Jellyfin logs for API errors
- Plugin matches by IMDB ID first, then title+year
- Check if your library items have IMDB provider IDs
- Enable debug logging for detailed match info
MIT