ClawShorts
by @cindulasai
Block YouTube Shorts on Fire TV. Use when asked to check, manage, or configure YouTube Shorts limiting on Buck's Fire TV devices. Triggers on requests like "...
clawhub install clawshortsπ About This Skill
name: clawshorts description: Block YouTube Shorts on Fire TV. Use when asked to check, manage, or configure YouTube Shorts limiting on Buck's Fire TV devices. Triggers on requests like "check shorts quota", "reset shorts", "shorts status", "how much shorts watched today", "stop shorts limiter", "start shorts limiter". metadata: { "openclaw": { "requires": { "bins": ["adb", "python3"] } } }
ClawShorts
YouTube Shorts limiter for Fire TV. Monitors watch time per device and auto-blocks when daily limit is reached.
Invocation
Primary entry point:
~/.openclaw/workspace/skills/clawshorts/scripts/clawshorts.sh
Commands
| Command | When to use |
|---------|-------------|
| status | Check today's usage, remaining quota, daemon health |
| reset [IP] | Reset today's counter (all devices or specific IP) |
| start | Start the daemon if not running |
| stop | Stop the daemon |
| history [days] | Show watch history (default 30 days) |
| logs [N] | Show last N daemon log lines (default 50) |
| list | List all configured devices with per-device config |
| setup | First-time setup for a new device |
| add | Add another Fire TV |
| connect | Connect ADB to device + auto-detect screen |
| enable / disable | Enable/disable a device |
| config [show\|get\|set\|reset] | View/set global or per-device config |
| detect | Re-detect screen resolution via ADB, update DB |
Detection Logic
Detection requires both conditions to be true simultaneously: 1. Player width < 30% of screen width (configurable per-device) 2. Aspect ratio < 1.3 (portrait β distinguishes Shorts from 16:9 landscape previews)
Configuration
All detection parameters are stored in SQLite with global defaults and per-device overrides.
Global defaults (shorts config):
| key | default | description |
|-----|---------|-------------|
| shorts_width_threshold | 0.30 | player width must be < this ratio of screen width |
| shorts_max_aspect_ratio | 1.3 | portrait if ar < this value |
| shorts_fallback_height_ratio | 0.4 | fallback: player height must exceed this ratio of screen height |
| shorts_delta_cap | 300 | max seconds accumulated per poll |
| default_screen_width | 1920 | fallback assumed screen width |
| default_screen_height | 1080 | fallback assumed screen height |
Per-device overrides β any of the above can be set per-device in the devices table. NULL = use global default.
Config commands:
shorts config # show all global defaults
shorts config get # get a specific value
shorts config set # set global default
shorts config set # set per-device override
shorts config reset # clear per-device overrides
shorts detect # re-detect screen via ADB
Data Locations
~/.clawshorts/clawshorts.db (SQLite)config β global detection defaults
- devices β per-device settings (IP, name, limit, screen size, thresholds)
- daily_usage β daily watch time per device
~/.clawshorts/daemon.log~/Library/LaunchAgents/com.fink.clawshorts.plistRequirements
adb (Android platform tools)shorts symlink at /opt/homebrew/bin/shorts (optional)β οΈ Security Notes
ADB has no built-in authentication. Only enable ADB Debugging on a trusted, password-protected home network. Never on public WiFi. Anyone on the same network with ADB enabled can connect to your Fire TV.
This tool only accepts private IP addresses (10.x.x.x, 172.16β31.x.x, 192.168.x.x). Public IPs are rejected to prevent accidental targeting of unrelated hosts.
βοΈ Configuration
All detection parameters are stored in SQLite with global defaults and per-device overrides.
Global defaults (shorts config):
| key | default | description |
|-----|---------|-------------|
| shorts_width_threshold | 0.30 | player width must be < this ratio of screen width |
| shorts_max_aspect_ratio | 1.3 | portrait if ar < this value |
| shorts_fallback_height_ratio | 0.4 | fallback: player height must exceed this ratio of screen height |
| shorts_delta_cap | 300 | max seconds accumulated per poll |
| default_screen_width | 1920 | fallback assumed screen width |
| default_screen_height | 1080 | fallback assumed screen height |
Per-device overrides β any of the above can be set per-device in the devices table. NULL = use global default.
Config commands:
shorts config # show all global defaults
shorts config get # get a specific value
shorts config set # set global default
shorts config set # set per-device override
shorts config reset # clear per-device overrides
shorts detect # re-detect screen via ADB