{"skill":{"slug":"appletv","displayName":"Apple TV","summary":"Control Apple TV via pyatv. Use for play/pause, navigation, volume, launching apps, power control, and checking what's playing. Triggers on \"Apple TV\", \"TV\", \"what's playing\", \"pause TV\", \"play TV\", \"turn off TV\".","description":"---\nname: appletv\nversion: 1.0.0\ndescription: Control Apple TV via pyatv. Use for play/pause, navigation, volume, launching apps, power control, and checking what's playing. Triggers on \"Apple TV\", \"TV\", \"what's playing\", \"pause TV\", \"play TV\", \"turn off TV\".\nlicense: MIT\n---\n\n# Apple TV Control\n\nControl Apple TV via the pyatv library.\n\n## Requirements\n\n```bash\npipx install pyatv --python python3.11\n```\n\n> **Note:** pyatv requires Python ≤3.13. Python 3.14+ has breaking asyncio changes. Use `--python python3.11` or `python3.13` with pipx.\n\n## Configuration\n\nConfig file at `~/clawd/config/appletv.json`:\n\n```json\n{\n  \"name\": \"Living Room\",\n  \"id\": \"DEVICE_ID\",\n  \"ip\": \"192.168.x.x\",\n  \"credentials\": {\n    \"companion\": \"...\",\n    \"airplay\": \"...\"\n  }\n}\n```\n\n### First-Time Pairing\n\n```bash\n# Find your Apple TV\natvremote scan\n\n# Pair Companion protocol (required)\natvremote --id <DEVICE_ID> --protocol companion pair\n\n# Pair AirPlay protocol (for media)\natvremote --id <DEVICE_ID> --protocol airplay pair\n```\n\nSave the credentials to the config file.\n\n## Quick Commands\n\n### Status & Playing\n```bash\nscripts/appletv.py status     # Full status with now playing\nscripts/appletv.py playing    # What's currently playing\n```\n\n### Playback Control\n```bash\nscripts/appletv.py play       # Play/resume\nscripts/appletv.py pause      # Pause\nscripts/appletv.py stop       # Stop\nscripts/appletv.py next       # Next track/chapter\nscripts/appletv.py prev       # Previous\n```\n\n### Navigation\n```bash\nscripts/appletv.py up         # Navigate up\nscripts/appletv.py down       # Navigate down\nscripts/appletv.py left       # Navigate left\nscripts/appletv.py right      # Navigate right\nscripts/appletv.py select     # Press select/OK\nscripts/appletv.py menu       # Menu button\nscripts/appletv.py home       # Home screen\n```\n\n### Volume\n```bash\nscripts/appletv.py volume_up\nscripts/appletv.py volume_down\n```\n\n### Power\n```bash\nscripts/appletv.py turn_on    # Wake from sleep\nscripts/appletv.py turn_off   # Put to sleep\nscripts/appletv.py power      # Toggle\n```\n\n### Apps\n```bash\nscripts/appletv.py apps       # List installed apps\nscripts/appletv.py app Netflix\nscripts/appletv.py app YouTube\nscripts/appletv.py app \"Disney+\"\n```\n\n### Discovery\n```bash\nscripts/appletv.py scan       # Find Apple TVs on network\n```\n\n## Example Interactions\n\n- \"What's playing on the TV?\" → `scripts/appletv.py status`\n- \"Pause the TV\" → `scripts/appletv.py pause`\n- \"Turn off the Apple TV\" → `scripts/appletv.py turn_off`\n- \"Open Netflix on TV\" → `scripts/appletv.py app Netflix`\n","tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":2858,"installsAllTime":4,"installsCurrent":4,"stars":2,"versions":1},"createdAt":1769521301416,"updatedAt":1778485857338},"latestVersion":{"version":"1.0.0","createdAt":1769521301416,"changelog":"Initial release","license":null},"metadata":null,"owner":{"handle":"lucakaufmann","userId":"s176xjt16gj1h7rfkap597pytx884vav","displayName":"LucaKaufmann","image":"https://avatars.githubusercontent.com/u/1362584?v=4"},"moderation":null}