{
  "schemaVersion": "1.0",
  "item": {
    "slug": "supalytics",
    "name": "Supalytics - Web Analytics",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/yogesharc/supalytics",
    "canonicalUrl": "https://clawhub.ai/yogesharc/supalytics",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/supalytics",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=supalytics",
    "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-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/supalytics"
    },
    "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/supalytics",
    "agentPageUrl": "https://openagent3.xyz/skills/supalytics/agent",
    "manifestUrl": "https://openagent3.xyz/skills/supalytics/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/supalytics/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": "Supalytics CLI",
        "body": "Query web analytics data from Supalytics - simple, fast, GDPR-compliant analytics with revenue attribution."
      },
      {
        "title": "Installation",
        "body": "Requires Bun runtime (not Node.js):\n\n# Install Bun first\ncurl -fsSL https://bun.sh/install | bash\nexport PATH=\"$HOME/.bun/bin:$PATH\"\n\n# Install Supalytics CLI\nbun add -g @supalytics/cli"
      },
      {
        "title": "Important: OAuth in Agent Contexts",
        "body": "The supalytics login command uses OAuth device flow which requires user interaction in a browser. In agent contexts (OpenClaw, etc.), the process may be killed before OAuth completes.\n\nSolution for OpenClaw: Use background: true mode:\n\nawait exec({\n  command: 'supalytics login',\n  background: true,\n  yieldMs: 2000  // Wait 2s to capture the verification URL\n});\n\nThe agent should:\n\nRun login in background mode\nExtract and present the verification URL to the user\nWait for user to complete browser authorization\nPoll background session to check completion"
      },
      {
        "title": "Quick Setup",
        "body": "supalytics init    # Opens browser, creates site, shows tracking snippet"
      },
      {
        "title": "Manual Setup",
        "body": "supalytics login        # Opens browser for OAuth\nsupalytics sites add    # Create a new site"
      },
      {
        "title": "Quick Stats",
        "body": "supalytics stats              # Last 30 days (default)\nsupalytics stats today        # Today only\nsupalytics stats yesterday    # Yesterday\nsupalytics stats week         # This week\nsupalytics stats month        # This month\nsupalytics stats 7d           # Last 7 days\nsupalytics stats --all        # Include breakdowns (pages, referrers, countries, etc.)"
      },
      {
        "title": "Realtime Visitors",
        "body": "supalytics realtime           # Current visitors on site\nsupalytics realtime --watch   # Auto-refresh every 30s"
      },
      {
        "title": "Trend (Time Series)",
        "body": "supalytics trend              # Daily visitor trend with bar chart\nsupalytics trend --period 7d  # Last 7 days\nsupalytics trend --compact    # Sparkline only"
      },
      {
        "title": "Breakdowns",
        "body": "supalytics pages              # Top pages by visitors\nsupalytics referrers          # Top referrers\nsupalytics countries          # Traffic by country"
      },
      {
        "title": "Events",
        "body": "supalytics events                          # List all custom events\nsupalytics events signup                   # Properties for specific event\nsupalytics events signup --property plan   # Breakdown by property value"
      },
      {
        "title": "Custom Queries",
        "body": "The query command is the most flexible:\n\n# Top pages with revenue\nsupalytics query -d page -m visitors,revenue\n\n# Traffic by country and device\nsupalytics query -d country,device -m visitors\n\n# Blog traffic from US only\nsupalytics query -d page -f \"page:contains:/blog\" -f \"country:is:US\"\n\n# Hourly breakdown\nsupalytics query -d hour -m visitors -p 7d\n\n# UTM campaign performance\nsupalytics query -d utm_source,utm_campaign -m visitors,revenue\n\n# Sort by revenue descending\nsupalytics query -d page --sort revenue:desc\n\n# Pages visited by users who signed up\nsupalytics query -d page -f \"event:is:signup\"\n\n# Filter by event property\nsupalytics query -d country -f \"event_property:is:plan:premium\"\n\nAvailable metrics: visitors, pageviews, bounce_rate, avg_session_duration, revenue, conversions, conversion_rate\n\nAvailable dimensions: page, referrer, country, region, city, browser, os, device, date, hour, event, utm_source, utm_medium, utm_campaign, utm_term, utm_content"
      },
      {
        "title": "Site Management",
        "body": "supalytics sites                              # List all sites\nsupalytics sites add example.com              # Create site\nsupalytics sites update my-site -d example.com  # Update domain\nsupalytics default example.com                # Set default site\nsupalytics remove example.com                 # Remove site"
      },
      {
        "title": "Global Options",
        "body": "All analytics commands support:\n\nOptionDescription-s, --site <domain>Query specific site (otherwise uses default)-p, --period <period>Time period: 7d, 14d, 30d, 90d, 12mo, all--start <date>Start date (YYYY-MM-DD)--end <date>End date (YYYY-MM-DD)-f, --filter <filter>Filter: field:operator:value--jsonOutput raw JSON (for programmatic use)--no-revenueExclude revenue metrics-t, --testQuery localhost/test data"
      },
      {
        "title": "Filter Syntax",
        "body": "Format: field:operator:value\n\nOperators: is, is_not, contains, not_contains, starts_with\n\nExamples:\n\n-f \"country:is:US\"\n-f \"page:contains:/blog\"\n-f \"device:is:mobile\"\n-f \"referrer:is:twitter.com\"\n-f \"utm_source:is:newsletter\"\n-f \"event:is:signup\"\n-f \"event_property:is:plan:premium\""
      },
      {
        "title": "Output Formats",
        "body": "Human-readable (default): Formatted tables with colors\n\nJSON (--json): Raw JSON for parsing - use this when you need to process the data programmatically:\n\nsupalytics stats --json | jq '.data[0].metrics.visitors'\nsupalytics query -d page -m visitors --json"
      },
      {
        "title": "\"How's my site doing?\"",
        "body": "supalytics stats"
      },
      {
        "title": "\"What are my top traffic sources?\"",
        "body": "supalytics referrers\n# or with revenue\nsupalytics query -d referrer -m visitors,revenue"
      },
      {
        "title": "\"Which pages generate the most revenue?\"",
        "body": "supalytics query -d page -m revenue --sort revenue:desc"
      },
      {
        "title": "\"How's my newsletter campaign performing?\"",
        "body": "supalytics query -d utm_campaign -f \"utm_source:is:newsletter\" -m visitors,conversions,revenue"
      },
      {
        "title": "\"Who's on my site right now?\"",
        "body": "supalytics realtime"
      },
      {
        "title": "\"Show me the visitor trend this week\"",
        "body": "supalytics trend --period 7d"
      },
      {
        "title": "Troubleshooting",
        "body": "IssueSolutioncommand not found: supalyticsEnsure Bun is installed and ~/.bun/bin is in PATH, or symlink to system path (see below)No site specifiedRun supalytics default <domain> to set default siteUnauthorizedRun supalytics login to re-authenticateNo data returnedCheck site has tracking installed, try -t for test mode"
      },
      {
        "title": "OpenClaw / Daemon Usage",
        "body": "Bun installs to ~/.bun/bin which isn't in PATH for daemon processes like OpenClaw. After installation, symlink to system path:\n\nsudo ln -sf ~/.bun/bin/bun /usr/local/bin/bun\nsudo ln -sf ~/.bun/bin/supalytics /usr/local/bin/supalytics"
      }
    ],
    "body": "Supalytics CLI\n\nQuery web analytics data from Supalytics - simple, fast, GDPR-compliant analytics with revenue attribution.\n\nInstallation\n\nRequires Bun runtime (not Node.js):\n\n# Install Bun first\ncurl -fsSL https://bun.sh/install | bash\nexport PATH=\"$HOME/.bun/bin:$PATH\"\n\n# Install Supalytics CLI\nbun add -g @supalytics/cli\n\nAuthentication\nImportant: OAuth in Agent Contexts\n\nThe supalytics login command uses OAuth device flow which requires user interaction in a browser. In agent contexts (OpenClaw, etc.), the process may be killed before OAuth completes.\n\nSolution for OpenClaw: Use background: true mode:\n\nawait exec({\n  command: 'supalytics login',\n  background: true,\n  yieldMs: 2000  // Wait 2s to capture the verification URL\n});\n\n\nThe agent should:\n\nRun login in background mode\nExtract and present the verification URL to the user\nWait for user to complete browser authorization\nPoll background session to check completion\nQuick Setup\nsupalytics init    # Opens browser, creates site, shows tracking snippet\n\nManual Setup\nsupalytics login        # Opens browser for OAuth\nsupalytics sites add    # Create a new site\n\nCommands\nQuick Stats\nsupalytics stats              # Last 30 days (default)\nsupalytics stats today        # Today only\nsupalytics stats yesterday    # Yesterday\nsupalytics stats week         # This week\nsupalytics stats month        # This month\nsupalytics stats 7d           # Last 7 days\nsupalytics stats --all        # Include breakdowns (pages, referrers, countries, etc.)\n\nRealtime Visitors\nsupalytics realtime           # Current visitors on site\nsupalytics realtime --watch   # Auto-refresh every 30s\n\nTrend (Time Series)\nsupalytics trend              # Daily visitor trend with bar chart\nsupalytics trend --period 7d  # Last 7 days\nsupalytics trend --compact    # Sparkline only\n\nBreakdowns\nsupalytics pages              # Top pages by visitors\nsupalytics referrers          # Top referrers\nsupalytics countries          # Traffic by country\n\nEvents\nsupalytics events                          # List all custom events\nsupalytics events signup                   # Properties for specific event\nsupalytics events signup --property plan   # Breakdown by property value\n\nCustom Queries\n\nThe query command is the most flexible:\n\n# Top pages with revenue\nsupalytics query -d page -m visitors,revenue\n\n# Traffic by country and device\nsupalytics query -d country,device -m visitors\n\n# Blog traffic from US only\nsupalytics query -d page -f \"page:contains:/blog\" -f \"country:is:US\"\n\n# Hourly breakdown\nsupalytics query -d hour -m visitors -p 7d\n\n# UTM campaign performance\nsupalytics query -d utm_source,utm_campaign -m visitors,revenue\n\n# Sort by revenue descending\nsupalytics query -d page --sort revenue:desc\n\n# Pages visited by users who signed up\nsupalytics query -d page -f \"event:is:signup\"\n\n# Filter by event property\nsupalytics query -d country -f \"event_property:is:plan:premium\"\n\n\nAvailable metrics: visitors, pageviews, bounce_rate, avg_session_duration, revenue, conversions, conversion_rate\n\nAvailable dimensions: page, referrer, country, region, city, browser, os, device, date, hour, event, utm_source, utm_medium, utm_campaign, utm_term, utm_content\n\nSite Management\nsupalytics sites                              # List all sites\nsupalytics sites add example.com              # Create site\nsupalytics sites update my-site -d example.com  # Update domain\nsupalytics default example.com                # Set default site\nsupalytics remove example.com                 # Remove site\n\nGlobal Options\n\nAll analytics commands support:\n\nOption\tDescription\n-s, --site <domain>\tQuery specific site (otherwise uses default)\n-p, --period <period>\tTime period: 7d, 14d, 30d, 90d, 12mo, all\n--start <date>\tStart date (YYYY-MM-DD)\n--end <date>\tEnd date (YYYY-MM-DD)\n-f, --filter <filter>\tFilter: field:operator:value\n--json\tOutput raw JSON (for programmatic use)\n--no-revenue\tExclude revenue metrics\n-t, --test\tQuery localhost/test data\nFilter Syntax\n\nFormat: field:operator:value\n\nOperators: is, is_not, contains, not_contains, starts_with\n\nExamples:\n\n-f \"country:is:US\"\n-f \"page:contains:/blog\"\n-f \"device:is:mobile\"\n-f \"referrer:is:twitter.com\"\n-f \"utm_source:is:newsletter\"\n-f \"event:is:signup\"\n-f \"event_property:is:plan:premium\"\n\nOutput Formats\n\nHuman-readable (default): Formatted tables with colors\n\nJSON (--json): Raw JSON for parsing - use this when you need to process the data programmatically:\n\nsupalytics stats --json | jq '.data[0].metrics.visitors'\nsupalytics query -d page -m visitors --json\n\nExamples by Use Case\n\"How's my site doing?\"\nsupalytics stats\n\n\"What are my top traffic sources?\"\nsupalytics referrers\n# or with revenue\nsupalytics query -d referrer -m visitors,revenue\n\n\"Which pages generate the most revenue?\"\nsupalytics query -d page -m revenue --sort revenue:desc\n\n\"How's my newsletter campaign performing?\"\nsupalytics query -d utm_campaign -f \"utm_source:is:newsletter\" -m visitors,conversions,revenue\n\n\"Who's on my site right now?\"\nsupalytics realtime\n\n\"Show me the visitor trend this week\"\nsupalytics trend --period 7d\n\nTroubleshooting\nIssue\tSolution\ncommand not found: supalytics\tEnsure Bun is installed and ~/.bun/bin is in PATH, or symlink to system path (see below)\nNo site specified\tRun supalytics default <domain> to set default site\nUnauthorized\tRun supalytics login to re-authenticate\nNo data returned\tCheck site has tracking installed, try -t for test mode\nOpenClaw / Daemon Usage\n\nBun installs to ~/.bun/bin which isn't in PATH for daemon processes like OpenClaw. After installation, symlink to system path:\n\nsudo ln -sf ~/.bun/bin/bun /usr/local/bin/bun\nsudo ln -sf ~/.bun/bin/supalytics /usr/local/bin/supalytics"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/yogesharc/supalytics",
    "publisherUrl": "https://clawhub.ai/yogesharc/supalytics",
    "owner": "yogesharc",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/supalytics",
    "downloadUrl": "https://openagent3.xyz/downloads/supalytics",
    "agentUrl": "https://openagent3.xyz/skills/supalytics/agent",
    "manifestUrl": "https://openagent3.xyz/skills/supalytics/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/supalytics/agent.md"
  }
}