← Back to Skills Marketplace
yuqian-shi

Denon AVR Control

by Yuqian Shi · GitHub ↗ · v0.1.0 · MIT-0
cross-platform ✓ Security Clean
225
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install denon-avr-control
Description
Control a network-connected Denon AVR/AVC receiver over its classic IP control interface (TCP telnet-style commands or the goform HTTP endpoint), and expose...
README (SKILL.md)

Denon AVR Control

Use this skill to control a Denon receiver on the local network.

Quick start

  1. Identify the receiver host or IP address.
  2. Start with a read/query action before making changes.
  3. Use scripts/denon_avr.py for normal operations.
  4. If a model-specific command is missing, read references/commands.md and use --raw.

Default workflow

Query status

Run:

python3 skills/denon-avr-control/scripts/denon_avr.py --host \x3Cip-or-hostname> --status

Power

python3 skills/denon-avr-control/scripts/denon_avr.py --host \x3Cip-or-hostname> --power on
python3 skills/denon-avr-control/scripts/denon_avr.py --host \x3Cip-or-hostname> --power off

Volume

python3 skills/denon-avr-control/scripts/denon_avr.py --host \x3Cip-or-hostname> --volume 35.5
python3 skills/denon-avr-control/scripts/denon_avr.py --host \x3Cip-or-hostname> --volume-up 3
python3 skills/denon-avr-control/scripts/denon_avr.py --host \x3Cip-or-hostname> --volume-down 2

Inputs

python3 skills/denon-avr-control/scripts/denon_avr.py --host \x3Cip-or-hostname> --input tv
python3 skills/denon-avr-control/scripts/denon_avr.py --host \x3Cip-or-hostname> --input game
python3 skills/denon-avr-control/scripts/denon_avr.py --host \x3Cip-or-hostname> --input heos

Mute

python3 skills/denon-avr-control/scripts/denon_avr.py --host \x3Cip-or-hostname> --mute on
python3 skills/denon-avr-control/scripts/denon_avr.py --host \x3Cip-or-hostname> --mute off

Transport choice

Prefer the default TCP transport first:

python3 skills/denon-avr-control/scripts/denon_avr.py --host \x3Cip-or-hostname> --status

If the receiver only responds on the HTTP control endpoint:

python3 skills/denon-avr-control/scripts/denon_avr.py --host \x3Cip-or-hostname> --transport http --status

Raw commands

Use raw mode for model-specific features or when the canned arguments are not enough:

python3 skills/denon-avr-control/scripts/denon_avr.py --host \x3Cip-or-hostname> --raw PW? --raw MV? --raw SI?

Read references/commands.md for the common command families.

Local computer playback

If the user wants to play local audio files on the computer itself, use scripts/local_audio_jukebox.py together with this receiver-control skill.

Read references/local-playback.md when the task is to:

  • scan a local directory for songs
  • play a random song or a short random queue
  • play tracks that match a user query
  • build a simple playlist from user-provided terms
  • stop or inspect the local player state

This workflow plays audio on the local computer, so that machine's system output must already be routed to the receiver if sound should come out of the receiver.

Experimental DLNA push mode

If the user wants the Denon itself to fetch and play a local file over the LAN, use scripts/dlna_push.py.

Read references/dlna-push.md when the task is to:

  • scan a folder for audio files before choosing one
  • push a random local track directly to the Denon renderer
  • push a track chosen by user query
  • push a specific file path to the Denon
  • stop the remote playback and shut down the temporary HTTP server
  • support the same approach on Windows and macOS

This mode is more cross-platform than local-output playback because it uses Python + HTTP + UPnP/DLNA. It is still experimental and currently strongest for single-track push.

Real DLNA media server mode

If ad-hoc URL push is unreliable on a receiver, use scripts/simple_dlna_server.py instead.

Read references/dlna-server.md when the task is to:

  • expose one or more user-chosen music directories as a real discoverable DLNA MediaServer
  • let the user decide the music path(s) instead of assuming a fixed folder
  • let the Denon browse the library through its Local Music / HEOS path
  • support a more Windows-friendly and standards-based setup
  • avoid raw one-off URL playback hacks

This mode provides SSDP discovery, a device description, a ContentDirectory service, a ConnectionManager service, and direct HTTP media serving.

Prefer this mode for cross-platform local-library playback.

Guardrails

  • Query first when you do not know current state.
  • Send one mutating action at a time unless the user explicitly wants a batch.
  • Treat input names and sound modes as model-dependent; if a friendly alias fails, switch to --raw.
  • If the user did not provide the receiver address, ask for the IP/hostname or discover it only if they explicitly want network scanning.
Usage Guidance
This skill appears to be what it says, but it will do actions that can affect your local system and LAN: it can scan any directories you point it at, start an HTTP server that serves files from those directories to your LAN, spawn local media players (afplay/ffplay), and write state under ~/.openclaw/state. Only allow it to scan or serve directories you trust (do not point it at your home directory or any folder with sensitive files). When pushing tracks to the receiver, ensure the chosen serve-host/port and firewall settings are what you intend. Note the scripts briefly open a socket to determine a local IP (connect attempt to 8.8.8.8), and they spawn subprocesses — these are normal for this functionality but worth knowing. Finally, the source/homepage is unknown: if you require provenance, request the author/source or prefer a package with a verifiable upstream before enabling autonomous agent invocation.
Capability Analysis
Type: OpenClaw Skill Name: denon-avr-control Version: 0.1.0 The denon-avr-control skill bundle provides legitimate functionality for controlling Denon/Marantz receivers and serving local audio files via DLNA. The scripts (denon_avr.py, dlna_push.py, simple_dlna_server.py, and local_audio_jukebox.py) use standard Python libraries to implement TCP/HTTP control protocols, UPnP/SOAP messaging, and local media serving. While the bundle includes capabilities such as starting local HTTP servers, handling UDP multicast for SSDP discovery, and executing local media players via subprocesses, these actions are explicitly documented and necessary for the stated purpose. No evidence of data exfiltration, malicious prompt injection, or unauthorized persistence was found.
Capability Assessment
Purpose & Capability
The name/description match the included scripts: denon_avr.py implements TCP/HTTP Denon commands, dlna_push.py and simple_dlna_server.py implement local HTTP/DLNA serving, and local_audio_jukebox.py scans/plays local files. No unexpected cloud credentials, unrelated binaries, or opaque install steps are requested.
Instruction Scope
SKILL.md and the code instruct the agent to scan user-provided directories, start local HTTP servers, spawn local players (afplay/ffplay), and write state to ~/.openclaw/state. Those actions are consistent with the stated features but they do involve reading filesystem paths chosen by the user and serving files over the LAN — the agent should only do those when the user explicitly consents and provides the directories/host info.
Install Mechanism
There is no install spec (instruction-only), so nothing is downloaded or installed automatically. The bundled Python scripts will run directly with the system Python; this is the lowest install risk.
Credentials
The skill requests no environment variables or external credentials. It does create per-user state under the home directory (~/.openclaw/state) which is proportionate to keeping server/process state for stop/status operations.
Persistence & Privilege
always is false and the skill does not modify other skills or system-wide configs. It stores small state files under the user's home directory and launches short-lived subprocesses/HTTP servers as expected for media serving.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install denon-avr-control
  3. After installation, invoke the skill by name or use /denon-avr-control
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v0.1.0
Initial release of denon-avr-control. - Control Denon AVR/AVC receivers on your network using TCP or HTTP commands. - Power on/off, change volume, mute, switch inputs, and query receiver status. - Send raw Denon commands for advanced or model-specific features. - Play local audio directories through the receiver using DLNA/UPnP or classic network push. - Includes scripts for receiver control, local playback, DLNA push, and a full DLNA media server. - Guidance for safe operation: query state first and use model-specific workarounds as needed. - Tested on MacOS
Metadata
Slug denon-avr-control
Version 0.1.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Denon AVR Control?

Control a network-connected Denon AVR/AVC receiver over its classic IP control interface (TCP telnet-style commands or the goform HTTP endpoint), and expose... It is an AI Agent Skill for Claude Code / OpenClaw, with 225 downloads so far.

How do I install Denon AVR Control?

Run "/install denon-avr-control" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Denon AVR Control free?

Yes, Denon AVR Control is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Denon AVR Control support?

Denon AVR Control is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Denon AVR Control?

It is built and maintained by Yuqian Shi (@yuqian-shi); the current version is v0.1.0.

💬 Comments