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

Remove the AI tells readers react to in an Instagram caption

Instagram Humanizer V3

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

Instagram Humanizer V3 cover

Remove the AI tells readers react to in an Instagram caption or carousel slide: 2026 vocabulary by density, reveal bridges, staccato stacks, stacked triads, performed sincerity, emoji storms; caps em dashes. Includes --mode audit…

---
name: ig-humanizer
description: "Remove the AI tells readers react to in an Instagram caption or carousel slide: 2026 vocabulary by density, reveal bridges, staccato stacks, stacked triads, performed sincerity, emoji storms; caps em dashes. Includes --mode audit (first-125 hook, length, hashtags, emoji, CTA, media) and --mode profile. Not for beating AI detectors (no edit reliably does). Not for writing from scratch (use ig-caption-writer or ig-carousel-planner). Keywords: humanize, de-AI caption, audit before posting."
---

# Instagram Humanizer V3

Rewrites any caption or carousel slide text to remove the AI tells that human
readers notice, and audits a finished caption against the 2026 Instagram
checklist. Based on Wikipedia's "Signs of AI writing" taxonomy, the 2025-2026
stylometry literature, our own Instagram caption corpus (n=284, prevalence
only), and Instagram-specific patterns (the first-125 fold, the
lowercase-casual caption register, sized hashtags, sends-and-saves structure).
**V3 (2026-09):** recalibrated on 2026 evidence. Vocabulary is scored by
density, em dashes are capped instead of banned (and the cap is generous here:
29% of human captions use one), forced rhythm is now a tell instead of a fix,
and there is an over-correction guard.

Overview

Rewrites any caption or carousel slide text to remove the AI tells that human readers notice, and audits a finished caption against the 2026 Instagram checklist. Based on Wikipedia's "Signs of AI writing" taxonomy, the 2025-2026 stylometry literature, our own Instagram caption corpus (n=284, prevalence only), and Instagram-specific patterns (the first-125 fold, the lowercase-casual caption register, sized hashtags, sends-and-saves structure). V3 (2026-09): recalibrated on 2026 evidence. Vocabulary is scored by density, em dashes are capped instead of banned (and the cap is generous here: 29% of human captions use one), forced rhythm is now a tell instead of a fix, and there is an…

What you get

  • Rewritten text with AI tells removed
  • A diff showing what changed and why
  • Caption char count (flagging if the hook spills past the first 125 chars)
  • Per-paragraph tell density (markers per paragraph; 3+ triggered a rewrite)
  • Reader-read confidence"reads human", "mixed", "reads AI" (a reader-tell
Manual install (npx, ZIP)
Claude Codenpx skills add sergebulaev/instagram-skills --skill ig-humanizer -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-humanizer
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/49ffbf6dbea9a82dc1ad/ig-humanizer.zip" -OutFile "$env:TEMP\ig-humanizer.zip"; Expand-Archive "$env:TEMP\ig-humanizer.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.md15.8 KB
  • references/3 files · 29.3 KB
  • sub-skills/3 files · 11.3 KB
Read the files here
sergebulaev/2919f0a7 files
Shared references1SKILL.md reads these from elsewhere in the repo. Not in the ZIP.Get them on GitHub ↗
SKILL.md
Show the full text288 lines

Instagram Humanizer V3

Rewrites any caption or carousel slide text to remove the AI tells that human readers notice, and audits a finished caption against the 2026 Instagram checklist. Based on Wikipedia's "Signs of AI writing" taxonomy, the 2025-2026 stylometry literature, our own Instagram caption corpus (n=284, prevalence only), and Instagram-specific patterns (the first-125 fold, the lowercase-casual caption register, sized hashtags, sends-and-saves structure). V3 (2026-09): recalibrated on 2026 evidence. Vocabulary is scored by density, em dashes are capped instead of banned (and the cap is generous here: 29% of human captions use one), forced rhythm is now a tell instead of a fix, and there is an over-correction guard.

What this skill does not do: it does not make text "pass" GPTZero, Pangram, Turnitin or Originality. Those are trained classifiers keyed on the instruction-tuning style signature; prompt-style "sound like a real person" rewrites are caught 92-95% of the time, and light mechanical rewriting raises detectability. On caption-length text (under 300 words) detector scores are noise. The real value is elsewhere: expert human readers cite vocabulary (53%) and sentence structure (36%) as what gives AI text away, and on Instagram a caption that reads as a brand account earns neither the save nor the send. This skill removes what those readers react to.

What changed in V3

Evidence tier in brackets: [strong] = replicated across 2+ independent 2025-2026 studies or our own corpus; [vendor] = single platform or vendor dataset; [weak] = one study or expert-panel report.

  • Vocabulary moved from a delete-list to density scoring. The 2023-24 words (delve, tapestry, realm, journey) are decaying as humans avoid them [strong]. The durable 2026 markers are common words (significant, crucial, notably, comprehensive, insights, robust, leverage, foster, landscape, nuanced, streamline, elevate) plus grammar: nominalisations and "-ing" clause openers at 5.3x the human rate [strong]. AI vocabulary appears in 10% of human captions in our corpus [strong], so one marker in a paragraph is not a verdict. Three is.
  • Em dash is no longer a tell. GPT-5.4 emits 1.43 per 1,000 words, below the 3.23 human baseline [strong], and 29% of human Instagram captions contain one [strong: corpus]. A caption's em dash is never a tell on its own, and a blanket ban over-sterilises captions. New rule: cap at about 1 per 100 words (1-2 per caption), replace only the excess with a comma, colon, parentheses or a rewrite. Never a period (a split dash stacks fragments). Zero em dashes across a long caption is its own tell now.
  • Forced burstiness is the #1 2026 tell, not the fix. Mechanical long/short alternation is a learnable humanizer fingerprint [weak], and "Short. Punchy. Done.", "No X. No Y. Just Z.", one-word lines for drama and "The result?" reveals are the current top reader-cited tells [strong]. Captions are mid-length, so Pass 2 is an anti-uniformity guard only: fix a paragraph that reads machine-flat, never manufacture variance.
  • Rule of three is still a tell, at density. Tricolon runs at 2x expert-human rate across 2026 frontier models [strong], and 23% of human captions contain one [strong: corpus]. So one natural triple with concrete items stays. Stacked, perfectly parallel or hollow triads and a third triad in a caption get scrubbed.
  • Fingerprint injection was half wrong. Named entities and concreteness are supported [strong]; an odd-precision number with a referent in the first 125 chars is the strongest hook. Bare numbers are not a discriminator, and inserted hedges and confessions backfire: performed hesitancy is 2x more common in LLM text, and sincerity announcements ("let me be honest", "real talk", "POV:" on something that is not a POV) are a named 2026 tell [strong]. Pass 3 asks for a flat, dated, uncomfortable fact instead.
  • Over-correction guard. Humanizer output has its own fingerprint [weak]. Pass 4 checks whether Passes 1-3 introduced the very patterns they were meant to remove. Edits are proportional to real problems. When in doubt, leave it.

When to use

  • Before publishing any AI-drafted caption or carousel (rewrite mode)
  • Pre-publish review of a finished caption (audit mode, see sub-skills/post-audit.md)
  • When a caption feels off and you cannot pinpoint why

Input

Any text: a caption, the on-image text of a carousel, or a Reel caption. Optional: target voice samples (the user's past captions).

Output

  • Rewritten text with AI tells removed
  • A diff showing what changed and why
  • Caption char count (flagging if the hook spills past the first 125 chars)
  • Per-paragraph tell density (markers per paragraph; 3+ triggered a rewrite)
  • Reader-read confidence: "reads human", "mixed", "reads AI" (a reader-tell estimate, not a detector score)

Modes

# Default: scrub AI tells (forensic + strict) and fix Instagram-format issues
ig-humanizer <text>

# Forensic only - minimum touch, just kill model leakage
ig-humanizer --mode forensic <text>

# Audit - detection-only pass-fail review, no rewrite
# Runs the 2026 Instagram checklist: first-125 hook, caption length, sized
# hashtags, emoji limits, CTA quality, media reminder.
# Returns Blockers + Warnings + suggested fixes. See sub-skills/post-audit.md.
ig-humanizer --mode audit <text>

# Profile - build/update the user's Voice & Brand Profile. See the section below.
ig-humanizer --mode profile

The four passes

Pass 1 - SCRUB (score, then delete or replace)

Apply the tiered catalogs in references/scrub-rules.md. The unit of judgement is the paragraph (or slide), not the word: count markers per paragraph, rewrite the paragraph at 3+, leave a single marker alone unless it is a reveal bridge, negative parallelism, a sincerity marker, or forensic leakage.

  • Forensic (always on): real model leakage no human types. AI tool markers (oaicite, contentReference, turn0search0), knowledge-cutoff disclaimers ("As of my last update"), template blanks ([Your Name]), and em dashes above the cap (more than about 1 per 100 words).
  • Strict (default on): what readers react to. The durable 2026 vocabulary set scored by density (significant, crucial, notably, particularly, comprehensive, insights, robust, leverage, foster, landscape, nuanced, streamline, elevate, empower), grammar markers (nominalisations, sentence-opening "-ing" clauses), the 2026 model-idiom layer (quietly, "X matters.", compound, "a signal", "the work", "built different", "let that sink in"), reveal bridges on a single hit ("The result?", "Here's what", "Stop X, start Y", "plot twist:"), all forms of negative parallelism, stacked or perfectly parallel triads and any third triad in a caption, phrase cleanups ("in today's fast-paced world", "game-changer", "level up", "dive in"), emoji storms, and dead closers ("what do you think?", "double tap if you agree").
  • Instagram-format scrubs (always apply): first-125 hook that stands alone, sized hashtags, emoji limits, carousel slide-1 promise, caption length.
Pass 2 - RHYTHM (anti-uniformity guard only)

Detectors do not score burstiness, and captions are mid-length (our corpus median is well under 200 words), so rhythm is neither a reach lever nor a fix. What readers notice is the mechanical-uniformity tell (every line the same length, machine-flat) and, worse, the staged variance that second-generation humanizers add. So Pass 2 has two jobs: fix rhythm only where it reads machine-flat, and remove manufactured variance everywhere. It never adds variance as a tactic.

  • Per paragraph: one genuinely long sentence next to a short one is fine and is what human variance looks like. Two or three mid-length sentences in a row are also fine. Edit only when every sentence in the paragraph runs the same length and reads flat, and then edit one sentence, not the paragraph.
  • Standalone fragments: at most 2 per caption, total. "every time." once is a voice quirk. Three in a caption is a pattern.
  • Banned outright (rewrite as full sentences): "The X? Y." reveals; "No X. No Y. Just Z."; "All the X. None of the Y."; "Simple. Effective. Easy." adjective stacks; one-word lines for drama ("Still." "Exactly."); pseudo- Socratic Q&A ("Why? Because..."); "Short. Punchy. Done." staccato runs. Fragment runs are the tell.
  • Layout is not rhythm. One idea per line with blank lines between them is native caption formatting and stays. Fragment-for-drama inside those lines is the tell. Keep the layout, fix the sentences.
  • Carousel slide text is short by design; never chop or pad a slide for rhythm. Never alternate long/short/long/short across slides or lines. That seesaw is the humanizer fingerprint.

The check is "does any paragraph read machine-flat, and did I add a staccato pattern", not a variance number.

Pass 3 - ADD (human fingerprints)

Require where the content allows:

  • One odd-precision number WITH a named referent: who, what, when, or what it cost ("0 to 10k in 4 months, posting 3 times a week", not "grew fast" and not "10k"). A bare number is not a fingerprint; the referent carries the signal.
  • One named entity (real person, brand, date, tool)
  • One first-person concrete detail (what you saw, what it cost, what broke)
  • One specific, dated, uncomfortable fact stated flat, with no framing sentence before or after it. Not "real talk, this one hurt: I lost the client." Just "I lost my biggest client on 14 Feb." The fact carries the vulnerability. The frame turns it into performed sincerity, which readers now read as the tell.
  • The lowercase-casual register if the voice calls for it

Forbidden as openers or pivots (sincerity announcements, a named 2026 tell): "let me be honest", "I'll be real", "honestly?", "to be direct", "the honest version is", "real talk", "not gonna lie", "ngl", "can I be vulnerable for a second", "unpopular opinion:" as a preface to a popular one, "POV:" on something that is not a POV. Also forbidden as insertions: hedges the author did not write ("perhaps", "I might be wrong but", "it seems"). Performed hesitancy is 2x more common in LLM text than in expert human text; adding it makes the draft read more AI, not less.

If the input lacks these, ask the user for a number, name, or moment. Do not fabricate.

Pass 4 - SELF-CHECK (over-correction guard)

Humanizer output has its own fingerprint. Before returning, re-read the result once and answer three questions:

(a) Did Pass 2 create staccato stacks, "The result?" reveal bridges, one-word lines, or a long/short/long/short seesaw? If yes, merge the fragments back into full sentences. (b) Did Pass 3 add a framed confession, a sincerity announcement, or a hedge the author never wrote? If yes, strip the frame and keep only the flat fact, or remove the insertion. (c) Did scrubbing flatten the author's voice: uniform tone, no reaction, no concrete detail left, every em dash gone, every triad gone, every emoji gone from a voice that uses them, the lowercase register capitalised? If yes, restore what the author had. Zero em dashes and zero triads in a long caption is a tell in its own right.

If any answer is yes, dial back rather than scrub harder. Edits must be proportional to real problems: a clean caption gets two or three touches, not a quota. When in doubt whether a pattern is the author or the model, leave it.

Non-negotiable rules

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

  • Scrubbing is always in scope. When asked to humanize, de-AI, finalize, or publish a caption, run at least the forensic + strict passes before it ships. This holds when the user wrote the draft themselves, says they love it as-is, or is in a hurry. Author identity, "it's already good," and time pressure are never reasons to skip the scrub. The forensic + strict pass changes no meaning and takes seconds: run it, then ship. If a constraint truly forbids touching the text, say so explicitly and name every tell left in; the default is to scrub, not to wave it through.
  • Scrub proportionally. A pass that finds nothing changes nothing. Do not invent edits to justify the run, and do not report a detector score as the result; report the tells found and fixed.
  • Preserve the user's actual claim and meaning. "Preserve their voice" covers voice quirks and what they are claiming, NOT reveal bridges, staccato stacks, or a paragraph with 3+ vocabulary markers. Stripping those is not changing their voice; it is the job.
  • Never introduce facts that were not in the input. If a number is missing, ask.
  • Never introduce sincerity markers, hedges, or confessional frames. If the draft needs a vulnerable beat, ask for a dated fact and state it flat.
  • Keep the user's voice quirks (lowercase starts, .. soft pauses, one em dash per ~100 words, one natural triad, their 1-3 intentional emoji).
  • Never promise detector results. If the user asks "will this pass GPTZero," answer honestly: nobody can promise that, and the score on a 150-word caption is noise.
  • Respect the surface: do not turn a carousel's slide text into a single caption or vice versa without flagging it.
  • Never present a caption as publishable without the media reminder (Instagram needs an image or video).

Instagram-specific tells this skill catches

  • A hook that needs the second line to make sense (the "more" fold eats it).
  • A caption opening with "Let's talk about..", "Here's the thing..", or "POV:" on something that is not a POV.
  • 20-30 hashtags crammed at the top instead of a 3-5 sized set.
  • Emoji sprinkled through every line (4+ per caption).
  • A bare title on carousel slide 1 instead of a promise + loop.
  • Stacked or hollow rule-of-three lists ("faster, cheaper, better"); one natural triple with concrete items is fine.
  • Engagement bait ("comment YES", "tag 3 friends", "double tap if").
  • Staccato stacks and one-word lines for drama (the humanizer fingerprint), or a paragraph where every line reads machine-flat.

Example

See references/examples.md for worked before/after rewrites.

Files

  • SKILL.md - this file (rewrite scrubber + audit-mode entry)
  • references/scrub-rules.md - V3 regex patterns by tier, density scoring, em dash cap, rhythm rules, forbidden insertions
  • references/examples.md - worked before/after rewrites for captions and slides
  • references/audit-checklist.md - the pre-publish checklist with thresholds
  • sub-skills/post-audit.md - pre-publish audit workflow (detection-only, no rewrite)
  • sub-skills/voice-profile.md - build/update the user's Voice & Brand Profile (--mode profile)
  • sub-skills/illustration.md - optional Pixfaro image workflow

Voice profile mode (--mode profile)

ig-humanizer --mode profile builds or updates the user's Voice & Brand Profile at ../../references/voice-profile.md from 3-6 of their real Instagram posts pasted in (portable, no token) or, if a read token is set, from pulled activity. Once filled, every writing skill in this bundle drafts in the user's voice automatically. See sub-skills/voice-profile.md. Triggers: "build my voice profile", "learn my voice".

  • ig-caption-writer - generates captions that already pass the humanizer
  • ig-carousel-planner - generates carousels that already pass the humanizer
1---
2name: ig-humanizer
3description: "Remove the AI tells readers react to in an Instagram caption or carousel slide: 2026 vocabulary by density, reveal bridges, staccato stacks, stacked triads, performed sincerity, emoji storms; caps em dashes. Includes --mode audit (first-125 hook, length, hashtags, emoji, CTA, media) and --mode profile. Not for beating AI detectors (no edit reliably does). Not for writing from scratch (use ig-caption-writer or ig-carousel-planner). Keywords: humanize, de-AI caption, audit before posting."
4---
5 
6# Instagram Humanizer V3
7 
8Rewrites any caption or carousel slide text to remove the AI tells that human
9readers notice, and audits a finished caption against the 2026 Instagram
10checklist. Based on Wikipedia's "Signs of AI writing" taxonomy, the 2025-2026
11stylometry literature, our own Instagram caption corpus (n=284, prevalence
12only), and Instagram-specific patterns (the first-125 fold, the
13lowercase-casual caption register, sized hashtags, sends-and-saves structure).
14**V3 (2026-09):** recalibrated on 2026 evidence. Vocabulary is scored by
15density, em dashes are capped instead of banned (and the cap is generous here:
1629% of human captions use one), forced rhythm is now a tell instead of a fix,
17and there is an over-correction guard.
18 
19**What this skill does not do:** it does not make text "pass" GPTZero,
20Pangram, Turnitin or Originality. Those are trained classifiers keyed on the
21instruction-tuning style signature; prompt-style "sound like a real person"
22rewrites are caught 92-95% of the time, and light mechanical rewriting raises
23detectability. On caption-length text (under 300 words) detector scores are
24noise. The real value is elsewhere: expert human readers cite vocabulary (53%)
25and sentence structure (36%) as what gives AI text away, and on Instagram a
26caption that reads as a brand account earns neither the save nor the send.
27This skill removes what those readers react to.
28 
29## What changed in V3
30 
31Evidence tier in brackets: [strong] = replicated across 2+ independent
322025-2026 studies or our own corpus; [vendor] = single platform or vendor
33dataset; [weak] = one study or expert-panel report.
34 
35- **Vocabulary moved from a delete-list to density scoring.** The 2023-24 words
36 (delve, tapestry, realm, journey) are decaying as humans avoid them [strong].
37 The durable 2026 markers are common words (significant, crucial, notably,
38 comprehensive, insights, robust, leverage, foster, landscape, nuanced,
39 streamline, elevate) plus grammar: nominalisations and "-ing" clause openers
40 at 5.3x the human rate [strong]. AI vocabulary appears in 10% of human
41 captions in our corpus [strong], so one marker in a paragraph is not a
42 verdict. Three is.
43- **Em dash is no longer a tell.** GPT-5.4 emits 1.43 per 1,000 words, below
44 the 3.23 human baseline [strong], and **29% of human Instagram captions
45 contain one** [strong: corpus]. A caption's em dash is never a tell on its
46 own, and a blanket ban over-sterilises captions. New rule: cap at about 1 per
47 100 words (1-2 per caption), replace only the excess with a comma, colon,
48 parentheses or a rewrite. Never a period (a split dash stacks fragments).
49 Zero em dashes across a long caption is its own tell now.
50- **Forced burstiness is the #1 2026 tell, not the fix.** Mechanical
51 long/short alternation is a learnable humanizer fingerprint [weak], and
52 "Short. Punchy. Done.", "No X. No Y. Just Z.", one-word lines for drama and
53 "The result?" reveals are the current top reader-cited tells [strong].
54 Captions are mid-length, so Pass 2 is an anti-uniformity guard only: fix a
55 paragraph that reads machine-flat, never manufacture variance.
56- **Rule of three is still a tell, at density.** Tricolon runs at 2x
57 expert-human rate across 2026 frontier models [strong], and 23% of human
58 captions contain one [strong: corpus]. So one natural triple with concrete
59 items stays. Stacked, perfectly parallel or hollow triads and a third triad
60 in a caption get scrubbed.
61- **Fingerprint injection was half wrong.** Named entities and concreteness are
62 supported [strong]; an odd-precision number with a referent in the first 125
63 chars is the strongest hook. Bare numbers are not a discriminator, and
64 inserted hedges and confessions backfire: performed hesitancy is 2x more
65 common in LLM text, and sincerity announcements ("let me be honest", "real
66 talk", "POV:" on something that is not a POV) are a named 2026 tell
67 [strong]. Pass 3 asks for a flat, dated, uncomfortable fact instead.
68- **Over-correction guard.** Humanizer output has its own fingerprint [weak].
69 Pass 4 checks whether Passes 1-3 introduced the very patterns they were meant
70 to remove. Edits are proportional to real problems. When in doubt, leave it.
71 
72## When to use
73 
74- Before publishing any AI-drafted caption or carousel (rewrite mode)
75- Pre-publish review of a finished caption (audit mode, see `sub-skills/post-audit.md`)
76- When a caption feels off and you cannot pinpoint why
77 
78## Input
79 
80Any text: a caption, the on-image text of a carousel, or a Reel caption.
81Optional: target voice samples (the user's past captions).
82 
83## Output
84 
85- Rewritten text with AI tells removed
86- A diff showing what changed and why
87- Caption char count (flagging if the hook spills past the first 125 chars)
88- Per-paragraph tell density (markers per paragraph; 3+ triggered a rewrite)
89- Reader-read confidence: "reads human", "mixed", "reads AI" (a reader-tell
90 estimate, not a detector score)
91 
92## Modes
93 
94```bash
95# Default: scrub AI tells (forensic + strict) and fix Instagram-format issues
96ig-humanizer <text>
97 
98# Forensic only - minimum touch, just kill model leakage
99ig-humanizer --mode forensic <text>
100 
101# Audit - detection-only pass-fail review, no rewrite
102# Runs the 2026 Instagram checklist: first-125 hook, caption length, sized
103# hashtags, emoji limits, CTA quality, media reminder.
104# Returns Blockers + Warnings + suggested fixes. See sub-skills/post-audit.md.
105ig-humanizer --mode audit <text>
106 
107# Profile - build/update the user's Voice & Brand Profile. See the section below.
108ig-humanizer --mode profile
109```
110 
111## The four passes
112 
113### Pass 1 - SCRUB (score, then delete or replace)
114 
115Apply the tiered catalogs in `references/scrub-rules.md`. The unit of
116judgement is the **paragraph (or slide), not the word**: count markers per
117paragraph, rewrite the paragraph at 3+, leave a single marker alone unless it
118is a reveal bridge, negative parallelism, a sincerity marker, or forensic
119leakage.
120 
121- **Forensic** (always on): real model leakage no human types. AI tool markers
122 (oaicite, contentReference, turn0search0), knowledge-cutoff disclaimers ("As
123 of my last update"), template blanks ([Your Name]), and em dashes above the
124 cap (more than about 1 per 100 words).
125- **Strict** (default on): what readers react to. The durable 2026 vocabulary
126 set scored by density (significant, crucial, notably, particularly,
127 comprehensive, insights, robust, leverage, foster, landscape, nuanced,
128 streamline, elevate, empower), grammar markers (nominalisations,
129 sentence-opening "-ing" clauses), the 2026 model-idiom layer (quietly, "X
130 matters.", compound, "a signal", "the work", "built different", "let that
131 sink in"), reveal bridges on a single hit ("The result?", "Here's what",
132 "Stop X, start Y", "plot twist:"), all forms of negative parallelism,
133 stacked or perfectly parallel triads and any third triad in a caption,
134 phrase cleanups ("in today's fast-paced world", "game-changer", "level up",
135 "dive in"), emoji storms, and dead closers ("what do you think?", "double
136 tap if you agree").
137- **Instagram-format scrubs** (always apply): first-125 hook that stands
138 alone, sized hashtags, emoji limits, carousel slide-1 promise, caption
139 length.
140 
141### Pass 2 - RHYTHM (anti-uniformity guard only)
142 
143Detectors do not score burstiness, and captions are mid-length (our corpus
144median is well under 200 words), so rhythm is neither a reach lever nor a
145fix. What readers notice is the mechanical-uniformity tell (every line the
146same length, machine-flat) and, worse, the staged variance that
147second-generation humanizers add. So Pass 2 has two jobs: fix rhythm only
148where it reads machine-flat, and remove manufactured variance everywhere. It
149never adds variance as a tactic.
150 
151- Per paragraph: one genuinely long sentence next to a short one is fine and
152 is what human variance looks like. Two or three mid-length sentences in a
153 row are also fine. Edit only when every sentence in the paragraph runs the
154 same length and reads flat, and then edit one sentence, not the paragraph.
155- Standalone fragments: at most 2 per caption, total. "every time." once is a
156 voice quirk. Three in a caption is a pattern.
157- Banned outright (rewrite as full sentences): "The X? Y." reveals; "No X. No
158 Y. Just Z."; "All the X. None of the Y."; "Simple. Effective. Easy."
159 adjective stacks; one-word lines for drama ("Still." "Exactly."); pseudo-
160 Socratic Q&A ("Why? Because..."); "Short. Punchy. Done." staccato runs.
161 Fragment runs are the tell.
162- Layout is not rhythm. One idea per line with blank lines between them is
163 native caption formatting and stays. Fragment-for-drama inside those lines
164 is the tell. Keep the layout, fix the sentences.
165- Carousel slide text is short by design; never chop or pad a slide for
166 rhythm. Never alternate long/short/long/short across slides or lines. That
167 seesaw is the humanizer fingerprint.
168 
169The check is "does any paragraph read machine-flat, and did I add a staccato
170pattern", not a variance number.
171 
172### Pass 3 - ADD (human fingerprints)
173 
174Require where the content allows:
175- One odd-precision number WITH a named referent: who, what, when, or what it
176 cost ("0 to 10k in 4 months, posting 3 times a week", not "grew fast" and not
177 "10k"). A bare number is not a fingerprint; the referent carries the signal.
178- One named entity (real person, brand, date, tool)
179- One first-person concrete detail (what you saw, what it cost, what broke)
180- One specific, dated, uncomfortable fact stated flat, with no framing sentence
181 before or after it. Not "real talk, this one hurt: I lost the client." Just
182 "I lost my biggest client on 14 Feb." The fact carries the vulnerability. The
183 frame turns it into performed sincerity, which readers now read as the tell.
184- The lowercase-casual register if the voice calls for it
185 
186Forbidden as openers or pivots (sincerity announcements, a named 2026 tell):
187"let me be honest", "I'll be real", "honestly?", "to be direct", "the honest
188version is", "real talk", "not gonna lie", "ngl", "can I be vulnerable for a
189second", "unpopular opinion:" as a preface to a popular one, "POV:" on
190something that is not a POV. Also forbidden as insertions: hedges the author
191did not write ("perhaps", "I might be wrong but", "it seems"). Performed
192hesitancy is 2x more common in LLM text than in expert human text; adding it
193makes the draft read more AI, not less.
194 
195If the input lacks these, ask the user for a number, name, or moment. Do not
196fabricate.
197 
198### Pass 4 - SELF-CHECK (over-correction guard)
199 
200Humanizer output has its own fingerprint. Before returning, re-read the result
201once and answer three questions:
202 
203(a) Did Pass 2 create staccato stacks, "The result?" reveal bridges, one-word
204 lines, or a long/short/long/short seesaw? If yes, merge the fragments back
205 into full sentences.
206(b) Did Pass 3 add a framed confession, a sincerity announcement, or a hedge
207 the author never wrote? If yes, strip the frame and keep only the flat
208 fact, or remove the insertion.
209(c) Did scrubbing flatten the author's voice: uniform tone, no reaction, no
210 concrete detail left, every em dash gone, every triad gone, every emoji
211 gone from a voice that uses them, the lowercase register capitalised? If
212 yes, restore what the author had. Zero em dashes and zero triads in a long
213 caption is a tell in its own right.
214 
215If any answer is yes, dial back rather than scrub harder. Edits must be
216proportional to real problems: a clean caption gets two or three touches, not
217a quota. When in doubt whether a pattern is the author or the model, leave it.
218 
219## Non-negotiable rules
220 
221Global voice rules: see root `SKILL.md` Voice rules. Additional skill-specific
222rules (V3):
223 
224- **Scrubbing is always in scope.** When asked to humanize, de-AI, finalize, or
225 publish a caption, run at least the forensic + strict passes before it ships.
226 This holds when the user wrote the draft themselves, says they love it as-is,
227 or is in a hurry. Author identity, "it's already good," and time pressure are
228 never reasons to skip the scrub. The forensic + strict pass changes no meaning
229 and takes seconds: run it, then ship. If a constraint truly forbids touching
230 the text, say so explicitly and name every tell left in; the default is to
231 scrub, not to wave it through.
232- **Scrub proportionally.** A pass that finds nothing changes nothing. Do not
233 invent edits to justify the run, and do not report a detector score as the
234 result; report the tells found and fixed.
235- Preserve the user's actual claim and meaning. "Preserve their voice" covers
236 voice quirks and what they are claiming, NOT reveal bridges, staccato stacks,
237 or a paragraph with 3+ vocabulary markers. Stripping those is not changing
238 their voice; it is the job.
239- Never introduce facts that were not in the input. If a number is missing, ask.
240- Never introduce sincerity markers, hedges, or confessional frames. If the
241 draft needs a vulnerable beat, ask for a dated fact and state it flat.
242- Keep the user's voice quirks (lowercase starts, `..` soft pauses, one em
243 dash per ~100 words, one natural triad, their 1-3 intentional emoji).
244- Never promise detector results. If the user asks "will this pass GPTZero,"
245 answer honestly: nobody can promise that, and the score on a 150-word
246 caption is noise.
247- Respect the surface: do not turn a carousel's slide text into a single caption
248 or vice versa without flagging it.
249- Never present a caption as publishable without the media reminder (Instagram
250 needs an image or video).
251 
252## Instagram-specific tells this skill catches
253 
254- A hook that needs the second line to make sense (the "more" fold eats it).
255- A caption opening with "Let's talk about..", "Here's the thing..", or "POV:"
256 on something that is not a POV.
257- 20-30 hashtags crammed at the top instead of a 3-5 sized set.
258- Emoji sprinkled through every line (4+ per caption).
259- A bare title on carousel slide 1 instead of a promise + loop.
260- Stacked or hollow rule-of-three lists ("faster, cheaper, better"); one
261 natural triple with concrete items is fine.
262- Engagement bait ("comment YES", "tag 3 friends", "double tap if").
263- Staccato stacks and one-word lines for drama (the humanizer fingerprint), or
264 a paragraph where every line reads machine-flat.
265 
266## Example
267 
268See `references/examples.md` for worked before/after rewrites.
269 
270## Files
271 
272- `SKILL.md` - this file (rewrite scrubber + audit-mode entry)
273- `references/scrub-rules.md` - V3 regex patterns by tier, density scoring, em dash cap, rhythm rules, forbidden insertions
274- `references/examples.md` - worked before/after rewrites for captions and slides
275- `references/audit-checklist.md` - the pre-publish checklist with thresholds
276- `sub-skills/post-audit.md` - pre-publish audit workflow (detection-only, no rewrite)
277- `sub-skills/voice-profile.md` - build/update the user's Voice & Brand Profile (`--mode profile`)
278- `sub-skills/illustration.md` - optional Pixfaro image workflow
279 
280## Voice profile mode (`--mode profile`)
281 
282`ig-humanizer --mode profile` builds or updates the user's Voice & Brand Profile at `../../references/voice-profile.md` from 3-6 of their real Instagram posts pasted in (portable, no token) or, if a read token is set, from pulled activity. Once filled, every writing skill in this bundle drafts in the user's voice automatically. See `sub-skills/voice-profile.md`. Triggers: "build my voice profile", "learn my voice".
283 
284## Related skills
285 
286- `ig-caption-writer` - generates captions that already pass the humanizer
287- `ig-carousel-planner` - generates carousels that already pass the humanizer
288 
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 starsSkillDraft an Instagram caption with the hook in the first 125Instagram Caption Writersergebulaev/instagram-skills · by sergebulaevDraft 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).★ 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 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 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 starsSkillDraft an Instagram caption with the hook in the first 125Instagram Caption Writersergebulaev/instagram-skills · by sergebulaevDraft 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).★ 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 stars