Invite-only.
← Templates
Run· Mixed

Automate Instagram posting with your agents

10-step playbook for a posting pipeline that drafts, queues, and ships 6-12 Instagram posts a week with agents drafting and a human approving.

Open in DockSolo founders + 1-2 person marketing teams

Instagram is the most labor-intensive distribution channel a small team runs: every post needs a caption, a hook, a hashtag set, an alt-text, and a visual. This playbook shows you how to wire an agent pipeline that drafts the captions and hashtag sets, plans the calendar from a content brief, and queues posts to a scheduler — leaving you to approve, post, and reply. The Instagram Graph API has real limits (no Stories automation, hashtag rate caps, business-account-only) so the playbook walks the actual gates instead of waving at them.

Outcome

An Instagram pipeline that ships 6-12 posts a week with agents drafting captions, hashtags, and alt-text from your brief. A human approves and posts; the agent owns the calendar.

Time1-2 weeks setup, ongoing maintenanceDifficultyintermediateForSolo founders + small marketing teams scaling content output.
The template · 10 steps

Top to bottom. Each step has tasks, pointers, gotchas.

Switch to a Business or Creator account and link to a Facebook page

30 min

The Instagram Graph API only works on Business or Creator accounts. Personal accounts have no API access. The Business account also needs to be linked to a Facebook page (a quirk of Meta's auth model, even if you never post to FB). Set this up first; without it, none of the steps below work.

Tasks
  • Open Instagram on mobile → Settings → Account → Switch to Professional Account
  • Pick Business (recommended) or Creator (similar API access)
  • Pick a category (Software, Brand, Personal Blog, etc.)
  • Link to a Facebook page (create one if you don't have one)
  • Verify the link in Meta Business Suite
Gotchas
  • Personal accounts have ZERO API access — no scheduling, no analytics, no automation. Switch first.
  • The Facebook page is required even if you don't actually post to FB. It's how Meta's auth flows work.
  • Switching from Business back to Personal nukes your historical post-level analytics. Don't toggle.

Get Graph API credentials and the long-lived access token

1-2 hours

Authenticating to the Instagram Graph API takes 4 steps: register an app on Meta for Developers, configure the Instagram Graph API product, run the OAuth flow to get a short-lived token, then exchange for a 60-day long-lived token. The long-lived token then needs refreshing every 60 days unless you wire renewal automation.

Tasks
  • Create an app at developers.facebook.com → My Apps → Create App
  • Add the Instagram Graph API product to the app
  • Generate a User Access Token via Graph API Explorer with instagram_content_publish + instagram_basic + pages_show_list permissions
  • Exchange the short-lived token for a long-lived token (lasts 60 days)
  • Store the token + Instagram Business Account ID + Facebook Page ID in your secrets manager
  • Set a calendar reminder for token refresh every 50 days
Gotchas
  • App Review is required for permissions on apps in production. For your own personal account, you can stay in 'Development Mode' indefinitely.
  • Tokens expire silently. Build refresh into a cron job or your agent's daily check; the post will fail mid-publish otherwise.
  • Meta has deprecated several permission scopes since 2023. Always pull the latest scope list from the docs.

Audit your last 90 days of posts and find your top engagement patterns

3-4 hours

Before drafting new content, audit what already worked. Pull the last 90 days of posts and rank by saves (the strongest signal of value to a viewer), reach (the algorithm's signal of share-worthiness), and replies (the relationship signal). Patterns will jump out: which hooks land, which formats, which days. Train the agent on these patterns, not on Instagram-marketing-blog generic advice.

Tasks
  • Export the last 90 days of post-level analytics from Meta Business Suite
  • Rank by saves-per-impression (most reliable signal)
  • Identify the top 10% — what hook? what format? what time? what hashtag set?
  • Identify the bottom 10% — what to avoid
  • Document the patterns in the Brief doc as the agent's playbook
Gotchas
  • Likes are the weakest metric. Saves and shares are what the algorithm rewards in 2026.
  • Reach is throttled if you re-upload the same image; agents that recycle assets need fresh visuals.
  • Posts with > 5 hashtags appearing on > 3 of your other posts in the same 30-day window get rate-limited. Rotate the sets.
Agent prompt for this step
Audit the last 90 days of our Instagram posts and surface the patterns.

Pull post-level data via the Graph API endpoint /{ig-user-id}/media for the past 90 days. For each post, fetch:
- Caption
- Media type (carousel / reel / image)
- Posting day-of-week + hour
- Saves, reach, likes, comments, profile visits

Output:
1. The top 10% of posts by saves-per-impression. What do they have in common? (Hook structure, format, time, length, hashtag count)
2. The bottom 10%. What patterns to avoid?
3. The strongest day-of-week + hour combinations
4. The strongest hashtag SETS (not individual tags) by avg-saves-per-impression
5. Recommended posting cadence: how many of each format per week

Output as a markdown doc; this becomes the agent playbook in the Brief surface.

Define your content pillars and brand voice in the Brief

2-3 hours

Without explicit pillars, an agent will default to generic Instagram-marketing voice (emojis, exclamation marks, '🚀 Excited to share'). Define 3-5 content pillars, your brand voice rules (tone, banned words, sentence shape), and your visual identity rules. Hand these to the agent as the system prompt for every draft.

Tasks
  • Pick 3-5 content pillars (e.g., founder POV, product tips, behind-the-scenes, customer stories, industry takes)
  • Write 3-5 brand voice rules (e.g., 'no exclamation marks', 'no emoji-only sentences', 'second-person', '125 chars before the fold')
  • Define visual identity rules (color palette, font system, image style)
  • Document audience: who do we write for? What do they care about?
  • Save all of this as the Brief doc
Gotchas
  • Voice rules need to be CONCRETE. 'Be authentic' is meaningless to an agent. 'Use second-person, 125 chars before fold, no exclamation marks' is actionable.
  • Pillars should map to user intents, not internal departments. 'Tips users save' is a pillar; 'product marketing' is not.
  • Brand voice that's too rigid becomes formulaic. Leave room for the human approver to inject one human-voice post per week.

Build the 30-day content calendar template

2-3 hours

A weekly cadence is too short to plan around campaigns; a monthly view exposes the rhythm. Build a 30-day grid with: date, day-of-week, time, content pillar, format (carousel/reel/single/Story), hook, caption draft, hashtag set, asset link, status. The agent populates rows, the human approves.

Tasks
  • Create the Content calendar table with columns: date, day, time, pillar, format, hook, caption, hashtag set, asset URL, status
  • Plan the cadence: e.g., 6 posts/week (1 reel, 3 carousels, 2 single images)
  • Map each weekday to a pillar (e.g., Mon: tips, Tue: founder POV, Wed: customer story)
  • Set posting times based on your audit's best windows
  • Pre-fill 30 rows with date + day + pillar + format; leave hook + caption for the agent to draft
Gotchas
  • Posting more than 2x/day on the same account drops reach per-post. Quality cadence beats raw volume.
  • Reels demand more attention than feed posts. Plan one reel a week, not five.
  • Stories aren't in this calendar — Stories are NOT scheduleable via the Graph API and remain manual.

Wire the agent to draft captions and hashtag sets

1-2 hours setup

The agent reads the Brief doc + the Content calendar row + the audit playbook, and outputs: a hook (first 125 chars), a full caption (up to 2200 chars), a hashtag set (8-15 hashtags), and alt-text (100-150 chars). The human reviews in the Content calendar table and either approves, edits, or rewrites.

Tasks
  • Configure the agent's system prompt with: Brief doc + audit findings + voice rules + format constraints
  • Test the agent on 5-10 sample posts; iterate the prompt until output quality is approval-grade
  • Define the 'definition of done' for a draft: hook < 125 chars, caption < 2200, hashtags 8-15, alt-text written
  • Set up the agent to draft tomorrow's post the day before so the human has time to review
  • Configure the agent to flag uncertainty: if a draft references a fact it doesn't know, ask in the Brief doc instead of inventing
Gotchas
  • Generic Instagram captions ('🚀 Excited to share...') tank engagement and signal an agent. Train hard on your voice.
  • Hashtags reused within 24 hours get flagged as spam. The agent must rotate sets per post.
  • Alt-text is a ranking signal AND an accessibility requirement. Don't skip it; agents that skip it should re-prompt.
Agent prompt for this step
Draft the caption + hashtag set + alt-text for an Instagram post.

Inputs from the calendar row:
- date
- pillar (e.g., founder POV, product tip)
- format (carousel / reel / single image)
- asset URL or description

Inputs from the Brief surface:
- brand voice rules
- audience profile
- content pillar definitions
- audit playbook (what worked in last 90 days)

Output:
1. Hook (first 125 chars): the line that hits before the 'more' fold. No emoji-only opens, no '🚀 Excited to'.
2. Body caption (additional 200-1000 chars): supporting context, story, or tip.
3. CTA line (last 1-2 lines): what should the viewer do? (Save, share, follow, click bio link.)
4. Hashtag set (8-15 hashtags): mix of niche (10k-100k posts) + broad (100k-1M). Never reuse the same set within 24 hours.
5. Alt-text (100-150 chars): descriptive for accessibility AND search.

Constraints:
- Adhere to brand voice rules in Brief
- Match the format-specific best practices from the audit
- No exclamation marks unless brand voice explicitly allows
- Do NOT invent product features or stats — flag uncertainty instead

Set up the scheduler and the approval workflow

2-3 hours

The cleanest pipeline: agent drafts in the Content calendar table, human approves, scheduler queues the post, scheduler publishes via Graph API. Buffer + Later both expose APIs your agent can drive. The free Meta Business Suite scheduler doesn't have an API but works for low-volume manual flows.

Tasks
  • Pick the scheduler: Meta Business Suite (free, manual), Buffer (API-able), or Later (visual + API)
  • Connect the scheduler to your Instagram Business account
  • Wire the agent to push approved posts to the scheduler API (status changes from 'approved' to 'queued')
  • Define the human approval gate: the agent CANNOT skip a row from 'draft' to 'queued' without a human flipping the approval bit
  • Test the full pipeline on 3 posts before you go live
Gotchas
  • Instagram Stories and Reels Stories CANNOT be scheduled via the Graph API or any third-party scheduler. They must be posted manually from the mobile app.
  • Carousel posts via the API are limited to 10 images, must be uploaded as containers, and require a 2-step API flow (create container, then publish).
  • The Graph API rate-limit is 200 calls/hour per user. Bulk-queueing 100 posts in one go will hit the limit.

Configure the engagement window and reply queue

1-2 hours

Every post has a 30-60 minute engagement window where the algorithm decides who else sees it. Replying to comments in that window dramatically extends reach. Configure your agent to surface incoming comments in a Reply queue, draft response candidates, and ping you for the human-voice reply.

Tasks
  • Configure webhook subscription on the Graph API for new comments (or poll every 5 min)
  • Append every new comment as a row in the Reply queue: handle, comment, sentiment, draft response
  • Set a 30-min SLA for replies on day-of-post; the agent pings you if a comment is older than 30 min
  • Define which comment classes the agent can auto-reply to (FAQ-shaped) vs which require human voice (relationship-building)
  • Track engagement-rate per post + reply-time correlation in the audit
Gotchas
  • Auto-replying with templated responses gets accounts shadow-banned for spammy behavior. Keep auto-reply scope narrow (FAQ only) and short.
  • Don't let an agent send DMs autonomously. The Graph API allows it but Meta's spam-detection is aggressive on agent-driven DMs.
  • Replies on Reels weight higher than replies on feed posts. Prioritise the Reply queue accordingly.

Run a 30-day pilot and tune

30 days

Don't ship the full pipeline to a 12-post-a-week cadence on day one. Run a 30-day pilot at half-cadence (3 posts/week) so you can iterate the agent prompt, the calendar template, and the approval flow before scaling. The metric to track: agent draft → approval rate. Above 80% means the prompt is dialled; below 50% means re-tune the Brief.

Tasks
  • Set the pilot cadence: 3 posts/week for 4 weeks
  • Track the agent's approval rate (drafts approved as-is / drafts approved with edits / drafts rewritten)
  • Track the post performance vs your 90-day baseline (saves, reach, replies)
  • After 14 days: re-tune the agent prompt based on the patterns of edits you've made
  • After 30 days: decide to scale to 6-12 posts/week, hold at 3, or revise the entire pipeline
Gotchas
  • If the agent's drafts are getting rewritten more than 50% of the time, the Brief is wrong, not the agent. Iterate the source-of-truth, not the model.
  • If post performance drops vs the 90-day baseline, the issue is content quality, not volume. Don't scale a regressing pipeline.
  • If the human bottleneck is approval (not drafting), the issue is the calendar template, not the agent. Pre-fill more, ask the human less.

Scale to 6-12 posts/week and run the analytics loop

Ongoing

After 30 days of pilot, scale up. The pipeline now runs continuously: agent drafts on Sunday for the next week, human approves Monday morning, scheduler queues for the week. Monthly: re-run the audit, update the Brief, surface the top 10% / bottom 10% patterns, and feed back to the agent.

Tasks
  • Scale cadence to 6-12 posts/week based on pilot data
  • Run the audit monthly and update the Brief
  • Track 3 KPIs: avg saves-per-impression, reply-rate, follower growth
  • If KPIs drop > 20% month-over-month, pause and audit before scaling further
  • Annually: archive old hashtag sets (Instagram updates the algorithm; sets that worked in 2024 are stale by 2026)
Gotchas
  • Scaling cadence too fast tanks per-post reach. Add 1-2 posts/week per month, not 6 in one jump.
  • Saves-per-impression drift down over time as your audience grows. Compare to your 30-day rolling avg, not all-time best.
  • Follower count is a vanity metric for most B2B. Active replies and saves are stronger leading indicators of business value.
Agent prompt for this step
Run the monthly Instagram analytics loop.

For the past 30 days:
1. Fetch all posts via /{ig-user-id}/media
2. Compute: saves-per-impression, reach, reply count, follower delta per post
3. Compare to the previous 30 days (month-over-month)

Output to the Brief doc as a markdown section:
- Top 10% performers + the patterns they shared
- Bottom 10% + what to avoid next month
- Best-performing day-of-week + hour
- Best-performing hashtag sets
- Recommended changes to the content pillar mix
- One concrete experiment to try next month

Update the agent playbook in the Brief based on findings; the next month's drafts should reflect the updated playbook.
Hand the template to your agent

Workspace-wide agent prompt.

Paste this into your agent's permanent system prompt so the agent reads, writes, and maintains the template's surfaces as you work through the steps.

Agent system prompt
You are an agent on the "Automate Instagram posting" playbook workspace at your-org/automate-instagram-posting-with-agents.

Your role: own the content calendar, draft captions + hashtags + alt-text, queue posts to the scheduler. Humans approve and post.

Cadence:
- Every Monday: draft the next week's 6-12 posts as rows in Content calendar (date, type, hook, caption draft, hashtag set, alt-text, asset link).
- Every day: check the calendar for tomorrow's slot; if no asset is attached, ping the human in the Brief doc.
- After each post is live: pull engagement data 24 hours later, append to the post's row, and surface the top 3 + bottom 3 weekly performers in the Brief.

First MCP tool calls:
1. list_surfaces(workspace_slug="automate-instagram-posting-with-agents")
2. list_rows(workspace_slug="automate-instagram-posting-with-agents", surface_slug="content-calendar")
3. get_doc(workspace_slug="automate-instagram-posting-with-agents", surface_slug="brief")

Do NOT post directly to Instagram. Drafts queue to the scheduler; humans review and approve before publish.

Constraints:
- Caption length: 125-200 chars before the 'more' fold for the strongest hook
- Hashtag set: 8-15 hashtags, mix of niche (10k-100k posts) + broad (100k-1M)
- Never use the same hashtag set twice in 24 hours (IG flags as spam)
- Alt-text: 100-150 chars, descriptive (for accessibility AND search)
FAQ

Common questions on this template.

Can I fully automate Instagram posting with no human in the loop?
Technically yes for feed posts via the Graph API; practically no, because (1) Stories and Reels Stories aren't API-postable, (2) Meta aggressively shadow-bans accounts that look fully automated, (3) caption quality drifts without a human approver. The pattern that works: agent drafts, human approves in 30 seconds per post, scheduler publishes.
What's the difference between the Instagram Graph API and the Basic Display API?
Basic Display is read-only and works on personal accounts (you can only fetch your own media, not post). Graph API is the production posting API and requires a Business or Creator account linked to a Facebook page. For automation, you need Graph. Basic Display has been deprecated for new apps as of 2024.
How many posts can I schedule per day before Instagram throttles?
Instagram doesn't publish hard limits but in practice: more than 3-5 feed posts per day on a single account triggers reduced reach (the algorithm dilutes the audience across posts). Hashtag sets reused within 24 hours get spam-flagged. The Graph API itself rate-limits at 200 calls/hour. The real limit is human attention: 6-12 posts/week is the sustainable cadence for most accounts.
Can I automate Instagram Stories?
No. Stories cannot be scheduled or posted via the Graph API or any third-party scheduler. Reels Stories (the new 'Story Reels' format) are also manual-only. Stories are reserved for the official mobile app. Plan accordingly: if you need Stories in the rhythm, plan them as a separate manual workflow, not part of the agent pipeline.
Does Instagram penalise AI-drafted captions?
Not directly: the algorithm reads engagement, not provenance. But generic AI-tone captions ('🚀 Excited to announce', emoji-stuffed openers, formulaic three-bullet structures) tank engagement on their own merits. The fix is voice training: feed the agent your real Brief + audit findings, iterate the prompt until drafts read like the founder, not like a content marketer.
What does the full Instagram automation stack cost?
Free path: Meta Business Suite (free) + your own agent + manual posting via mobile when needed. Paid path: Buffer ($15/mo) or Later ($25/mo) + Iconosquare for analytics ($59/mo) + Canva ($15/mo) for visuals = around $50-100/mo. The Graph API itself is free. The largest cost is the agent's API tokens for drafting (5-15 dollars/month for typical 30-50 post/month volume).

Open this template as a workspace.

We mint a fresh copy in your org with the steps as table rows, the pointers as a separate table, and the brief as a doc. Bring your agents, start checking off boxes.