Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Control Jellyfin media server and TV. Search content, resume playback, manage sessions, control TV power and apps. Supports Home Assistant and direct WebOS b...
Control Jellyfin media server and TV. Search content, resume playback, manage sessions, control TV power and apps. Supports Home Assistant and direct WebOS b...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
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.
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.
A robust skill to control Jellyfin playback and TV power via CLI.
π― One-Command Play: tv play "Breaking Bad" β turns on TV, launches Jellyfin, finds the next episode, and plays it. Smart Resume: Automatically finds the next unplayed episode for series. Resume Position: Resumes Movies/Episodes exactly where left off (with Seek fallback for LG WebOS/Tizen). Device Discovery: Auto-detects controllable sessions (TVs, Phones, Web). Remote Control: Full playback control (play, pause, stop, next, prev, volume, mute). TV Power & Apps: Turn TV on/off, launch apps β works with or without Home Assistant. Two TV Backends: Home Assistant integration or direct WebOS (LG TVs, no HA needed). Android TV Support: Direct ADB backend for Chromecast w/ Google TV, Nvidia Shield, Fire TV, Mi Box β no HA needed. Three connection modes: Home Assistant (any TV), direct WebOS (LG), direct ADB (Android TV/Fire TV).
{ "skills": { "entries": { "jellyfin-control": { "env": { "JF_URL": "http://YOUR_IP:8096", "JF_API_KEY": "your-api-key-here", "JF_USER": "your-username" } } } } }
{ "skills": { "entries": { "jellyfin-control": { "env": { "JF_URL": "http://192.168.1.50:8096", "JF_API_KEY": "your-jellyfin-api-key", "JF_USER": "victor", "HA_URL": "http://192.168.1.138:8123", "HA_TOKEN": "your-ha-long-lived-token", "HA_TV_ENTITY": "media_player.lg_webos_tv_oled48c34la", "TV_MAC": "AA:BB:CC:DD:EE:FF" } } } } }
{ "skills": { "entries": { "jellyfin-control": { "env": { "JF_URL": "http://192.168.1.50:8096", "JF_API_KEY": "your-jellyfin-api-key", "JF_USER": "victor", "TV_IP": "192.168.1.100", "TV_MAC": "AA:BB:CC:DD:EE:FF" } } } } } First time with WebOS direct: The TV will show a pairing prompt. Accept it and save the TV_CLIENT_KEY the skill prints β add it to your env to skip the prompt next time.
{ "skills": { "entries": { "jellyfin-control": { "env": { "JF_URL": "http://192.168.1.50:8096", "JF_API_KEY": "your-jellyfin-api-key", "JF_USER": "victor", "ADB_DEVICE": "192.168.1.100:5555", "TV_MAC": "AA:BB:CC:DD:EE:FF" } } } } } First time with ADB: Enable Developer Options on your TV (Settings β About β tap Build Number 7 times), then enable Network/USB debugging. First connection will show "Allow debugging?" on the TV β accept it. Requires adb installed on the OpenClaw host (sudo apt install adb).
VariableRequiredDescriptionJF_URLYesBase URL of your Jellyfin server, e.g. http://192.168.1.50:8096JF_API_KEYYesAPI key from Jellyfin Dashboard β Advanced β API KeysJF_USERNoUsername β used to resolve user ID for user-specific endpointsJF_USER_IDNoUser ID directly β avoids needing to call /UsersJF_PASSNoPassword β only if authenticating by user session
VariableBackendDescriptionTV_BACKENDAllForce backend: homeassistant, webos, androidtv, or autoTV_PLATFORMHAForce platform: webos or androidtv (auto-detected from entity)HA_URLHAHome Assistant URL, e.g. http://192.168.1.138:8123HA_TOKENHAHA long-lived access token (Profile β Long-Lived Access Tokens)HA_TV_ENTITYHAEntity ID of your TV, e.g. media_player.lg_webos_tv_oled48c34laTV_IPWebOSLG TV IP address for direct WebOS SSAP connectionTV_CLIENT_KEYWebOSPairing key (printed on first connection β save it!)ADB_DEVICEAndroidTVTV address for ADB, e.g. 192.168.1.100:5555TV_MACAllTV MAC address for Wake-on-LAN (needed to turn on TV)TV_JELLYFIN_APPAllOverride Jellyfin app ID (auto: org.jellyfin.webos / org.jellyfin.androidtv)TV_BOOT_DELAYAllSeconds to wait after TV wake (default: 10)TV_APP_DELAYAllSeconds to wait after launching Jellyfin (default: 8) Auto-detection: If TV_BACKEND is auto (default): HA_URL + HA_TOKEN + HA_TV_ENTITY set β Home Assistant backend ADB_DEVICE set β direct ADB (Android TV) TV_IP set β direct WebOS (LG) Nothing set β TV commands disabled, Jellyfin-only mode
Turn on TV β launch Jellyfin β find next episode β play it. All in one command: node skills/jellyfin-control/cli.js tv play "Breaking Bad" node skills/jellyfin-control/cli.js tv play "The Matrix" The skill validates the content exists BEFORE turning on the TV (fail fast).
If TV and Jellyfin are already running: node skills/jellyfin-control/cli.js resume "Breaking Bad" node skills/jellyfin-control/cli.js resume "Matrix" --device "Chromecast"
node skills/jellyfin-control/cli.js tv on # Turn on (Wake-on-LAN) node skills/jellyfin-control/cli.js tv off # Turn off node skills/jellyfin-control/cli.js tv launch # Launch Jellyfin app node skills/jellyfin-control/cli.js tv launch com.webos.app.hdmi1 # Launch specific app node skills/jellyfin-control/cli.js tv apps # List installed apps
node skills/jellyfin-control/cli.js control pause node skills/jellyfin-control/cli.js control play node skills/jellyfin-control/cli.js control next node skills/jellyfin-control/cli.js control vol 50
node skills/jellyfin-control/cli.js search "Star Wars"
node skills/jellyfin-control/cli.js stats node skills/jellyfin-control/cli.js scan # requires admin API key
node skills/jellyfin-control/cli.js history node skills/jellyfin-control/cli.js history jorge --days 7
FeatureHome AssistantDirect WebOSDirect ADB (Android TV)No BackendTV brandsAny (via HA)LG onlyAndroid TV, Fire TV, CCwGTVβTurn on (WoL)β β β (WoL or ADB wakeup)βTurn offβ β β βLaunch appsβ β β βList appsβ (via HA logs)β (direct output)β (direct output)βExtra dependencyNonenpm install wsapt install adbNoneSetup complexityMedium (need HA)Low (TV IP + MAC)Low (enable ADB on TV)NoneJellyfin playbackβ β β β Recommendation: Already have Home Assistant? β Use HA backend (most versatile, any TV brand) LG WebOS TV, no HA? β Use direct WebOS backend Android TV / Fire TV / Chromecast with Google TV, no HA? β Use direct ADB backend No smart TV control needed? β Skip TV config, resume works if Jellyfin app is already open
API keys only in openclaw.json env β never in workspace files, .env files, or markdown docs. HA tokens are long-lived and powerful. Create a dedicated HA user with limited permissions if possible. TV_CLIENT_KEY (WebOS) is sensitive β it allows full control of your TV. Treat it like a password. ADB access grants full control of your Android TV. Ensure your network is secured β anyone on the same network could connect via ADB if debugging is enabled. Admin operations (history, scan) require an admin-level Jellyfin API key and will fail gracefully with 403 if permissions are insufficient.
lib/jellyfin.js β Jellyfin REST API (auth, search, sessions, playback control) lib/tv.js β TV control abstraction (HA backend, WebOS backend, Wake-on-LAN) cli.js β User-friendly CLI with all commands
Agent β cli.js tv play "Star Trek" β βββ 1. Search Jellyfin for "Star Trek" (fail fast) βββ 2. Find next unplayed episode βββ 3. Wake-on-LAN β TV turns on βββ 4. Wait 10s for boot βββ 5. Launch Jellyfin app (HA or WebOS) βββ 6. Wait 8s for session registration βββ 7. Find Jellyfin session (retry 3x) βββ 8. Play episode on session
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.