LinkedIn Post Validator
Linkedin post audit

Run any post draft through the 2026 heuristic checklist.
# 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-writer` finishes 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
Overview
Run any post draft through the 2026 heuristic checklist. Catches AI tells, timing/format issues, length violations, and structural weaknesses before publishing.
What you get
- Pass/Failheader
- 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 estimatesper-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 fixesinline rewrites for each issue
- Timing recommendationbest window given audience
Manual install (npx, ZIP)
Claude Code
npx skills add sergebulaev/linkedin-skills --skill linkedin-post-audit -g -a claude-codeClaude.ai / desktop
Codex, Cursor, other agents
Connects with Agent Alley MCP · agentalley.io/mcp
Files included
post-audit.md4.9 KB
Read post-audit.md here
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 |
Details
- Updated
- Sep 18, 2026
- License
- MIT
- Stars on the repo
- ★ 3,059
- Checked
- Source
- sergebulaev/linkedin-skills ↗
- Creator
- sergebulaev · 76 listings
Similar skills
See all →
SkillAI LinkedIn Carousel Builder
SkillLinkedIn Carousel Builder
SkillIG Caption Writer
SkillIG Carousel Planner
SkillSocial Campaign Analyzer
SkillLinkedIn Post Performance ScorerMore from sergebulaev
SkillAI Writing Tells Detector
SkillAI Writing Tells Reference
SkillEmoji Pattern Analysis
SkillIG Niche Analyzer
SkillIG Caption Writer
SkillIG Carousel Planner