skills/instagram-post/SKILL.md
Post to Instagram with images, carousels, Reels, and Stories via Publora MCP (Business account required)
npx skillsauth add publora/skills instagram-postInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create and schedule Instagram posts using the Publora MCP server. Supports image posts, carousels (2-10 images), Reels, and Stories. Requires an Instagram Business account.
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": ["instagram-11223344"],
"content": "Your caption here #hashtag",
"scheduledTime": "2026-03-25T10:00:00Z"
}'
Platform ID Format: instagram-{id} where {id} is from /platform-connections response.
Example IDs: instagram-11223344, instagram-55667788
📖 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 |
These limits are specific to the Instagram Graph API and differ from native app limits:
| Feature | API Limit | |---------|-----------| | Formats | JPEG only (PNG is NOT supported and will fail!) | | Max file size | 8 MB | | Carousel images | 2-10 (native app allows 20) | | Aspect ratios | 4:5 (portrait) to 1.91:1 (landscape) |
| Feature | Reels | Stories | Carousel Videos | |---------|-------|---------|-----------------| | Max duration | 15 minutes (only 5-90s eligible for Reels tab) | 60 seconds | 60 seconds | | Min duration | 3 seconds | 3 seconds | 3 seconds | | Max file size | 300 MB | 100 MB | 300 MB | | Formats | MP4, MOV | MP4, MOV | MP4, MOV |
| Feature | Limit | |---------|-------| | Caption length | 2,200 characters | | Visible before "more" | First 125 characters | | Hashtags | 30 per post (included in caption) |
Create a new Instagram post.
Parameters:
platforms: Array with your Instagram connection ID (e.g., ["instagram-11223344"])content: Caption text (up to 2,200 characters)scheduledTime: ISO 8601 datetime (required - for immediate posting, use current time + 1 minute)Get presigned URL for media uploads.
Parameters:
postGroupId: Post ID to attach media tofileName: File name (e.g., "photo.jpg")contentType: Must be image/jpeg for images, video/mp4 for videotype: "image" or "video"Manage scheduled and draft posts.
Control how videos are published via platformSettings:
{
"platformSettings": {
"instagram": {
"videoType": "REELS"
}
}
}
| Setting | Values | Default | Description |
|---------|--------|---------|-------------|
| videoType | "REELS", "STORIES" | "REELS" | Determines how videos are published |
Note: platformSettings is not available via MCP - use REST API for video type control.
Post this to Instagram:
"Morning coffee and code. Best way to start the day. #devlife #coding"
[Attach JPEG image]
Important: Image must be JPEG format. PNG will be rejected.
Create an Instagram carousel with these 5 product screenshots.
Caption: "Our app evolution over 6 months. Swipe to see the journey! #buildinpublic"
Note: Requires 2-10 JPEG images. Cannot mix images and videos in carousels.
Post this video as a Reel:
"60-second tutorial on our new feature. #tutorial #app"
Videos default to Reels. Set videoType: "STORIES" via REST API for Stories.
Post this 30-second clip as a Story (will disappear after 24 hours).
Requires platformSettings.instagram.videoType: "STORIES" via REST API.
Schedule this for tomorrow at 10 AM:
"New feature announcement coming soon! Stay tuned."
[Attach JPEG image]
JPEG only for images: PNG, GIF, WebP are NOT supported by the Instagram API. Convert to JPEG before uploading.
Business account required: Personal and Creator accounts cannot post via API. Only Business accounts work.
Media required on every post: Instagram does not support text-only posts. Every post needs at least one image or video.
No mixed media in carousels: A carousel must be either all images OR all videos (via separate posts), not both.
Stories disappear: Stories are ephemeral and disappear after 24 hours.
Reel is the default: Videos are published as Reels by default. To post a Story, use the REST API with videoType: "STORIES".
| Error | Cause | Solution | |-------|-------|----------| | "Business account required" | Using Personal/Creator account | Convert to Business account in Instagram settings | | "Invalid image format" | PNG or other non-JPEG format | Convert image to JPEG before uploading | | "Media upload failed" | File too large or wrong format | Check: images < 8 MB JPEG, videos < 300 MB MP4 | | "Carousel requires 2-10 items" | Wrong number of images | Ensure 2-10 images for carousel | | "Account not connected" | OAuth expired | Reconnect via Publora dashboard | | Rate limit (429) | Exceeded 50 posts/day | Wait 24 hours |
tools
Post to X (Twitter) with auto-threading, images, and videos via Publora MCP
tools
Upload videos to TikTok with privacy controls and interaction settings via Publora MCP
tools
Create and schedule Threads posts with auto-threading, image carousels, and reply control via Publora MCP
tools
Post to Telegram channels and groups with markdown formatting, media support, and message options via Publora MCP