Instagram Marketing Skills for Claude Code and Codex
Part of the linkedin-skills family (400+ stars). Same voice engine and approve-before-publish flow, now for Instagram. Also available for X · YouTube · TikTok · Threads · Facebook.
9 skills that turn Claude Code and Codex into your Instagram content team. They write captions and Reels hooks in your voice, size hashtags, plan carousels and a full week of content, read your niche from real data, and optimize your profile. Every draft gets the AI tells stripped and waits for your approval before anything publishes. You supply the image or video; the skills write the words. No coding required.
Once installed, just ask Claude Code or Codex things like:
- "Write a caption for this Reel about [topic]"
- "Plan a week of Instagram posts for my [niche]"
- "What's working in my niche right now?" (reads real data via Apify)
- "Rewrite this caption so it doesn't sound like AI"
The right skill activates automatically. Then you review and approve.
Install
Pick whichever way you use Claude Code or Codex:
Codex CLI
codex plugin marketplace add sergebulaev/instagram-skills
codex plugin add instagram-skills@instagram-skills
To test a local clone before publishing changes:
git clone https://github.com/sergebulaev/instagram-skills.git
cd instagram-skills
codex plugin marketplace add .
codex plugin add instagram-skills@instagram-skills
claude.ai (web)
- Open https://claude.ai/code
- Go to Skills in the sidebar
- Click Add from GitHub
- Paste:
sergebulaev/instagram-skills
- Done. The skills activate automatically when you ask about Instagram.
Claude Desktop (Mac / Windows)
- Open Claude Desktop
- Open Settings (gear icon)
- Go to Skills
- Click Add from GitHub
- Paste:
sergebulaev/instagram-skills
- Done. Start a new conversation and ask Claude to write a caption.
Claude Code (CLI / VS Code / JetBrains)
/plugin marketplace add sergebulaev/instagram-skills
/plugin install instagram-skills@instagram-skills
Or clone the repo and open it as your working directory:
git clone https://github.com/sergebulaev/instagram-skills.git
cd instagram-skills
OpenClaw
- Open your OpenClaw working directory
- Clone the skills into it:
git clone https://github.com/sergebulaev/instagram-skills.git
- In OpenClaw settings, add this to your system prompt:
You have Instagram marketing skills in ./instagram-skills/.
For any Instagram task, read the relevant skills/*/SKILL.md first.
Use lib/url_parser.py for URL parsing and lib/publora_client.py for publishing.
- Done. Ask OpenClaw to write a Instagram post.
Hermes Agent
Hermes Agent (Nous Research) follows the agentskills.io open standard and loads skills/*/SKILL.md directly. Clone the bundle into your Hermes skills folder:
git clone https://github.com/sergebulaev/instagram-skills.git ~/.hermes/skills/instagram-skills
Coming from OpenClaw? hermes claw migrate imports these skills automatically. Then call /<skill-name> from any of your Hermes chat surfaces.
Any agent (skills CLI)
One command that works across Claude Code, Codex, Cursor, and any other agent that reads SKILL.md files:
npx skills add sergebulaev/instagram-skills
Found this useful? Star the repo. Curated Claude Code and Codex directories rank and gate by star count, so a star is what makes these skills findable for the next person. It is the only thing we ask. No signup, no email.
What you can do
Once installed, just ask Claude Code or Codex for help with Instagram. The right skill activates automatically.
Write a caption:
"Write me an Instagram caption about how I cut my editing time from 6 hours to 47 minutes. Hook in the first line."
Plan a carousel:
"Turn my notes into a 10-slide carousel on portfolio mistakes for junior designers."
Reverse-engineer a viral Reel:
"What hook does this Reel use? https://www.instagram.com/reel/C9_aBcDeF/ (I'll paste the first 3 seconds)"
Size your hashtags:
"Give me 5 hashtags for this post, sized so my 2k account can actually rank."
Check a draft before posting:
"Audit this caption for AI tells and the first-125-char hook: [paste your text]"
Plan your week:
"Plan a week of Instagram content. I'm launching a design course for junior designers."
Every skill shows you a draft first and waits for your OK. Nothing gets posted without your approval.
The 9 skills
| Skill | What it does |
|---|
| Caption Writer | Drafts a caption with the hook in the first 125 chars, a skimmable body, and one CTA, using a 2026 hook formula picked by goal: saves, shares, comments, or follows |
| Carousel Planner | Plans a carousel slide by slide (up to 10): a hook slide that opens a loop, value slides front-loaded, and a payoff slide that earns the save and the follow |
| Hook Extractor | Reverse-engineers the hook from any viral Reel or carousel. Maps it to one of the 10 Instagram formulas and returns a blank template you can fill |
| Hashtag Strategist | Builds a sized 3-5 hashtag set (niche / mid / broad) you can actually rank in, matched to the post. The 2026 reality, not the 30-tag wall |
| Humanizer | Removes the AI tells human readers react to: 2026 AI vocabulary scored by paragraph density, reveal bridges, staccato fragment stacks, stacked triads, performed sincerity, emoji storms; caps em dashes at about one per 100 words instead of banning them (29% of human captions use one). Does not promise to beat detectors (no edit reliably does). Bundles a --mode audit pre-publish check |
| Content Planner | Creates a weekly plan with a Reels / carousel / story mix, per-day hooks, posting times, a saves-and-shares goal, and a goal-mix balance check |
| Repurposer | Turns a LinkedIn post, blog, YouTube script, or X thread into a native Instagram carousel or caption: re-hooked before the 125-char fold, off-platform artifacts stripped, never a copy-paste |
| Profile Optimizer | Audits and rewrites the profile end-to-end: photo, searchable NAME field, bio (150 chars), goal-matched link, category label, highlights (covers, order, naming), the first-9 grid, and up to 3 pinned posts, with a scorecard and before/after rewrites |
| Audience Insights | Reads your niche and profile from real data via Apify: scans a hashtag for the posts traveling now (likes, comments, owner, format) and pulls follower/post/bio stats for any handle, yours or a competitor's. Instagram hides likers and commenters, so this is niche discovery plus profile stats, not an engager list |
Media is required on every Instagram post
Instagram does not allow text-only posts. The skills write the caption, hook, hashtags, and slide or shot plan. You supply the image or video. When you connect Publora and point a skill at your media files, it runs the publish flow for you:
1. create a draft (no scheduled time) -> postGroupId
2. upload each file to S3 (2-10 images for a carousel, in order)
3. schedule the post (status=scheduled + time)
That exact order matters: scheduling before the upload finishes races Instagram's scheduler against the media. The bundle's lib/publora_client.publish_media_post(...) does all three steps in one call.
Optional: auto-post with Publora
By default, the skills draft the caption for you to post in the Instagram app with your own media. If you want Claude Code or Codex to upload your media and schedule the post directly, connect Publora. It takes about 2 minutes.
What is Publora?
Publora is a publishing API that handles the Instagram media flow (draft, upload, schedule) in one call, and can cross-post the same content to other networks.
Publora also ships official MCP skills (npx skills add publora/skills): one skill per platform, covering the publish side only. This bundle is the layer above them, adding the reading, the writing craft and the approval flow.
Setup (2 minutes)
Step 1. Sign up at https://app.publora.com/signup (free)
Step 2. Connect Instagram: click Channels in the left sidebar, then Add Channel, pick Instagram, authorize. You need a Business or Creator account (personal accounts are not supported).
Step 3. Find your Platform ID: go to Channels, click your Instagram account. The ID looks like instagram-11223344. Copy the whole thing including instagram-.
Step 4. Get your API key: click Settings (gear icon, bottom-left), then API, then Create Key. Copy the sk_... string.
Step 5. Create a file called .env in the instagram-skills folder:
PUBLORA_API_KEY=sk_paste_your_key_here
INSTAGRAM_PLATFORM_ID=instagram-paste_your_id_here
If you cloned the repo, copy the template instead:
cp .env.example .env
Then open .env and replace the placeholders with your real values.
Step 6. Install two small Python packages:
pip install requests python-dotenv
Step 7. Test it. Ask Claude Code or Codex:
"Schedule a test Instagram post via Publora 24 hours from now with this image: [path]. Caption: 'testing the API connection, will cancel in dashboard'."
If Publora returns a postGroupId, you're set. Cancel the post in the Publora dashboard before the scheduled time. If you get HTTP 401, your API key is wrong. If you get an Invalid platform ID format error, your INSTAGRAM_PLATFORM_ID is wrong. See Troubleshooting.
Note on media: Instagram rejects text-only posts. If you do not point a skill at an image or video, it returns the caption as a copy-paste block plus a reminder to attach your media in the app.
Optional: generate illustrations with Pixfaro
Instagram is visual-first. The Carousel Planner can generate carousel slides and quote-cards and attach them automatically when publishing. Without a key it drafts the image prompt and asks you to generate it yourself, so nothing breaks.
Pixfaro is a single image API over multiple models (from flux-schnell at $0.004 to gpt-5-image). It composites your handle, brand color, or logo onto the image as a pixel-exact overlay, so a cheap base model still renders crisp text on a carousel slide. Pull those brand fields from your Voice & Brand Profile (section 6) and every asset stays on-brand.