Install
$ agentstack add skill-publora-skills-bluesky-post ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Bluesky Post
Create 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.
Prerequisites
Plans: Free Starter (15 posts/month), Pro, Premium
Getting Started
- Create account at publora.com/register (free)
- Generate app password in Bluesky Settings > App Passwords (NOT your main password)
- Connect Bluesky in Publora Dashboard using your handle + app password
- Get API key at publora.com/settings/api
- Configure MCP in Claude Desktop (
~/.claude/claude_desktop_config.json):
{
"mcpServers": {
"publora": {
"type": "http",
"url": "https://mcp.publora.com",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
REST API Fallback
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 Limits
| Plan | Posts/month | Price | |------|-------------|-------| | Starter | 15 | Free | | Pro | 100/account | $2.99/account/month | | Premium | 500/account | $9.99/account/month |
Platform Limits
| 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 |
Video Size Tiers
| Duration | Max Size | |----------|----------| | Under 60s | 50 MB | | 60s - 3min | 100 MB |
Rich Text Facets
Bluesky uses a unique rich text system. Publora handles the complexity automatically:
- Hashtags:
#hashtagauto-detected and made clickable - URLs: Any URL auto-detected and made clickable
- Byte offsets: Calculated correctly for multi-byte characters (emojis, CJK)
No special formatting needed - just write naturally.
Available Tools
create_post
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)
getuploadurl
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"
listposts / updatepost / delete_post
Manage scheduled and draft posts.
Examples
Simple Post with Hashtags
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 with Image and Alt Text
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"
Multiple Images
Create a Bluesky post with before/after comparison images:
"Office renovation complete! What a transformation."
Note: Up to 4 images allowed per post.
Video Post
Post this 60-second demo video to Bluesky:
"Quick tour of our new mobile app features"
Scheduled Post
Schedule this for tomorrow at 10 AM:
"Good morning! Here's your daily productivity tip..."
Important Restrictions
- 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:xxxformat.
- 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.
Best Practices
Content
- Concise posts: 300 chars is shorter than Twitter - be punchy
- Natural hashtags: 1-2 relevant hashtags work well
- Alt text: Always add alt text for accessibility
- URLs work: Links are clickable (unlike some platforms)
Timing
- Growing platform: Less crowded than X, easier to get noticed
- Tech-savvy audience: Developer and early-adopter heavy
- Frequency: 1-3 posts per day
Engagement
- Bluesky favors authentic conversation
- Reply to comments to build community
- Follow relevant users to grow network
Troubleshooting
| 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 |
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: publora
- Source: publora/skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.