Install
openclaw skills install publora-telegramPost or schedule content to Telegram channels and groups using the Publora API. Use this skill when the user wants to publish or schedule Telegram messages v...
openclaw skills install publora-telegramTelegram platform skill for the Publora API. For auth, core scheduling, media upload, and workspace/webhook docs, see the publora core skill.
Base URL: https://api.publora.com/api/v1
Header: x-publora-key: sk_YOUR_KEY
Platform ID format: telegram-{chatId}
⚠️ Telegram Bot API has a strict 50 MB file limit (not the 4 GB that user clients allow).
| Property | Bot API Limit | User Client |
|---|---|---|
| Text (message) | 4,096 characters | Same |
| Media caption | 1,024 characters ⚠️ | 4,096 (Premium) |
| Images | Up to 10 × 10 MB | JPEG, PNG, GIF, WebP, BMP |
| Video | 50 MB ⚠️ | 4 GB |
| Video formats | MP4, MOV, AVI, MKV, WebM | — |
| Text only | ✅ Yes | — |
| Rate limit | 30 messages/sec | 20 messages/min per group |
Common errors:
MEDIA_CAPTION_TOO_LONG — caption exceeds 1,024 chars → reduce or move text to message bodyBad Request: file is too big — file exceeds 50 MB → compress or use a smaller fileawait fetch('https://api.publora.com/api/v1/create-post', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-publora-key': 'sk_YOUR_KEY' },
body: JSON.stringify({
content: '📢 **Announcement**: Our new feature is live! Check it out at publora.com\n\n#update #publora',
platforms: ['telegram--1001234567890'] // note: group chat IDs are negative
})
});
Markdown formatting is supported in Telegram messages.
body: JSON.stringify({
content: 'Your Telegram channel message here',
platforms: ['telegram--1001234567890'],
scheduledTime: '2026-03-20T09:00:00.000Z'
})
import requests
HEADERS = { 'Content-Type': 'application/json', 'x-publora-key': 'sk_YOUR_KEY' }
# Step 1: Create post (content = caption, max 1,024 chars for media)
post = requests.post('https://api.publora.com/api/v1/create-post', headers=HEADERS, json={
'content': 'Check out our latest update! 🚀', # keep under 1,024 chars when attaching media
'platforms': ['telegram--1001234567890']
}).json()
# Step 2: Get upload URL (max 10 MB per image)
upload = requests.post('https://api.publora.com/api/v1/get-upload-url', headers=HEADERS, json={
'postGroupId': post['postGroupId'],
'fileName': 'image.jpg',
'contentType': 'image/jpeg',
'type': 'image'
}).json()
# Step 3: Upload
with open('image.jpg', 'rb') as f:
requests.put(upload['uploadUrl'], headers={'Content-Type': 'image/jpeg'}, data=f)
Same flow as image but use contentType: 'video/mp4' and type: 'video'. Keep the file under 50 MB.
content becomes the caption (max 1,024 chars). For text-only posts, content can be up to 4,096 chars.**bold**, _italic_, `code`, [link](url) in message contenttelegram--1001234567890