Questorr

Secure, self-hosted bridge for your media server.

Don't have an account? Register

Configuration

Discord Settings

Erstelle eine Discord-Anwendung für den Bot. Rufe das Discord Developer Portal auf und melde dich an. Erstelle eine neue Anwendung und:

  1. Go to "Bot" in the sidebar, click "Reset Token" to get a token, and scroll down to "Privileged Gateway Intents" to enable SERVER MEMBERS INTENT (required for user mappings)
  2. Go to "OAuth2" and copy the Client ID
  3. Paste the Bot Token and Client ID into the two fields below
  4. Click "Bot zum Server einladen" below — Questorr baut den Einladungslink automatisch mit den richtigen Berechtigungen, kein manuelles Zusammenklicken im OAuth2 URL Generator mehr nötig
  5. Come back, save your settings, start the bot, then select your server and channel from the dropdowns
Discord Developer Portal öffnen
Der geheime Token deines Bots aus dem Discord Developer Portal → Bot → Token zurücksetzen
Die Anwendungs-Client-ID aus dem Discord Developer Portal → OAuth2 → Client ID

Next Steps

  1. Click the Save Settings button at the bottom of the sidebar
  2. Click the Start Bot button at the top of the page
  3. Once the bot is running, the dropdowns will automatically populate with your servers and channels
Select the Discord server where the bot will operate. Make sure you have already added the bot to your server.st.
Default Discord channel for notifications. Can be overridden per library in Step 4. Choose a server above first.
Post the /help wizard (embed + quick-action buttons) to a Discord channel so all users can access it without typing /help.
Seerr Settings
Die vollständige URL deiner Seerr-Instanz.
Deinen API-Schlüssel findest du in den Seerr-Einstellungen
Legt Standard-Qualitätsprofile und Server für Medienanfragen fest. Diese werden verwendet wenn User kein Profil über den /request Befehl angeben.
Quality profile for movie requests (Radarr)
Quality profile for TV show requests (Sonarr)
Radarr server for movie requests
Sonarr server for TV show requests

🔔 Seerr Webhook URL

Go to Seerr → Settings → Notifications → Webhook and enter this URL:

Replace localhost with your server IP if using Docker.

In Seerr, also add an authorization header to authenticate the webhook:

Authorization → –
⚠️ Important: Paste the secret into Seerr's "Authorization Header" field — not into the URL. Without the correct secret, all webhook events are rejected with HTTP 401 and you will not receive DM or channel notifications.
ℹ️ Tipp: Aktiviere in Seerr unter Settings → Notifications → Webhook → Notification Types mindestens Request Pending Approval, Request Approved, Request Auto-Approved, Request Declined, Request Available und Request Failed — sonst bekommen User keine Status-DMs, wenn ein Admin Anfragen direkt in der Seerr-UI genehmigt.
Configure which Discord channels receive Seerr event notifications.
Route notifications to the correct Discord channel based on Radarr/Sonarr root folder.
⚠️ Click "Load Root Folders" first before adding a mapping.
💡 Optional: If you only have one root folder per media type, you can skip this and use the Jellyfin Library → Channel mapping in Step 4 instead.
Mediendatenbanken
A TMDB API-Schlüssel Required for searching and fetching details. Found in the API settings of your TMDB account nachdem du dich angemeldet hast.
Optional, but recommended for richer data. Create one on the API Key page of OMDb.
Jellyfin Connection
Die URL deines Jellyfin-Servers (z.B. http://192.168.1.100:8096)
Jellyfin Dashboard → Verwaltung → API-Schlüssel → + (Neu erstellen)
Automatically filled in when you click the Test button.

📢 Default Notification Channel
The fallback channel is configured in tab 1. Discord → Default Notification Channel.

When a new item is available, Jellyfin may not have scanned it yet. Questorr will retry the library lookup after this delay (up to 3 times). Set to 0 to disable. Max: 600s (10 min).

🔍 Automatische Erkennung neuer Inhalte

Questorr prüft selbstständig in regelmäßigen Abständen, ob neue Filme oder Serien zu Jellyfin hinzugefügt wurden – auch wenn sie nicht über Seerr angefragt wurden. Beim ersten Start werden alle vorhandenen Inhalte still erfasst; Benachrichtigungen werden nur für danach hinzugefügte Inhalte gesendet.

Wie oft Jellyfin auf neue Inhalte geprüft wird. Empfohlen: 60 (sehr aktive Bibliothek), 300 (Standard, 5 Minuten), 900 (große ruhige Bibliothek, 15 Minuten). 0 = deaktiviert.
Status: lädt…
🩺 System-Check
Prüft Seerr, Jellyfin, TMDB, Bot-Status und User-Mappings auf einen Blick.
Noch nicht geprüft.
📋 Letzte Benachrichtigungen
What Questorr last posted or skipped — including source, target channel and dedup reason.
Lädt…
Für welche Inhaltstypen Benachrichtigungen gesendet werden sollen.
Welche Buttons in automatischen Jellyfin-Benachrichtigungen angezeigt werden.
Wartezeit bevor eine Benachrichtigung gesendet wird, wenn Jellyfin noch keinen TMDB-Link gefunden hat (z. B. bei frisch importierten Inhalten). Standard: 60s. 0 = sofort senden.

Die Bibliothek-→-Kanal-Zuordnung oben gilt auch für diese Benachrichtigungen. Der Fallback-Kanal (links oben) wird verwendet, wenn keine Bibliothek passt.

ℹ️ Note: Questorr uses the Jellyfin API internally to determine the correct Discord channel. Library Channel Mapping is configured via tab 2. Seerr → Seerr Notification Channels.

User Mapping

Map Discord users to their Seerr accounts. Requests from Discord will be associated with the corresponding Seerr account.

New Mapping

Select a Discord server member
Select the corresponding Seerr account
Role Permissions

Control who can use bot commands. If no roles are selected in the allowlist, all members can use commands. If any role is added to the blocklist, members with that role will be blocked regardless of allowlist settings.

Loading roles...

If empty, all members can use commands. If roles are selected, only members with these roles can use commands.

Loading roles...

Members with these roles cannot use bot commands, even if they have an allowed role.
Request Quota
Limit how many requests each user can make in a rolling 7-day window. 0 = unlimited (off). Counts only requests made through Questorr.

Loading roles...

Members with any of these roles are never limited.

Select a server to load members.

These users can always request, regardless of the quota.
Subscriptions
Settings for /subscribe — series new-season DMs and the weekly recommendation DM.
How often Jellyfin is checked for new seasons of subscribed series.
Personalised picks are sent only to users who enabled them via /subscribe weekly (mapped users only).
Weekly digest
Post a weekly summary of movies and series added to the library. Silent when nothing new.
Where the digest is posted. Falls back to the Jellyfin channel if empty.
Posts the digest immediately (even if disabled) so you can verify the channel and content.
Miscellaneous

Optional settings to enhance your bot experience.

If enabled, the bot starts automatically when the container restarts and Discord credentials are present.
Let users report a problem (audio, video, subtitle…) with a Jellyfin title, which opens an issue in Seerr. Disable to remove the command.
When enabled, users will receive a DM when their requested content becomes available on Jellyfin.
When enabled, requests through the bot are automatically approved in Seerr.
When enabled, MEDIA_APPROVED and MEDIA_AUTO_APPROVED events are sent as a DM to the requester only — no public channel post. Recommended to reduce channel noise.
Safety net: periodically polls Seerr requests and sends a DM when a request is approved/declined in the Seerr UI — even if Seerr did not fire a MEDIA_APPROVED webhook. Adds slight API load. Enable this if approvals via the Seerr UI don't trigger DMs.
Standard: 120s. Minimum 30s, Maximum 3600s.
Periodically checks whether Seerr and Jellyfin are reachable and posts to an admin channel when a service goes down or recovers. The first check after start only records a baseline (no alert).
Default: 120s. Minimum 30s, maximum 3600s.
Where to post health alerts. If left empty, the admin channel is used (Seerr admin → Seerr → Jellyfin channel).
Maximum Discord commands per user per minute. Set to 0 to disable rate limiting.
Master switch for poster and backdrop images on all Discord messages (search results, requests, notifications, daily picks). Turn off for compact, text-only embeds.
Custom footer text shown on all Discord embeds. Leave empty for no footer.
Leave country fields empty to auto-detect from bot language (e.g. DE for German, US for English).
Provide an embeddable HTML widget for Homarr, Homepage or Organizr. Shows bot status, uptime, command statistics and start/stop controls.
Send a daily random media recommendation to a Discord channel.
Discord-Kanal für tägliche Zufallsvorschläge
Exact time of day for the daily pick (e.g. 08:00). When set, the interval is ignored. (The dashboard always uses 24h format internally. TIME_FORMAT only affects how the bot displays times in Discord.)
Intervall in Minuten (Standard: 1440 = 24h)
Send a daily recommendation from your existing Jellyfin library to a Discord channel.
Discord-Kanal für tägliche Empfehlungen aus deiner Jellyfin-Bibliothek
Exact time of day for the daily recommendation (e.g. 20:00). When set, the interval is ignored. (The dashboard always uses 24h format internally. TIME_FORMAT only affects how the bot displays times in Discord.)
Intervall in Minuten (Standard: 1440 = 24h)
Weekly admin-channel post listing movies that haven't been watched in a long time, to help free up storage. Movies only.
Higher values prevent timeouts on large libraries but may delay the run.
Select the language for the Questorr dashboard.
Notification Titles
Customize the title line of each Discord notification. Leave empty to use the default for the selected Bot Language.
Buttons per Notification
Define which buttons appear for each event. Leave empty to use the global button settings above.
Channel row = buttons posted in the Discord channel. DM row = buttons in the direct message to the requester. Leave the DM row empty if an event should have no buttons in DM.
Event Variant Seerr Watch Ltrbxd IMDb Test
Resets all rows to the Standard-Buttons above.
Language for Discord notifications, bot messages and button labels.
Date display format used in /history, /upcoming, and /watchlist embeds.
Time-of-day display format. "Auto" picks 24h for German/Swedish and 12h (AM/PM) for English.
Config Export / Import
Download your current configuration as a backup, or restore it from a previously exported file. API keys are masked in the export — they will not be overwritten on import.
Export Config
Statistics
0
Total Commands
0
Active Users
0
Pending Requests
0%
Cache Hit Rate

Command Usage

Top Users

Library & Request Insights

–
Movies
–
Series
–
Total runtime — Movies + Series (h)
Top genres in library
No data yet — click "Load Insights".
–
⌀ Pending → Approved (h)
–
⌀ Approved → Available (h)
Top genres in requests
No data yet — click "Load Insights".