{
  "schemaVersion": "1.0",
  "item": {
    "slug": "overseerr-request-media",
    "name": "Request media on Overseerr",
    "source": "tencent",
    "type": "skill",
    "category": "内容创作",
    "sourceUrl": "https://clawhub.ai/trialskid/overseerr-request-media",
    "canonicalUrl": "https://clawhub.ai/trialskid/overseerr-request-media",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/overseerr-request-media",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=overseerr-request-media",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "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. 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. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/overseerr-request-media"
    },
    "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/overseerr-request-media",
    "agentPageUrl": "https://openagent3.xyz/skills/overseerr-request-media/agent",
    "manifestUrl": "https://openagent3.xyz/skills/overseerr-request-media/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/overseerr-request-media/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. 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. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Purpose",
        "body": "Request a movie or TV show using the user's Overseerr instance. Overseerr forwards the request to Sonarr/Radarr."
      },
      {
        "title": "Requirements",
        "body": "Environment variables:\n\nOVERSEERR_URL (example: https://overseerr.yourdomain.com)\nOVERSEERR_API_KEY\n\nAuthentication header:\n\nX-Api-Key: $OVERSEERR_API_KEY\n\nOverseerr can detect if media is already available or already requested based on your configured Plex + Sonarr/Radarr connections."
      },
      {
        "title": "What this skill handles",
        "body": "User examples:\n\n\"Request Interstellar\"\n\"Add Interstellar to overseerr\"\n\"Request Reacher season 2\"\n\"Request The Office seasons 2-4\""
      },
      {
        "title": "1) Parse the user's request",
        "body": "Extract:\n\nTitle\nOptional type hint: movie or tv\nOptional season request:\n\n\"season 2\"\n\"seasons 1-3\"\n\"season 1 and 4\""
      },
      {
        "title": "2) Search Overseerr",
        "body": "GET:\r\n$OVERSEERR_URL/api/v1/search?query=<urlencoded title>\n\nExample:\r\ncurl -s -H \"X-Api-Key: $OVERSEERR_API_KEY\" \n\"$OVERSEERR_URL/api/v1/search?query=interstellar\""
      },
      {
        "title": "3) Clarify if the result is ambiguous (movie vs show with same name)",
        "body": "If the search results include BOTH:\n\na movie match AND\na tv match\r\nwith the same (or extremely similar) title,\n\nTHEN ask the user to choose before requesting.\n\nShow 2-4 options max, like:\n\nMovie: Title (Year)\nTV: Title (Year)\n\nIf the user provided an obvious hint like \"movie\", \"show\", \"tv\", \"season 2\", then pick the matching type automatically."
      },
      {
        "title": "4) Pick the best match",
        "body": "Rules:\n\nPrefer exact title match\nPrefer the highest popularity match when multiple results exist\nRespect the user's type hint if provided (movie vs tv)"
      },
      {
        "title": "5) Check if it already exists (available or already requested)",
        "body": "Before creating a request:\n\nInspect the selected result for availability/request status info returned by Overseerr (library/availability/request indicators).\nIf it indicates the media is already available in the library:\n\nDo NOT request it\nReply: \"Already available ✅\"\n\n\nIf it indicates the media is already requested (pending/processing/approved/requested):\n\nDo NOT request it again\nReply: \"Already requested ✅\"\n\nIf the API response does NOT clearly indicate status:\n\nProceed with creating the request\nIf the POST fails due to duplicate/existing request, reply \"Already requested ✅\""
      },
      {
        "title": "6) Create the request",
        "body": "POST:\r\n$OVERSEERR_URL/api/v1/request\n\nMovie JSON:\r\n{\r\n\"mediaType\": \"movie\",\r\n\"mediaId\": <tmdbId>\r\n}\n\nTV JSON (full series):\r\n{\r\n\"mediaType\": \"tv\",\r\n\"mediaId\": <tmdbId>\r\n}\n\nTV JSON (specific seasons):\r\n{\r\n\"mediaType\": \"tv\",\r\n\"mediaId\": <tmdbId>,\r\n\"seasons\": [2,3]\r\n}\n\nExamples:\n\nMovie:\r\ncurl -s -X POST \n-H \"X-Api-Key: $OVERSEERR_API_KEY\" \n-H \"Content-Type: application/json\" \n\"$OVERSEERR_URL/api/v1/request\" \n-d '{\"mediaType\":\"movie\",\"mediaId\":157336}'\n\nTV (full):\r\ncurl -s -X POST \n-H \"X-Api-Key: $OVERSEERR_API_KEY\" \n-H \"Content-Type: application/json\" \n\"$OVERSEERR_URL/api/v1/request\" \n-d '{\"mediaType\":\"tv\",\"mediaId\":71912}'\n\nTV (season 2):\r\ncurl -s -X POST \n-H \"X-Api-Key: $OVERSEERR_API_KEY\" \n-H \"Content-Type: application/json\" \n\"$OVERSEERR_URL/api/v1/request\" \n\"$OVERSEERR_URL/api/v1/request\" \n-d '{\"mediaType\":\"tv\",\"mediaId\":71912,\"seasons\":[2]}'"
      },
      {
        "title": "7) Respond cleanly",
        "body": "Confirm what was requested\nIf TV request was partial, list seasons\nIf already requested/available, say so\nIf no results, ask for alternate spelling or more context"
      },
      {
        "title": "Output style",
        "body": "Short confirmations:\n\n\"✅ Requested: Interstellar (2014)\"\n\"✅ Requested: Reacher (Season 2)\"\n\"Already requested ✅\"\n\"Already available ✅\""
      },
      {
        "title": "Error handling",
        "body": "If search returns 0 results:\n\nAsk for alternate title or year\n\n\nIf multiple equally good matches remain:\n\nAsk the user to pick from 2-4 options"
      }
    ],
    "body": "Overseerr Request Media Skill\nPurpose\n\nRequest a movie or TV show using the user's Overseerr instance. Overseerr forwards the request to Sonarr/Radarr.\n\nRequirements\n\nEnvironment variables:\n\nOVERSEERR_URL (example: https://overseerr.yourdomain.com)\nOVERSEERR_API_KEY\n\nAuthentication header:\n\nX-Api-Key: $OVERSEERR_API_KEY\n\nOverseerr can detect if media is already available or already requested based on your configured Plex + Sonarr/Radarr connections.\n\nWhat this skill handles\n\nUser examples:\n\n\"Request Interstellar\"\n\"Add Interstellar to overseerr\"\n\"Request Reacher season 2\"\n\"Request The Office seasons 2-4\"\nWorkflow (ALWAYS FOLLOW)\n1) Parse the user's request\n\nExtract:\n\nTitle\nOptional type hint: movie or tv\nOptional season request:\n\"season 2\"\n\"seasons 1-3\"\n\"season 1 and 4\"\n2) Search Overseerr\n\nGET: $OVERSEERR_URL/api/v1/search?query=<urlencoded title>\n\nExample: curl -s -H \"X-Api-Key: $OVERSEERR_API_KEY\"\n\"$OVERSEERR_URL/api/v1/search?query=interstellar\"\n\n3) Clarify if the result is ambiguous (movie vs show with same name)\n\nIf the search results include BOTH:\n\na movie match AND\na tv match with the same (or extremely similar) title,\n\nTHEN ask the user to choose before requesting.\n\nShow 2-4 options max, like:\n\nMovie: Title (Year)\nTV: Title (Year)\n\nIf the user provided an obvious hint like \"movie\", \"show\", \"tv\", \"season 2\", then pick the matching type automatically.\n\n4) Pick the best match\n\nRules:\n\nPrefer exact title match\nPrefer the highest popularity match when multiple results exist\nRespect the user's type hint if provided (movie vs tv)\n5) Check if it already exists (available or already requested)\n\nBefore creating a request:\n\nInspect the selected result for availability/request status info returned by Overseerr (library/availability/request indicators).\nIf it indicates the media is already available in the library:\nDo NOT request it\nReply: \"Already available ✅\"\nIf it indicates the media is already requested (pending/processing/approved/requested):\nDo NOT request it again\nReply: \"Already requested ✅\"\n\nIf the API response does NOT clearly indicate status:\n\nProceed with creating the request\nIf the POST fails due to duplicate/existing request, reply \"Already requested ✅\"\n6) Create the request\n\nPOST: $OVERSEERR_URL/api/v1/request\n\nMovie JSON: { \"mediaType\": \"movie\", \"mediaId\": <tmdbId> }\n\nTV JSON (full series): { \"mediaType\": \"tv\", \"mediaId\": <tmdbId> }\n\nTV JSON (specific seasons): { \"mediaType\": \"tv\", \"mediaId\": <tmdbId>, \"seasons\": [2,3] }\n\nExamples:\n\nMovie: curl -s -X POST\n-H \"X-Api-Key: $OVERSEERR_API_KEY\"\n-H \"Content-Type: application/json\"\n\"$OVERSEERR_URL/api/v1/request\"\n-d '{\"mediaType\":\"movie\",\"mediaId\":157336}'\n\nTV (full): curl -s -X POST\n-H \"X-Api-Key: $OVERSEERR_API_KEY\"\n-H \"Content-Type: application/json\"\n\"$OVERSEERR_URL/api/v1/request\"\n-d '{\"mediaType\":\"tv\",\"mediaId\":71912}'\n\nTV (season 2): curl -s -X POST\n-H \"X-Api-Key: $OVERSEERR_API_KEY\"\n-H \"Content-Type: application/json\"\n\"$OVERSEERR_URL/api/v1/request\"\n\"$OVERSEERR_URL/api/v1/request\"\n-d '{\"mediaType\":\"tv\",\"mediaId\":71912,\"seasons\":[2]}'\n\n7) Respond cleanly\nConfirm what was requested\nIf TV request was partial, list seasons\nIf already requested/available, say so\nIf no results, ask for alternate spelling or more context\nOutput style\n\nShort confirmations:\n\n\"✅ Requested: Interstellar (2014)\"\n\"✅ Requested: Reacher (Season 2)\"\n\"Already requested ✅\"\n\"Already available ✅\"\nError handling\nIf search returns 0 results:\nAsk for alternate title or year\nIf multiple equally good matches remain:\nAsk the user to pick from 2-4 options"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/trialskid/overseerr-request-media",
    "publisherUrl": "https://clawhub.ai/trialskid/overseerr-request-media",
    "owner": "trialskid",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/overseerr-request-media",
    "downloadUrl": "https://openagent3.xyz/downloads/overseerr-request-media",
    "agentUrl": "https://openagent3.xyz/skills/overseerr-request-media/agent",
    "manifestUrl": "https://openagent3.xyz/skills/overseerr-request-media/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/overseerr-request-media/agent.md"
  }
}