{
  "schemaVersion": "1.0",
  "item": {
    "slug": "apple-media",
    "name": "Apple Media Remote (for HomePod, Apple TV, etc)",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/aaronn/apple-media",
    "canonicalUrl": "https://clawhub.ai/aaronn/apple-media",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/apple-media",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=apple-media",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "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. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/apple-media"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/apple-media",
    "agentPageUrl": "https://openagent3.xyz/skills/apple-media/agent",
    "manifestUrl": "https://openagent3.xyz/skills/apple-media/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/apple-media/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "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. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Apple Media Remote",
        "body": "Control Apple TV, HomePod, and AirPlay devices from the command line using atvremote."
      },
      {
        "title": "Setup Notes",
        "body": "pyatv has a compatibility issue with Python 3.14+. Use --python python3.13 (or any version ≤3.13) when installing.\nIf ~/.local/bin isn't on your PATH after install, run: pipx ensurepath\nIf your default Python is 3.14+, you can also call directly: python3.13 -m pyatv.scripts.atvremote <command>"
      },
      {
        "title": "Scan for Devices",
        "body": "atvremote scan\natvremote --scan-hosts 10.0.0.50 scan          # Scan specific IP (faster)\natvremote --scan-hosts 10.0.0.50,10.0.0.51 scan  # Multiple IPs\n\nReturns all discoverable Apple TV, HomePod, and AirPlay devices on the local network with their names, addresses, protocols, and pairing status."
      },
      {
        "title": "Target a Device",
        "body": "Use -n <name> (device name), -s <ip> (address), or -i <id> (identifier) to target:\n\natvremote -n \"Kitchen\" <command>\natvremote -s 10.0.0.50 <command>\natvremote -i AA:BB:CC:DD:EE:FF <command>"
      },
      {
        "title": "Playback Control",
        "body": "atvremote -n \"Kitchen\" playing           # Now playing info (title, artist, album, position, etc.)\natvremote -n \"Kitchen\" play              # Resume playback\natvremote -n \"Kitchen\" pause             # Pause playback (resumable with play)\natvremote -n \"Kitchen\" play_pause        # Toggle play/pause\natvremote -n \"Kitchen\" stop              # Stop playback (ends session, cannot resume)\natvremote -n \"Kitchen\" next              # Next track\natvremote -n \"Kitchen\" previous          # Previous track\natvremote -n \"Kitchen\" skip_forward      # Skip forward (~10-30s, app-dependent)\natvremote -n \"Kitchen\" skip_backward     # Skip backward (~10-30s, app-dependent)\natvremote -n \"Kitchen\" skip_forward=30   # Skip forward specific seconds\natvremote -n \"Kitchen\" set_position=120  # Seek to position (seconds)\natvremote -n \"Kitchen\" set_shuffle=Songs # Shuffle: Off, Songs, Albums\natvremote -n \"Kitchen\" set_repeat=All    # Repeat: Off, Track, All"
      },
      {
        "title": "Volume",
        "body": "atvremote -n \"Kitchen\" volume            # Get current volume (0-100)\natvremote -n \"Kitchen\" set_volume=50     # Set volume (0-100)\natvremote -n \"Kitchen\" volume_up         # Step up (~2.5%)\natvremote -n \"Kitchen\" volume_down       # Step down (~2.5%)"
      },
      {
        "title": "Streaming",
        "body": "Stream local files or URLs to a device:\n\natvremote -n \"Kitchen\" stream_file=/path/to/audio.mp3   # Local file\natvremote -n \"Kitchen\" play_url=http://example.com/stream.mp3  # Remote URL\n\nSupports common audio formats (MP3, WAV, AAC, FLAC, etc.)."
      },
      {
        "title": "Power Management",
        "body": "atvremote -n \"Apple TV\" power_state      # Check power state\natvremote -n \"Apple TV\" turn_on          # Wake device\natvremote -n \"Apple TV\" turn_off         # Sleep device"
      },
      {
        "title": "Navigation (Apple TV)",
        "body": "atvremote -n \"Apple TV\" up               # D-pad up\natvremote -n \"Apple TV\" down             # D-pad down\natvremote -n \"Apple TV\" left             # D-pad left\natvremote -n \"Apple TV\" right            # D-pad right\natvremote -n \"Apple TV\" select           # Press select/enter\natvremote -n \"Apple TV\" menu             # Back/menu button\natvremote -n \"Apple TV\" home             # Home button\natvremote -n \"Apple TV\" home_hold        # Long press home (app switcher)\natvremote -n \"Apple TV\" top_menu         # Go to main menu\natvremote -n \"Apple TV\" control_center   # Open control center\natvremote -n \"Apple TV\" guide            # Show EPG/guide\natvremote -n \"Apple TV\" channel_up       # Next channel\natvremote -n \"Apple TV\" channel_down     # Previous channel\natvremote -n \"Apple TV\" screensaver      # Activate screensaver"
      },
      {
        "title": "Keyboard Input (Apple TV)",
        "body": "When a text field is focused:\n\natvremote -n \"Apple TV\" text_get                 # Get current text\natvremote -n \"Apple TV\" text_set=\"search query\"  # Replace text\natvremote -n \"Apple TV\" text_append=\" more\"      # Append text\natvremote -n \"Apple TV\" text_clear               # Clear text"
      },
      {
        "title": "App Control (Apple TV)",
        "body": "atvremote -n \"Apple TV\" app_list                          # List installed apps\natvremote -n \"Apple TV\" launch_app=com.apple.TVMusic      # Launch by bundle ID or URL"
      },
      {
        "title": "Output Devices (Multi-room)",
        "body": "Manage connected audio outputs (e.g. grouping HomePods):\n\natvremote -n \"Apple TV\" output_devices                    # List current output device IDs\natvremote -n \"Apple TV\" add_output_devices=<device_id>    # Add speaker to group\natvremote -n \"Apple TV\" remove_output_devices=<device_id> # Remove from group\natvremote -n \"Apple TV\" set_output_devices=<device_id>    # Set specific output(s)"
      },
      {
        "title": "Push Updates (Live Monitoring)",
        "body": "Watch for real-time playback changes:\n\natvremote -n \"Kitchen\" push_updates   # Prints updates as they occur (ENTER to stop)"
      },
      {
        "title": "Pairing",
        "body": "Some devices (especially Apple TV) require pairing before control:\n\natvremote -n \"Living Room\" pair                   # Pair (follow PIN prompt)\natvremote -n \"Living Room\" --protocol airplay pair  # Pair specific protocol\natvremote wizard                                  # Interactive guided setup\n\nCredentials are stored automatically in ~/.pyatv.conf after pairing."
      },
      {
        "title": "Device Info",
        "body": "atvremote -n \"Kitchen\" device_info       # Model, OS version, MAC\natvremote -n \"Kitchen\" features          # List all supported features\natvremote -n \"Kitchen\" app               # Current app playing media"
      },
      {
        "title": "Tips",
        "body": "Pause vs Stop: Use pause/play to suspend and resume. stop ends the session entirely — playback must be restarted from the source (Siri, Home app, etc.)\nHomePods with \"Pairing: NotNeeded\" can be streamed to immediately\nApple TVs typically require pairing first (all protocols the device supports)\nThe playing command shows media type, title, artist, position, shuffle/repeat state\nFor stereo HomePod pairs, target either unit by name\nUse --scan-hosts for faster targeting when you know the device IP\nNavigation and keyboard commands are primarily for Apple TV (not HomePod)"
      }
    ],
    "body": "Apple Media Remote\n\nControl Apple TV, HomePod, and AirPlay devices from the command line using atvremote.\n\nSetup Notes\npyatv has a compatibility issue with Python 3.14+. Use --python python3.13 (or any version ≤3.13) when installing.\nIf ~/.local/bin isn't on your PATH after install, run: pipx ensurepath\nIf your default Python is 3.14+, you can also call directly: python3.13 -m pyatv.scripts.atvremote <command>\nScan for Devices\natvremote scan\natvremote --scan-hosts 10.0.0.50 scan          # Scan specific IP (faster)\natvremote --scan-hosts 10.0.0.50,10.0.0.51 scan  # Multiple IPs\n\n\nReturns all discoverable Apple TV, HomePod, and AirPlay devices on the local network with their names, addresses, protocols, and pairing status.\n\nTarget a Device\n\nUse -n <name> (device name), -s <ip> (address), or -i <id> (identifier) to target:\n\natvremote -n \"Kitchen\" <command>\natvremote -s 10.0.0.50 <command>\natvremote -i AA:BB:CC:DD:EE:FF <command>\n\nPlayback Control\natvremote -n \"Kitchen\" playing           # Now playing info (title, artist, album, position, etc.)\natvremote -n \"Kitchen\" play              # Resume playback\natvremote -n \"Kitchen\" pause             # Pause playback (resumable with play)\natvremote -n \"Kitchen\" play_pause        # Toggle play/pause\natvremote -n \"Kitchen\" stop              # Stop playback (ends session, cannot resume)\natvremote -n \"Kitchen\" next              # Next track\natvremote -n \"Kitchen\" previous          # Previous track\natvremote -n \"Kitchen\" skip_forward      # Skip forward (~10-30s, app-dependent)\natvremote -n \"Kitchen\" skip_backward     # Skip backward (~10-30s, app-dependent)\natvremote -n \"Kitchen\" skip_forward=30   # Skip forward specific seconds\natvremote -n \"Kitchen\" set_position=120  # Seek to position (seconds)\natvremote -n \"Kitchen\" set_shuffle=Songs # Shuffle: Off, Songs, Albums\natvremote -n \"Kitchen\" set_repeat=All    # Repeat: Off, Track, All\n\nVolume\natvremote -n \"Kitchen\" volume            # Get current volume (0-100)\natvremote -n \"Kitchen\" set_volume=50     # Set volume (0-100)\natvremote -n \"Kitchen\" volume_up         # Step up (~2.5%)\natvremote -n \"Kitchen\" volume_down       # Step down (~2.5%)\n\nStreaming\n\nStream local files or URLs to a device:\n\natvremote -n \"Kitchen\" stream_file=/path/to/audio.mp3   # Local file\natvremote -n \"Kitchen\" play_url=http://example.com/stream.mp3  # Remote URL\n\n\nSupports common audio formats (MP3, WAV, AAC, FLAC, etc.).\n\nPower Management\natvremote -n \"Apple TV\" power_state      # Check power state\natvremote -n \"Apple TV\" turn_on          # Wake device\natvremote -n \"Apple TV\" turn_off         # Sleep device\n\nNavigation (Apple TV)\natvremote -n \"Apple TV\" up               # D-pad up\natvremote -n \"Apple TV\" down             # D-pad down\natvremote -n \"Apple TV\" left             # D-pad left\natvremote -n \"Apple TV\" right            # D-pad right\natvremote -n \"Apple TV\" select           # Press select/enter\natvremote -n \"Apple TV\" menu             # Back/menu button\natvremote -n \"Apple TV\" home             # Home button\natvremote -n \"Apple TV\" home_hold        # Long press home (app switcher)\natvremote -n \"Apple TV\" top_menu         # Go to main menu\natvremote -n \"Apple TV\" control_center   # Open control center\natvremote -n \"Apple TV\" guide            # Show EPG/guide\natvremote -n \"Apple TV\" channel_up       # Next channel\natvremote -n \"Apple TV\" channel_down     # Previous channel\natvremote -n \"Apple TV\" screensaver      # Activate screensaver\n\nKeyboard Input (Apple TV)\n\nWhen a text field is focused:\n\natvremote -n \"Apple TV\" text_get                 # Get current text\natvremote -n \"Apple TV\" text_set=\"search query\"  # Replace text\natvremote -n \"Apple TV\" text_append=\" more\"      # Append text\natvremote -n \"Apple TV\" text_clear               # Clear text\n\nApp Control (Apple TV)\natvremote -n \"Apple TV\" app_list                          # List installed apps\natvremote -n \"Apple TV\" launch_app=com.apple.TVMusic      # Launch by bundle ID or URL\n\nOutput Devices (Multi-room)\n\nManage connected audio outputs (e.g. grouping HomePods):\n\natvremote -n \"Apple TV\" output_devices                    # List current output device IDs\natvremote -n \"Apple TV\" add_output_devices=<device_id>    # Add speaker to group\natvremote -n \"Apple TV\" remove_output_devices=<device_id> # Remove from group\natvremote -n \"Apple TV\" set_output_devices=<device_id>    # Set specific output(s)\n\nPush Updates (Live Monitoring)\n\nWatch for real-time playback changes:\n\natvremote -n \"Kitchen\" push_updates   # Prints updates as they occur (ENTER to stop)\n\nPairing\n\nSome devices (especially Apple TV) require pairing before control:\n\natvremote -n \"Living Room\" pair                   # Pair (follow PIN prompt)\natvremote -n \"Living Room\" --protocol airplay pair  # Pair specific protocol\natvremote wizard                                  # Interactive guided setup\n\n\nCredentials are stored automatically in ~/.pyatv.conf after pairing.\n\nDevice Info\natvremote -n \"Kitchen\" device_info       # Model, OS version, MAC\natvremote -n \"Kitchen\" features          # List all supported features\natvremote -n \"Kitchen\" app               # Current app playing media\n\nTips\nPause vs Stop: Use pause/play to suspend and resume. stop ends the session entirely — playback must be restarted from the source (Siri, Home app, etc.)\nHomePods with \"Pairing: NotNeeded\" can be streamed to immediately\nApple TVs typically require pairing first (all protocols the device supports)\nThe playing command shows media type, title, artist, position, shuffle/repeat state\nFor stereo HomePod pairs, target either unit by name\nUse --scan-hosts for faster targeting when you know the device IP\nNavigation and keyboard commands are primarily for Apple TV (not HomePod)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/aaronn/apple-media",
    "publisherUrl": "https://clawhub.ai/aaronn/apple-media",
    "owner": "aaronn",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/apple-media",
    "downloadUrl": "https://openagent3.xyz/downloads/apple-media",
    "agentUrl": "https://openagent3.xyz/skills/apple-media/agent",
    "manifestUrl": "https://openagent3.xyz/skills/apple-media/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/apple-media/agent.md"
  }
}