Help us improve
Share bugs, ideas, or general feedback.
From homelab-core
Monitors Plex Media Server usage via Tautulli analytics API: current streams, active sessions, playback history, user activity, library stats.
npx claudepluginhub jmagar/claude-homelab --plugin tautulliHow this skill is triggered — by the user, by Claude, or both
Slash command
/homelab-core:tautulliThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**⚠️ MANDATORY SKILL INVOCATION ⚠️**
Queries Plex Media Server API to browse libraries (movies, TV), search media, check active sessions, view recently added and on-deck content. Invoke on Plex mentions.
Monitors and manages Unraid NAS servers: health checks, disk/array status, Docker containers, VMs, parity, logs, notifications, UPS, CPU/memory via API or MCP.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Share bugs, ideas, or general feedback.
⚠️ MANDATORY SKILL INVOCATION ⚠️
YOU MUST invoke this skill (NOT optional) when the user mentions ANY of these triggers:
Failure to invoke this skill when triggers occur violates your operational requirements.
Monitor and analyze Plex Media Server usage through Tautulli's comprehensive analytics API. Track current streams, historical playback data, user activity, and library statistics.
This skill provides read-only access to Tautulli analytics:
All operations are GET-only and safe for monitoring and analytics.
Note: This skill complements the plex skill by adding analytics and historical data that Plex Media Server doesn't expose directly.
Add your Tautulli credentials to ~/.claude-homelab/.env:
# Tautulli Analytics
TAUTULLI_URL="http://192.168.1.100:8181"
TAUTULLI_API_KEY="<your_tautulli_api_key>"
TAUTULLI_URL: Your Tautulli server URL with port (default: 8181)TAUTULLI_API_KEY: Your Tautulli API keyGetting your API key:
All commands use the tautulli-api.sh wrapper script and return JSON output.
The helper script is located at: skills/tautulli/scripts/tautulli-api.sh
Get server identity and version:
./skills/tautulli/scripts/tautulli-api.sh server-info
Monitor active streams and current playback:
# All active sessions
./skills/tautulli/scripts/tautulli-api.sh activity
# Activity with session details
./skills/tautulli/scripts/tautulli-api.sh activity --details
Returns: Current streams with user, media, player, bandwidth, transcode info
View historical playback data:
# Recent history (default: 25 items)
./skills/tautulli/scripts/tautulli-api.sh history
# History with filters
./skills/tautulli/scripts/tautulli-api.sh history --user "username" --limit 50
./skills/tautulli/scripts/tautulli-api.sh history --days 7 --media-type movie
./skills/tautulli/scripts/tautulli-api.sh history --section-id 1 --limit 100
# Search history
./skills/tautulli/scripts/tautulli-api.sh history --search "Inception"
Parameters:
--user <username>: Filter by username--section-id <id>: Filter by library section--media-type <type>: Filter by movie, episode, track, etc.--days <n>: History from last N days--limit <n>: Maximum results (default: 25)--search <query>: Search in titlesTrack user activity and viewing patterns:
# All users watch stats
./skills/tautulli/scripts/tautulli-api.sh user-stats
# Specific user details
./skills/tautulli/scripts/tautulli-api.sh user-stats --user "username"
# Top users by play count
./skills/tautulli/scripts/tautulli-api.sh user-stats --sort-by plays --limit 10
Parameters:
--user <username>: Specific user statistics--sort-by <metric>: Sort by plays, duration, last_seen--limit <n>: Maximum results--days <n>: Stats from last N daysAnalyze library usage and popular content:
# All library sections
./skills/tautulli/scripts/tautulli-api.sh libraries
# Specific library stats
./skills/tautulli/scripts/tautulli-api.sh library-stats --section-id 1
# Popular content in library
./skills/tautulli/scripts/tautulli-api.sh popular --section-id 1 --limit 10
./skills/tautulli/scripts/tautulli-api.sh popular --media-type movie --days 30
Parameters:
--section-id <id>: Specific library section--media-type <type>: Filter by type (movie, show, artist)--days <n>: Timeframe for popularity--limit <n>: Maximum resultsView recently added media with rich metadata:
# Recently added (default: 25 items)
./skills/tautulli/scripts/tautulli-api.sh recent
# Recent with filters
./skills/tautulli/scripts/tautulli-api.sh recent --section-id 1 --limit 50
./skills/tautulli/scripts/tautulli-api.sh recent --media-type movie --days 7
Get homepage dashboard statistics:
# Overview stats (most popular, most active, etc.)
./skills/tautulli/scripts/tautulli-api.sh home-stats
# Stats for specific timeframe
./skills/tautulli/scripts/tautulli-api.sh home-stats --days 30
Analyze stream types and platform usage:
# Plays by stream type (direct/transcode)
./skills/tautulli/scripts/tautulli-api.sh plays-by-stream --days 30
# Plays by platform
./skills/tautulli/scripts/tautulli-api.sh plays-by-platform --days 30
# Plays by date/time
./skills/tautulli/scripts/tautulli-api.sh plays-by-date --days 30
./skills/tautulli/scripts/tautulli-api.sh plays-by-hour --days 7
./skills/tautulli/scripts/tautulli-api.sh plays-by-day --days 30
Monitor concurrent stream patterns:
# Concurrent stream history
./skills/tautulli/scripts/tautulli-api.sh concurrent-streams --days 30
# Peak concurrent streams
./skills/tautulli/scripts/tautulli-api.sh concurrent-streams --days 7 --peak
Get detailed metadata for specific media:
# By rating key
./skills/tautulli/scripts/tautulli-api.sh metadata --rating-key 12345
# By GUID
./skills/tautulli/scripts/tautulli-api.sh metadata --guid "plex://movie/5d776..."
When the user asks about Plex analytics:
activitypopular --media-type movie --days 30history --limit 25user-stats --user "username" --days 7recent --limit 10plays-by-hour --days 30concurrent-streams --days 7 --peakAll commands return JSON with standard Tautulli response structure:
{
"response": {
"result": "success",
"message": null,
"data": { ... }
}
}
Use jq to extract and format data:
# Get just the data
./skills/tautulli/scripts/tautulli-api.sh activity | jq '.response.data'
# Extract specific fields
./skills/tautulli/scripts/tautulli-api.sh history | jq '.response.data.data[] | {user: .friendly_name, title: .full_title, date: .date}'
This skill complements the plex skill:
Use both together:
plex skill searchtautulli skill analyticstautulli skillTo use multiple Tautulli instances (monitoring different Plex servers):
# In ~/.claude-homelab/.env
TAUTULLI1_URL="http://server1:8181"
TAUTULLI1_API_KEY="key1"
TAUTULLI2_URL="http://server2:8181"
TAUTULLI2_API_KEY="key2"
Then override environment variables:
# Use server 1 (default)
./skills/tautulli/scripts/tautulli-api.sh activity
# Use server 2
TAUTULLI_URL="$TAUTULLI2_URL" TAUTULLI_API_KEY="$TAUTULLI2_API_KEY" \
./skills/tautulli/scripts/tautulli-api.sh activity
For detailed API reference, see:
CRITICAL: When invoking scripts from this skill via the zsh-tool, ALWAYS use pty: true.
Without PTY mode, command output will not be visible even though commands execute successfully.
Correct invocation pattern:
<invoke name="mcp__plugin_zsh-tool_zsh-tool__zsh">
<parameter name="command">./skills/tautulli/scripts/tautulli-api.sh [command] [args]</parameter>
<parameter name="pty">true</parameter>
</invoke>