radarr-delete
Delete movies from Radarr library. Owner-only with full verification and cleanup.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Delete movies from Radarr library. Owner-only with full verification and cleanup.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Read a business card image, extract contact details (name, phone, email, company, etc.), append them to a Google Sheet, then send a welcome email and WhatsApp message to the contact.
>-
Fetch and summarize YouTube video transcripts using a residential IP proxy to bypass cloud IP blocks.
Create, inspect, and edit Microsoft PowerPoint presentations and PPTX decks with reliable layouts, templates, placeholders, notes, charts, and visual QA.
Perform JIRA operations using the MCP server as primary, with automatic fallback to REST API for operations that don't work via MCP (e.g., story points via Agile estimation endpoint, epic linking via parent field). Includes sprint workflow helpers.
Produce thoughtful design artifacts (slide decks, prototypes, mockups, landing pages, dashboards) using HTML/CSS/JS/SVG as the medium.
| name | radarr-delete |
| icon | 📺 |
| description | Delete movies from Radarr library. Owner-only with full verification and cleanup. |
| version | 1.0.5 |
| author | main |
| tools | ["exec"] |
| commands | [] |
⚠️ RESTRICTED: This workflow is ONLY available to [PERSONAL_NAME] (owner ID: [OWNER_ID])
When a user requests to delete a movie, follow this workflow.
# Agent exec runs with CWD = workspace root, so the credentials file
# (shared with the radarr skill) sits at a known workspace-relative
# path. Do NOT use $BASH_SOURCE — exec is `bash -c "…"`, where
# $BASH_SOURCE[0] is empty and would mis-resolve SCRIPT_DIR.
CREDS="skills/radarr/credentials/radarr.json"
RADARR_URL=$(jq -r '.radarr.url' "$CREDS")
RADARR_API_KEY=$(jq -r '.radarr.apiKey' "$CREDS")
TRANSMISSION_URL=$(jq -r '.torrents.url' "$CREDS")
TRANSMISSION_USER=$(jq -r '.torrents.username' "$CREDS")
TRANSMISSION_PASS=$(jq -r '.torrents.password' "$CREDS")
SYNOLOGY_URL=$(jq -r '.synology.url' "$CREDS")
SYNOLOGY_USER=$(jq -r '.synology.username' "$CREDS")
SYNOLOGY_PASS=$(jq -r '.synology.password' "$CREDS")
Before proceeding, verify the user is [PERSONAL_NAME]:
[OWNER_ID][SLACK_ID]If not authorized:
❌ Movie deletion is restricted to the owner only.
📢 Tell user: "🔍 Searching for '[Movie Title]' in library..."
curl -s "$RADARR_URL/api/v3/movie" \
-H "X-Api-Key: $RADARR_API_KEY" | \
jq '.[] | select(.title | test("[search term]"; "i")) | {id, title, year, path, hasFile, sizeOnDisk: (.sizeOnDisk/1073741824 | . * 100 | floor / 100)}'
📢 Tell user:
🎬 Found: [Movie Title] ([Year])
📁 Path: [path]
📦 Size: [X.XX] GB
🗂️ Has File: [Yes/No]
⚠️ Are you sure you want to delete this movie? This will:
- Remove from Radarr library
- Delete movie files from disk
- Remove any associated torrents
Reply "yes" to confirm deletion.
Do NOT proceed until user confirms with "yes"!
SESSION=$(curl -s -u "$TRANSMISSION_USER:$TRANSMISSION_PASS" "$TRANSMISSION_URL/transmission/rpc" 2>&1 | grep -oP 'X-Transmission-Session-Id: \K[^\<]+')
curl -s -u "$TRANSMISSION_USER:$TRANSMISSION_PASS" "$TRANSMISSION_URL/transmission/rpc" \
-H "X-Transmission-Session-Id: $SESSION" \
-d '{"method":"torrent-get","arguments":{"fields":["name","hashString","percentDone"]}}' | \
jq '.arguments.torrents[] | select(.name | test("[movie title]"; "i"))'
If torrent found: Remove it first
curl -s -u "$TRANSMISSION_USER:$TRANSMISSION_PASS" "$TRANSMISSION_URL/transmission/rpc" \
-H "X-Transmission-Session-Id: $SESSION" \
-d '{"method":"torrent-remove","arguments":{"ids":["HASH"],"delete-local-data":true}}'
📢 Tell user: "🗑️ Removed torrent from download client..."
curl -s "$RADARR_URL/api/v3/queue?includeMovie=true" \
-H "X-Api-Key: $RADARR_API_KEY" | \
jq '.records[] | select(.movieId == MOVIE_ID) | {id, title, status}'
If in queue: Remove from queue first
curl -s -X DELETE "$RADARR_URL/api/v3/queue/[QUEUE_ID]?removeFromClient=true&blocklist=false" \
-H "X-Api-Key: $RADARR_API_KEY"
📢 Tell user: "🗑️ Removed from download queue..."
The Radarr UI requires a browser session that gets blocked by SSRF/redirect, so we use the API directly for deletion.
Steps:
curl -s -X DELETE "$RADARR_URL/api/v3/movie/[MOVIE_ID]?deleteFiles=true&addImportExclusion=false" \
-H "X-Api-Key: $RADARR_API_KEY" \
-w "\nHTTP_CODE: %{http_code}\n"
Expected: HTTP_CODE: 200
curl -s "$RADARR_URL/api/v3/movie/[MOVIE_ID]" \
-H "X-Api-Key: $RADARR_API_KEY"
Expected: HTTP_CODE: 404 with body Not Found
📢 Tell user: "🗑️ Deleted movie from Radarr library..."
curl -s "$RADARR_URL/api/v3/movie/[MOVIE_ID]" \
-H "X-Api-Key: $RADARR_API_KEY"
Should return 404 or error.
#### 5b. Verify Files Deleted from Library
Radarr's `deleteFiles=true` should have removed the files from disk. Confirm by checking the local filesystem (if the agent has access to the same filesystem):
```bash
ls -ld [Movie Path] 2>/dev/null && echo "❌ Folder still exists" || echo "✅ Folder deleted"
If the folder still exists, delete it manually:
rm -rf [Movie Path]
Check the downloads/complete folder for any leftover files:
ls -la /downloads/complete/ | grep -i "[movie title]"
If leftover files found: Delete them
---
## Communication Summary
| Step | Message |
|------|---------|
| 1 | "🔍 Searching for '[Title]' in library..." |
| 2 | Show details + ask for confirmation |
| 3a | "🗑️ Removed torrent from download client..." (if applicable) |
| 3b | "🗑️ Removed from download queue..." (if applicable) |
| 4 | "🗑️ Deleted movie from Radarr library..." |
| 5 | (Silent verification) |
| 6 | "✅ Movie '[Title]' has been completely deleted!" |