Linkedin post audit skill
Run any post draft through the 2026 heuristic checklist.
by sergebulaev·MIT license·★ 3,059 Stars on the repo·GitHub ↗
Use now
Files of Linkedin post audit
sergebulaev/
post-audit.md
Show the full text80 lines
LinkedIn Post Audit
Run any post draft through the 2026 heuristic checklist. Catches AI tells, timing/format issues, length violations, and structural weaknesses before publishing.
When to use
- Before publishing a hand-written or AI-drafted post
- When
linkedin-post-writerfinishes a draft (auto-invoked) - When a recent post didn't land and the user wants a post-mortem
Input
- A post draft (plain text)
- Optional: target audience, scheduled time, format (text / carousel / video / image)
Output
- Pass/Fail header
- Blockers (must fix before publishing): em dash density over the cap, paragraphs at 3+ AI markers, reveal bridges, external links in body
- Warnings (ship-risky): staccato stacks, sincerity markers, missing referenced numbers, generic close
- Score estimates: per-paragraph tell density, approximate first-hour reach fit. No detector score: on 100-300 word text those are noise and the skill does not promise to beat them
- Suggested fixes: inline rewrites for each issue
- Timing recommendation: best window given audience
Checks
Blockers (auto-fail)
- Em dash density above ~1 per 100 words (1-2 per post); en dash between clauses; double dash. A single em dash is not a blocker
- External link in body (not in first comment)
- Post exceeds 3,000 chars (LinkedIn hard limit)
- Opens with "In today's fast-paced world...", a reveal bridge ("Here's what", "Stop X, start Y"), or a sincerity announcement ("Let me be honest")
- Ends with "What do you think?", "Thoughts?", "Let that sink in."
- Any paragraph with 3+ vocabulary / grammar markers, or any negative-parallelism / "The result?" reveal bridge (see
../references/audit-ai-tells.md) - Frames LinkedIn as inferior in a LinkedIn post (algo penalty)
Warnings (flag with suggested fix)
- Hook doesn't fit in first 210 chars (mobile
…see morecutoff) - Length outside 900-1,300 sweet spot (or 1,500-1,900 for long-form with breaks)
- A paragraph that reads machine-flat (4+ sentences all the same length, no clause doing work). Flag that paragraph only; sentence-length variance is not a reach lever on LinkedIn, so never suggest adding variance as a tactic
- No odd-precision number with a named referent (a bare number does not clear this)
- No named entity
- No first-person sensory detail
- Stacked or perfectly parallel rule-of-three, or 3+ triads in the post (one natural triad passes)
- More than 2 hashtags
- User's own product named more than once
- Missing reaction-prompting moment: a specific, dated, uncomfortable fact stated flat, or an opinion with stakes. A framed confession ("I'll be honest, this hurt") does not clear this; the frame is the tell
- Passive voice >10% 18a. Staccato stacks ("Short. Punchy. Done.", "No X. No Y. Just Z.", "All the X. None of the Y."), one-word paragraphs, more than 2 standalone fragments, or a long/short/long/short seesaw 18b. Hedging stack or sincerity marker mid-post ("perhaps", "it seems", "honestly?", "real talk") 18c. Over-scrubbed: uniformly flat tone, zero em dashes and zero triads in a long post, no reaction or opinion anywhere
- First line is not a complete standalone hook (it needs line 2 to make sense). 2026 corpus: every top post front-loads a full hook before the fold.
- No blank line after the hook / wall-of-text open. Winners use heavy whitespace: one idea per line, blank line after the hook.
- Emoji sprinkled mid-text in a narrative post, or more than 2-3 total in prose. Top posts front-load 1-2 meaningful emoji; serious/contrarian posts use zero. Exempt: structured glossary/list formats (e.g. F15 Explain-to-Kids) where one emoji anchors each line on purpose.
- Comment-gate ("comment X and I'll DM you...") in a post whose goal is thought leadership. Organic top performers use zero hard comment-gates; only flag-clear when the post's goal is list-building (then F6 is intentional).
- No clear primary goal: the post chases comments, reposts, likes, and saves all at once. Pick one (see
../../../references/hook-formulas.md"Engagement-goal split").
Info (neutral notes)
- Suggested posting time given audience
- Format recommendation (text / carousel / video) given topic
- Similar-hook detection: if this post's first 100 chars match a recent post
Steps
- Parse draft into sentences, paragraphs, first-210-char hook.
- Run each blocker check; collect failures.
- If any blockers, return FAIL with specific fix suggestions; optionally offer auto-rewrite.
- If no blockers, run warnings.
- Report per-paragraph tell density (markers per paragraph, em dashes per 100 words, fragment count, triad count). Do not estimate a detector score.
- Return structured report.
Example
See ../references/audit-examples.md for worked examples.
Related skills
linkedin-humanizer— aggressive rewrite if audit failslinkedin-post-writer— regenerate draft using a proven formula
| 1 | # LinkedIn Post Audit |
| 2 | |
| 3 | Run any post draft through the 2026 heuristic checklist. Catches AI tells, timing/format issues, length violations, and structural weaknesses before publishing. |
| 4 | |
| 5 | ## When to use |
| 6 | |
| 7 | Before publishing a hand-written or AI-drafted post |
| 8 | When `linkedin-post-writer` finishes a draft (auto-invoked) |
| 9 | When a recent post didn't land and the user wants a post-mortem |
| 10 | |
| 11 | ## Input |
| 12 | |
| 13 | A post draft (plain text) |
| 14 | Optional: target audience, scheduled time, format (text / carousel / video / image) |
| 15 | |
| 16 | ## Output |
| 17 | |
| 18 | **Pass/Fail** header |
| 19 | **Blockers** (must fix before publishing): em dash density over the cap, paragraphs at 3+ AI markers, reveal bridges, external links in body |
| 20 | **Warnings** (ship-risky): staccato stacks, sincerity markers, missing referenced numbers, generic close |
| 21 | **Score estimates:** per-paragraph tell density, approximate first-hour reach fit. No detector score: on 100-300 word text those are noise and the skill does not promise to beat them |
| 22 | **Suggested fixes:** inline rewrites for each issue |
| 23 | **Timing recommendation:** best window given audience |
| 24 | |
| 25 | ## Checks |
| 26 | |
| 27 | ### Blockers (auto-fail) |
| 28 | Em dash density above ~1 per 100 words (1-2 per post); en dash between clauses; double dash. A single em dash is not a blocker |
| 29 | External link in body (not in first comment) |
| 30 | Post exceeds 3,000 chars (LinkedIn hard limit) |
| 31 | Opens with "In today's fast-paced world...", a reveal bridge ("Here's what", "Stop X, start Y"), or a sincerity announcement ("Let me be honest") |
| 32 | Ends with "What do you think?", "Thoughts?", "Let that sink in." |
| 33 | Any paragraph with 3+ vocabulary / grammar markers, or any negative-parallelism / "The result?" reveal bridge (see `../references/audit-ai-tells.md`) |
| 34 | Frames LinkedIn as inferior in a LinkedIn post (algo penalty) |
| 35 | |
| 36 | ### Warnings (flag with suggested fix) |
| 37 | Hook doesn't fit in first 210 chars (mobile `…see more` cutoff) |
| 38 | Length outside 900-1,300 sweet spot (or 1,500-1,900 for long-form with breaks) |
| 39 | A paragraph that reads machine-flat (4+ sentences all the same length, no clause doing work). Flag that paragraph only; sentence-length variance is not a reach lever on LinkedIn, so never suggest adding variance as a tactic |
| 40 | No odd-precision number with a named referent (a bare number does not clear this) |
| 41 | No named entity |
| 42 | No first-person sensory detail |
| 43 | Stacked or perfectly parallel rule-of-three, or 3+ triads in the post (one natural triad passes) |
| 44 | More than 2 hashtags |
| 45 | User's own product named more than once |
| 46 | Missing reaction-prompting moment: a specific, dated, uncomfortable fact stated flat, or an opinion with stakes. A framed confession ("I'll be honest, this hurt") does not clear this; the frame is the tell |
| 47 | Passive voice >10% |
| 48 | 18a. Staccato stacks ("Short. Punchy. Done.", "No X. No Y. Just Z.", "All the X. None of the Y."), one-word paragraphs, more than 2 standalone fragments, or a long/short/long/short seesaw |
| 49 | 18b. Hedging stack or sincerity marker mid-post ("perhaps", "it seems", "honestly?", "real talk") |
| 50 | 18c. Over-scrubbed: uniformly flat tone, zero em dashes and zero triads in a long post, no reaction or opinion anywhere |
| 51 | First line is not a complete standalone hook (it needs line 2 to make sense). 2026 corpus: every top post front-loads a full hook before the fold. |
| 52 | No blank line after the hook / wall-of-text open. Winners use heavy whitespace: one idea per line, blank line after the hook. |
| 53 | Emoji sprinkled mid-text in a narrative post, or more than 2-3 total in prose. Top posts front-load 1-2 meaningful emoji; serious/contrarian posts use zero. Exempt: structured glossary/list formats (e.g. F15 Explain-to-Kids) where one emoji anchors each line on purpose. |
| 54 | Comment-gate ("comment X and I'll DM you...") in a post whose goal is thought leadership. Organic top performers use zero hard comment-gates; only flag-clear when the post's goal is list-building (then F6 is intentional). |
| 55 | No clear primary goal: the post chases comments, reposts, likes, and saves all at once. Pick one (see `../../../references/hook-formulas.md` "Engagement-goal split"). |
| 56 | |
| 57 | ### Info (neutral notes) |
| 58 | Suggested posting time given audience |
| 59 | Format recommendation (text / carousel / video) given topic |
| 60 | Similar-hook detection: if this post's first 100 chars match a recent post |
| 61 | |
| 62 | ## Steps |
| 63 | |
| 64 | Parse draft into sentences, paragraphs, first-210-char hook. |
| 65 | Run each blocker check; collect failures. |
| 66 | If any blockers, return **FAIL** with specific fix suggestions; optionally offer auto-rewrite. |
| 67 | If no blockers, run warnings. |
| 68 | Report per-paragraph tell density (markers per paragraph, em dashes per 100 words, fragment count, triad count). Do not estimate a detector score. |
| 69 | Return structured report. |
| 70 | |
| 71 | ## Example |
| 72 | |
| 73 | See `../references/audit-examples.md` for worked examples. |
| 74 | |
| 75 | |
| 76 | ## Related skills |
| 77 | |
| 78 | `linkedin-humanizer` — aggressive rewrite if audit fails |
| 79 | `linkedin-post-writer` — regenerate draft using a proven formula |
| 80 |
Discussion
Alternatives
Browse more free Claude skills or everything in Content creator.