Post to Bluesky with rich text facets, images, videos, and alt text support via Publora MCP
53
58%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./skills/bluesky-post/SKILL.mdCreate and schedule posts to Bluesky using the Publora MCP server. Supports text posts with auto-detected hashtags and URLs, images with alt text, and videos.
Plans: Free Starter (15 posts/month), Pro, Premium
~/.claude/claude_desktop_config.json):{
"mcpServers": {
"publora": {
"type": "http",
"url": "https://mcp.publora.com",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}If the MCP server is unavailable or returns errors, use the REST API directly:
Base URL: https://api.publora.com/api/v1
Authentication: Use x-publora-key header (NOT Authorization: Bearer):
# Get your connected platforms
curl -X GET "https://api.publora.com/api/v1/platform-connections" \
-H "x-publora-key: sk_your_api_key"
# Create a post
curl -X POST "https://api.publora.com/api/v1/create-post" \
-H "x-publora-key: sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"platforms": ["bluesky-did:plc:abc123xyz"],
"content": "Your post content here",
"scheduledTime": "2026-03-25T10:00:00Z"
}'Platform ID Format: bluesky-{did} where {did} is from /platform-connections response.
Example IDs: bluesky-did:plc:abc123xyz, bluesky-did:plc:def456uvw
📖 Full API documentation: docs.publora.com
| Plan | Posts/month | Price |
|---|---|---|
| Starter | 15 | Free |
| Pro | 100/account | $2.99/account/month |
| Premium | 500/account | $9.99/account/month |
| Feature | Limit |
|---|---|
| Characters | 300 |
| Images | Up to 4 per post |
| Image size | ~1 MB (976.56 KB) |
| Video duration | 3 minutes |
| Video size | 50-100 MB (based on duration) |
| Videos per day | 25 |
| Alt text | 2,000 characters per image |
| Duration | Max Size |
|---|---|
| Under 60s | 50 MB |
| 60s - 3min | 100 MB |
Bluesky uses a unique rich text system. Publora handles the complexity automatically:
#hashtag auto-detected and made clickableNo special formatting needed - just write naturally.
Create a new Bluesky post.
Parameters:
platforms: Array with your Bluesky connection ID (e.g., ["bluesky-did:plc:abc123xyz"])content: Post text (up to 300 characters)scheduledTime: ISO 8601 datetime (required - for immediate posting, use current time + 1 minute)altTexts: Array of alt text for images (optional)Get presigned URL for media uploads.
Parameters:
postGroupId: Post ID to attach media tofileName: File name (e.g., "photo.jpg")contentType: image/jpeg, image/png, video/mp4type: "image" or "video"Manage scheduled and draft posts.
Post this to Bluesky:
"Just launched our new API documentation! Check it out at https://docs.example.com #devtools #api"Hashtags and URLs are automatically made clickable.
Post this to Bluesky with a dashboard screenshot:
"Our new analytics view is live! #buildinpublic"
Alt text: "Screenshot of analytics dashboard showing user growth charts"Create a Bluesky post with before/after comparison images:
"Office renovation complete! What a transformation."Note: Up to 4 images allowed per post.
Post this 60-second demo video to Bluesky:
"Quick tour of our new mobile app features"Schedule this for tomorrow at 10 AM:
"Good morning! Here's your daily productivity tip..."App password required: You must use a Bluesky app password, NOT your main account password. Generate one at Settings > App Passwords.
All images converted to JPEG: Regardless of input format (PNG, WebP, GIF), all images are converted to JPEG before upload.
~1 MB image limit: The AT Protocol enforces a strict ~1 MB limit. Compress images to 80-85% JPEG quality.
DID-based platform ID: Unlike other platforms using numeric IDs, Bluesky uses did:plc:xxx format.
Email verification for video: You must verify your email in Bluesky before uploading videos.
25 video daily limit: Maximum 25 videos OR 10 GB per day.
| Error | Cause | Solution |
|---|---|---|
| "Invalid credentials" | Wrong password type | Use app password, not main password |
| "Image too large" | Over ~1 MB | Compress to 80-85% JPEG quality |
| "Content too long" | Over 300 chars | Shorten content (no auto-threading) |
| "Video daily limit" | 25 videos reached | Wait 24 hours |
| "Email not verified" | Trying to upload video | Verify email in Bluesky settings |
8e5bffe
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.