New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Draft an Instagram caption with the hook in the first 125

Instagram Caption Writer

by sergebulaev · MIT license · ★ 138 on GitHub · updated Sep 17

Instagram Caption Writer cover

Draft an Instagram caption with the hook in the first 125 characters, a skimmable body, and one clear CTA, using a 2026 hook formula chosen by goal (saves, shares, comments, follows). Runs the humanizer pass and, on approval, publishes…

---
name: ig-caption-writer
description: "Draft an Instagram caption with the hook in the first 125 characters, a skimmable body, and one clear CTA, using a 2026 hook formula chosen by goal (saves, shares, comments, follows). Runs the humanizer pass and, on approval, publishes with the image or video you supply via the Publora media flow. Use to caption a single image or a Reel. Not for slide-by-slide carousels (use ig-carousel-planner) or auditing a draft (use ig-humanizer --mode audit)."
---

# Instagram Caption Writer

Write a caption that earns the tap and the save. Instagram hides everything after
~125 characters behind "more", so the hook does the entire job in the first
line. This skill front-loads that hook, keeps the body skimmable, and lands one
clear call to action.

## When to use

- User says "write me an Instagram caption about X"
- User has a single image or a Reel and needs the caption around it
- User wants a sharper hook for a draft they already have
- User wants a caption that auto-publishes with their media on approval

Overview

Write a caption that earns the tap and the save. Instagram hides everything after ~125 characters behind "more", so the hook does the entire job in the first line. This skill front-loads that hook, keeps the body skimmable, and lands one clear call to action.

Manual install (npx, ZIP)
Claude Codenpx skills add sergebulaev/instagram-skills --skill ig-caption-writer -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/sergebulaev/instagram-skills/tar.gz/2919f0a6d8b1 \ | tar -xz -C ~/.claude/skills --strip-components=4 instagram-skills-2919f0a6d8b1/.codex-marketplace/instagram-skills/skills/ig-caption-writer
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/f227fcc3fe9d58c111e1/ig-caption-writer.zip" -OutFile "$env:TEMP\ig-caption-writer.zip"; Expand-Archive "$env:TEMP\ig-caption-writer.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md6.2 KB
  • references/1 file · 3.0 KB
Read the files here
sergebulaev/2919f0a2 files
Shared references5SKILL.md reads these from elsewhere in the repo. Not in the ZIP.Get them on GitHub ↗
SKILL.md
Show the full text119 lines

Instagram Caption Writer

Write a caption that earns the tap and the save. Instagram hides everything after ~125 characters behind "more", so the hook does the entire job in the first line. This skill front-loads that hook, keeps the body skimmable, and lands one clear call to action.

When to use

  • User says "write me an Instagram caption about X"
  • User has a single image or a Reel and needs the caption around it
  • User wants a sharper hook for a draft they already have
  • User wants a caption that auto-publishes with their media on approval

Formulas this skill uses (caption-first shapes)

Code Formula Primary goal Best for
IG1 Number-First Result saves one odd-precision result + a "steal this" promise
IG2 Contrarian Truth shares a sharp, defensible against-the-grain claim
IG3 Relatable Cold-Open comments a specific shared moment, no setup
IG4 Mini-Story Confession comments, follows a real first-person story with a cost

Full skeletons in ../../references/hook-formulas.md. For carousels (IG5-IG8) use ig-carousel-planner; for Reels (IG9-IG10) the hook lives in the video, and this skill writes the supporting caption.

Pick by goal first
Goal Reach for
Saves IG1
Shares IG2
Comments IG3, IG4
Follows IG4

Steps

Voice profile first (all drafts). If ../../references/voice-profile.md has filled: yes, load it and match the user's voice fingerprint, hard rules, and CTA/link style throughout. If it is not filled, mention once that ig-humanizer --mode profile can learn their voice from a few posts, then proceed with the generic voice rules.

  1. Gather inputs. Topic, angle, the media (single image or Reel), target audience, and the goal (saves / shares / comments / follows).
  2. Pick the formula. Use the goal table to shortlist, then suggest 2-3 that also fit the topic and let the user choose.
  3. Write the hook (first 125 chars). It must land the payoff, tension, or number before the "more" fold and make sense on its own.
  4. Write the body. Short lines, white space between beats, one idea. Teach or tell the story that the hook promised. Keep it under 2,200 chars.
  5. Write one CTA. A specific save or send prompt ("save this for your next launch", "send to the friend who keeps doing #2"), a real question, or a single next step. Never "what do you think?".
  6. Add hashtags. Hand off the topic to ig-hashtag-strategist or apply the 3-5 sized set yourself (see ../../references/hashtag-strategy.md). Put them at the end or note they go in the first comment.
  7. Humanizer pass. Scrub 2026 AI vocab by paragraph density, cap em dashes (about one per 100 words; a caption's single dash is not a tell, never swap one for a period), break stacked triads, generic openers and reveal bridges. Fix only a paragraph that reads machine-flat; never manufacture variance or one-word lines for drama. Add an odd-precision number with a named referent or a named entity where the claim allows. Canonical rules: ig-humanizer V3.
  8. Optional audit. Invoke ig-humanizer --mode audit for a pass-fail check.
  9. Approval card. Show: formula used, the hook (flag if over 125 chars), full caption, char count, hashtag set, primary goal, and the media the user must supply.
  10. On approval, publish with media. Call lib.publish(kind="post", draft_text=<approved caption>, target_url="https://www.instagram.com/", media=[<local file paths>], platforms=[<INSTAGRAM_PLATFORM_ID>], scheduled_time=<iso_or_None>). For a Reel pass kind="reel". The wrapper runs the Publora draft then upload then schedule flow. With no media or no Publora key it returns a copy-paste block and a reminder to attach the media.

Hard rules

Global voice rules: see root SKILL.md Voice rules. Additional skill-specific rules:

  • The first 125 characters must stop the scroll on their own. Rewrite any hook that needs the second line to make sense.
  • One idea per caption. Two ideas means two posts.
  • One specific number where the claim allows it.
  • 3-5 sized hashtags, never 30. 0-3 emoji, placed with intent.
  • Media is required. Never present a caption as publishable without reminding the user to attach the image or video.
  • Do not hard-sell. One natural mention of the next step, max.

Anti-patterns (skill will refuse)

  • A hook that only makes sense after the fold.
  • Em dashes above the cap (more than about one per 100 words), or an em dash swapped for a period.
  • "Let's talk about.." or "Here's the thing.." openers; "The result?" as a reveal.
  • Announced candor ("real talk", "not gonna lie", "POV:" on something that is not a POV) with no dated fact behind it.
  • Staccato stacks ("No X. No Y. Just Z.") and one-word lines added for drama.
  • 20-30 hashtags stuffed at the top.
  • Engagement bait ("double tap if you agree", "comment YES").
  • Rule-of-three lists without specifics.
  • "leverage", "fundamentally", "game-changer", "level up", "dive in".
  • Padding a one-line idea to look substantial.

Resources

  • ../../references/hook-formulas.md - all 10 Instagram formulas (IG1-IG4 are caption-first)
  • ../../references/algorithm-heuristics.md - 2026 Instagram ranking rules
  • ../../references/hashtag-strategy.md - the 3-5 sized hashtag recipe
  • ../../references/media-workflow.md - the draft, upload, schedule flow
  • references/caption-checklist.md - the per-caption scrub and fit list
  • ig-carousel-planner - when the idea is a slide-by-slide carousel
  • ig-hashtag-strategist - build the sized hashtag set
  • ig-humanizer - AI-tell scrubber, plus --mode audit for review
  • ig-hook-extractor - reverse-engineer a hook from a post you admire
1---
2name: ig-caption-writer
3description: "Draft an Instagram caption with the hook in the first 125 characters, a skimmable body, and one clear CTA, using a 2026 hook formula chosen by goal (saves, shares, comments, follows). Runs the humanizer pass and, on approval, publishes with the image or video you supply via the Publora media flow. Use to caption a single image or a Reel. Not for slide-by-slide carousels (use ig-carousel-planner) or auditing a draft (use ig-humanizer --mode audit)."
4---
5 
6# Instagram Caption Writer
7 
8Write a caption that earns the tap and the save. Instagram hides everything after
9~125 characters behind "more", so the hook does the entire job in the first
10line. This skill front-loads that hook, keeps the body skimmable, and lands one
11clear call to action.
12 
13## When to use
14 
15- User says "write me an Instagram caption about X"
16- User has a single image or a Reel and needs the caption around it
17- User wants a sharper hook for a draft they already have
18- User wants a caption that auto-publishes with their media on approval
19 
20## Formulas this skill uses (caption-first shapes)
21 
22| Code | Formula | Primary goal | Best for |
23|---|---|---|---|
24| IG1 | Number-First Result | saves | one odd-precision result + a "steal this" promise |
25| IG2 | Contrarian Truth | shares | a sharp, defensible against-the-grain claim |
26| IG3 | Relatable Cold-Open | comments | a specific shared moment, no setup |
27| IG4 | Mini-Story Confession | comments, follows | a real first-person story with a cost |
28 
29Full skeletons in `../../references/hook-formulas.md`. For carousels (IG5-IG8) use
30`ig-carousel-planner`; for Reels (IG9-IG10) the hook lives in the video, and this
31skill writes the supporting caption.
32 
33### Pick by goal first
34 
35| Goal | Reach for |
36|---|---|
37| Saves | IG1 |
38| Shares | IG2 |
39| Comments | IG3, IG4 |
40| Follows | IG4 |
41 
42## Steps
43 
44**Voice profile first (all drafts).** If `../../references/voice-profile.md` has `filled: yes`, load it and match the user's voice fingerprint, hard rules, and CTA/link style throughout. If it is not filled, mention once that `ig-humanizer --mode profile` can learn their voice from a few posts, then proceed with the generic voice rules.
45 
461. **Gather inputs.** Topic, angle, the media (single image or Reel), target
47 audience, and the goal (saves / shares / comments / follows).
482. **Pick the formula.** Use the goal table to shortlist, then suggest 2-3 that
49 also fit the topic and let the user choose.
503. **Write the hook (first 125 chars).** It must land the payoff, tension, or
51 number before the "more" fold and make sense on its own.
524. **Write the body.** Short lines, white space between beats, one idea. Teach or
53 tell the story that the hook promised. Keep it under 2,200 chars.
545. **Write one CTA.** A specific save or send prompt ("save this for your next
55 launch", "send to the friend who keeps doing #2"), a real question, or a
56 single next step. Never "what do you think?".
576. **Add hashtags.** Hand off the topic to `ig-hashtag-strategist` or apply the
58 3-5 sized set yourself (see `../../references/hashtag-strategy.md`). Put them at
59 the end or note they go in the first comment.
607. **Humanizer pass.** Scrub 2026 AI vocab by paragraph density, cap em
61 dashes (about one per 100 words; a caption's single dash is not a tell,
62 never swap one for a period), break stacked triads, generic openers and
63 reveal bridges. Fix only a paragraph that reads machine-flat; never
64 manufacture variance or one-word lines for drama. Add an odd-precision
65 number with a named referent or a named entity where the claim allows.
66 Canonical rules: `ig-humanizer` V3.
678. **Optional audit.** Invoke `ig-humanizer --mode audit` for a pass-fail check.
689. **Approval card.** Show: formula used, the hook (flag if over 125 chars),
69 full caption, char count, hashtag set, primary goal, and the media the user
70 must supply.
7110. **On approval, publish with media.** Call `lib.publish(kind="post",
72 draft_text=<approved caption>, target_url="https://www.instagram.com/",
73 media=[<local file paths>], platforms=[<INSTAGRAM_PLATFORM_ID>],
74 scheduled_time=<iso_or_None>)`. For a Reel pass `kind="reel"`. The wrapper
75 runs the Publora draft then upload then schedule flow. With no media or no
76 Publora key it returns a copy-paste block and a reminder to attach the media.
77 
78## Hard rules
79 
80Global voice rules: see root `SKILL.md` Voice rules. Additional skill-specific
81rules:
82 
83- The first 125 characters must stop the scroll on their own. Rewrite any hook
84 that needs the second line to make sense.
85- One idea per caption. Two ideas means two posts.
86- One specific number where the claim allows it.
87- 3-5 sized hashtags, never 30. 0-3 emoji, placed with intent.
88- Media is required. Never present a caption as publishable without reminding
89 the user to attach the image or video.
90- Do not hard-sell. One natural mention of the next step, max.
91 
92## Anti-patterns (skill will refuse)
93 
94- A hook that only makes sense after the fold.
95- Em dashes above the cap (more than about one per 100 words), or an em dash swapped for a period.
96- "Let's talk about.." or "Here's the thing.." openers; "The result?" as a reveal.
97- Announced candor ("real talk", "not gonna lie", "POV:" on something that is not a POV) with no dated fact behind it.
98- Staccato stacks ("No X. No Y. Just Z.") and one-word lines added for drama.
99- 20-30 hashtags stuffed at the top.
100- Engagement bait ("double tap if you agree", "comment YES").
101- Rule-of-three lists without specifics.
102- "leverage", "fundamentally", "game-changer", "level up", "dive in".
103- Padding a one-line idea to look substantial.
104 
105## Resources
106 
107- `../../references/hook-formulas.md` - all 10 Instagram formulas (IG1-IG4 are caption-first)
108- `../../references/algorithm-heuristics.md` - 2026 Instagram ranking rules
109- `../../references/hashtag-strategy.md` - the 3-5 sized hashtag recipe
110- `../../references/media-workflow.md` - the draft, upload, schedule flow
111- `references/caption-checklist.md` - the per-caption scrub and fit list
112 
113## Related skills
114 
115- `ig-carousel-planner` - when the idea is a slide-by-slide carousel
116- `ig-hashtag-strategist` - build the sized hashtag set
117- `ig-humanizer` - AI-tell scrubber, plus `--mode audit` for review
118- `ig-hook-extractor` - reverse-engineer a hook from a post you admire
119 
View all files on GitHub →

Details

Updated
Sep 17, 2026
License
MIT
Stars on the repo
★ 138
Checked
Source
sergebulaev/instagram-skills ↗
Creator
sergebulaev · 77 listings
View creator

Similar skills

See all →
SkillGenerate a branded slide-by-slide LinkedIn carouselGemini carouselcharlie947/social-media-skills · by charlie947Generate a branded slide-by-slide LinkedIn carousel using Gemini. Takes source content, builds a design brief, waits for approval, then outputs per-slide image generation prompts. 1080x1350 vertical format. Use this skill whenever the user says "carousel", "build a carousel", "turn this into a carousel", "gemini carousel", or wants multi-slide LinkedIn content. Always includes an approval gate between brief and image generation.★ 3.7k GitHub starsSkillBuild a LinkedIn document postLi carouselJakeschincariol/linkedin-agent-skill · by JakeschincariolBuild a LinkedIn document post (carousel) - slide-by-slide copy, the cover that earns the swipe, and the PDF to upload. Use when the user says carousel", "document post", "slides for LinkedIn", "turn this into a carousel", or has a list-shaped idea that would die as a text post.★ 1.9k GitHub starsSkillPlan an Instagram carousel slide by slide, up to 10 slidesInstagram Carousel Plannersergebulaev/instagram-skills · by sergebulaevPlan an Instagram carousel slide by slide, up to 10 slides, with a hook slide that opens a loop, value slides that front-load the payoff, and a payoff slide that earns the save and follow. Picks a 2026 carousel formula (listicle, before/after, myth-buster, framework) by goal (saves, shares, follows), drafts each slide's text plus the caption, then publishes the images you supply via Publora. Use to structure a multi-slide carousel. Not for single-image captions (use ig-caption-writer).★ 138 GitHub starsSkillSocial media campaign analysis and performance trackingSocial media analyzeralirezarezvani/claude-skills · by alirezarezvaniSocial media campaign analysis and performance tracking. Calculates engagement rates, ROI, and benchmarks across platforms. Use when analyzing social media performance, calculating engagement rate, measuring campaign ROI, comparing platform metrics, or benchmarking against industry standards. Also use when the user mentions "social media audit," "engagement rate," or "which platform performs best.★ 26.3k GitHub starsSkillScore a LinkedIn post using real performance dataPost scorercharlie947/social-media-skills · by charlie947Score a LinkedIn post using real performance data. Pulls the user's own post history via Apify (or uses cached data) to identify what actually performs, then scores the draft against those patterns. Use this skill whenever the user says "score my post", "review my post", "rate this post", "give me feedback", "how good is this post", or pastes a LinkedIn post and asks for critique. Separates historical comparisons from an explicitly labelled editorial-only fallback. Designed for live scoring at events and everyday post review.★ 3.7k GitHub starsSkillVideo caption generatorericosiu/ai-marketing-skills · by ericosiuname: video-caption-generator★ 3.6k GitHub stars

More from sergebulaev

SkillBy density per paragraph, not per wordAI Tells — Complete Blacklist (V3, 2026-09)sergebulaev/linkedin-skills · by sergebulaevScored the way readers read: by density per paragraph, not per word. One marker in a paragraph is English. Three is a signature. The…★ 3.1k GitHub starsSkillFifteen rules from the linkedin-humanizer packageAI-Tell Rules: Tier-Classified Referencesergebulaev/linkedin-skills · by sergebulaevFifteen rules from the linkedin-humanizer package, sorted by what kind of evidence each one actually represents.★ 3.1k GitHub starsSkillPattern data from MagicPost LinkedIn analysisEmoji Patterns — AI vs. Humansergebulaev/linkedin-skills · by sergebulaevPattern data from MagicPost LinkedIn analysis (Feb 2026, viral post with 220 engagement).★ 3.1k GitHub starsSkillRead your Instagram niche and profile from real dataInstagram Audience Insightssergebulaev/instagram-skills · by sergebulaevRead your Instagram niche and profile from real data via Apify, no login. Scan a hashtag for the posts traveling now (likes, comments, owner) to see the format and hook that works. Pull profile stats for any handle, yours or a competitor's: followers, posts, bio, category. Instagram hides who liked or commented on other accounts, so this is discovery plus profiles, not engagers. Triggers on "what works in my niche", "scan the hashtag", "competitor stats". Not for writing captions (use ig-caption-writer).★ 138 GitHub starsSkillPlan an Instagram carousel slide by slide, up to 10 slidesInstagram Carousel Plannersergebulaev/instagram-skills · by sergebulaevPlan an Instagram carousel slide by slide, up to 10 slides, with a hook slide that opens a loop, value slides that front-load the payoff, and a payoff slide that earns the save and follow. Picks a 2026 carousel formula (listicle, before/after, myth-buster, framework) by goal (saves, shares, follows), drafts each slide's text plus the caption, then publishes the images you supply via Publora. Use to structure a multi-slide carousel. Not for single-image captions (use ig-caption-writer).★ 138 GitHub starsSkillPlan, draft, audit, and publish posts and threads for XX (Twitter) Marketing Skillssergebulaev/x-skills · by sergebulaevPlan, draft, audit, and publish posts and threads for X (Twitter). Use when the user wants to write a single tweet or an auto-numbered thread, build a long-form tweetstorm, remove AI tells from a draft, reverse-engineer the hook from a viral tweet, draft a reply or quote tweet, or plan a week of X content. Tweets and threads publish via the Publora API, which auto-splits long content into a numbered thread. User provides notes or a tweet URL, the skill drafts, the user approves, then it publishes.★ 95 GitHub stars