Install
openclaw skills install cross-platform-social-posterCross-platform social media posting for X (Twitter), Telegram, and Discord. Post content simultaneously to multiple platforms, format messages for each platform's requirements, and manage multi-channel social media presence. Use when sharing updates, announcements, or content across Twitter, Telegram channels/groups, and Discord servers.
openclaw skills install cross-platform-social-posterPost content simultaneously across X (Twitter), Telegram, and Discord with platform-specific formatting.
Use xurl CLI or direct API calls:
# Install xurl
npm i -g xurl
# Authenticate
xurl auth
Required: Bot token + Chat ID
Required: Webhook URL
#!/bin/bash
# cross_post.sh - Post to X, Telegram, Discord simultaneously
MESSAGE="Your message content here"
IMAGE_PATH="" # Optional: path to image
# X (Twitter)
xurl post "$MESSAGE" ${IMAGE_PATH:+--media "$IMAGE_PATH"}
# Telegram
curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
-d chat_id="$TELEGRAM_CHAT_ID" \
-d text="$MESSAGE" \
-d parse_mode="Markdown"
# Discord
curl -s -X POST "$DISCORD_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d "{\"content\": \"$MESSAGE\"}"
# Post with xurl
xurl post "Check out our new update! 🚀 #AI #Tech"
# Post with image
xurl post "New feature demo" --media ./screenshot.png
# Reply to tweet
xurl reply <tweet_id> "Thanks for the mention!"
# Send text message
curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \
-d chat_id="$CHAT_ID" \
-d text="*Bold* _Italic_ [Link](https://example.com)" \
-d parse_mode="MarkdownV2"
# Send photo
curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendPhoto" \
-F chat_id="$CHAT_ID" \
-F photo="@./image.jpg" \
-F caption="Photo caption"
# Simple message via webhook
curl -s -X POST "$DISCORD_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d '{
"content": "Hello from webhook!",
"username": "MyBot",
"avatar_url": "https://example.com/avatar.png"
}'
# Rich embed message
curl -s -X POST "$DISCORD_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d '{
"embeds": [{
"title": "Announcement",
"description": "New release is out!",
"color": 5814783,
"fields": [
{"name": "Version", "value": "2.0", "inline": true},
{"name": "Date", "value": "2026-01-15", "inline": true}
]
}]
}'
# Base content
TITLE="Big Announcement"
BODY="We just launched something amazing. Check it out!"
LINK="https://example.com/news"
IMAGE="./announcement.png"
# X (Twitter) - Concise
TWEET="$TITLE: $BODY $LINK #News #Launch"
# Telegram - Detailed with markdown
TG_MSG="*$TITLE*\n\n$BODY\n\n[Read more]($LINK)"
# Discord - Rich embed format
DISCORD_JSON=$(cat <<EOF
{
"content": "",
"embeds": [{
"title": "$TITLE",
"description": "$BODY",
"url": "$LINK",
"color": 3447003
}]
}
EOF
)
# Post to all three platforms (background for speed)
xurl post "$TWEET" --media "$IMAGE" &
curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendPhoto" \
-F chat_id="$CHAT_ID" -F photo="@$IMAGE" -F caption="$TG_MSG" &
curl -s -X POST "$DISCORD_WEBHOOK" \
-H "Content-Type: application/json" -d "$DISCORD_JSON" &
wait
echo "Posted to all platforms!"
Create .env file:
# X/Twitter
X_API_KEY=your_api_key
X_API_SECRET=your_api_secret
# Telegram
TELEGRAM_BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
TELEGRAM_CHAT_ID=@yourchannel
# Discord
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/...
Load with:
source .env