{
  "schemaVersion": "1.0",
  "item": {
    "slug": "plex-ctl",
    "name": "PLEX-CTL",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/akivasolutions/plex-ctl",
    "canonicalUrl": "https://clawhub.ai/akivasolutions/plex-ctl",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/plex-ctl",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=plex-ctl",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "plexctl.py",
      "requirements.txt",
      "verify.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "plex-ctl",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-06T20:36:49.498Z",
      "expiresAt": "2026-05-13T20:36:49.498Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=plex-ctl",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=plex-ctl",
        "contentDisposition": "attachment; filename=\"plex-ctl-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "plex-ctl"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/plex-ctl"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/plex-ctl",
    "agentPageUrl": "https://openagent3.xyz/skills/plex-ctl/agent",
    "manifestUrl": "https://openagent3.xyz/skills/plex-ctl/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/plex-ctl/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "plexctl — Plex Media Server Control",
        "body": "Standalone CLI for controlling Plex Media Server and clients via the Plex API"
      },
      {
        "title": "When to Use",
        "body": "Trigger phrases:\n\n\"play [title] on Plex\"\n\"search Plex for [query]\"\n\"what's playing on Plex\"\n\"pause/resume Plex\"\n\"show me what's on deck\"\n\"what's new on Plex\"\n\"list Plex clients\"\n\"tell me about [movie/show]\"\n\nUse this skill when:\n\nUser wants to play specific content on Plex\nUser wants to search their Plex library\nUser wants to control playback (pause, resume, stop, next, prev)\nUser wants to see what's currently playing\nUser wants to browse recently added content\nUser wants to see continue watching (on-deck)\nUser wants detailed info about a title\n\nDon't use this skill when:\n\nUser wants Apple TV-specific navigation (use ClawTV instead)\nUser wants vision-based automation (use ClawTV instead)\nUser wants to manage Plex server settings (use Plex web UI)"
      },
      {
        "title": "Setup",
        "body": "plexctl setup\n\nInteractive first-time setup:\n\nPlex server URL (e.g., http://192.168.86.86:32400)\nPlex token\nDefault client selection"
      },
      {
        "title": "Playback",
        "body": "# Play a movie (fuzzy search)\nplexctl play \"Fight Club\"\nplexctl play \"inception\"\n\n# Play specific TV episode\nplexctl play \"The Office\" -s 3 -e 10\nplexctl play \"Westworld\" --season 2 --episode 6\n\n# Play on specific client (overrides default)\nplexctl play \"Matrix\" -c \"Living Room TV\""
      },
      {
        "title": "Playback Control",
        "body": "plexctl pause              # Pause current playback\nplexctl resume             # Resume playback\nplexctl stop               # Stop playback\nplexctl next               # Skip to next track/episode\nplexctl prev               # Go to previous track/episode"
      },
      {
        "title": "Search & Discovery",
        "body": "# Search across all libraries\nplexctl search \"matrix\"\nplexctl search \"breaking bad\"\n\n# Recently added content\nplexctl recent             # Last 10 items\nplexctl recent -n 20       # Last 20 items\n\n# Continue watching (on-deck)\nplexctl on-deck\n\n# What's currently playing\nplexctl now-playing\n\n# Detailed info about a title\nplexctl info \"Inception\"\nplexctl info \"The Office\""
      },
      {
        "title": "Library Management",
        "body": "# List all libraries\nplexctl libraries\n\n# List available clients\nplexctl clients"
      },
      {
        "title": "1. Install Dependencies",
        "body": "pip install plexapi"
      },
      {
        "title": "2. Run Setup",
        "body": "plexctl setup\n\nYou'll need:\n\nPlex server URL: Usually http://[local-ip]:32400\nPlex token: Get from Settings → Account → Authorized Devices\n\nOr from browser URL when logged into Plex Web\nLook for X-Plex-Token parameter\n\n\nDefault client: The tool will discover available clients"
      },
      {
        "title": "3. Verify",
        "body": "plexctl clients            # Should list your devices\nplexctl libraries          # Should list your libraries\nplexctl search \"test\"      # Should return results"
      },
      {
        "title": "Required Credentials",
        "body": "Config stored in ~/.plexctl/config.json:\n\n{\n  \"plex_url\": \"http://192.168.86.86:32400\",\n  \"plex_token\": \"your-plex-token-here\",\n  \"default_client\": \"Apple TV\"\n}"
      },
      {
        "title": "Getting Your Plex Token",
        "body": "Method 1: Settings Page\n\nLog into Plex Web (app.plex.tv)\nSettings → Account → Authorized Devices\nLook for your token in the page source or URL\n\nMethod 2: Browser URL\n\nOpen any Plex Web page while logged in\nCheck the URL for X-Plex-Token=...\nCopy the token value\n\nMethod 3: XML Direct Method\n\nNavigate to: http://[your-plex-ip]:32400/?X-Plex-Token=\nView page source\nLook for authToken attribute"
      },
      {
        "title": "Privacy & Data",
        "body": "Local only: Connects directly to your Plex Media Server on your local network\nNo cloud APIs: All communication is local (unless using Plex cloud discovery as fallback)\nNo external services: No data sent to third parties\nNo telemetry: No usage tracking or analytics\nConfig storage: Only stores Plex URL, token, and default client locally\n\nNote: Plex cloud discovery (MyPlex) is only used as a fallback when local GDM discovery fails. All media playback is direct to your local server."
      },
      {
        "title": "1. Quick Movie Playback",
        "body": "plexctl play \"Fight Club\"\n\nSearches library, finds best match, starts playing on default client."
      },
      {
        "title": "2. Binge Watching TV Shows",
        "body": "plexctl play \"Breaking Bad\" -s 1 -e 1\n# ... watch episode ...\nplexctl next                    # Next episode\nplexctl next                    # Next episode"
      },
      {
        "title": "3. Continue Watching",
        "body": "plexctl on-deck                 # See what's in progress\nplexctl play \"Show Name\"        # Resume from where you left off"
      },
      {
        "title": "4. Browse New Content",
        "body": "plexctl recent                  # See what's new\nplexctl info \"Movie Title\"      # Get details\nplexctl play \"Movie Title\"      # Watch it"
      },
      {
        "title": "5. Multi-Client Control",
        "body": "plexctl clients                           # List all clients\nplexctl play \"Movie\" -c \"Bedroom TV\"      # Play on specific client\nplexctl pause -c \"Living Room TV\"         # Pause specific client"
      },
      {
        "title": "6. Library Search",
        "body": "plexctl search \"christopher nolan\"        # Find all Nolan films\nplexctl search \"breaking\"                 # Fuzzy search\nplexctl info \"Inception\"                  # Get details before watching"
      },
      {
        "title": "Fuzzy Matching",
        "body": "The play and info commands use fuzzy search:\n\n\"fight club\" → \"Fight Club (1999)\"\n\"inception\" → \"Inception\"\n\"office\" → \"The Office (U.S.)\"\n\nExact matches are prioritized over partial matches."
      },
      {
        "title": "Error Handling",
        "body": "Client not found:\n\nError: Client 'Apple TV' not found\n\nAvailable clients:\n  Local:\n    • Living Room TV (Plex for Apple TV)\n    • Bedroom (Plex Web)\n\nNo results:\n\nNo results found for: xyz123\n\nConnection failed:\n\nError connecting to Plex server: [Errno 61] Connection refused\nURL: http://192.168.86.86:32400\nCheck your plex_url and plex_token in config"
      },
      {
        "title": "Integration with OpenClaw",
        "body": "When a user asks to play something on Plex:\n\nParse the request — extract title, season, episode\nChoose command:\n\nMovie: plexctl play \"Title\"\nTV show specific episode: plexctl play \"Show\" -s N -e N\nSearch first: plexctl search \"query\" then plexctl play \"Title\"\n\n\nExecute and report — run command, share output with user\n\nExample agent flow:\n\nUser: \"Play Fight Club on Plex\"\nAgent: [exec] plexctl play \"Fight Club\"\nOutput: Found: Fight Club (1999) (movie)\n        ✓ Playing on Apple TV\nAgent: \"Now playing Fight Club on your Apple TV\""
      },
      {
        "title": "Troubleshooting",
        "body": "Can't connect to Plex:\n\nVerify server is running\nCheck URL (should be http://IP:32400, not https)\nVerify token is correct\nCheck firewall settings\n\nClient not found:\n\nMake sure Plex app is open on the client device\nRun plexctl clients to see available clients\nTry cloud discovery (automatic fallback)\nRestart Plex app on client device\n\nPlayback fails:\n\nVerify client can play the content type\nCheck client is still active (plexctl clients)\nTry playing manually in Plex app first\nCheck Plex server logs\n\nSearch returns no results:\n\nVerify content exists in your library\nTry broader search terms\nCheck library is scanned and up-to-date\nRun plexctl libraries to verify library access"
      },
      {
        "title": "Performance",
        "body": "Local GDM discovery: ~100ms\nCloud fallback discovery: ~500-1000ms\nSearch: ~200-500ms depending on library size\nPlayback start: ~500ms\nControl commands: ~100ms\n\nAll operations are direct Plex API calls — no vision, no screenshots, no AI inference needed."
      },
      {
        "title": "Differences from ClawTV",
        "body": "FeatureplexctlClawTVPlex control✅ Direct API✅ API + VisionApple TV remote❌✅Vision-based navigation❌✅Any streaming app❌✅Speed⚡ Instant🐢 Slower (screenshots)Dependenciesplexapi onlypyatv, Anthropic API, QuickTimeUse casePlex-only controlUniversal TV automation\n\nWhen to use plexctl: Fast, direct Plex control\nWhen to use ClawTV: Complex navigation, non-Plex apps, vision-based automation"
      }
    ],
    "body": "plexctl — Plex Media Server Control\n\nStandalone CLI for controlling Plex Media Server and clients via the Plex API\n\nWhen to Use\n\nTrigger phrases:\n\n\"play [title] on Plex\"\n\"search Plex for [query]\"\n\"what's playing on Plex\"\n\"pause/resume Plex\"\n\"show me what's on deck\"\n\"what's new on Plex\"\n\"list Plex clients\"\n\"tell me about [movie/show]\"\n\nUse this skill when:\n\nUser wants to play specific content on Plex\nUser wants to search their Plex library\nUser wants to control playback (pause, resume, stop, next, prev)\nUser wants to see what's currently playing\nUser wants to browse recently added content\nUser wants to see continue watching (on-deck)\nUser wants detailed info about a title\n\nDon't use this skill when:\n\nUser wants Apple TV-specific navigation (use ClawTV instead)\nUser wants vision-based automation (use ClawTV instead)\nUser wants to manage Plex server settings (use Plex web UI)\nCommands\nSetup\nplexctl setup\n\n\nInteractive first-time setup:\n\nPlex server URL (e.g., http://192.168.86.86:32400)\nPlex token\nDefault client selection\nPlayback\n# Play a movie (fuzzy search)\nplexctl play \"Fight Club\"\nplexctl play \"inception\"\n\n# Play specific TV episode\nplexctl play \"The Office\" -s 3 -e 10\nplexctl play \"Westworld\" --season 2 --episode 6\n\n# Play on specific client (overrides default)\nplexctl play \"Matrix\" -c \"Living Room TV\"\n\nPlayback Control\nplexctl pause              # Pause current playback\nplexctl resume             # Resume playback\nplexctl stop               # Stop playback\nplexctl next               # Skip to next track/episode\nplexctl prev               # Go to previous track/episode\n\nSearch & Discovery\n# Search across all libraries\nplexctl search \"matrix\"\nplexctl search \"breaking bad\"\n\n# Recently added content\nplexctl recent             # Last 10 items\nplexctl recent -n 20       # Last 20 items\n\n# Continue watching (on-deck)\nplexctl on-deck\n\n# What's currently playing\nplexctl now-playing\n\n# Detailed info about a title\nplexctl info \"Inception\"\nplexctl info \"The Office\"\n\nLibrary Management\n# List all libraries\nplexctl libraries\n\n# List available clients\nplexctl clients\n\nSetup Instructions\n1. Install Dependencies\npip install plexapi\n\n2. Run Setup\nplexctl setup\n\n\nYou'll need:\n\nPlex server URL: Usually http://[local-ip]:32400\nPlex token: Get from Settings → Account → Authorized Devices\nOr from browser URL when logged into Plex Web\nLook for X-Plex-Token parameter\nDefault client: The tool will discover available clients\n3. Verify\nplexctl clients            # Should list your devices\nplexctl libraries          # Should list your libraries\nplexctl search \"test\"      # Should return results\n\nRequired Credentials\n\nConfig stored in ~/.plexctl/config.json:\n\n{\n  \"plex_url\": \"http://192.168.86.86:32400\",\n  \"plex_token\": \"your-plex-token-here\",\n  \"default_client\": \"Apple TV\"\n}\n\nGetting Your Plex Token\n\nMethod 1: Settings Page\n\nLog into Plex Web (app.plex.tv)\nSettings → Account → Authorized Devices\nLook for your token in the page source or URL\n\nMethod 2: Browser URL\n\nOpen any Plex Web page while logged in\nCheck the URL for X-Plex-Token=...\nCopy the token value\n\nMethod 3: XML Direct Method\n\nNavigate to: http://[your-plex-ip]:32400/?X-Plex-Token=\nView page source\nLook for authToken attribute\nPrivacy & Data\nLocal only: Connects directly to your Plex Media Server on your local network\nNo cloud APIs: All communication is local (unless using Plex cloud discovery as fallback)\nNo external services: No data sent to third parties\nNo telemetry: No usage tracking or analytics\nConfig storage: Only stores Plex URL, token, and default client locally\n\nNote: Plex cloud discovery (MyPlex) is only used as a fallback when local GDM discovery fails. All media playback is direct to your local server.\n\nCommon Use Cases\n1. Quick Movie Playback\nplexctl play \"Fight Club\"\n\n\nSearches library, finds best match, starts playing on default client.\n\n2. Binge Watching TV Shows\nplexctl play \"Breaking Bad\" -s 1 -e 1\n# ... watch episode ...\nplexctl next                    # Next episode\nplexctl next                    # Next episode\n\n3. Continue Watching\nplexctl on-deck                 # See what's in progress\nplexctl play \"Show Name\"        # Resume from where you left off\n\n4. Browse New Content\nplexctl recent                  # See what's new\nplexctl info \"Movie Title\"      # Get details\nplexctl play \"Movie Title\"      # Watch it\n\n5. Multi-Client Control\nplexctl clients                           # List all clients\nplexctl play \"Movie\" -c \"Bedroom TV\"      # Play on specific client\nplexctl pause -c \"Living Room TV\"         # Pause specific client\n\n6. Library Search\nplexctl search \"christopher nolan\"        # Find all Nolan films\nplexctl search \"breaking\"                 # Fuzzy search\nplexctl info \"Inception\"                  # Get details before watching\n\nFuzzy Matching\n\nThe play and info commands use fuzzy search:\n\n\"fight club\" → \"Fight Club (1999)\"\n\"inception\" → \"Inception\"\n\"office\" → \"The Office (U.S.)\"\n\nExact matches are prioritized over partial matches.\n\nError Handling\n\nClient not found:\n\nError: Client 'Apple TV' not found\n\nAvailable clients:\n  Local:\n    • Living Room TV (Plex for Apple TV)\n    • Bedroom (Plex Web)\n\n\nNo results:\n\nNo results found for: xyz123\n\n\nConnection failed:\n\nError connecting to Plex server: [Errno 61] Connection refused\nURL: http://192.168.86.86:32400\nCheck your plex_url and plex_token in config\n\nIntegration with OpenClaw\n\nWhen a user asks to play something on Plex:\n\nParse the request — extract title, season, episode\nChoose command:\nMovie: plexctl play \"Title\"\nTV show specific episode: plexctl play \"Show\" -s N -e N\nSearch first: plexctl search \"query\" then plexctl play \"Title\"\nExecute and report — run command, share output with user\n\nExample agent flow:\n\nUser: \"Play Fight Club on Plex\"\nAgent: [exec] plexctl play \"Fight Club\"\nOutput: Found: Fight Club (1999) (movie)\n        ✓ Playing on Apple TV\nAgent: \"Now playing Fight Club on your Apple TV\"\n\nTroubleshooting\n\nCan't connect to Plex:\n\nVerify server is running\nCheck URL (should be http://IP:32400, not https)\nVerify token is correct\nCheck firewall settings\n\nClient not found:\n\nMake sure Plex app is open on the client device\nRun plexctl clients to see available clients\nTry cloud discovery (automatic fallback)\nRestart Plex app on client device\n\nPlayback fails:\n\nVerify client can play the content type\nCheck client is still active (plexctl clients)\nTry playing manually in Plex app first\nCheck Plex server logs\n\nSearch returns no results:\n\nVerify content exists in your library\nTry broader search terms\nCheck library is scanned and up-to-date\nRun plexctl libraries to verify library access\nPerformance\nLocal GDM discovery: ~100ms\nCloud fallback discovery: ~500-1000ms\nSearch: ~200-500ms depending on library size\nPlayback start: ~500ms\nControl commands: ~100ms\n\nAll operations are direct Plex API calls — no vision, no screenshots, no AI inference needed.\n\nDifferences from ClawTV\nFeature\tplexctl\tClawTV\nPlex control\t✅ Direct API\t✅ API + Vision\nApple TV remote\t❌\t✅\nVision-based navigation\t❌\t✅\nAny streaming app\t❌\t✅\nSpeed\t⚡ Instant\t🐢 Slower (screenshots)\nDependencies\tplexapi only\tpyatv, Anthropic API, QuickTime\nUse case\tPlex-only control\tUniversal TV automation\n\nWhen to use plexctl: Fast, direct Plex control\nWhen to use ClawTV: Complex navigation, non-Plex apps, vision-based automation"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/akivasolutions/plex-ctl",
    "publisherUrl": "https://clawhub.ai/akivasolutions/plex-ctl",
    "owner": "akivasolutions",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/plex-ctl",
    "downloadUrl": "https://openagent3.xyz/downloads/plex-ctl",
    "agentUrl": "https://openagent3.xyz/skills/plex-ctl/agent",
    "manifestUrl": "https://openagent3.xyz/skills/plex-ctl/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/plex-ctl/agent.md"
  }
}