{
  "schemaVersion": "1.0",
  "item": {
    "slug": "chromecast-with-google-tv",
    "name": "Chromecast With Google Tv",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/antgly/chromecast-with-google-tv",
    "canonicalUrl": "https://clawhub.ai/antgly/chromecast-with-google-tv",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/chromecast-with-google-tv",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=chromecast-with-google-tv",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "AGENTS.md",
      "CHANGELOG.md",
      "README.md",
      "SKILL.md",
      "google_tv_skill.py",
      "play_show_via_global_search.py"
    ],
    "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",
      "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/chromecast-with-google-tv"
    },
    "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/chromecast-with-google-tv",
    "agentPageUrl": "https://openagent3.xyz/skills/chromecast-with-google-tv/agent",
    "manifestUrl": "https://openagent3.xyz/skills/chromecast-with-google-tv/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/chromecast-with-google-tv/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": "Chromecast with Google TV control",
        "body": "Use this skill when I ask to cast YouTube or Tubi video content, play or pause Chromecast media playback, check if the Chromecast is online, launch episodic content in another streaming app via global search fallback, or pair with a Chromecast device for the first time."
      },
      {
        "title": "Setup",
        "body": "This skill runs with uv, adb, yt-api, and scrcpy in the PATH. No venv required.\n\nEnsure uv, adb, yt-api, and scrcpy are available in the PATH.\nUse ./run as a convenience wrapper around uv run google_tv_skill.py."
      },
      {
        "title": "First-time pairing",
        "body": "Before using this skill, you must pair your Chromecast with ADB wireless debugging:\n\nEnable Developer Options on the Chromecast (Settings > System > About > tap \"Android TV OS build\" 7 times)\nEnable USB debugging and Wireless debugging in Developer options\nUse the pair command to pair with the pairing code shown on screen:\n\n./run pair --show-instructions - Display detailed pairing instructions\n./run pair --pairing-ip <IP> --pairing-port <PORT> --pairing-code <CODE> - Perform pairing\n\nAfter pairing once, you can use the connection port shown on the Wireless debugging screen for all other commands."
      },
      {
        "title": "Capabilities",
        "body": "This skill provides a small CLI wrapper around ADB to control a Google TV device. It exposes the following subcommands:\n\npair: pair with Chromecast using wireless debugging (first-time setup)\nstatus: show adb devices output\nplay <query_or_id_or_url>: play content via YouTube, Tubi, or global-search fallback.\npause: send media pause\nresume: send media play"
      },
      {
        "title": "Usage examples",
        "body": "./run pair --show-instructions\n\n./run pair --pairing-ip 192.168.1.100 --pairing-port 12345 --pairing-code 123456\n\n./run status --device 192.168.4.64 --port 5555\n\n./run play \"7m714Ls29ZA\" --device 192.168.4.64 --port 5555\n\n./run play \"family guy\" --app hulu --season 3 --episode 4 --device 192.168.4.64 --port 5555\n\n./run pause --device 192.168.4.64 --port 5555"
      },
      {
        "title": "Device selection and env overrides",
        "body": "You can pass --device (IP) and --port on the CLI.\nAlternatively, set CHROMECAST_HOST and CHROMECAST_PORT environment variables to override defaults.\nIf you provide only --device or only --port, the script will use the cached counterpart when available; otherwise it will error.\nThe script caches the last successful IP:PORT to .last_device.json in the skill folder and will use that cache if no explicit device is provided.\nIf no explicit device is provided and no cache exists, the script will attempt ADB mDNS service discovery and use the first IP:PORT it finds.\nIMPORTANT: This skill does NOT perform any port probing or scanning. It will only attempt an adb connect to the explicit port provided or the cached port."
      },
      {
        "title": "YouTube handling",
        "body": "If you provide a YouTube video ID or URL, the skill will launch the YouTube app directly via an ADB intent restricted to the YouTube package.\nThe skill attempts to resolve titles/queries to a YouTube video ID using the yt-api CLI (in the PATH). If ID resolution fails, the skill will report failure.\nYou can override the package name with YOUTUBE_PACKAGE (default com.google.android.youtube.tv)."
      },
      {
        "title": "Tubi handling",
        "body": "If you provide a Tubi https URL, the skill will send a VIEW intent with that URL (restricted to the Tubi package).\nIf the canonical Tubi https URL is needed, the skill can look it up via web_search and supply it to this skill.\nYou can override the package name with TUBI_PACKAGE (default com.tubitv)."
      },
      {
        "title": "Global-search fallback for non-YouTube/Tubi",
        "body": "If YouTube/Tubi resolution does not apply and you pass --app with another provider (for example hulu, max, disney+), the skill uses a Google TV global-search fallback.\nFor this fallback, pass all three: --app, --season, and --episode.\nscrcpy must be installed and available in the PATH for this flow.\nThe fallback starts android.search.action.GLOBAL_SEARCH, waits for the Series Overview UI, opens Seasons, picks season/episode, then confirms Open in <app> when available.\nHulu profile-selection logic is intentionally not handled here."
      },
      {
        "title": "Pause / Resume",
        "body": "./run pause\n./run resume"
      },
      {
        "title": "Dependencies",
        "body": "The script uses only the Python standard library (no pip packages required).\nThe scripts run through uv to avoid PEP 668/system package constraints.\nThe script expects adb, scrcpy, uv, and yt-api to be installed and available in the PATH."
      },
      {
        "title": "Caching and non-destructive defaults",
        "body": "The script stores the last successful device (ip and port) in .last_device.json in the skill folder.\nIt will not attempt port scanning; this keeps behavior predictable and avoids conflicts with Google's ADB port rotation."
      },
      {
        "title": "Troubleshooting",
        "body": "If adb connect fails, run adb connect IP:PORT manually from your host to verify the current port.\nIf adb connect is refused and you're running interactively, the script will prompt you for a new port and update .last_device.json on success.\nConnection refused after pairing: If connection is refused:\n\nVerify Wireless debugging is still enabled on the Chromecast\nThe device may need to be re-paired if it was restarted or Wireless debugging was toggled off\nThe interactive prompt will offer options to retry with a different port or re-pair\nUse ./run pair --show-instructions for detailed setup steps"
      },
      {
        "title": "Implementation notes",
        "body": "The skill CLI code lives in google_tv_skill.py in this folder. It uses subprocess calls to adb, scrcpy, and yt-api, plus an internal global-search helper for fallback playback.\nFor Tubi URL discovery, the assistant uses web_search to find canonical Tubi pages and pass the https URL to the skill."
      }
    ],
    "body": "Chromecast with Google TV control\n\nUse this skill when I ask to cast YouTube or Tubi video content, play or pause Chromecast media playback, check if the Chromecast is online, launch episodic content in another streaming app via global search fallback, or pair with a Chromecast device for the first time.\n\nSetup\n\nThis skill runs with uv, adb, yt-api, and scrcpy in the PATH. No venv required.\n\nEnsure uv, adb, yt-api, and scrcpy are available in the PATH.\nUse ./run as a convenience wrapper around uv run google_tv_skill.py.\nFirst-time pairing\n\nBefore using this skill, you must pair your Chromecast with ADB wireless debugging:\n\nEnable Developer Options on the Chromecast (Settings > System > About > tap \"Android TV OS build\" 7 times)\nEnable USB debugging and Wireless debugging in Developer options\nUse the pair command to pair with the pairing code shown on screen:\n./run pair --show-instructions - Display detailed pairing instructions\n./run pair --pairing-ip <IP> --pairing-port <PORT> --pairing-code <CODE> - Perform pairing\n\nAfter pairing once, you can use the connection port shown on the Wireless debugging screen for all other commands.\n\nCapabilities\n\nThis skill provides a small CLI wrapper around ADB to control a Google TV device. It exposes the following subcommands:\n\npair: pair with Chromecast using wireless debugging (first-time setup)\nstatus: show adb devices output\nplay <query_or_id_or_url>: play content via YouTube, Tubi, or global-search fallback.\npause: send media pause\nresume: send media play\nUsage examples\n\n./run pair --show-instructions\n\n./run pair --pairing-ip 192.168.1.100 --pairing-port 12345 --pairing-code 123456\n\n./run status --device 192.168.4.64 --port 5555\n\n./run play \"7m714Ls29ZA\" --device 192.168.4.64 --port 5555\n\n./run play \"family guy\" --app hulu --season 3 --episode 4 --device 192.168.4.64 --port 5555\n\n./run pause --device 192.168.4.64 --port 5555\n\nDevice selection and env overrides\nYou can pass --device (IP) and --port on the CLI.\nAlternatively, set CHROMECAST_HOST and CHROMECAST_PORT environment variables to override defaults.\nIf you provide only --device or only --port, the script will use the cached counterpart when available; otherwise it will error.\nThe script caches the last successful IP:PORT to .last_device.json in the skill folder and will use that cache if no explicit device is provided.\nIf no explicit device is provided and no cache exists, the script will attempt ADB mDNS service discovery and use the first IP:PORT it finds.\nIMPORTANT: This skill does NOT perform any port probing or scanning. It will only attempt an adb connect to the explicit port provided or the cached port.\nYouTube handling\nIf you provide a YouTube video ID or URL, the skill will launch the YouTube app directly via an ADB intent restricted to the YouTube package.\nThe skill attempts to resolve titles/queries to a YouTube video ID using the yt-api CLI (in the PATH). If ID resolution fails, the skill will report failure.\nYou can override the package name with YOUTUBE_PACKAGE (default com.google.android.youtube.tv).\nTubi handling\nIf you provide a Tubi https URL, the skill will send a VIEW intent with that URL (restricted to the Tubi package).\nIf the canonical Tubi https URL is needed, the skill can look it up via web_search and supply it to this skill.\nYou can override the package name with TUBI_PACKAGE (default com.tubitv).\nGlobal-search fallback for non-YouTube/Tubi\nIf YouTube/Tubi resolution does not apply and you pass --app with another provider (for example hulu, max, disney+), the skill uses a Google TV global-search fallback.\nFor this fallback, pass all three: --app, --season, and --episode.\nscrcpy must be installed and available in the PATH for this flow.\nThe fallback starts android.search.action.GLOBAL_SEARCH, waits for the Series Overview UI, opens Seasons, picks season/episode, then confirms Open in <app> when available.\nHulu profile-selection logic is intentionally not handled here.\nPause / Resume\n\n./run pause ./run resume\n\nDependencies\nThe script uses only the Python standard library (no pip packages required).\nThe scripts run through uv to avoid PEP 668/system package constraints.\nThe script expects adb, scrcpy, uv, and yt-api to be installed and available in the PATH.\nCaching and non-destructive defaults\nThe script stores the last successful device (ip and port) in .last_device.json in the skill folder.\nIt will not attempt port scanning; this keeps behavior predictable and avoids conflicts with Google's ADB port rotation.\nTroubleshooting\nIf adb connect fails, run adb connect IP:PORT manually from your host to verify the current port.\nIf adb connect is refused and you're running interactively, the script will prompt you for a new port and update .last_device.json on success.\nConnection refused after pairing: If connection is refused:\nVerify Wireless debugging is still enabled on the Chromecast\nThe device may need to be re-paired if it was restarted or Wireless debugging was toggled off\nThe interactive prompt will offer options to retry with a different port or re-pair\nUse ./run pair --show-instructions for detailed setup steps\nImplementation notes\nThe skill CLI code lives in google_tv_skill.py in this folder. It uses subprocess calls to adb, scrcpy, and yt-api, plus an internal global-search helper for fallback playback.\nFor Tubi URL discovery, the assistant uses web_search to find canonical Tubi pages and pass the https URL to the skill."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/antgly/chromecast-with-google-tv",
    "publisherUrl": "https://clawhub.ai/antgly/chromecast-with-google-tv",
    "owner": "antgly",
    "version": "1.2.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/chromecast-with-google-tv",
    "downloadUrl": "https://openagent3.xyz/downloads/chromecast-with-google-tv",
    "agentUrl": "https://openagent3.xyz/skills/chromecast-with-google-tv/agent",
    "manifestUrl": "https://openagent3.xyz/skills/chromecast-with-google-tv/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/chromecast-with-google-tv/agent.md"
  }
}