Use this skill to wire StockLobster alerts into OpenClaw through the hooks gateway and deliver them to Telegram or another supported outbound channel.
Read references/payload-format.md for the confirmed payload schema and examples.
Use an agent mapping, not wake, when the goal is direct Telegram delivery.
Sanitized example:
{
"hooks": {
"enabled": true,
"path": "/hooks",
"token": "<HOOKS_TOKEN>",
"mappings": [
{
"id": "stocklobster-ingest",
"name": "StockLobster ingest",
"match": {
"path": "/stocklobster",
"method": "POST"
},
"action": "agent",
"wakeMode": "now",
"agentId": "main",
"sessionKey": "hook:stocklobster",
"messageTemplate": "{{payload.text}}",
"deliver": true,
"channel": "telegram",
"to": "<TELEGRAM_CHAT_ID>"
}
]
}
}
~/.openclaw/openclaw.json./hooks and mapping path /stocklobster so the endpoint becomes:http://:18789/hooks/stocklobster messageTemplate, not textTemplate, because this flow should use action: "agent" for channel delivery.payload, for example {{payload.text}}.deliver: truechannel: "telegram"to: "" openclaw gateway restart
curl -X POST 'http://<HOST>:18789/hooks/stocklobster' \
-H 'Authorization: Bearer <HOOKS_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{"text":"StockLobster alert\nSymbol: TEST\nEvent: screen_hit\nMessage: TEST hit momentum criteria\nPrice: 4.92\nChange: 3.4%\nVolume: 1234567\nStrategy: momentum\nTimestamp: 2026-04-08T02:21:00.000Z"}'
Expected response:
{"ok":true,"runId":"<RUN_ID>"}
If you only want to wake a session and not push to Telegram immediately, use action: "wake" with textTemplate, but that is a different flow.
hook mapping requires textwake, the rendered textTemplate was empty.agent, the rendered messageTemplate was empty.payload, not json.action: "agent".deliver: true.channel and to are set explicitly.{"ok":true,"mode":"now"}{"ok":true,"runId":"..."}共 1 个版本