Install
openclaw skills install @abyssbugg/autothreadAdd /topic to the start of any message and the agent creates a topic/thread from it with an auto-generated title. Telegram and Nicegram: a forum topic is created via the Bot API and the original message is quoted inside it (media is forwarded). Discord: a public thread is created from the message and the quote is posted inside. Signal has no native topics or threads, so its adapter instead posts a titled digest message to the group (or as a DM to a phone number) — no topic object is created there. All credentials are read from the local OpenClaw config; nothing is sent anywhere except the target platform's own API. Each platform adapter is a separate script that implements only its own platform; scripts/ shared helpers handle title fallback and JSON output. The repo also ships an offline test suite with a localhost mock API server (not part of the runtime).
openclaw skills install @abyssbugg/autothreadAdd /topic to the start of any message in a supported group → a new topic or thread is created from it. The title is figured out from your message automatically — no need to think of one yourself.
| Platform | Mechanism | Script |
|---|---|---|
| Telegram | Forum topic (Bot API createForumTopic) | scripts/autothread-telegram.sh |
| Nicegram | Same as Telegram (Nicegram chats are Telegram chats) | scripts/autothread-nicegram.sh |
| Discord | Thread from message (POST /channels/{id}/messages/{mid}/threads) | scripts/autothread-discord.sh |
| Signal | Pseudo-topic digest (no native topics — see limitations) | scripts/autothread-signal.sh |
When a message starts with /topic, detect the platform from the message context, generate a concise 3-7 word title summarising the message, then run the matching adapter script with arguments filled from the message context:
Telegram / Nicegram:
bash scripts/autothread-telegram.sh <chat_id> <message_id> "<sender name>" "<title>" "<text after /topic>"
(Nicegram: use bash scripts/autothread-nicegram.sh identically. Pass an empty string for the text arg if there's no text, e.g. media-only.)
Discord:
bash scripts/autothread-discord.sh <channel_id> <message_id> "<sender name>" "<title>" "<text after /topic>"
Signal:
bash scripts/autothread-signal.sh <group_id> <message_timestamp> "<sender name>" "<title>" "<text after /topic>"
Each script returns JSON: {"topic_id": ..., "title": "...", "link": "..."}.
After the script succeeds:
Topic created → [<title>](<link>) (omit the link part on Signal, where link is null).threadId from the returned topic_id). Respond naturally as you would to any message.Telegram / Nicegram:
channels.telegram.groups.<CHAT_ID>)..channels.telegram.botToken; Nicegram optionally .channels.nicegram.botToken).Discord:
channels.discord...)..channels.discord.token).Signal:
signal-cli installed with a registered account (.channels.signal.account in the config).topic_id with link: null.Skip the @bot mention — by default, the bot only responds when mentioned; keep that default in busy or public groups. Only set requireMention: false in a group you control where accidental activation is harmless, because any /topic message will then trigger a repost of content and sender name — never disable it where sensitive content is discussed:
"channels.telegram.groups.<CHAT_ID>": { "requireMention": false }
Telegram autocomplete — add under channels.telegram:
{
"customCommands": [
{ "command": "topic", "description": "Create a new topic from a message" }
]
}