Install
openclaw skills install stocklobsterMonitor StockLobster webhook alerts through OpenClaw and route screened stock signals to chat channels such as Telegram. Use when setting up, documenting, te...
openclaw skills install stocklobsterUse 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://<HOST>:18789/hooks/stocklobstermessageTemplate, not textTemplate, because this flow should use action: "agent" for channel delivery.payload, for example {{payload.text}}.deliver: truechannel: "telegram"to: "<TELEGRAM_CHAT_ID>"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 text
wake, 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":"..."}