radarr-library
Check and clean the Radarr movie library. Find duplicates, search library, get stats. Delete only after user approval.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Check and clean the Radarr movie library. Find duplicates, search library, get stats. Delete only after user approval.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
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-library |
| icon | 📺 |
| description | Check and clean the Radarr movie library. Find duplicates, search library, get stats. Delete only after user approval. |
| version | 1.0.3 |
| author | main |
| tools | ["exec"] |
| commands | [] |
A utility skill for managing the Radarr movie library.
This skill is restricted to [PERSONAL_NAME] (owner) only.
Before executing ANY command in this skill, verify the user:
[TELEGRAM_ID][SLACK_ID]If the user is NOT [PERSONAL_NAME]:
❌ Sorry, the library checker is restricted to the owner only.
Do not proceed with any library operations for other users.
# 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")
Trigger phrases: "Do I have [movie]?", "Is [movie] in my library?", "Check if I have [movie]"
curl -s "$RADARR_URL/api/v3/movie" \
-H "X-Api-Key: $RADARR_API_KEY" | \
jq '.[] | select(.title | test("[SEARCH_TERM]"; "i")) | {title, year, hasFile, path, quality: .movieFile.quality.quality.name, size_gb: (.sizeOnDisk/1073741824 | . * 100 | floor / 100)}'
Trigger phrases: "What [genre] movies do I have?", "List my [actor] movies", "Search library for [term]"
curl -s "$RADARR_URL/api/v3/movie" \
-H "X-Api-Key: $RADARR_API_KEY" | \
jq '[.[] | select(.title | test("[SEARCH_TERM]"; "i")) | {title, year, hasFile, size_gb: (.sizeOnDisk/1073741824 | . * 100 | floor / 100)}]'
🔍 **Found [X] movies matching "[term]":**
1. [Movie 1] ([Year]) — [Size] GB
2. [Movie 2] ([Year]) — [Size] GB
...
Trigger phrases: "Library stats", "How many movies do I have?", "Library size"
curl -s "$RADARR_URL/api/v3/movie" \
-H "X-Api-Key: $RADARR_API_KEY" | \
jq '{
total_movies: length,
with_files: [.[] | select(.hasFile == true)] | length,
missing_files: [.[] | select(.hasFile == false)] | length,
total_size_gb: ([.[] | .sizeOnDisk] | add / 1073741824 | . * 100 | floor / 100)
}'
📊 **Library Stats:**
| Metric | Value |
|--------|-------|
| Total Movies | X |
| With Files | X |
| Missing Files | X |
| Total Size | X GB |
Trigger phrases: "Find duplicates", "Check for duplicate movies", "Any duplicates in library?"
# Find movies with same title+year
curl -s "$RADARR_URL/api/v3/movie" \
-H "X-Api-Key: $RADARR_API_KEY" | \
jq 'group_by(.title | ascii_downcase) | map(select(length > 1)) | .[] | {title: .[0].title, entries: [.[] | {id, year, hasFile, quality: .movieFile.quality.quality.name, size_gb: (.sizeOnDisk/1073741824 | . * 100 | floor / 100), path}]}'
🔍 **Duplicate Check Results:**
**[Movie Title]** — [X] entries found:
| # | Year | Quality | Size | Path |
|---|------|---------|------|------|
| 1 | 2024 | BluRay-1080p | 4.5 GB | /video/Movies/... |
| 2 | 2024 | WEBRip-720p | 1.2 GB | /video/Sync/... |
**Recommendation:** Keep #1 (higher quality), delete #2
---
⚠️ **No automatic deletion!** Reply with which entries to delete:
- "Delete [Movie] #2"
- "Delete all lower quality duplicates"
- "Keep all"
⚠️ CRITICAL: NEVER auto-delete. Always show duplicates first and wait for user approval.
# Delete specific movie by ID
curl -s -X DELETE "$RADARR_URL/api/v3/movie/[MOVIE_ID]?deleteFiles=true&addImportExclusion=false" \
-H "X-Api-Key: $RADARR_API_KEY"
🗑️ **Deleted:**
- [Movie] ([Year]) — [Quality] from [Path]
✅ Kept:
- [Movie] ([Year]) — [Quality] (best version)
Trigger phrases: "Find missing movies", "Movies without files", "What's missing?"
curl -s "$RADARR_URL/api/v3/movie" \
-H "X-Api-Key: $RADARR_API_KEY" | \
jq '[.[] | select(.hasFile == false) | {id, title, year, monitored}] | sort_by(.title)'
📭 **Movies Without Files:** [X] found
1. [Movie 1] ([Year]) — Monitored: ✅/❌
2. [Movie 2] ([Year]) — Monitored: ✅/❌
...
**Options:**
- "Search for [movie]" — Find and download
- "Remove [movie]" — Delete from library
- "Remove all unmonitored missing" — Clean up