{
  "schemaVersion": "1.0",
  "item": {
    "slug": "unifi-site-manager",
    "name": "Unifi",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/odrobnik/unifi-site-manager",
    "canonicalUrl": "https://clawhub.ai/odrobnik/unifi-site-manager",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/unifi-site-manager",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=unifi-site-manager",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SETUP.md",
      "SKILL.md",
      "scripts/unifi.py"
    ],
    "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-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.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/unifi-site-manager"
    },
    "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/unifi-site-manager",
    "agentPageUrl": "https://openagent3.xyz/skills/unifi-site-manager/agent",
    "manifestUrl": "https://openagent3.xyz/skills/unifi-site-manager/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/unifi-site-manager/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": "UniFi Network API",
        "body": "Monitor and configure UniFi network infrastructure.\n\nEntry point: {baseDir}/scripts/unifi.py"
      },
      {
        "title": "Setup",
        "body": "See SETUP.md for prerequisites and setup instructions.\n\nConfig (config.json):\n\napi_key — UniFi Cloud API key (required)\ngateway_ip — Local gateway IP (for faster local access)\nlocal_api_key — Local gateway API key\nsite_id — Default site UUID (auto-detected if only one site)\n\nRouting is automatic: local gateway when reachable, cloud connector when remote. Use --local to force local-only."
      },
      {
        "title": "Commands",
        "body": "All commands support --json for raw JSON output."
      },
      {
        "title": "Infrastructure",
        "body": "python3 {baseDir}/scripts/unifi.py list-hosts              # Controllers/consoles\npython3 {baseDir}/scripts/unifi.py list-sites              # Sites with statistics\npython3 {baseDir}/scripts/unifi.py list-devices            # All network devices (summary)\npython3 {baseDir}/scripts/unifi.py list-site-devices       # Devices with rich detail (ports, radios, features)\npython3 {baseDir}/scripts/unifi.py list-aps                # Access points only\npython3 {baseDir}/scripts/unifi.py get-device <device_id>  # Single device details\npython3 {baseDir}/scripts/unifi.py firmware-status         # Firmware versions + update availability"
      },
      {
        "title": "Clients",
        "body": "python3 {baseDir}/scripts/unifi.py list-clients              # Currently connected clients\npython3 {baseDir}/scripts/unifi.py list-clients --detailed    # With traffic/signal stats\npython3 {baseDir}/scripts/unifi.py list-known-clients         # All known clients (current + historical)\npython3 {baseDir}/scripts/unifi.py list-known-clients --named # Only clients with custom names\npython3 {baseDir}/scripts/unifi.py list-ap-clients            # Wireless clients grouped by AP\npython3 {baseDir}/scripts/unifi.py list-ap-clients --ap Living  # Filter by AP name\npython3 {baseDir}/scripts/unifi.py get-client <client_id>     # Single client details\npython3 {baseDir}/scripts/unifi.py label-client <mac> \"Name\"  # Set custom name for a client"
      },
      {
        "title": "Networks & WLANs",
        "body": "python3 {baseDir}/scripts/unifi.py list-networks             # Configured networks (VLANs)\npython3 {baseDir}/scripts/unifi.py get-wlan-config            # WLAN/SSID configurations\npython3 {baseDir}/scripts/unifi.py get-wlan-config --ssid Hogwarts  # Specific SSID\npython3 {baseDir}/scripts/unifi.py set-wlan --ssid Hogwarts \\\n  --fast-roaming on \\\n  --bss-transition on \\\n  --pmf required \\\n  --band-steering prefer_5g"
      },
      {
        "title": "Network DNS",
        "body": "python3 {baseDir}/scripts/unifi.py get-network-dns              # All networks\npython3 {baseDir}/scripts/unifi.py get-network-dns Default       # Specific network\npython3 {baseDir}/scripts/unifi.py set-network-dns Default \\\n  --dns1 1.1.1.1 --dns2 1.0.0.1                                 # Set DNS servers\npython3 {baseDir}/scripts/unifi.py set-network-dns Default \\\n  --dns1 auto                                                    # Disable override (use gateway)"
      },
      {
        "title": "Radio Configuration",
        "body": "python3 {baseDir}/scripts/unifi.py get-radio-config           # Radio config for all APs\npython3 {baseDir}/scripts/unifi.py get-radio-config --ap Living  # Specific AP\npython3 {baseDir}/scripts/unifi.py set-radio --ap Living --band 5 \\\n  --channel 36 --width 80 --power high"
      },
      {
        "title": "Events",
        "body": "python3 {baseDir}/scripts/unifi.py list-events                # All site events\npython3 {baseDir}/scripts/unifi.py list-events --filter Roam   # Filter by event type\npython3 {baseDir}/scripts/unifi.py list-events --mac aa:bb:cc:dd:ee:ff  # Filter by MAC"
      },
      {
        "title": "Notes",
        "body": "Site is auto-detected when only one exists; use --site <siteId> otherwise\n--local forces local gateway access (errors if unreachable)\nEvent buffer is limited (~3 weeks of history depending on volume)\nApple devices use randomized MACs; use label-client to track them by their per-network Wi-Fi Address"
      }
    ],
    "body": "UniFi Network API\n\nMonitor and configure UniFi network infrastructure.\n\nEntry point: {baseDir}/scripts/unifi.py\n\nSetup\n\nSee SETUP.md for prerequisites and setup instructions.\n\nConfig (config.json):\n\napi_key — UniFi Cloud API key (required)\ngateway_ip — Local gateway IP (for faster local access)\nlocal_api_key — Local gateway API key\nsite_id — Default site UUID (auto-detected if only one site)\n\nRouting is automatic: local gateway when reachable, cloud connector when remote. Use --local to force local-only.\n\nCommands\n\nAll commands support --json for raw JSON output.\n\nInfrastructure\npython3 {baseDir}/scripts/unifi.py list-hosts              # Controllers/consoles\npython3 {baseDir}/scripts/unifi.py list-sites              # Sites with statistics\npython3 {baseDir}/scripts/unifi.py list-devices            # All network devices (summary)\npython3 {baseDir}/scripts/unifi.py list-site-devices       # Devices with rich detail (ports, radios, features)\npython3 {baseDir}/scripts/unifi.py list-aps                # Access points only\npython3 {baseDir}/scripts/unifi.py get-device <device_id>  # Single device details\npython3 {baseDir}/scripts/unifi.py firmware-status         # Firmware versions + update availability\n\nClients\npython3 {baseDir}/scripts/unifi.py list-clients              # Currently connected clients\npython3 {baseDir}/scripts/unifi.py list-clients --detailed    # With traffic/signal stats\npython3 {baseDir}/scripts/unifi.py list-known-clients         # All known clients (current + historical)\npython3 {baseDir}/scripts/unifi.py list-known-clients --named # Only clients with custom names\npython3 {baseDir}/scripts/unifi.py list-ap-clients            # Wireless clients grouped by AP\npython3 {baseDir}/scripts/unifi.py list-ap-clients --ap Living  # Filter by AP name\npython3 {baseDir}/scripts/unifi.py get-client <client_id>     # Single client details\npython3 {baseDir}/scripts/unifi.py label-client <mac> \"Name\"  # Set custom name for a client\n\nNetworks & WLANs\npython3 {baseDir}/scripts/unifi.py list-networks             # Configured networks (VLANs)\npython3 {baseDir}/scripts/unifi.py get-wlan-config            # WLAN/SSID configurations\npython3 {baseDir}/scripts/unifi.py get-wlan-config --ssid Hogwarts  # Specific SSID\npython3 {baseDir}/scripts/unifi.py set-wlan --ssid Hogwarts \\\n  --fast-roaming on \\\n  --bss-transition on \\\n  --pmf required \\\n  --band-steering prefer_5g\n\nNetwork DNS\npython3 {baseDir}/scripts/unifi.py get-network-dns              # All networks\npython3 {baseDir}/scripts/unifi.py get-network-dns Default       # Specific network\npython3 {baseDir}/scripts/unifi.py set-network-dns Default \\\n  --dns1 1.1.1.1 --dns2 1.0.0.1                                 # Set DNS servers\npython3 {baseDir}/scripts/unifi.py set-network-dns Default \\\n  --dns1 auto                                                    # Disable override (use gateway)\n\nRadio Configuration\npython3 {baseDir}/scripts/unifi.py get-radio-config           # Radio config for all APs\npython3 {baseDir}/scripts/unifi.py get-radio-config --ap Living  # Specific AP\npython3 {baseDir}/scripts/unifi.py set-radio --ap Living --band 5 \\\n  --channel 36 --width 80 --power high\n\nEvents\npython3 {baseDir}/scripts/unifi.py list-events                # All site events\npython3 {baseDir}/scripts/unifi.py list-events --filter Roam   # Filter by event type\npython3 {baseDir}/scripts/unifi.py list-events --mac aa:bb:cc:dd:ee:ff  # Filter by MAC\n\nNotes\nSite is auto-detected when only one exists; use --site <siteId> otherwise\n--local forces local gateway access (errors if unreachable)\nEvent buffer is limited (~3 weeks of history depending on volume)\nApple devices use randomized MACs; use label-client to track them by their per-network Wi-Fi Address"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/odrobnik/unifi-site-manager",
    "publisherUrl": "https://clawhub.ai/odrobnik/unifi-site-manager",
    "owner": "odrobnik",
    "version": "3.2.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/unifi-site-manager",
    "downloadUrl": "https://openagent3.xyz/downloads/unifi-site-manager",
    "agentUrl": "https://openagent3.xyz/skills/unifi-site-manager/agent",
    "manifestUrl": "https://openagent3.xyz/skills/unifi-site-manager/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/unifi-site-manager/agent.md"
  }
}