From rustarr
Searches, requests, and monitors movies/TV shows via the Overseerr API. Supports 4K requests, specific seasons, and request status tracking.
How this skill is triggered — by the user, by Claude, or both
Slash command
/rustarr:overseerrThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Request movies and TV shows via the Overseerr API. Search, request, and monitor media request status.
CHANGELOG.mdREADME.mdagents/openai.yamlreferences/api-endpoints.mdreferences/overseerr-api.ymlreferences/quick-reference.mdreferences/troubleshooting.mdscripts/approve-request.mjsscripts/decline-request.mjsscripts/delete-request.mjsscripts/lib.mjsscripts/monitor.mjsscripts/request-by-id.mjsscripts/request.mjsscripts/requests-enriched.mjsscripts/requests.mjsscripts/search.mjsRequest movies and TV shows via the Overseerr API. Search, request, and monitor media request status.
This skill enables media request management through Overseerr:
Note: This skill targets Overseerr (the stable project), not the newer "Seerr" rewrite that is in beta.
Credentials are configured in the plugin settings (userConfig). A SessionStart hook writes them to ~/.config/lab-overseerr/config.env, which the scripts load automatically — no manual file editing. Variables used:
OVERSEERR_URL="http://localhost:5055"
OVERSEERR_API_KEY="your-api-key"
OVERSEERR_URL: Your Overseerr server URL (no trailing slash)OVERSEERR_API_KEY: API key from Overseerr (Settings → General → API Key)Get your API key:
All commands use Node.js scripts and return JSON output.
Find movies or TV shows:
node scripts/search.mjs "the matrix"
node scripts/search.mjs "bluey" --type tv
node scripts/search.mjs "dune" --limit 5
Parameters:
--type movie|tv: Filter by media type--limit N: Maximum results to returnRequest movies or TV shows:
# Request a movie
node scripts/search.mjs "Dune" --type movie
node scripts/request.mjs "Dune" --type movie --mediaId 438631
# Request TV show (all seasons by default)
node scripts/search.mjs "Bluey" --type tv
node scripts/request.mjs "Bluey" --type tv --mediaId 82728 --seasons all
# Request specific seasons
node scripts/request.mjs "Severance" --type tv --mediaId 95396 --seasons 1,2
# Request in 4K
node scripts/request.mjs "Oppenheimer" --type movie --mediaId 872585 --is4k
Parameters:
--type movie|tv: Media type (required)--mediaId N: Confirmed TMDB media id from search results (required unless --yes is used)--yes: Explicitly accept the first search result after user confirmation--seasons all|1,2,3: Season selection for TV (default: all)--is4k: Request 4K version--serverId N / --profileId N / --rootFolder PATH / --languageProfileId N: override the Sonarr/Radarr server, quality profile, root folder, or language profile--userId N: request on behalf of another Overseerr user--tvdbId N: pin the TVDB id for a TV requestView pending and processing requests:
node scripts/requests.mjs --filter pending
node scripts/requests.mjs --filter processing --limit 20
node scripts/request-by-id.mjs 123
Parameters:
--filter all|approved|available|pending|processing|unavailable|failed|deleted|completed: Filter by status (default: all)--limit N: Maximum results--skip N: Offset for pagination--sort added|modified: Sort order--requestedBy USER_ID: Only requests made by a given usernode scripts/approve-request.mjs <requestId> # approve a pending request
node scripts/decline-request.mjs <requestId> # decline a pending request
node scripts/delete-request.mjs <requestId> # DESTRUCTIVE: delete the request record
Parameters:
<requestId>: numeric request id (from requests.mjs / request-by-id.mjs)delete-request.mjs is destructive — it removes the request record entirely.
Always confirm with the user (and which request id) before running it. approve
and decline are reversible state changes but still mutate; confirm intent first.
View detailed request information with media metadata:
node scripts/requests-enriched.mjs --filter pending
Continuously watch request status:
node scripts/monitor.mjs --interval 30 --filter pending
Parameters:
--interval N: Polling interval in seconds (default: 30)--filter: Status filterWhen the user asks about media requests:
requests.mjs --filter pending--seasons 1,2,3--mediaId (optionally with 4K flag)X-Api-Key header authenticationTo use multiple Overseerr instances, override environment variables:
# Use default server (from plugin settings)
node scripts/search.mjs "query"
# Use alternative server (override with environment variables)
OVERSEERR_URL="http://server2:5055" OVERSEERR_API_KEY="key2" node scripts/search.mjs "query"
references/quick-reference.md — curl examples for all common operationsreferences/troubleshooting.md — error diagnosis and common failure modesreferences/api-endpoints.md — full API endpoint catalogreferences/overseerr-api.yml — raw OpenAPI source snapshotnpx claudepluginhub jmagar/dendrite --plugin rustarrCreates bite-sized, testable implementation plans from specs or requirements, with file structure and task decomposition. Activates before coding multi-step tasks.