Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Post or schedule content to Instagram using the Publora API. Use this skill when the user wants to publish images, reels, stories, or carousels to Instagram...
Post or schedule content to Instagram using the Publora API. Use this skill when the user wants to publish images, reels, stories, or carousels to Instagram...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Instagram 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: instagram-{accountId}
Instagram Business account (personal and Creator accounts are NOT supported by the Instagram Graph API) Account must be connected to a Facebook Page Connected via OAuth through the Publora dashboard
⚠️ Instagram API is significantly more restrictive than the native app. PropertyAPI LimitNative AppCaption2,200 characters2,200Images10 × 8 MB20 imagesImage formatJPEG only ⚠️PNG, GIF also workMixed carousel❌ No images + videos✅Reels duration90 seconds ⚠️15–20 minutesReels size300 MB—Carousel video60s per clip / 300 MB—Text only❌ Media required—Rate limit50 posts/24hr— First 125 characters visible before "more". Common errors: (#10) The user is not an Instagram Business — Creator accounts not supported, switch to Business Error 2207010 — caption exceeds 2,200 chars Error 2207004 — image exceeds 8 MB Error 9, Subcode 2207042 — rate limit reached
// Step 1: Create the post const post = await 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: 'Your caption here ✨ #hashtag', platforms: ['instagram-17841412345678'], scheduledTime: '2026-03-20T12:00:00.000Z' }) }).then(r => r.json()); // Step 2: Get upload URL const upload = await fetch('https://api.publora.com/api/v1/get-upload-url', { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-publora-key': 'sk_YOUR_KEY' }, body: JSON.stringify({ postGroupId: post.postGroupId, fileName: 'photo.jpg', contentType: 'image/jpeg', // ⚠️ JPEG only for Instagram type: 'image' }) }).then(r => r.json()); // Step 3: Upload to S3 await fetch(upload.uploadUrl, { method: 'PUT', headers: { 'Content-Type': 'image/jpeg' }, body: imageFileBytes });
Call get-upload-url N times with the same postGroupId: import requests HEADERS = { 'Content-Type': 'application/json', 'x-publora-key': 'sk_YOUR_KEY' } # Create post post = requests.post('https://api.publora.com/api/v1/create-post', headers=HEADERS, json={ 'content': 'Swipe through our product highlights! 👆', 'platforms': ['instagram-17841412345678'], 'scheduledTime': '2026-03-20T12:00:00.000Z' }).json() # Upload each image (max 10) images = ['slide1.jpg', 'slide2.jpg', 'slide3.jpg'] for img_path in images: upload = requests.post('https://api.publora.com/api/v1/get-upload-url', headers=HEADERS, json={ 'postGroupId': post['postGroupId'], 'fileName': img_path, 'contentType': 'image/jpeg', 'type': 'image' }).json() with open(img_path, 'rb') as f: requests.put(upload['uploadUrl'], headers={'Content-Type': 'image/jpeg'}, data=f)
// Create post, then upload video via get-upload-url with type: 'video' const post = await createPost({ content: 'Check out our latest Reel! 🎬', platforms: ['instagram-17841412345678'] }); const upload = await getUploadUrl({ postGroupId: post.postGroupId, fileName: 'reel.mp4', contentType: 'video/mp4', type: 'video' }); // Then PUT the video file to upload.uploadUrl ⚠️ Reels via API are limited to 90 seconds. Longer videos will be rejected.
JPEG only: The Instagram Graph API rejects PNG and GIF. Convert images to JPEG before uploading. Publora does NOT auto-convert for Instagram. Business accounts only: Creator accounts ((#10) error) cannot use the Content Publishing API No shopping tags, branded content, filters, or music via API Carousels: API max is 10 items (native app allows 20); cannot mix images and videos in same carousel WebP: Must be converted to JPEG manually before upload
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.