控制 Jellyfin 媒体服务器和电视。搜索内容、恢复播放、管理会话、控制电视开关及应用程序。支持 Home Assistant 和直接 WebOS 控制。
控制机,通过CLI控制机的功能 控制机的功能是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
一个功能强大的技能,可通过 CLI 控制 Jellyfin 播放及电视电源。
tv play "Breaking Bad" —— 开启电视、启动 Jellyfin、查找下一集并开始播放。Seek 作为后备方案)。{
"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"
}
}
}
}
}
首次使用 WebOS 直连: 电视将显示配对提示。请确认配对,并保存技能输出的
TV_CLIENT_KEY—— 将其加入环境变量后,下次即可跳过该提示。
{
"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"
}
}
}
}
}
首次使用 ADB: 在电视上启用开发者选项(设置 → 关于 → 连续点击“版本号”7 次),然后启用网络/USB 调试。首次连接时电视将弹出“是否允许调试?”提示,请确认。要求 OpenClaw 主机已安装
adb(sudo apt install adb)。
| 变量 | 必需 | 说明 |
|---|---|---|
JF_URL |
是 | 你的 Jellyfin 服务器基础 URL,例如:http://192.168.1.50:8096 |
JF_API_KEY |
是 | 来自 Jellyfin 控制台 → 高级 → API Keys 的 API 密钥 |
JF_USER |
否 | 用户名 —— 用于解析用户 ID,以调用用户专属接口 |
JF_USER_ID |
否 | 直接指定用户 ID —— 可避免调用 /Users 接口 |
JF_PASS |
否 | 密码 —— 仅在通过用户会话认证时需要 |
| 变量 | 后端 | 说明 |
|---|---|---|
TV_BACKEND |
全部 | 强制指定后端:homeassistant、webos、androidtv 或 auto |
TV_PLATFORM |
HA | 强制指定平台:webos 或 androidtv(默认从实体自动识别) |
HA_URL |
HA | Home Assistant 地址,例如:http://192.168.1.138:8123 |
HA_TOKEN |
HA | Home Assistant 长期有效访问令牌(个人资料 → 长期访问令牌) |
HA_TV_ENTITY |
HA | 电视实体 ID,例如:media_player.lg_webos_tv_oled48c34la |
TV_IP |
WebOS | LG 电视 IP 地址,用于直连 WebOS SSAP 协议 |
TV_CLIENT_KEY |
WebOS | 配对密钥(首次连接时打印,请务必保存!) |
ADB_DEVICE |
AndroidTV | ADB 设备地址,例如:192.168.1.100:5555 |
TV_MAC |
全部 | 电视 MAC 地址,用于 Wake-on-LAN(开启电视所必需) |
TV_JELLYFIN_APP |
全部 | 覆盖默认 Jellyfin 应用 ID(自动检测:WebOS 为 org.jellyfin.webos,Android TV 为 org.jellyfin.androidtv) |
TV_BOOT_DELAY |
全部 | 电视唤醒后等待秒数(默认:10) |
TV_APP_DELAY |
全部 | 启动 Jellyfin 应用后等待秒数(默认:8) |
自动检测逻辑: 若 TV_BACKEND 为 auto(默认值),则按以下顺序判断:
HA_URL、HA_TOKEN 和 HA_TV_ENTITY → 使用 Home Assistant 后端ADB_DEVICE → 使用直连 ADB(Android TV)TV_IP → 使用直连 WebOS(LG 电视)开启电视 → 启动 Jellyfin → 查找下一集 → 播放。全部操作仅需一条命令:
node skills/jellyfin-control/cli.js tv play "Breaking Bad" node skills/jellyfin-control/cli.js tv play "The Matrix"
该技能会在开启电视前验证内容是否存在(快速失败机制)。
若电视和 Jellyfin 已处于运行状态:
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 # 开启电视(Wake-on-LAN) node skills/jellyfin-control/cli.js tv off # 关闭电视 node skills/jellyfin-control/cli.js tv launch # 启动 Jellyfin 应用 node skills/jellyfin-control/cli.js tv launch com.webos.app.hdmi1 # 启动指定应用 node skills/jellyfin-control/cli.js tv 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 # 需管理员权限 API 密钥
node skills/jellyfin-control/cli.js history node skills/jellyfin-control/cli.js history jorge --days 7
| 特性 | Home Assistant | 直连 WebOS | 直连 ADB(Android TV) | 无后端 |
|---|---|---|---|---|
| 支持电视品牌 | 任意(通过 HA) | 仅 LG | Android TV、Fire TV、CCwGTV | — |
| 开机(WoL) | ✅ | ✅ | ✅(WoL 或 ADB 唤醒) | — |
| 关机 | ✅ | ✅ | ✅ | — |
| 启动应用 | ✅ | ✅ | ✅ | — |
| 列出已安装应用 | ✅(通过 HA 日志) | ✅(直连输出) | ✅(直连输出) | — |
| 额外依赖 | 无 | npm install ws |
apt install adb |
无 |
| 配置复杂度 | 中等(需部署 HA) | 低(仅需电视 IP + MAC) | 低(需在电视启用 ADB) | 无 |
| Jellyfin 播放控制 | ✅ | ✅ | ✅ | ✅ |
推荐方案:
resume 命令仍可正常工作openclaw.json 的 env 字段中 —— 切勿写入 workspace 文件、.env 文件或 Markdown 文档。history、scan)需使用具备管理员权限的 Jellyfin API 密钥;若权限不足,将返回 403 错误并优雅降级。lib/jellyfin.js —— Jellyfin REST API 封装(认证、搜索、会话管理、播放控制)lib/tv.js —— 电视控制抽象层(HA 后端、WebOS 后端、Wake-on-LAN)cli.js —— 面向用户的命令行接口,涵盖全部功能指令Agent → cli.js tv play "Star Trek"
│
├── 1. 在 Jellyfin 中搜索 "Star Trek"(快速失败)
├── 2. 查找尚未播放的下一集
├── 3. 发送 Wake-on-LAN 指令 → 电视开机
├── 4. 等待 10 秒完成系统启动
├── 5. 启动 Jellyfin 应用(通过 HA 或 WebOS)
├── 6. 等待 8 秒完成会话注册
├── 7. 查找 Jellyfin 会话(最多重试 3 次)
└── 8. 在该会话中播放剧集
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章