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