首页openclaw插件 › OpenClaw SeaTalk channel plugin — 插件工具

代码插件 安全

OpenClaw SeaTalk channel plugin — 插件工具

v0.3.0

The plugin's code, README, and runtime instructions are consistent with a SeaTalk channel integration and its requirements (appId/appSecret/signingSecret, webhook/relay modes); nothing appears to be requesting unrelated credentials or hidden endpoints.

0· 0·0 当前
下载插件包 项目主页
最后更新
2026/4/5
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
The plugin's code, README, and runtime instructions are consistent with a SeaTalk channel integration and its requirements (appId/appSecret/signingSecret, webhook/relay modes); nothing appears to be requesting unrelated credentials or hidden endpoints.
安全有层次,运行前请审查代码。

版本

latestv0.3.02026/3/27
● 无害

安装命令 点击复制

官方npx clawhub@latest install openclaw-seatalk
镜像加速npx clawhub@latest install openclaw-seatalk --registry https://cn.clawhub-mirror.com

插件文档

openclaw-seatalk

OpenClaw channel plugin for SeaTalk messaging.

Features

Messaging

    • Private chat — bidirectional text, image, file messaging with bot subscribers
    • Group chat — receive @mentioned messages, send text/image/file replies; configurable group allow-list and per-sender access control
    • Thread messages — full support for DM threads and group threads; replies are routed back to the originating thread
    • Quoted messages — inbound messages with quoted_message_id are automatically resolved (text + media download) and provided to the AI as context
    • Media handling — inbound: image/file/video URL download; outbound: image/file base64 upload; video receive-only
    • Typing indicator — one-shot typing status via SeaTalk API for both private and group chats (configurable: typing or off)

Agent Tool

    • group_history — fetch group chat messages in chronological order with auto-resolved quoted messages
    • group_info — get group details (name, avatar, member list)
    • group_list — list groups the bot has joined
    • thread_history — fetch DM or group thread messages with auto-resolved quoted messages
    • get_message — retrieve any message by ID

Infrastructure

    • Dual gateway modewebhook (direct HTTP server) or relay (WebSocket client via seatalk-relay)
    • Security — SHA256 signature verification for all incoming events
    • Token management — automatic access token obtain, cache, and refresh
    • Outbound coalescing — consecutive reply payloads are merged into a single message with automatic markdown-aware chunking at 4000 chars; configurable via outboundCoalescing
    • Deduplication — event ID dedup + per-sender debounce buffer (thread-aware)
    • Access control — DM policy (open/allowlist/pairing), group policy (disabled/allowlist/open), per-group and per-sender allow-lists
    • Email resolution — email-to-employee_code lookup for outbound message targets
    • Multi-account — multiple SeaTalk bot apps in one OpenClaw instance
    • Health probing — connection health check on startup
    • CLI onboarding — interactive setup wizard

Prerequisites

    • Create a Bot App on SeaTalk Open Platform
    • Get App ID, App Secret from Basic Info & Credentials
    • Get Signing Secret from Event Callback settings
    • Enable Bot capability and set status to Online
    • Enable required permissions:
    • Send Message to Bot User
    • Get Employee Code with Email (for email-to-employee_code resolution)
    • Set Typing Status in Private Chat (for DM processing indicator)
    • Set Typing Status in Group Chat (for group processing indicator)
    • Get Chat History (for group history tool)
    • Get Group Info (for group info tool)
    • Get Joined Group Chat List (for group list tool)
    • Get Thread by Thread ID in Private Chat (for DM thread tool)
    • Get Thread by Thread ID (for group thread tool)
    • Configure the Event Callback URL:

Installation

From npm

openclaw plugins install openclaw-seatalk

OpenClaw downloads the package, installs dependencies, and registers the plugin automatically. The plugin will appear in the openclaw onboard channel selection.

Plugin versionOpenClaw version
0.2.x>= 2026.3.22
0.1.x< 2026.3.22

v0.2.0 migrated to the new plugin SDK (openclaw/plugin-sdk/*). If you are running OpenClaw < 2026.3.22, pin to 0.1.x:

openclaw plugins install openclaw-seatalk@0.1.6

From source (development)

Clone the repo and link it directly — no build step required. OpenClaw loads TypeScript via Jiti at runtime.

git clone https://github.com/lf4096/openclaw-seatalk.git
cd openclaw-seatalk
npm install
openclaw plugins install -l .

Upgrading

openclaw plugins update openclaw-seatalk
openclaw gateway restart

Upgrading OpenClaw across the 2026.3.22 SDK boundary (e.g. 2026.3.13 -> 2026.3.22):

openclaw plugins disable openclaw-seatalk
openclaw update
openclaw plugins update openclaw-seatalk
openclaw plugins enable openclaw-seatalk
openclaw gateway restart

The plugin must be disabled before upgrading because the old plugin (0.1.x) imports SDK exports removed in OpenClaw >= 2026.3.22. Disabling prevents it from loading during the upgrade.

Gateway Modes

The plugin supports two gateway modes for receiving SeaTalk events:

Webhook Mode (default)

The plugin starts an HTTP server to receive SeaTalk Event Callbacks directly. Suitable when the OpenClaw host is publicly reachable or behind a reverse proxy.

SeaTalk --HTTP POST-> OpenClaw (webhook server)

Relay Mode (recommended for multiple apps)

The plugin connects to a seatalk-relay service as a WebSocket client. The relay service receives webhooks from SeaTalk and forwards events to the plugin. Suitable when OpenClaw runs behind a firewall or NAT without a public address.

SeaTalk API --HTTP POST-> seatalk-relay <-WebSocket-- OpenClaw (relay mode)

In relay mode, outbound messages (sending replies) are still sent directly from the plugin to the SeaTalk API.

Configuration

You can configure the plugin interactively:

openclaw configure      # config wizard with SeaTalk channel

Or edit the OpenClaw config file directly (~/.openclaw/openclaw.json).

Webhook mode (DM only)

{
  channels: {
    seatalk: {
      enabled: true,
      mode: "webhook",  // default, can be omitted
      appId: "your_app_id",
      appSecret: "your_app_secret",
      signingSecret: "your_signing_secret",
      webhookPort: 3210,
      webhookPath: "/callback",
      dmPolicy: "open",  // or "allowlist" | "pairing"
      // allowFrom: ["e_12345678", "alice@company.com"],
    },
  },
}

Relay mode with group chat

{
  channels: {
    seatalk: {
      enabled: true,
      mode: "relay",
      appId: "your_app_id",
      appSecret: "your_app_secret",
      signingSecret: "your_signing_secret",
      relayUrl: "ws://relay.example.com:8080/ws",
      dmPolicy: "allowlist",
      allowFrom: ["alice@company.com"],
      groupPolicy: "allowlist",      // "disabled" | "allowlist" | "open"
      groupAllowFrom: ["group_abc123"],
      groupSenderAllowFrom: ["alice@company.com"],  // optional sender-level filter
      processingIndicator: "typing", // "typing" (default) | "off"
      tools: {
        groupInfo: true,
        groupHistory: true,
        groupList: true,
        threadHistory: true,
        getMessage: true,
      },
    },
  },
}

Config fields

FieldTypeDefaultDescription
mode"webhook" \"relay""webhook"Gateway mode
appIdstringSeaTalk App ID
appSecretstringSeaTalk App Secret
signingSecretstringSeaTalk Signing Secret
webhookPortnumber8080HTTP port (webhook mode only)
webhookPathstring"/callback"HTTP path (webhook mode only)
relayUrlstringWebSocket URL (relay mode only)
dmPolicy"open" \"allowlist" \"pairing""allowlist"Who can DM the bot (pairing: approve via CLI)
allowFromstring[]Allowed DM senders (employee codes or emails)
groupPolicy"disabled" \"allowlist" \"open""disabled"Group chat policy
groupAllowFromstring[]Allowed group IDs (when groupPolicy: "allowlist")
groupSenderAllowFromstring[]Allowed senders within groups (employee codes or emails)
outboundCoalescingbooleantrueMerge consecutive reply payloads into a single message (4000-char chunking)
processingIndicator"typing" \"off""typing"Show typing status while processing
mediaAllowHostsstring[]["openapi.seatalk.io"]Allowed hostnames for inbound media downloads (HTTPS only)
tools.groupInfobooleantrueEnable seatalk tool group_info action
tools.groupHistorybooleantrueEnable seatalk tool group_history action
tools.groupListbooleantrueEnable seatalk tool group_list action
tools.threadHistorybooleantrueEnable seatalk tool thread_history action
tools.getMessagebooleantrueEnable seatalk tool get_message action

Credentials can also be provided via environment variables:

Env VarConfig Field
SEATALK_APP_IDappId
SEATALK_APP_SECRETappSecret
SEATALK_SIGNING_SECRETsigningSecret

Multi-account

Each account has its own credentials and gateway mode. Top-level fields (e.g. tools, dmPolicy) serve as defaults that accounts inherit and can override.

{
  channels: {
    seatalk: {
      dmPolicy: "allowlist",
      tools: { groupHistory: false },
      accounts: {
        production: {
          enabled: true,
          appId: "prod_app_id",
          appSecret: "prod_app_secret",
          signingSecret: "prod_signing_secret",
          mode: "relay",
          relayUrl: "wss://relay.example.com/ws",
          groupPolicy: "open",
        },
        staging: {
          enabled: true,
          appId: "staging_app_id",
          appSecret: "staging_app_secret",
          signingSecret: "staging_signing_secret",
          mode: "webhook",
          webhookPort: 3211,
        },
      },
    },
  },
}

Agent Tool

The plugin registers a seatalk agent tool using a Type.Union schema (each action defines its own required/optional parameters):

ActionDescriptionRequired paramsOptional params
group_historyFetch recent group messages (chronological order, quoted messages auto-resolved)group_idpage_size, cursor
group_infoGet group details (name, members)group_id
group_listList groups the bot has joinedpage_size, cursor
thread_historyFetch thread messages (chronological order, quoted messages auto-resolved)thread_idgroup_id, employee_code, page_size, cursor
get_messageGet a single message by ID (resolves any message_id or quoted_message_id)message_id

Quoted messages: group_history and thread_history auto-resolve quoted_message_id for each message, embedding the result as a quoted_message field. Use get_message for ad-hoc lookups.

Each action can be individually disabled via the tools config.

Development

# Install dependencies
pnpm install

# Format code
pnpm format

# Lint
pnpm lint

# Check (format + lint)
pnpm check

数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务