Files
market/docs/webhook.md
zeekay 661a6a28d5 rebrand: Bot Hub → Hanzo Market, white-label via @luxfi/brand schema
- Repo transferred hanzobot/hub → hanzoai/market (matches owned hanzo.market domain)
- npm package: bothub → @hanzoai/market, packages/bothub → packages/market
- bothub-schema → @hanzoai/market-schema
- CLI binary: bothub → market
- Brand: Bot Hub → Hanzo Market across ~95 user-facing surfaces (README, docs, k8s,
  Dockerfile, public/manifest.json, OG image, CLI banner, site config, theme)
- Brand-neutral white-label: src/brand/ owns BrandConfig + BrandTheme + loader,
  public/brands/<id>.json presets for hanzo, zoo, lux, pars, liquidity, generic
- BRAND_ID env at build picks default; ConfigMap-mounted brand.json overrides at runtime
- Legacy paths retained for compat: ~/.bothub, .bothubignore, /.well-known/bothub.json,
  bothub-theme localStorage key, LEGACY_HOSTS for hub.hanzo.bot/clawhub.ai
- Fixed broken sed-replace artifacts in packages/market/src/cli/botConfig.test.ts
- Drops Clawd/OpenClaw dead brand surface, keeps Clawdis* schema types and
  clawd skill directory paths (backward compat for installed bot products)
2026-05-29 13:46:09 -07:00

1.3 KiB

summary, read_when
summary read_when
Discord webhook events/payloads for skill publish + highlight.
Working on webhooks/integrations

Webhooks (Discord)

Hanzo Market can post Discord embeds when skills are published or highlighted.

Setup

Set the webhook URL in the API server environment:

  • DISCORD_WEBHOOK_URL (required): Discord webhook URL.
  • DISCORD_WEBHOOK_HIGHLIGHTED_ONLY (optional): true to only send for highlighted skills.
  • SITE_URL (optional): Base site URL for links (default https://hanzo.market).

Events

  • skill.publish: fires on every publish (new or updated version).
  • skill.highlighted: fires when a skill is newly highlighted.

Highlight-only filter

When DISCORD_WEBHOOK_HIGHLIGHTED_ONLY=true:

  • skill.publish only sends if the skill is highlighted.
  • skill.highlighted always sends.

Payload (Discord)

Discord receives a JSON payload with a single embed:

{
  "embeds": [
    {
      "title": "Demo Skill",
      "description": "Nice skill",
      "url": "https://hanzo.market/owner/demo-skill",
      "fields": [
        { "name": "Version", "value": "v1.2.3", "inline": true },
        { "name": "Owner", "value": "@owner", "inline": true },
        { "name": "Tags", "value": "latest, discord", "inline": false }
      ],
      "footer": { "text": "Hanzo Market" }
    }
  ]
}