{"slug":"instagram-automation-2","title":"instagram-automation","summary":"Automate Instagram tasks via Rube MCP (Composio): create posts, carousels, manage media, get insights, and publishing limits. Always search tools first for current schemas.","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-14T20:53:37.068033Z","repo":{"url":"https://github.com/davepoon/buildwithclaude","stars":3556,"forks":535,"license":"MIT","updatedAt":"2026-09-27T03:56:38Z"},"bodyHtml":"<hr>\n<h2>name: instagram-automation\ndescription: \"Automate Instagram tasks via Rube MCP (Composio): create posts, carousels, manage media, get insights, and publishing limits. Always search tools first for current schemas.\"\nrequires:\nmcp: [rube]\ncategory: social-media</h2>\n<h1>Instagram Automation via Rube MCP</h1>\n<p>Automate Instagram operations through Composio's Instagram toolkit via Rube MCP.</p>\n<p><strong>Toolkit docs</strong>: <a href=\"https://composio.dev/toolkits/instagram\">composio.dev/toolkits/instagram</a></p>\n<h2>Prerequisites</h2>\n<ul>\n<li>Rube MCP must be connected (RUBE_SEARCH_TOOLS available)</li>\n<li>Active Instagram connection via <code>RUBE_MANAGE_CONNECTIONS</code> with toolkit <code>instagram</code></li>\n<li>Always call <code>RUBE_SEARCH_TOOLS</code> first to get current tool schemas</li>\n<li>Instagram Business or Creator account required (personal accounts not supported)</li>\n</ul>\n<h2>Setup</h2>\n<p><strong>Get Rube MCP</strong>: Add <code>https://rube.app/mcp</code> as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.</p>\n<ol>\n<li>Verify Rube MCP is available by confirming <code>RUBE_SEARCH_TOOLS</code> responds</li>\n<li>Call <code>RUBE_MANAGE_CONNECTIONS</code> with toolkit <code>instagram</code></li>\n<li>If connection is not ACTIVE, follow the returned auth link to complete Instagram/Facebook OAuth</li>\n<li>Confirm connection status shows ACTIVE before running any workflows</li>\n</ol>\n<h2>Core Workflows</h2>\n<h3>1. Create a Single Image/Video Post</h3>\n<p><strong>When to use</strong>: User wants to publish a single photo or video to Instagram</p>\n<p><strong>Tool sequence</strong>:</p>\n<ol>\n<li><code>INSTAGRAM_GET_USER_INFO</code> - Get Instagram user ID [Prerequisite]</li>\n<li><code>INSTAGRAM_CREATE_MEDIA_CONTAINER</code> - Create a media container with the image/video URL [Required]</li>\n<li><code>INSTAGRAM_GET_POST_STATUS</code> - Check if the media container is ready [Optional]</li>\n<li><code>INSTAGRAM_CREATE_POST</code> or <code>INSTAGRAM_POST_IG_USER_MEDIA_PUBLISH</code> - Publish the container [Required]</li>\n</ol>\n<p><strong>Key parameters</strong>:</p>\n<ul>\n<li><code>image_url</code>: Public URL of the image to post</li>\n<li><code>video_url</code>: Public URL of the video to post</li>\n<li><code>caption</code>: Post caption text</li>\n<li><code>ig_user_id</code>: Instagram Business account user ID</li>\n</ul>\n<p><strong>Pitfalls</strong>:</p>\n<ul>\n<li>Media URLs must be publicly accessible; private/authenticated URLs will fail</li>\n<li>Video containers may take time to process; poll GET_POST_STATUS before publishing</li>\n<li>Caption supports hashtags and mentions but has a 2200 character limit</li>\n<li>Publishing a container that is not yet finished processing returns an error</li>\n</ul>\n<h3>2. Create a Carousel Post</h3>\n<p><strong>When to use</strong>: User wants to publish multiple images/videos in a single carousel post</p>\n<p><strong>Tool sequence</strong>:</p>\n<ol>\n<li><code>INSTAGRAM_CREATE_MEDIA_CONTAINER</code> - Create individual containers for each media item [Required, repeat per item]</li>\n<li><code>INSTAGRAM_CREATE_CAROUSEL_CONTAINER</code> - Create the carousel container referencing all media containers [Required]</li>\n<li><code>INSTAGRAM_GET_POST_STATUS</code> - Check carousel container readiness [Optional]</li>\n<li><code>INSTAGRAM_POST_IG_USER_MEDIA_PUBLISH</code> - Publish the carousel [Required]</li>\n</ol>\n<p><strong>Key parameters</strong>:</p>\n<ul>\n<li><code>children</code>: Array of media container IDs for the carousel</li>\n<li><code>caption</code>: Carousel post caption</li>\n<li><code>ig_user_id</code>: Instagram Business account user ID</li>\n</ul>\n<p><strong>Pitfalls</strong>:</p>\n<ul>\n<li>Carousels require 2-10 media items; fewer or more will fail</li>\n<li>Each child container must be created individually before the carousel container</li>\n<li>All child containers must be fully processed before creating the carousel</li>\n<li>Mixed media (images + videos) is supported in carousels</li>\n</ul>\n<h3>3. Get Media and Insights</h3>\n<p><strong>When to use</strong>: User wants to view their posts or analyze post performance</p>\n<p><strong>Tool sequence</strong>:</p>\n<ol>\n<li><code>INSTAGRAM_GET_IG_USER_MEDIA</code> or <code>INSTAGRAM_GET_USER_MEDIA</code> - List user's media [Required]</li>\n<li><code>INSTAGRAM_GET_IG_MEDIA</code> - Get details for a specific post [Optional]</li>\n<li><code>INSTAGRAM_GET_POST_INSIGHTS</code> or <code>INSTAGRAM_GET_IG_MEDIA_INSIGHTS</code> - Get metrics for a post [Optional]</li>\n<li><code>INSTAGRAM_GET_USER_INSIGHTS</code> - Get account-level insights [Optional]</li>\n</ol>\n<p><strong>Key parameters</strong>:</p>\n<ul>\n<li><code>ig_user_id</code>: Instagram Business account user ID</li>\n<li><code>media_id</code>: ID of the specific media post</li>\n<li><code>metric</code>: Metrics to retrieve (e.g., impressions, reach, engagement)</li>\n<li><code>period</code>: Time period for insights (e.g., day, week, lifetime)</li>\n</ul>\n<p><strong>Pitfalls</strong>:</p>\n<ul>\n<li>Insights are only available for Business/Creator accounts</li>\n<li>Some metrics require minimum follower counts</li>\n<li>Insight data may have a delay of up to 48 hours</li>\n<li>The <code>period</code> parameter must match the metric type</li>\n</ul>\n<h3>4. Check Publishing Limits</h3>\n<p><strong>When to use</strong>: User wants to verify they can publish before attempting a post</p>\n<p><strong>Tool sequence</strong>:</p>\n<ol>\n<li><code>INSTAGRAM_GET_IG_USER_CONTENT_PUBLISHING_LIMIT</code> - Check remaining publishing quota [Required]</li>\n</ol>\n<p><strong>Key parameters</strong>:</p>\n<ul>\n<li><code>ig_user_id</code>: Instagram Business account user ID</li>\n</ul>\n<p><strong>Pitfalls</strong>:</p>\n<ul>\n<li>Instagram enforces a 25 posts per 24-hour rolling window limit</li>\n<li>Publishing limit resets on a rolling basis, not at midnight</li>\n<li>Check limits before bulk posting operations to avoid failures</li>\n</ul>\n<h3>5. Get Media Comments and Children</h3>\n<p><strong>When to use</strong>: User wants to view comments on a post or children of a carousel</p>\n<p><strong>Tool sequence</strong>:</p>\n<ol>\n<li><code>INSTAGRAM_GET_IG_MEDIA_COMMENTS</code> - List comments on a media post [Required]</li>\n<li><code>INSTAGRAM_GET_IG_MEDIA_CHILDREN</code> - List children of a carousel post [Optional]</li>\n</ol>\n<p><strong>Key parameters</strong>:</p>\n<ul>\n<li><code>media_id</code>: ID of the media post</li>\n<li><code>ig_media_id</code>: Alternative media ID parameter</li>\n</ul>\n<p><strong>Pitfalls</strong>:</p>\n<ul>\n<li>Comments may be paginated; follow pagination cursors for complete results</li>\n<li>Carousel children are returned as individual media objects</li>\n<li>Comment moderation settings on the account affect what is returned</li>\n</ul>\n<h2>Common Patterns</h2>\n<h3>ID Resolution</h3>\n<p><strong>Instagram User ID</strong>:</p>\n<pre><code>1. Call INSTAGRAM_GET_USER_INFO\n2. Extract ig_user_id from response\n3. Use in all subsequent API calls\n</code></pre>\n<p><strong>Media Container Status Check</strong>:</p>\n<pre><code>1. Call INSTAGRAM_CREATE_MEDIA_CONTAINER\n2. Extract container_id from response\n3. Poll INSTAGRAM_GET_POST_STATUS with container_id\n4. Wait until status is 'FINISHED' before publishing\n</code></pre>\n<h3>Two-Phase Publishing</h3>\n<ul>\n<li>Phase 1: Create media container(s) with content URLs</li>\n<li>Phase 2: Publish the container after it finishes processing</li>\n<li>Always check container status between phases for video content</li>\n<li>For carousels, all children must complete Phase 1 before creating the carousel container</li>\n</ul>\n<h2>Known Pitfalls</h2>\n<p><strong>Media URLs</strong>:</p>\n<ul>\n<li>All image/video URLs must be publicly accessible HTTPS URLs</li>\n<li>URLs behind authentication, CDN restrictions, or that require cookies will fail</li>\n<li>Temporary URLs (pre-signed S3, etc.) may expire before processing completes</li>\n</ul>\n<p><strong>Rate Limits</strong>:</p>\n<ul>\n<li>25 posts per 24-hour rolling window</li>\n<li>API rate limits apply separately from publishing limits</li>\n<li>Implement exponential backoff for 429 responses</li>\n</ul>\n<p><strong>Account Requirements</strong>:</p>\n<ul>\n<li>Only Business or Creator Instagram accounts are supported</li>\n<li>Personal accounts cannot use the Instagram Graph API</li>\n<li>The account must be connected to a Facebook Page</li>\n</ul>\n<p><strong>Response Parsing</strong>:</p>\n<ul>\n<li>Media IDs are numeric strings</li>\n<li>Insights data may be nested under different response keys</li>\n<li>Pagination uses cursor-based tokens</li>\n</ul>\n<h2>Quick Reference</h2>\n<table>\n<thead>\n<tr>\n<th>Task</th>\n<th>Tool Slug</th>\n<th>Key Params</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Get user info</td>\n<td>INSTAGRAM_GET_USER_INFO</td>\n<td>(none)</td>\n</tr>\n<tr>\n<td>Create media container</td>\n<td>INSTAGRAM_CREATE_MEDIA_CONTAINER</td>\n<td>image_url/video_url, caption</td>\n</tr>\n<tr>\n<td>Create carousel</td>\n<td>INSTAGRAM_CREATE_CAROUSEL_CONTAINER</td>\n<td>children, caption</td>\n</tr>\n<tr>\n<td>Publish post</td>\n<td>INSTAGRAM_CREATE_POST</td>\n<td>ig_user_id, creation_id</td>\n</tr>\n<tr>\n<td>Publish media</td>\n<td>INSTAGRAM_POST_IG_USER_MEDIA_PUBLISH</td>\n<td>ig_user_id, creation_id</td>\n</tr>\n<tr>\n<td>Check post status</td>\n<td>INSTAGRAM_GET_POST_STATUS</td>\n<td>ig_container_id</td>\n</tr>\n<tr>\n<td>List user media</td>\n<td>INSTAGRAM_GET_IG_USER_MEDIA</td>\n<td>ig_user_id</td>\n</tr>\n<tr>\n<td>Get media details</td>\n<td>INSTAGRAM_GET_IG_MEDIA</td>\n<td>ig_media_id</td>\n</tr>\n<tr>\n<td>Get post insights</td>\n<td>INSTAGRAM_GET_POST_INSIGHTS</td>\n<td>media_id, metric</td>\n</tr>\n<tr>\n<td>Get user insights</td>\n<td>INSTAGRAM_GET_USER_INSIGHTS</td>\n<td>ig_user_id, metric, period</td>\n</tr>\n<tr>\n<td>Get publishing limit</td>\n<td>INSTAGRAM_GET_IG_USER_CONTENT_PUBLISHING_LIMIT</td>\n<td>ig_user_id</td>\n</tr>\n<tr>\n<td>Get media comments</td>\n<td>INSTAGRAM_GET_IG_MEDIA_COMMENTS</td>\n<td>ig_media_id</td>\n</tr>\n<tr>\n<td>Get carousel children</td>\n<td>INSTAGRAM_GET_IG_MEDIA_CHILDREN</td>\n<td>ig_media_id</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p><em>Powered by <a href=\"https://composio.dev\">Composio</a></em></p>\n","files":[{"path":"SKILL.md","sizeBytes":7939,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-14T20:53:56.874238Z","sha256":"7E097EEA560EA2B41F53BE0A0F43C66F8F21CE6BF0A466AE008D7F6AF2456FC2","sizeBytes":2967},"review":null,"source":{"repositoryUrl":"https://github.com/davepoon/buildwithclaude","path":"plugins/all-skills/skills/instagram-automation","license":"MIT","commit":"6178ae2b0900b3600419853206de1dddf0f28311","subtreeSha":"3026917E9F85B026B61AEC042C6E3395958CD159BC9E074DE04EF5465B3C3A28","lastSyncedAt":"2026-09-27T19:47:46.68834Z"},"reviewedAt":"2026-09-14T20:56:34.834452Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/davepoon/buildwithclaude/tree/main/plugins/all-skills/skills/instagram-automation"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install davepoon-buildwithclaude@llmmart"},{"target":"git","command":"git clone https://github.com/davepoon/buildwithclaude.git"}]}