Install
openclaw skills install seerrSearch for movies and TV shows via a Seerr instance and request them for download. Use when the user asks to download, find, request, or queue a movie or TV...
openclaw skills install seerrSearch and request movies/TV shows through Seerr's API. Seerr routes movie requests to Radarr and TV requests to Sonarr automatically.
The agent needs two environment variables. Store them in your OpenClaw environment or .env file:
SEERR_URL — Base URL of the Seerr instance (e.g. http://localhost:5055 if running locally, or http://<server-ip>:5055 for remote)SEERR_API_KEY — API key from Seerr → Settings → GeneralImportant: Always use $SEERR_URL (not hardcoded localhost) in API calls so it works regardless of where Seerr is hosted.
All requests require the header X-Api-Key: <SEERR_API_KEY>.
curl -s -H "X-Api-Key: $SEERR_API_KEY" \
"$SEERR_URL/api/v1/search?query=PERCENT_ENCODED_QUERY&page=1&language=en"
Results array. Key fields per result:
mediaType — movie, tv, or personid — TMDB id (used for requests)title (movies) / name (TV)releaseDate / firstAirDateoverviewmediaInfo.status — 1 (unknown), 2 (pending), 3 (processing), 4 (partially available), 5 (available). Absent if never requested.Filter results to mediaType of movie or tv only.
curl -s -X POST -H "X-Api-Key: $SEERR_API_KEY" -H "Content-Type: application/json" \
"$SEERR_URL/api/v1/request" \
-d '{"mediaType":"movie","mediaId":TMDB_ID}'
All seasons:
curl -s -X POST -H "X-Api-Key: $SEERR_API_KEY" -H "Content-Type: application/json" \
"$SEERR_URL/api/v1/request" \
-d '{"mediaType":"tv","mediaId":TMDB_ID,"seasons":"all"}'
Specific seasons:
curl -s -X POST -H "X-Api-Key: $SEERR_API_KEY" -H "Content-Type: application/json" \
"$SEERR_URL/api/v1/request" \
-d '{"mediaType":"tv","mediaId":TMDB_ID,"seasons":[1,3]}'
# Movie
curl -s -H "X-Api-Key: $SEERR_API_KEY" "$SEERR_URL/api/v1/movie/TMDB_ID"
# TV
curl -s -H "X-Api-Key: $SEERR_API_KEY" "$SEERR_URL/api/v1/tv/TMDB_ID"
movie/tv resultsmedia fieldmediaInfo.status = 5 (available), just show statusWhen responding in Discord, send plain text messages with inline links and optional poster images. Do not use interactive components — OpenClaw doesn't support them yet.
Send each result as its own separate message. Use the media field to embed the poster.
{
"action": "send",
"channel": "discord",
"to": "channel:<CHANNEL_ID>",
"message": "<emoji> **<title>** (<year>) — ⭐ <rating>\n<genre1>, <genre2>\n\n<overview (truncated to 1-2 sentences)>\n\n<status emoji> <status text>\n\n🔗 [View in Seerr]($SEERR_URL/<mediaType>/<tmdbId>)",
"media": "https://image.tmdb.org/t/p/w500/<posterPath>"
}
media field for the poster image (TMDB URL format: https://image.tmdb.org/t/p/w500/<posterPath>)SEERR_URLrequiredSEERR_API_KEYrequired