instagram-content
Skill1 starsChanged 12 days agoMITView on GitHub
Plans and writes Instagram content (Reels scripts and hooks, carousels slide by slide, captions, Stories sequences, content pillars, weekly calendars, repurposing long-form into posts), lints it with bundled offline scorers, and hands approved posts to the instagram skill for publishing. This skill should be used when the user asks to "write a caption", "script a reel", "give me reel hooks", "make a carousel about", "plan my Instagram week", "content calendar for Instagram", "turn this blog post into Instagram posts", "give me post ideas", "what should I post this week", "make this sound less AI", or wants Instagram copy reviewed before posting.
In this repository6 other files it gives its agents.
- instagram-adsSkill
- instagram-auditSkill
- instagram-researchSkill
- instagramSkill
- instagram-video-breakdownSkill
- instagram-video-remakeSkill
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 4 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 14
Read the product/brand context if present: .agents/product-marketing.md, .claude/product-marketing.md, or product-marketing-context.md.
- Very specific: line 16
Read a voice file if present (.agents/instagram-voice.md or ~/.claude/instagram/voice.md).
- Very specific: line 17
If none exists and the account is the user's own, pull their recent captions: npx -y bun --no-env-file ../instagram/scripts/main.ts posts …
- Distinctive: line 20
If the idea is thin, ask one batched question: what happened, to whom, and what it cost or returned.
- Very specific: line 22
If a swipe file from instagram-research exists, use its winning hook formulas over the defaults.
- Very specific: line 38
Run from this skill directory with npx -y bun:
- Very specific: line 68
Write the body in the user's voice: contractions, short lines, numbers over adjectives, no invented facts.
- Distinctive: line 72
Write the caption, for every post including a Reel script, because the caption is what ships with it.
- Distinctive: line 81
Never publish without that yes, and never batch-approve several posts.
- Very specific: line 93
Keep fragments and lists of three to one per post.
- Distinctive: line 115
Every post must stand alone without the source.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Instagram content
Produce Instagram content that a person would actually stop for, check it with the bundled scorers, and publish only after the user approves the exact post. Story comes first: platform tactics amplify a specific, true story and never replace one.
Before writing
- Read the product/brand context if present:
.agents/product-marketing.md,.claude/product-marketing.md, orproduct-marketing-context.md. Ask only for what is missing. - Read a voice file if present (
.agents/instagram-voice.mdor~/.claude/instagram/voice.md). If none exists and the account is the user's own, pull their recent captions:npx -y bun --no-env-file ../instagram/scripts/main.ts posts --limit 12 --json. Infer the voice: sentence length, vocabulary, emoji use, the CTA they repeat. Offer to save it as.agents/instagram-voice.md. - If the idea is thin, ask one batched question: what happened, to whom, and what it cost or returned. Do not pad a thin idea.
- If a swipe file from
instagram-researchexists, use its winning hook formulas over the defaults.
Choose the format
| The idea has... | Format |
| motion, a face, a payoff that must be seen | Reel |
| sequence worth re-reading (steps, framework, before/after, list) | Carousel |
| one strong image, a moment, a product shot | Photo |
| today, behind the scenes, a question for the audience | Stories |
One idea per post. If a draft holds two ideas, split it and say so. Format playbooks, safe zones
and slide/beat structures are in references/formats.md.
Scripts (offline, no network)
Run from this skill directory with npx -y bun:
npx -y bun scripts/caption-lint.ts caption.txt [--keywords "term one,term two"] [--json]
npx -y bun scripts/hook-score.ts hooks.txt # rank hook options, one per line
npx -y bun scripts/hook-score.ts --hook "one line" # score a single hook
npx -y bun scripts/beats.ts script.txt --target 30 # timed beat sheet for a Reel script
npx -y bun scripts/ai-tells.ts detect draft.txt # AI-tell score and flagged phrases
npx -y bun scripts/ai-tells.ts humanize draft.txt # mechanical cleanup (add --report for what changed)caption-lintprints what the feed shows before "... more" (~125 chars) and checks length, first line, concreteness, hashtags (cap 5), tag placement, dead links, one ask, emoji density and search terms. Exit 0 means READY.hook-scorescores a hook on mechanical features (length, specificity, stakes, front-loading, direct address). Use it to kill weak hooks, not to crown winners. Its author found it weak at predicting hits. The 26 hook formulas to write from are inscripts/hooks.json(reference data; the scorer does not read it).beatstimes a script at 165 wpm and flags slow hooks, long beats, abstract runs and a missing loop.ai-tellsuses the phrase and structure lists inscripts/slop.json.humanizedeletes and replaces mechanically (invisible characters, em dashes, curly quotes, stock phrases), which can leave broken punctuation behind. Always re-read its output and fix it by hand. Structural tells are only flagged, never rewritten.
Workflow per post
- Draft 3 hooks from different formulas. Score them and show all three, word for word, with
their scores, so the user can pick a different one than the scorer did. Score a hook only
once its numbers are filled in; a
{{your number}}placeholder inflates the score. - Write the body in the user's voice: contractions, short lines, numbers over adjectives,
no invented facts. A missing number becomes
{{your number}}, and say so. - Reels: write the on-screen text as a separate script, then run
beats. Carousels: give a numbered slide list the user can edit in ten seconds before rendering. - Write the caption, for every post including a Reel script, because the caption is what
ships with it. The hook goes in line one, there is one ask (save, share, comment or follow,
never "none"), at most 5 topical hashtags below the fold, and no links in the body. Run
caption-lintandai-tells detect. Fix and re-run until clean, or explain the remaining warnings. - Show the final package: media plan, on-screen text, caption, lint verdicts.
- Publishing: once media files exist, run the
instagramskill's dry run, for examplenpx -y bun --no-env-file ../instagram/scripts/main.ts post carousel s1.jpg s2.jpg ... --caption-file caption.txt. Show its output, wait for an explicit yes for that exact post, then re-run with--confirm --account <username>(add--experimentalfor a write type not yet verified live;statuslists them). Never publish without that yes, and never batch-approve several posts.
Writing rules (no AI tells)
Never write:
- Contrast reveals ("It's not X, it's Y"), negation lists ("No X, no Y, no Z"), trailing pile-ons.
- Self-answered questions and colon reveals ("The result? 3x faster.").
- Stock phrases: "Say goodbye to", "Unlock the power of", "Take it to the next level", "Here's the thing".
- Em dashes in posts. Use a period or a line break.
- Broetry (one sentence per line for the whole post), engagement bait ("Agree?", "Read that again"), manufactured vulnerability, emoji as bullets.
Keep fragments and lists of three to one per post. ai-tells detect catches most of these
mechanically.
Hooks and post templates
Hook families: curiosity ("I was wrong about [belief]"), story ("Last week, [unexpected
thing]"), value ("How to [outcome] without [pain]"), contrarian ("[Common advice] cost us
[result]"). Fill each with a specific fact. A formula is only a shape. More templates are in
references/post-templates.md. Reel hook and script patterns are in
references/short-form-video.md. Carousel narrative frameworks are in
references/carousel-frameworks.md.
Planning and repurposing
- Pillars: 3 to 5 pillars tied to expertise and audience questions (for example insights 30%, behind the scenes 25%, education 25%, personal 15%, promotion 5%).
- Cadence: 3 to 5 feed posts a week (Reels and carousels first) plus Stories most days.
Consistency beats volume. For the account's real best formats and slots, use
instagram-audit. - Weekly plan: a table of day, format, pillar, hook, and status (draft, approved, posted).
Save it as
instagram-plan.mdin the project if the user wants it kept. - Repurposing: extract content atoms from long-form (a quotable line becomes a Reel, a story arc a Reel, a framework a carousel, a stat a photo or carousel, behind the scenes a Story). Every post must stand alone without the source.
Engagement on own posts
To triage comments, read them with npx -y bun --no-env-file ../instagram/scripts/main.ts comments <post> --json.
Sort them into questions, objections, praise and spam, and draft a reply for each worth answering.
Replies go out one at a time, each text approved by the user, with
npx -y bun --no-env-file ../instagram/scripts/main.ts reply <post> <commentId> --text "..." --confirm --account <username>. No bulk replies, likes, follows or DMs.
Additional resources
references/formats.md: Reels, carousel and Stories structures, safe zones, specs.references/carousel-frameworks.md: five slide-by-slide carousel architectures.references/short-form-video.md: video hook formulas and scripting templates.references/post-templates.md: post templates and hook bank.scripts/hooks.json: 26 hook formulas (reference).scripts/slop.json: the AI-tell lexicon used byai-tells.ts.
Credits: adapted from marketingskills social (MIT, Corey Haines) and instagram-agent-skill
(MIT, Jake Schincariol); see the plugin's THIRD_PARTY_NOTICES.md.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

