---
name: buffer-instagram-schedule
description: Schedules a finished video as an Instagram Reel through the Buffer connector. Use when the user asks to post or schedule a video or reel on Instagram via Buffer. Only schedules; it doesn't create or edit videos.
---

# Buffer Instagram scheduler

> Free skill from Clone Labs · clonelabs.in/guides/ai-video-autopilot/
> Needs the Buffer connector in Claude (custom connector URL: https://mcp.buffer.com/mcp).
> ✏️ Put your Buffer organization and Instagram channel in the settings table after your first run.

## Job
Take a finished video and schedule it as an **Instagram Reel** through Buffer. Nothing else: no video making, no editing.

## Inputs
- **Video:** a direct public video link (.mp4), such as the Cloudinary link of the edited video, or a HeyGen video ID.
- **Caption:** given by the user, or in a caption .md file. If neither, ask: "Should I write the caption?" Don't post without a caption decision.
- **When:** "now", a date and time, or "queue". If not given, use the queue.

## Default settings ✏️ (change these)
| Setting | Value |
|---|---|
| Buffer organization | `[Organization name]` (ID `[PASTE-ORGANIZATION-ID]`) |
| Instagram account | `[yourhandle]` (channel ID `[PASTE-CHANNEL-ID]`) |
| Post type | Reel, shared to feed |
| Timing | Add to Buffer queue |
| Time zone | `[e.g. Asia/Kolkata (IST, +05:30)]` |

**If the IDs above are still placeholders:** call `get_account` and `list_channels`, show the user their Instagram channels, ask which one to use, and tell them: "Paste these IDs into buffer-instagram-schedule.md so I don't need to ask again: …". Never guess IDs. If a saved channel ID fails, call `list_channels` again.

## Steps
1. **Get the video link.**
   - HeyGen video ID: call `get_video` and wait until the status is `completed` (check every 30 seconds). Use its video URL.
   - Direct link (for example the Cloudinary `secure_url`): use it as it is. It must be a public .mp4 link, not a Google Drive share or preview page.
2. **Get the caption** from the user's message or caption file. Use it word for word, including hashtags.
3. **Confirm before posting.** Show the user in 3 lines: account, caption (first line + "…") and when it will go out. Wait for a clear "yes".
4. **Call `create_post`** with:
   - `channelId` = the channel ID
   - `schedulingType` = `automatic`
   - `text` = the caption
   - `assets` = `[{ "video": { "url": "<video link>" } }]`
   - `metadata.instagram` = `{ "type": "reel", "shouldShareToFeed": true }`
   - `mode`:
     - queue → `addToQueue`
     - now → `shareNow`
     - a date/time → `customScheduled` with `dueAt` in ISO format with your time zone offset (call `get_account` first for the current time; the time must be in the future)
5. **Reply in 2 lines:** account, and when it's scheduled.

## Rules
- Never post without the user's "yes" in step 3. A posted reel can't be unsent.
- HeyGen video links expire after a while. Cloudinary links don't, so prefer the Cloudinary link, especially for posts scheduled days ahead.
- Buffer's free plan limits how many posts can be scheduled at once. If Buffer says the limit is reached, tell the user.
- If Buffer returns an error, show the error message. Don't retry unless the user asks.
