From tautulli
Monitors Plex Media Server usage via Tautulli analytics API for current streams, active sessions, playback history, user activity, library stats, and viewing trends.
npx claudepluginhub jmagar/claude-homelabThis skill uses the workspace's default tool permissions.
**⚠️ MANDATORY SKILL INVOCATION ⚠️**
Monitors Plex Media Server usage via Tautulli analytics API: current streams, active sessions, playback history, user activity, library stats.
Controls Plex Media Server via curl API calls: browse libraries, search media, get recently added/on deck/sessions, manage playback on clients. Needs PLEX_TOKEN and server URL.
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>