sergebulaev/linkedin-linkedin-humanizer
Scrub AI tells from any text draft OR audit a finished post against the 2026 algorithm heuristic checklist. Tier-based rewriter (forensic / strict / aesthetic / all) plus `--mode audit` for detection-only pass-fail review covering length, hook, CTA, format penalties, AI vocab. Also `--mode profile` builds a reusable Voice and Brand Profile from a few of the user's real posts, so every writing skill drafts in their voice. Sub-tools: emoji-pattern detector, multi-detector spread tester (GPTZero, Originality.ai, ZeroGPT, Sapling, Copyleaks), rule explainer. Triggers on "humanize", "de-AI", "review this draft", "audit before posting", "is this ready", "build my voice profile", "learn my voice".
This is a copy. The original lives at sergebulaev/linkedin-humanizer.
npx skills add https://github.com/sergebulaev/linkedin-skills --skill linkedin-humanizer
Rewrites any text to remove AI tells. Based on Wikipedia's "Signs of AI writing" taxonomy plus 2026 LinkedIn-specific patterns. V2 (2026-04-27): rules now split into 3 tiers so you can pick which signals you trust.
The previous version applied every rule equally. We learned that some rules catch real AI output and some catch good human writing. So:
See sub-skills/rules-explainer.md for per-rule justification, defenses, and citations.
sub-skills/post-audit.md)Any text (post, comment, reply, DM). Optional: target voice samples (past human posts by the user).
# Default: forensic + strict (recommended for LinkedIn)
linkedin-humanizer <text>
# Forensic only — minimum-touch, just kill the leakage
linkedin-humanizer --mode forensic <text>
# Strict — forensic + corporate-speak (the LinkedIn-default config)
linkedin-humanizer --mode strict <text>
# Aesthetic — strict + style rules (em dashes, rule of three, "robust")
# Use when target audience is Wikipedia editors / academic readers / AI-tell hunters
linkedin-humanizer --mode aesthetic <text>
# All — every rule. Maximum scrub. Will flatten literary writing.
linkedin-humanizer --mode all <text>
# Audit — detection-only pass-fail review. No rewrite.
# Runs the 2026 algorithm checklist: length, hook, CTA, structure, AI tells.
# Returns Blockers + Warnings + suggested fixes. See sub-skills/post-audit.md.
linkedin-humanizer --mode audit <text>
# Profile — build/update the user's Voice & Brand Profile so every writing
# skill drafts in their real voice. Learns from 3-6 pasted posts (portable, no
# token) or, if APIFY_TOKEN is set, from pulled activity. Writes
# references/voice-profile.md. See sub-skills/voice-profile.md.
linkedin-humanizer --mode profile
The scrub pass applies tiered regex catalogs to delete or replace AI tells. Each tier has its own block of patterns, vocabulary swaps, and phrase-level cleanups. Full regex source, replacement maps, and detection functions live in references/scrub-rules.md — load that file when actually executing the scrub.
FORENSIC tier (always on): real model leakage no human produces. Covers AI tool markers (oaicite, contentReference, turn0search0, attached_file, grok_card), knowledge-cutoff disclaimers ("As of my last update..."), phrasal templates ([Your Name], 2025-XX-XX), em dash overuse (3+ in <300 words), and outline-formula closers ("Despite its X... Looking ahead...").
STRICT tier (default on): corporate-speak that's bad LinkedIn style regardless of origin. Covers punctuation normalization (curly→straight quotes, --→period, em dash→period, en dash→comma: this bundle bans em dashes outright, so they scrub at strict, not aesthetic), vocabulary swaps (leverage→use, utilize→use, delve→look, harness→use, foster→build, etc.), filler-adverb deletion (fundamentally, essentially, ultimately, crucially, notably), phrase-level cleanup ("in today's fast-paced world", "at the end of the day", "game-changer", "deep dive", "move the needle"), all 6 forms of negative parallelism per the 2026-04-27 ban, and cliché closer tells ("What do you think?", "Tag someone who needs this").
AESTHETIC tier (opt-in only, will flatten literary writing): patterns AI uses but humans use legitimately. Covers rule-of-three triplets (Lincoln defense ignored), defendable-normal-English vocab (robust→solid, cultivate→grow, vibrant→alive, intricate→complex, garner→get, showcase/underscore→show), and passive voice (academic-writing defense ignored).
Target: Flesch reading ease >55. Sentence length variance >40%.
In aesthetic mode only:
Require at least:
If the input lacks these, ask the user for a specific number or anecdote to plug in. Don't fabricate.
Global voice rules: see root SKILL.md §Voice rules. Additional skill-specific rules:
.. soft pauses).The forensic tier exists because oaicite tokens, knowledge-cutoff disclaimers, and Mad-Libs blanks are pure model leakage that no human writer ever produces. Catching them is undefendable. The strict tier exists because corporate-speak ("leverage", "fundamentally", "in today's fast-paced world") is bad LinkedIn style regardless of origin, so stripping it improves the post even if the writer is human. The aesthetic tier exists because patterns like single em dashes, rule of three, "robust", and curly quotes appear in AI output but also appear in Lincoln, Dickinson, every epidemiologist, and every book printed since 1500. Banning them blindly catches Hemingway as AI. Run aesthetic mode only when audience-fit demands it.
For per-rule justification and famous human defenders, see sub-skills/rules-explainer.md (and the rule index at references/rules-explainer.md).
For the unreliability of AI detectors generally (61.3% false positive on TOEFL essays per Stanford 2023), see sub-skills/detector-tester.md. Run it via python3 scripts/test_detectors.py --text "..." --demo (offline) or with paid keys configured in scripts/detectors.env.example.
For emoji-pattern detection (lightbulb, rocket, sparkles signature), see sub-skills/emoji-detector.md and the per-emoji frequency table at references/emoji-patterns.md.
See references/examples.md for worked examples.
SKILL.md — this file (rewrite scrubber + audit-mode entry)references/scrub-rules.md — full regex patterns by tierreferences/voice-fingerprint.md — how to preserve user voice while scrubbingreferences/tier-rationale.md — long-form per-rule justificationreferences/rules-explainer.md — machine-readable index of every rule with citationsreferences/emoji-patterns.md — AI-correlated emoji frequency tablereferences/detector-list.md — supported AI detectors with API endpoints and accuracy notesreferences/audit-ai-tells.md — blacklist + regex used in audit modereferences/audit-checklist.md — 20-point pre-publish checklist with thresholdsreferences/audit-examples.md — worked audit examplessub-skills/post-audit.md — pre-publish audit workflow (detection-only, no rewrite)sub-skills/rules-explainer.md — when to defend a flagged rule (em dash, rule of three, passive voice)sub-skills/emoji-detector.md — scan / score / suggest workflow for emoji densitysub-skills/detector-tester.md — run text through 5 AI detectors in parallel and report disagreementsub-skills/voice-profile.md — build/update the user's Voice & Brand Profile (--mode profile); the filled references/voice-profile.md is then read by every writing skill so drafts match the user's real voicescripts/test_detectors.py — runs the parallel detector test (supports --demo for offline mode)scripts/requirements.txt — Python deps for the detector script (requests, python-dotenv)scripts/detectors.env.example — template for the 5 detector API keyslinkedin-post-writer — generates drafts that already pass the humanizerTake sergebulaev/linkedin-linkedin-humanizer from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.