google_tv

Control the Living Room Chromecast with Google TV via ADB

7 stars

Best use case

google_tv is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Control the Living Room Chromecast with Google TV via ADB

Teams using google_tv should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/google-tv/SKILL.md --create-dirs "https://raw.githubusercontent.com/Demerzels-lab/elsamultiskillagent/main/public/skills/antgly/google-tv/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/google-tv/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How google_tv Compares

Feature / Agentgoogle_tvStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Control the Living Room Chromecast with Google TV via ADB

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Google TV Control

Use this skill when I ask to control the TV, play shows, or check if the TV is online.

## Setup
This skill uses a local Python virtual environment to communicate with the TV via ADB.

- Always use the skill-specific venv at `./.venv/bin/python3` (not the workspace `venv` folder). Activate or call that python explicitly when running the script.
- The skill requires a few Python packages at runtime; ensure the venv has at minimum: `requests` and `beautifulsoup4` (bs4). To install into the skill venv run:

```
./.venv/bin/python3 -m pip install -r requirements.txt
```

(See requirements.txt in the skill folder.)

## Capabilities

This skill provides a small CLI wrapper around ADB to control a Google TV device. It exposes the following subcommands:

- status: show adb devices output
- play <query_or_id_or_url>: play content. Prefer providing a YouTube video ID or a provider URL/ID.
- pause: send media pause
- resume: send media play

### Usage examples

`./.venv/bin/python3 google_tv_skill.py status --device 192.168.4.64 --port 5555`

`./.venv/bin/python3 google_tv_skill.py play "7m714Ls29ZA" --device 192.168.4.64 --port 5555`

`./.venv/bin/python3 google_tv_skill.py pause --device 192.168.4.64 --port 5555`

### Device selection and env overrides

- You can pass --device (IP) and --port on the CLI.
- Alternatively, set CHROMECAST_HOST and CHROMECAST_PORT environment variables to override defaults.
- If you provide only --device or only --port, the script will use the cached counterpart when available; otherwise it will error.
- The 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.
- IMPORTANT: 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.

### YouTube handling — direct intent only (preferred)

- If you provide a YouTube video ID or URL, the skill will launch the YouTube TV app directly via an ADB intent restricted to the YouTube TV package (no Assistant/UI fallback).
- The skill attempts to resolve titles/queries to a YouTube video ID using the `yt-api` CLI (on PATH) and falls back to `/Users/anthony/go/bin/yt-api` if needed. If ID resolution fails, the skill will report failure rather than attempting UI search.
- You can override the package name with `YOUTUBE_TV_PACKAGE` (default `com.google.android.youtube.tv`).

### Tubi handling

- If you provide a numeric Tubi ID the skill will attempt the tubitv:// intent and then a VIEW https intent for a Tubi URL, both restricted to the Tubi package.
- If you provide a Tubi https URL, the skill will send a VIEW intent with that URL (restricted to the Tubi package).
- If the canonical Tubi https URL is needed, the assistant can look it up via web_search and supply it to this skill.
- You can override the package name with `TUBI_PACKAGE` (default `com.tubitv`).

### Pause / Resume

`./.venv/bin/python3 google_tv_skill.py pause`
`./.venv/bin/python3 google_tv_skill.py resume`

### Behavior and logging

- Default logging level is INFO. Use --verbose to enable DEBUG logging.
- Exit codes: 0 success, 2 adb/connect error, 3 resolution error (e.g., could not resolve YouTube ID), 4 adb command failure.

### Dependencies & venv

- requirements.txt includes required Python packages. Install them into the skill venv at `./.venv`.
- The script expects `adb` to be on PATH and `yt-api` to be available on PATH or at `/Users/anthony/go/bin/yt-api`.

### Caching and non-destructive defaults

- The script stores the last successful device (ip and port) in `.last_device.json` in the skill folder.
- It will not attempt port scanning; this keeps behavior predictable and avoids conflicts with Google's ADB port rotation.

### Troubleshooting

- If adb connect fails, run `adb connect IP:PORT` manually from your host to verify the current port.
- If 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.
- If yt-api resolution fails, ensure `yt-api` is installed or accessible at `/Users/anthony/go/bin/yt-api`.

## Implementation notes

- The skill CLI code lives in `google_tv_skill.py` in this folder. It uses subprocess calls to `adb` and to `yt-api` when needed.
- For Tubi URL discovery, the assistant can use web_search to find canonical Tubi pages and pass the https URL to the skill.

Related Skills

google-messages

7
from Demerzels-lab/elsamultiskillagent

Send and receive SMS/RCS via Google Messages web interface (messages.google.com). Use when asked to "send a text", "check texts", "SMS", "text message", "Google Messages", or forward incoming texts to other channels.

google-photos

7
from Demerzels-lab/elsamultiskillagent

Manage Google Photos library. Upload photos, create albums, and list library content. Use when the user wants to backup, organize, or share images via Google Photos.

google-ads

7
from Demerzels-lab/elsamultiskillagent

Query, audit, and optimize Google Ads campaigns. Supports two modes: (1) API mode for bulk operations with google-ads Python SDK, (2) Browser automation mode for users without API access - just attach a browser tab to ads.google.com. Use when asked to check ad performance, pause campaigns/keywords, find wasted spend, audit conversion tracking, or optimize Google Ads accounts.

stealthy-google-search

7
from Demerzels-lab/elsamultiskillagent

Google search via Scrapling’s StealthyFetcher/StealthySession.

Vision Analyze (Google)

7
from Demerzels-lab/elsamultiskillagent

Analyze images using **Google Cloud Vision API**.

google-veo-dynamic-city-nightview

7
from Demerzels-lab/elsamultiskillagent

Create dynamic city night view videos using Google Veo. Use when generating cinematic urban scenes, futuristic cityscapes, or nighttime urban video content.

google-imagen-3-portrait-photography

7
from Demerzels-lab/elsamultiskillagent

Generate professional portrait photography using Google Imagen 3. Use when creating realistic portraits, headshots, or artistic character photography with professional lighting and composition.

google-imagen-3-hyperrealistic-landscape

7
from Demerzels-lab/elsamultiskillagent

Generate hyperrealistic landscape photography using Google Imagen 3. Use when creating breathtaking natural scenes, landscapes, and nature photography with exceptional detail and realism.

google-maps-b2b-extractor

7
from Demerzels-lab/elsamultiskillagent

EXTRACT UNLIMITED LEADS (Emails, Phones, Websites) from Google Maps.

google-teneo

7
from Demerzels-lab/elsamultiskillagent

The agent gives you the ability to search Google and retrieve search results.

google-maps-teneo

7
from Demerzels-lab/elsamultiskillagent

The agent gives you the ability to extract data from google maps through different commands.

google-workspace

7
from Demerzels-lab/elsamultiskillagent

Gmail, Calendar, Drive, Docs, Sheets — NO Google Cloud Console required. Just OAuth sign-in. Zero setup complexity vs traditional Google API integrations.