telegram-compose
telegram-compose skill for OpenClaw agents
Installation
npx clawhub@latest install telegram-composeView the full skill documentation and source below.
Documentation
Telegram Compose
Rich, scannable Telegram messages via direct API with HTML formatting.
Credentials
Bot tokens: Stored in Clawdbot config at channels.telegram.accounts..botToken
# Get token from config
BOT_TOKEN=$(jq -r '.channels.telegram.accounts.alerts.botToken' ~/.clawdbot/clawdbot.json)
# Or for main bot:
BOT_TOKEN=$(jq -r '.channels.telegram.accounts.main.botToken' ~/.clawdbot/clawdbot.json)
Chat IDs: See TOOLS.md → Telegram section for configured chat IDs.
Direct API Call
# Get token and send
BOT_TOKEN=$(jq -r '.channels.telegram.accounts.alerts.botToken' ~/.clawdbot/clawdbot.json)
CHAT_ID="TARGET_CHAT_ID" # See TOOLS.md
curl -s -X POST "" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg chat "$CHAT_ID" --arg text "$MESSAGE" '{
chat_id: $chat,
text: $text,
parse_mode: "HTML"
}')"
HTML Tags
<b>bold</b> <i>italic</i> <u>underline</u> <s>strike</s>
<code>mono</code> <pre>code block</pre>
<tg-spoiler>hidden until tapped</tg-spoiler>
<blockquote>quote</blockquote>
<blockquote expandable>collapsed by default</blockquote>
<a href="url">link</a>
<a href="tg://user?id=123">mention by ID</a>
Escape in text: < → < > → > & → &
Structure Pattern
EMOJI <b>HEADING IN CAPS</b>
<b>Label:</b> Value
<b>Label:</b> Value
<b>SECTION</b>
• Bullet point
• Another point
<blockquote>Key quote or summary</blockquote>
<blockquote expandable><b>Details</b>
Hidden content here...
Long details go in expandable blocks.</blockquote>
<a href="">Action Link →</a>
Examples
Status update:
📋 <b>TASK COMPLETE</b>
<b>Task:</b> Deploy v2.3
<b>Status:</b> ✅ Done
<b>Duration:</b> 12 min
<blockquote>All health checks passing.</blockquote>
Alert:
⚠️ <b>ATTENTION NEEDED</b>
<b>Issue:</b> API rate limit at 90%
<b>Action:</b> Review usage
<a href="">View Dashboard →</a>
List:
✅ <b>PRIORITIES</b>
• <s>Review PR #234</s> — done
• <b>Finish docs</b> — in progress
• Deploy staging
<i>2 of 3 complete</i>
Style Rules
EMOJI CAPS TITLE with blank line after Link Text →Avoid Markdown Tables
Markdown tables render too wide on mobile — often unreadable. Use these alternatives:
Vertical key-value (best for 2-3 columns):
<pre>
hzl-cli: 1.11.1 → 1.12.0
skill: 1.0.5 → 1.0.6
</pre>
Compact list with separators:
<pre>
▸ hzl-cli │ 1.12.0 ✓
▸ skill │ 1.0.6 ✓
</pre>
Record cards (multi-field rows):
<b>Ruby</b>
Birthday: Jun 16 · Age: 11
<b>Rhodes</b>
Birthday: Oct 1 · Age: 8
Bullet lists (simplest):
• <b>hzl-cli:</b> 1.12.0
• <b>skill:</b> 1.0.6
Rule: Reserve
blocks for code/commands. For structured data, use bullets + bold or vertical key-value.
Limits
- Message: 4,096 chars
- Caption: 1,024 chars
When to Use Direct API vs Clawdbot
| Direct API | Clawdbot message tool |
| Structured messages | Quick acknowledgments |
| Status/alerts/reports | Simple replies |
| Need underline/spoiler/expandable | Basic formatting sufficient |
| Visual hierarchy matters | Throwaway messages |