| name | smartest-tv |
| description | Control a smart TV or open streaming content in the browser. Play Netflix episodes/movies, YouTube videos, Spotify music โ on TV or in browser (--tv browser). Also handles volume, power, notifications, history, 'continue watching', scenes, recommendations, cast URLs, queue, and multi-TV management. Triggers on: 'play', 'watch', 'TV', 'Netflix', 'YouTube', 'Spotify', 'volume', 'mute', 'good night', 'movie night', 'continue', 'next episode', 'scene', 'recommend', 'trending', 'cast', 'queue', 'play on browser', 'open in browser', 'stv'. |
| version | 1.0.0 |
| metadata | {"openclaw":{"requires":{"env":[],"bins":["python3","stv"],"anyBins":[],"config":[]},"primaryEnv":"","emoji":"๐บ","homepage":"https://github.com/Hybirdss/smartest-tv","os":["macos","linux"],"install":[{"kind":"uv","package":"stv","bins":["stv"]}]}} |
smartest-tv
Control a smart TV via the stv CLI โ or open content in the browser.
TV vs Browser
- TV configured:
stv play netflix "Dark" s1e1
- No TV configured: same command โ auto-opens in browser
- TV configured but user wants browser:
stv --tv browser play netflix "Dark" s1e1
- User doesn't specify: ask whether they want TV or browser
IMPORTANT: --tv browser goes BEFORE the subcommand. browser is NOT a platform.
stv --tv browser play netflix Frieren -s 2 -e 8
stv --tv browser play youtube "lofi beats"
stv play browser Frieren
stv play --tv browser Frieren
Decision Tree
Use this to pick the right action:
User wants to...
โโโ Watch something specific โ stv play (or stv --tv browser play for browser)
โโโ Watch a URL someone shared โ stv cast <URL>
โโโ Continue what they were watching โ stv next
โโโ Know what's popular โ stv whats-on
โโโ Get a suggestion โ stv recommend
โโโ Set a mood โ stv scene
โโโ Build a playlist โ stv queue add, then stv queue play
โโโ Control the TV โ stv volume / stv mute / stv on / stv off
โโโ Send a message to the screen โ stv notify
โโโ Use a different TV โ add --tv <name> to any command
โโโ Play on ALL TVs โ add --all to play/off/volume/mute/notify
โโโ Play on a GROUP of TVs โ add --group <name> to play/off/volume/mute/notify
โโโ Open in browser instead of TV โ add --tv browser
โโโ Watch with friends (remote) โ tv_sync (MCP) or --group with remote TVs
โโโ Show something on TV screen โ stv display (message, clock, dashboard, URL)
โโโ Play music everywhere โ stv audio play (screens off, multi-room)
โโโ Check viewing habits โ stv insights (weekly report, screen time)
โโโ Is my Netflix worth it? โ stv sub-value netflix --cost 17.99
โโโ Don't know what to do โ stv whats-on, then stv recommend
Platform Detection
The user rarely says "netflix" or "youtube". Infer it:
| User says | Platform | Why |
|---|
| "Play Stranger Things S4E7" | netflix | Series with season/episode |
| "Play Glass Onion" | netflix | Movie title |
| "Play Percy Jackson" | disney or auto | Could be Disney+, let auto-detect decide |
| "Play The Boys" | prime or auto | Prime Video original |
| "Play Frieren" | auto | Let stv figure out the platform |
| "Play that cooking video" | youtube | General video content |
| "Play baby shark" | youtube | Kids content, music video |
| "Play Ye White Lines" | spotify | Song/artist name |
| "Play my chill playlist" | spotify | Playlist / music genre |
| "Play lofi hip hop radio" | youtube | Live stream / radio |
When ambiguous or unsure, omit the platform โ stv play "title" auto-detects which streaming service has it in your region.
Core Commands
Play something specific
stv play netflix "Stranger Things" s4e7
stv play netflix "Glass Onion"
stv play disney "Percy Jackson" s1e1
stv play prime "The Boys" s1e1
stv play "Frieren"
stv play youtube "baby shark"
stv play spotify "Ye White Lines"
30+ streaming platforms supported: Netflix, Disney+, Prime Video, Max, Hulu, Paramount+, Peacock, Crunchyroll, Apple TV+, and more. Skip the platform name and stv auto-detects where it's streaming.
Cast a URL
User shares a link? Cast it directly. No need to figure out the platform or ID.
stv cast https://youtube.com/watch?v=dQw4w9WgXcQ
stv cast https://netflix.com/watch/81726716
stv cast https://open.spotify.com/track/3bbjDFVu...
Continue watching
"Next episode", "keep watching", "where was I" โ use stv next.
stv next
stv next "Breaking Bad"
stv history
What's trending
"What should I watch?", "what's popular?", "anything good on?" โ start with whats-on.
stv whats-on
stv whats-on netflix
stv whats-on youtube
Recommend based on history
"Recommend something", "I'm bored", "suggest a movie" โ use recommend.
stv recommend
stv recommend --mood chill
stv recommend --mood action
stv recommend --mood kids
After recommending, ask "want me to play any of these?" and use stv play on their choice.
Scene presets
"Movie night", "kids mode", "sleep mode", "music mode" โ use scenes.
stv scene movie-night
stv scene kids
stv scene sleep
stv scene music
stv scene list
stv scene create date-night
Play queue (party mode)
Multiple people want to add songs/videos? Use the queue.
stv queue add youtube "Gangnam Style"
stv queue add youtube "Despacito"
stv queue add spotify "playlist:Friday Night"
stv queue show
stv queue play
stv queue skip
stv queue clear
Multi-TV
"Play on bedroom TV", "turn off the kitchen TV" โ use --tv flag.
stv multi list
stv play netflix "Dark" --tv bedroom
stv off --tv kids-room
stv scene kids --tv kids-room
Sync / Party mode
"Play on all TVs", "play in every room", "watch with friends" โ use --all or --group.
stv --all play youtube "lo-fi beats"
stv --group party play netflix "Wednesday" s1e1
stv --all volume 20
stv --all off
stv --group home notify "Dinner's ready!"
For AI agents (MCP), use tv_sync_play to play on multiple TVs at once:
tv_sync_play(platform="netflix", query="Squid Game", season=2, episode=3, group="watch-party")
Remote TVs: Friends run stv serve, you add them as --platform remote. Groups can mix local and remote TVs. See Sync & Party Mode guide.
TV control
stv volume 25
stv mute
stv on / stv off
stv status
stv notify "Dinner's ready!"
Common Scenarios
"I'm home from work"
stv scene movie-night
stv recommend --mood chill
- User picks one โ
stv play netflix "..." or stv play youtube "..."
"Put something on for the kids"
stv scene kids --tv kids-room
(scene auto-plays Cocomelon at safe volume)
"Good night"
stv scene sleep
(ambient sounds, TV auto-off)
"Friends are coming over"
- Everyone:
stv queue add youtube "their song"
stv queue play
"What was I watching?"
stv next (continues automatically)
Or: stv history โ show the list โ user picks โ stv play
"Someone sent me a link"
stv cast <URL> (auto-detects platform + ID)
"Watch party with friends"
stv --group watch-party play netflix "Wednesday" s1e1
Or MCP: tv_sync_play(platform="netflix", query="Wednesday", season=1, episode=1, group="watch-party")
"Play music in every room"
stv --all play youtube "lo-fi hip hop" or stv --all play spotify "chill vibes"
Setup
If stv status fails with "No TV configured":
stv setup
stv setup --ip 192.168.1.100
stv doctor
MCP Tools (21 tools, optimized for AI agents)
| Tool | When to use | Key params |
|---|
tv_play | Play content by name (most common) | platform, query, season?, episode?, tv_name? |
tv_cast | User shares a URL | url, tv_name? |
tv_next | "Continue watching", "next episode" | query?, tv_name? |
tv_whats_on | "What's trending?", "what's popular?" | platform?, limit? |
tv_recommend | "Suggest something", "I'm bored" | mood?, limit? |
tv_scene | Scene presets (list or run) | action: list/run, name?, tv_name? |
tv_queue | Play queue (add/show/play/skip/clear) | action, platform?, query?, tv_name? |
tv_power | Turn TV on/off | on: bool, tv_name? |
tv_volume | Get/set volume, step, mute โ all in one | level?, direction?, mute?, tv_name? |
tv_screen | Screen on/off (audio continues) | on: bool, tv_name? |
tv_status | Current app, volume, model | tv_name? |
tv_notify | Toast notification on screen | message, tv_name? |
tv_launch | Launch app with known ID | app, content_id?, tv_name? |
tv_history | Recent play history | limit? |
tv_resolve | Get content ID without playing | platform, query, season?, episode? |
tv_sync | Play on multiple TVs at once | platform, query, group?, tv_names? |
tv_list_tvs | Show all configured TVs | |
tv_groups | List TV groups | |
tv_insights | Viewing stats, screen time, sub value | period?, report_type? |
tv_display | TV as display: dashboards, clocks, messages | content_type, data?, tv_name? |
tv_audio | Multi-room audio, screens off | action, query?, platform?, rooms? |
Troubleshooting
Wrong content plays or resolve fails
Cache might be stale. Clear it and retry:
rm ~/.config/smartest-tv/cache.json
stv play netflix "Dark" s1e1
Platform auto-detect picks wrong service
Specify the platform explicitly:
stv play disney "Percy Jackson" s1e1
Notes
- All CLI commands support
--format json for structured output
- 30+ platforms: Netflix, Disney+, Prime, Max, Hulu, Paramount+, Peacock, Crunchyroll, Apple TV+, YouTube, Spotify, and more
- First resolve: ~2-3s (web fetch). Cached after: ~0.1s
- Netflix profile selection happens on-screen (can't skip)
- If auto-search fails:
stv play netflix "X" --title-id XXXXX
tv_name is optional on every MCP tool. Omit it to use the default TV
MCP Configuration
Claude Code (stdio, automatic):
{"mcpServers": {"tv": {"command": "uvx", "args": ["stv"]}}}
OpenClaw / other agents:
{"mcpServers": {"tv": {"command": "python3", "args": ["-m", "smartest_tv"], "env": {"TV_PLATFORM": "lg", "TV_IP": "192.168.1.100"}}}}
Remote HTTP:
stv serve --port 8910