ClawARR Suite
by @omiron33
Comprehensive management for self-hosted media stacks (Sonarr, Radarr, Lidarr, Readarr, Prowlarr, Bazarr, Overseerr, Plex, Tautulli, SABnzbd, Recyclarr, Unpa...
clawhub install clawarr-suiteπ About This Skill
name: clawarr-suite description: > Comprehensive management for self-hosted media stacks (Sonarr, Radarr, Lidarr, Readarr, Prowlarr, Bazarr, Overseerr, Plex, Tautulli, SABnzbd, Recyclarr, Unpackerr, Notifiarr, Maintainerr, Kometa, FlareSolverr). Deep library exploration, analytics, dashboard generation, content management, request handling, subtitle management, indexer control, download monitoring, quality profile sync, library cleanup automation, notification routing, collection/overlay management, and media tracker integration (Trakt, Letterboxd, Simkl). homepage: https://github.com/omiron33/clawarr-suite metadata: { "openclaw": { "requires": { "bins": ["bash", "curl", "jq", "bc", "sed"] }, "security": { "networkScope": "local-lan-and-user-configured-hosts", "secretsPolicy": "api keys loaded from env/user config only; never hardcoded", "destructiveActions": "none by default; explicit command required for delete/remove actions" }, "capabilities": [ "arr-api-management", "docker-service-observability", "dashboard-generation", "media-tracker-sync" ] } }
ClawARR Suite
Unified deep-integration control for self-hosted media automation stacks. This skill provides comprehensive agent-executable operations across the entire *arr ecosystem with rich analytics, dashboard generation, and advanced library exploration.
Security & Scanner Clarity
eval and uses explicit variable mapping for scanner-friendly shell behavior.Quick Start
First time setup (recommended):
scripts/setup.sh
Discovers services, grabs API keys, verifies connections, and outputs your config.Common operations:
scripts/status.sh # Health check all services
scripts/library.sh stats all # Library statistics
scripts/analytics.sh activity # Current Plex streams
scripts/dashboard.sh # Generate HTML dashboard
scripts/manage.sh wanted all # Show missing content
scripts/requests.sh list # Overseerr requests
Scripts Overview
Core Operations
setup.sh β Guided setup wizard with auto-discoverydiscover.sh β Scan host for *arr servicesstatus.sh β Health check all configured servicesdiagnose.sh β Automated troubleshootingLibrary Exploration (library.sh)
Deep statistics and exploration for Radarr/Sonarr/Lidarr:
library.sh stats [app] # Overall library stats
library.sh quality [app] # Quality profile breakdown
library.sh missing [app] # Missing/wanted content
library.sh unmonitored [app] # Unmonitored items
library.sh recent [app] [days] # Recently added (default: 7)
library.sh genres [app] # Genre distribution
library.sh years [app] # Year distribution
library.sh studios [app] # Studio/network breakdown
library.sh nofiles [app] # Monitored but no files
library.sh disk [app] # Disk usage by root folder
Analytics (analytics.sh)
Rich viewing analytics from Tautulli/Plex:
analytics.sh activity # Currently watching
analytics.sh history [count] # Watch history
analytics.sh most-watched [period] # Most watched (week/month/year)
analytics.sh popular-genres [period] # Popular genres
analytics.sh peak-hours # Peak watching hours
analytics.sh user-stats [user] # User activity
analytics.sh library-stats # Plex library stats
analytics.sh recent-added [count] # Recently added to Plex
analytics.sh play-totals # Total play statistics
Content Management (manage.sh)
Add, remove, and manage content:
manage.sh add-movie "" [quality] [root]
manage.sh add-series "" [quality] [root]
manage.sh remove
manage.sh wanted [app]
manage.sh calendar [app] [days]
manage.sh history [app] [count]
manage.sh rename
manage.sh refresh [id]
Request Management (requests.sh)
Overseerr request handling:
requests.sh list [pending|approved|available|all]
requests.sh approve
requests.sh deny [reason]
requests.sh info
requests.sh stats
Subtitle Management (subtitles.sh)
Bazarr operations:
subtitles.sh wanted
subtitles.sh history [count]
subtitles.sh search
subtitles.sh languages
Indexer Management (indexers.sh)
Prowlarr operations:
indexers.sh list
indexers.sh test [id]
indexers.sh stats
Download Client (downloads.sh)
SABnzbd operations:
downloads.sh active
downloads.sh speed
downloads.sh history [count]
downloads.sh pause
downloads.sh resume
downloads.sh queue
Dashboard Generation (dashboard.sh)
Generate self-contained HTML dashboard:
dashboard.sh [output_file]
Creates beautiful dark-themed dashboard with:
Output defaults to clawarr-dashboard.html (open in any browser).
Media Tracker Integration (trakt.sh, trackers.sh, letterboxd.sh, simkl.sh)
Track and sync what you watch across services like Trakt.tv, Letterboxd, Simkl, and more.
Unified Interface (trackers.sh):
trackers.sh setup # Interactive setup wizard
trackers.sh status # Show configured trackers
trackers.sh sync plex trakt # Sync Plex β Trakt
trackers.sh export trakt json # Export watch history
trackers.sh import letterboxd file.csv
trackers.sh compare trakt simkl
Trakt.tv Integration (trakt.sh):
*Authentication:*
trakt.sh auth # Device code OAuth flow
trakt.sh auth-status # Check authentication
*Profile & Stats:*
trakt.sh profile [username] # Show profile
trakt.sh stats [username] # Detailed statistics
*Watching & History:*
trakt.sh watching # Currently watching
trakt.sh history [movies|shows|episodes] [limit]
trakt.sh sync-history export file.json
trakt.sh sync-history import file.json
*Scrobbling:*
trakt.sh scrobble start movie 12345
trakt.sh scrobble stop movie 12345 100
trakt.sh checkin movie "Inception"
*Lists & Collections:*
trakt.sh watchlist [movies|shows]
trakt.sh watchlist-add movie "Dune Part Two"
trakt.sh collection movies
trakt.sh collection-add movie 12345
trakt.sh lists # Custom lists
trakt.sh list-items my-favorites
*Ratings:*
trakt.sh ratings movies 8 # Movies rated 8+
trakt.sh rate movie "Inception" 10
*Discovery:*
trakt.sh recommendations movies
trakt.sh trending shows
trakt.sh popular movies
trakt.sh calendar all 7 # Next 7 days
*Search:*
trakt.sh search "Breaking Bad" show
*Sync:*
trakt.sh sync-plex # Sync Plex watch history to Trakt
Letterboxd Integration (letterboxd.sh):
letterboxd.sh export # Export from Plex as Letterboxd CSV
letterboxd.sh import diary.csv # Import Letterboxd diary
letterboxd.sh profile username # View public profile
letterboxd.sh diary username 2024
Simkl Integration (simkl.sh):
simkl.sh auth # OAuth authentication
simkl.sh profile # Show profile
simkl.sh stats # Viewing statistics
simkl.sh history movies # Watch history
simkl.sh watchlist all # View watchlist
simkl.sh sync # Sync with Plex
Traktarr & Retraktarr Integration
Automate content discovery and library syncing with Trakt lists.
Traktarr (Trakt β Radarr/Sonarr):
# Status and configuration
trakt.sh traktarr-status # Check if installed
trakt.sh traktarr-config # Configure TraktarrAdd content from Trakt lists
trakt.sh traktarr-add movies trending 10
trakt.sh traktarr-add movies anticipated 15
trakt.sh traktarr-add movies popular 5
trakt.sh traktarr-add shows trending 5
trakt.sh traktarr-add movies watchlist 50
Retraktarr (Radarr/Sonarr β Trakt):
# Status and configuration
trakt.sh retraktarr-status # Check if installed
trakt.sh retraktarr-config # Configure RetraktarrSync library to Trakt lists
trakt.sh retraktarr-sync all # Sync movies and shows
trakt.sh retraktarr-sync movies
trakt.sh retraktarr-sync shows
Installation via Setup Wizard:
trackers.sh setup
Choose option 5 for Traktarr
Choose option 6 for Retraktarr
Offers to install via pip if not found
What They Do:
See references/traktarr-retraktarr.md for complete setup, cron scheduling, and usage patterns.
Prowlarr Indexer Management (prowlarr.sh)
Centralized indexer management across all *arr apps:
prowlarr.sh indexers # List all indexers
prowlarr.sh test [id] # Test indexer(s)
prowlarr.sh stats # Indexer & app sync statistics
prowlarr.sh search [type] # Search across all indexers (type: movie|tv|audio|book)
prowlarr.sh apps # List sync targets (Sonarr/Radarr/etc)
prowlarr.sh add-app # Add app sync target
prowlarr.sh sync # Trigger sync to all apps
prowlarr.sh status # Health check
prowlarr.sh logs [count] # Recent logs
Recyclarr Quality Profiles (recyclarr.sh)
Sync TRaSH Guides quality profiles to Sonarr/Radarr:
recyclarr.sh status # Check status & config
recyclarr.sh sync [instance] # Sync profiles (all or specific)
recyclarr.sh diff [instance] # Preview changes without applying
recyclarr.sh profiles # List available TRaSH profiles
recyclarr.sh qualities [app] # List quality definitions
recyclarr.sh config # Show current config
recyclarr.sh create-config # Generate config template
recyclarr.sh logs [count] # View recent logs
Maintainerr Library Cleanup (maintainerr.sh)
Automated library cleanup based on rules:
maintainerr.sh status # Check status
maintainerr.sh rules # List cleanup rules
maintainerr.sh collections # List managed collections
maintainerr.sh run [rule_id] # Trigger rules (all or specific)
maintainerr.sh media # Show media matched by a rule
maintainerr.sh exclude # Exclude media from rule
maintainerr.sh logs # View activity log
Notifiarr Notifications (notifiarr.sh)
Unified notification management across *arr services:
notifiarr.sh status # Check status & integrations
notifiarr.sh triggers # List notification triggers
notifiarr.sh services # Show connected services
notifiarr.sh test [channel] # Send test notification
notifiarr.sh config # Configuration summary
notifiarr.sh logs # Recent notification log
Kometa Collection Manager (kometa.sh)
Plex collection, overlay, and metadata automation:
kometa.sh status # Check container status
kometa.sh run [library] # Run Kometa (all or specific library)
kometa.sh collections # Show Plex collections
kometa.sh overlays # Check overlay config
kometa.sh config # Show Kometa config
kometa.sh templates # List available default collections/overlays
kometa.sh logs [count] # View recent logs
Unpackerr Archive Extraction (unpackerr.sh)
Automatic archive extraction for download clients:
unpackerr.sh status # Check status & config
unpackerr.sh activity # Recent extraction activity
unpackerr.sh errors # Recent errors/warnings
unpackerr.sh config # Show configuration
unpackerr.sh logs [count] # View recent logs
unpackerr.sh restart # Restart container
Legacy Scripts
queue.sh β View download queues (use manage.sh wanted or downloads.sh active for more detail)search.sh β Search content (use manage.sh add-* for full workflow)Configuration
Environment Variables
Core Services:
export CLAWARR_HOST=192.168.1.100
export SONARR_KEY=abc123...
export RADARR_KEY=def456...
export LIDARR_KEY=ghi789...
export READARR_KEY=jkl012...
export PROWLARR_KEY=mno345...
export BAZARR_KEY=pqr678...
export OVERSEERR_KEY=stu901...
export PLEX_TOKEN=vwx234...
export TAUTULLI_KEY=yz567...
export SABNZBD_KEY=abc890...
export NOTIFIARR_KEY=xyz123...Companion services (auto-detected, keys optional)
export PROWLARR_KEY=abc123... # Required for prowlarr.shDocker-based services (SSH access for remote management)
export RECYCLARR_SSH=mynas # SSH host for recyclarr container
export KOMETA_SSH=mynas # SSH host for kometa container
export UNPACKERR_SSH=mynas # SSH host for unpackerr container
export DOCKER_CONFIG_BASE=/opt/docker # Docker config root (default: /volume1/docker for Synology)
Media Trackers (optional):
# Trakt.tv (register app at https://trakt.tv/oauth/applications/new)
export TRAKT_CLIENT_ID=your_client_id
export TRAKT_CLIENT_SECRET=your_client_secretSimkl (register at https://simkl.com/settings/developer)
export SIMKL_CLIENT_ID=your_client_id
export SIMKL_CLIENT_SECRET=your_client_secretLetterboxd (requires API approval)
export LETTERBOXD_API_KEY=your_api_key # Optional, uses CSV export if not set
Token Storage:
~/.config/clawarr/trakt_tokens.json, simkl_tokens.jsonStore in .env file and source before running scripts.
Standard Ports
API Key Discovery
Method 1: /initialize.json (Easiest)
Most *arr apps expose API key at public endpoint:curl -s http://HOST:7878/initialize.json | jq -r '.apiKey'
For older versions (v3):
curl -s http://HOST:7878/initialize.js | grep -o "apiKey: '[^']*'" | cut -d"'" -f2
Method 2: Config Files
Docker/Unraid/Synology:/config/config.xml (inside container)
grep '' /path/to/config.xml | sed 's/.*\(.*\)<\/ApiKey>.*/\1/'
Method 3: Web UI
Settings β General β Security β API KeyPlex Token
From Plex Web UI: 1. Open any media item 2. "Get Info" β "View XML" 3. URL containsX-Plex-Token=...Or use:
curl -u "username:password" -X POST \
'https://plex.tv/users/sign_in.json' \
-H "X-Plex-Client-Identifier: "
Tautulli API Key
Settings β Web Interface β API β API KeySABnzbd API Key
Config β General β Security β API KeyCommon Workflows
Library Analysis
# Get complete library overview
scripts/library.sh stats allFind quality upgrade candidates
scripts/library.sh quality radarrShow missing content
scripts/library.sh missing allCheck disk usage
scripts/library.sh disk all
Viewing Analytics
# Current activity
scripts/analytics.sh activityMost watched this month
scripts/analytics.sh most-watched monthUser statistics
scripts/analytics.sh user-statsPeak hours
scripts/analytics.sh peak-hours
Request Management
# Show pending requests
scripts/requests.sh list pendingApprove request
scripts/requests.sh approve 123Request statistics
scripts/requests.sh stats
Content Management
# Add movie
scripts/manage.sh add-movie "Dune Part Two"Show calendar
scripts/manage.sh calendar all 7View history
scripts/manage.sh history radarr 30Show wanted/missing
scripts/manage.sh wanted all
Indexer Management (Prowlarr)
# List and test all indexers
scripts/prowlarr.sh indexers
scripts/prowlarr.sh testSearch across all indexers
scripts/prowlarr.sh search "Dune" movieAdd Sonarr/Radarr as sync targets
scripts/prowlarr.sh add-app sonarr http://host:8989
scripts/prowlarr.sh add-app radarr http://host:7878 Trigger indexer sync to all apps
scripts/prowlarr.sh sync
Quality Profiles (Recyclarr)
# Preview changes
scripts/recyclarr.sh diffSync TRaSH Guides profiles
scripts/recyclarr.sh syncCheck status
scripts/recyclarr.sh status
Library Cleanup (Maintainerr)
# View rules and matched media
scripts/maintainerr.sh rules
scripts/maintainerr.sh media 1Run cleanup
scripts/maintainerr.sh runExclude something from cleanup
scripts/maintainerr.sh exclude 12345 1
Collections & Overlays (Kometa)
# Run collection/overlay generation
scripts/kometa.sh runView existing collections
scripts/kometa.sh collectionsSee available templates
scripts/kometa.sh templates
Dashboard
# Generate dashboard
scripts/dashboard.sh my-dashboard.htmlOpen in browser
open my-dashboard.html
Media Tracking Workflows
Initial Setup:
# Set up Trakt.tv
scripts/trackers.sh setup
Select option 1 (Trakt.tv)
Follow device auth flow
Check status
scripts/trackers.sh status
Sync Plex to Trakt:
# One-time sync of watch history
scripts/trakt.sh sync-plexOr use unified interface
scripts/trackers.sh sync plex trakt
Export for Letterboxd:
# Generate Letterboxd-compatible CSV
scripts/letterboxd.sh exportUpload at letterboxd.com/import/
Cross-Tracker Sync:
# Export from Trakt, convert for Letterboxd
scripts/trackers.sh sync trakt letterboxdCompare two services
scripts/trackers.sh compare trakt simkl
Discovery & Recommendations:
# Get personalized recommendations
scripts/trakt.sh recommendations moviesSee what's trending
scripts/trakt.sh trending showsCheck upcoming releases
scripts/trakt.sh calendar all 7
Track Viewing:
# See what you're currently watching
scripts/trakt.sh watchingView watch history
scripts/trakt.sh history movies 50Rate something you watched
scripts/trakt.sh rate movie "Inception" 10
Automation with Traktarr/Retraktarr:
# Set up Traktarr (Trakt β Arr)
scripts/trackers.sh setup # Option 5Add trending movies to Radarr
scripts/trakt.sh traktarr-add movies trending 10Add anticipated shows to Sonarr
scripts/trakt.sh traktarr-add shows anticipated 5Set up Retraktarr (Arr β Trakt)
scripts/trackers.sh setup # Option 6Sync library to Trakt lists
scripts/trakt.sh retraktarr-sync allSchedule automation (cron):
Traktarr every 6 hours: 0 */6 * * * traktarr run
Retraktarr daily at 3am: 0 3 * * * retraktarr sync
Troubleshooting
No Files Eligible for Import
Diagnosis:
scripts/diagnose.sh
Common causes: 1. Stale Docker mounts β Container restarted but host didn't 2. Path mapping β Download client and *arr app see different paths 3. Permissions β *arr app can't read download directory 4. Category mismatch β Download in wrong category
Solutions:
# Restart containers (fixes stale mounts)
docker restart radarr sonarrCheck path mappings
Settings β Download Clients β Remote Path Mappings
Queue Stuck
Check download client:
scripts/downloads.sh active
scripts/downloads.sh speed
Check *arr queues:
scripts/manage.sh wanted all
Check indexers:
scripts/indexers.sh test
scripts/indexers.sh stats
Missing Subtitles
scripts/subtitles.sh wanted
scripts/subtitles.sh search series
Reference Documentation
references/api-endpoints.md β Complete API reference for all servicesreferences/tracker-apis.md β Media tracker API documentation (Trakt, Simkl, Letterboxd)references/traktarr-retraktarr.md β Complete guide to Traktarr & Retraktarr automationreferences/companion-services.md β Prowlarr, Recyclarr, FlareSolverr, Unpackerr, Notifiarr, Maintainerr, Kometa referencereferences/common-issues.md β Troubleshooting guide with solutionsreferences/setup-guide.md β Platform-specific installationreferences/prompts.md β Suggested natural-language prompts for agentsreferences/dashboard-templates.md β HTML/CSS templates for dashboardsExample Agent Prompts
See references/prompts.md for complete list. Examples:
Library & Downloads:
Media Tracking:
Prowlarr & Indexers:
Quality Profiles (Recyclarr):
Library Cleanup (Maintainerr):
Collections & Overlays (Kometa):
Notifications (Notifiarr):
Archive Extraction (Unpackerr):
Traktarr/Retraktarr Automation:
Technical Notes
Bash 3.2 Compatibility
All scripts are compatible with macOS bash 3.2:declare -A)${var^^})$(echo "$var" | tr '[:lower:]' '[:upper:]') for case conversion|& (pipe stderr), use 2>&1 insteadDependencies
All standard on macOS/Linux.
Security
Performance
Version Compatibility
Tested with:
Contributing
Report issues or suggest features via GitHub. Include:
License
MIT License - See repository for details.
π‘ Examples
First time setup (recommended):
scripts/setup.sh
Discovers services, grabs API keys, verifies connections, and outputs your config.Common operations:
scripts/status.sh # Health check all services
scripts/library.sh stats all # Library statistics
scripts/analytics.sh activity # Current Plex streams
scripts/dashboard.sh # Generate HTML dashboard
scripts/manage.sh wanted all # Show missing content
scripts/requests.sh list # Overseerr requests
βοΈ Configuration
Environment Variables
Core Services:
export CLAWARR_HOST=192.168.1.100
export SONARR_KEY=abc123...
export RADARR_KEY=def456...
export LIDARR_KEY=ghi789...
export READARR_KEY=jkl012...
export PROWLARR_KEY=mno345...
export BAZARR_KEY=pqr678...
export OVERSEERR_KEY=stu901...
export PLEX_TOKEN=vwx234...
export TAUTULLI_KEY=yz567...
export SABNZBD_KEY=abc890...
export NOTIFIARR_KEY=xyz123...Companion services (auto-detected, keys optional)
export PROWLARR_KEY=abc123... # Required for prowlarr.shDocker-based services (SSH access for remote management)
export RECYCLARR_SSH=mynas # SSH host for recyclarr container
export KOMETA_SSH=mynas # SSH host for kometa container
export UNPACKERR_SSH=mynas # SSH host for unpackerr container
export DOCKER_CONFIG_BASE=/opt/docker # Docker config root (default: /volume1/docker for Synology)
Media Trackers (optional):
# Trakt.tv (register app at https://trakt.tv/oauth/applications/new)
export TRAKT_CLIENT_ID=your_client_id
export TRAKT_CLIENT_SECRET=your_client_secretSimkl (register at https://simkl.com/settings/developer)
export SIMKL_CLIENT_ID=your_client_id
export SIMKL_CLIENT_SECRET=your_client_secretLetterboxd (requires API approval)
export LETTERBOXD_API_KEY=your_api_key # Optional, uses CSV export if not set
Token Storage:
~/.config/clawarr/trakt_tokens.json, simkl_tokens.jsonStore in .env file and source before running scripts.
Standard Ports
π Tips & Best Practices
No Files Eligible for Import
Diagnosis:
scripts/diagnose.sh
Common causes: 1. Stale Docker mounts β Container restarted but host didn't 2. Path mapping β Download client and *arr app see different paths 3. Permissions β *arr app can't read download directory 4. Category mismatch β Download in wrong category
Solutions:
# Restart containers (fixes stale mounts)
docker restart radarr sonarrCheck path mappings
Settings β Download Clients β Remote Path Mappings
Queue Stuck
Check download client:
scripts/downloads.sh active
scripts/downloads.sh speed
Check *arr queues:
scripts/manage.sh wanted all
Check indexers:
scripts/indexers.sh test
scripts/indexers.sh stats
Missing Subtitles
scripts/subtitles.sh wanted
scripts/subtitles.sh search series