AI Detection Tester

Linkedin detector tester

by sergebulaev · MIT license · ★ 3,059 on GitHub · updated Sep 18

Linkedin detector tester cover

Pipes any text through 5+ AI detectors at once and prints how badly they disagree. The point is not to find the "right" score.

# LinkedIn Detector Tester

Pipes any text through 5+ AI detectors at once and prints how badly they disagree. The point is not to find the "right" score. The point is to show there is no right score.

## Before you run it: your draft leaves your machine

This is the one skill in the bundle that sends your text to someone else. Every detector
here is a hosted API, so running it uploads the draft, in full, to whichever services you
have keys for: GPTZero, Originality.ai, ZeroGPT, Sapling, Copyleaks, Hive, QuillBot,
Writer and Scribbr. Nothing else in this bundle does that. Drafting, scrubbing, auditing
and profile-building all happen locally, and publishing goes only to Publora.

What that means in practice:

- **An unpublished post is not private once you test it.** Treat the text as disclosed to
  every provider whose key is set, under their terms and retention policy, not ours.
- **Do not run it on anything confidential**: unannounced launches, client names, numbers
  under embargo, anything covered by an NDA.

Overview

Pipes any text through 5+ AI detectors at once and prints how badly they disagree. The point is not to find the "right" score. The point is to show there is no right score.

Manual install (npx, ZIP)
Claude Codenpx skills add sergebulaev/linkedin-skills --skill linkedin-detector-tester -g -a claude-code
Claude.ai / desktopZip the folder 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

  • detector-tester.md6.0 KB
Read detector-tester.md here
sergebulaev/main1 file
detector-tester.md
Show the full text123 lines

LinkedIn Detector Tester

Pipes any text through 5+ AI detectors at once and prints how badly they disagree. The point is not to find the "right" score. The point is to show there is no right score.

Before you run it: your draft leaves your machine

This is the one skill in the bundle that sends your text to someone else. Every detector here is a hosted API, so running it uploads the draft, in full, to whichever services you have keys for: GPTZero, Originality.ai, ZeroGPT, Sapling, Copyleaks, Hive, QuillBot, Writer and Scribbr. Nothing else in this bundle does that. Drafting, scrubbing, auditing and profile-building all happen locally, and publishing goes only to Publora.

What that means in practice:

  • An unpublished post is not private once you test it. Treat the text as disclosed to every provider whose key is set, under their terms and retention policy, not ours.
  • Do not run it on anything confidential: unannounced launches, client names, numbers under embargo, anything covered by an NDA.
  • Only the detectors you have keys for are called. No key, no request to that service. Running with no keys at all makes no network calls.
  • It is worth asking whether you need it. The verdict this sub-skill exists to deliver is that the scores disagree and none of them mean much, which is a point you can take on trust rather than paying for with your draft.

Why this exists

AI detectors get treated like medical tests. They are not. They are vibe checks with a percentage sign.

The receipts:

  • Stanford 2023 (Liang et al., Patterns / Cell Press): 7 AI detectors flagged 61.3% of TOEFL essays from non-native English speakers as AI-generated. Same detectors flagged 5.1% of US-born 8th graders. The bias is against ESL writers, not against AI.
  • OpenAI shut down its own AI Text Classifier in July 2023 because it hit only 26% accuracy on AI-written text. The company that builds the AI could not reliably detect the AI.
  • Vanderbilt University disabled Turnitin's AI detection citing false-positive risk to students. Other R1 schools followed.
  • Newby v. Adelphi University (October 2025): a federal court ordered the university to expunge an AI-cheating violation from a student's record after the only "evidence" was a detector score.
  • Sergey's team test: same article, three detectors, scores 82% / 100% / 50%. That is a 50-point spread on identical text.

If accusations are coming, this skill produces the screenshot.

When to use

  • Someone accuses a post, essay, or proposal of being AI-written based on a single detector score
  • Before defending a writer publicly, get the spread on record
  • As a follow-up to Sergey's controversial detector post — paste any flagged text, run it, screenshot the divergence
  • Internal QA on Co.Actor drafts before publishing to high-stakes audiences

Input

Any text. 200+ words gives the most stable spread; under 100 words and detectors get even more random.

Optional: a label (e.g. "ESL student essay", "GPT-4 output", "1995 Carl Sagan column") for the output header.

Output

Text: "<first 60 chars>..."
Length: 412 words

Detector scores (% AI probability):
  GPTZero         82
  Originality.ai  100
  ZeroGPT         50
  Sapling         34
  Copyleaks       91

Min: 34   Max: 100   Spread: 66

Verdict: USELESS — detectors disagree by more than 50 points.
Translation: nobody actually knows. The accusation is a coin flip.

The three verdicts

Spread (max - min) Verdict What it means
≤ 15 points CONSENSUS Detectors agree. Still not proof, but at least they're not contradicting each other.
16-30 points MIXED Some signal, but enough disagreement that no single score is defensible.
31-50 points DIVERGENT The detectors are flipping a coin.
> 50 points USELESS The spread is bigger than half the scale. Whatever you decide, the opposite detector also "proves" it.

How to run

cd /home/sbulaev/p/linkedin-skills/skills/linkedin-humanizer
python3 scripts/test_detectors.py --text "$(cat draft.txt)"

Or pipe in:

cat draft.txt | python3 scripts/test_detectors.py --stdin

Most detectors gate their API behind paid plans. The script supports three modes:

  1. API mode — copy ../scripts/detectors.env.example to .env and fill the keys you have (GPTZERO_API_KEY, ORIGINALITY_API_KEY, ZEROGPT_API_KEY, SAPLING_API_KEY, COPYLEAKS_API_KEY + COPYLEAKS_EMAIL). Detectors with valid keys run automatically; missing-key detectors are dropped from the report.
  2. Manual paste mode (--manual) — opens each detector's web UI, prompts the user to paste the score back. Slower but free, and captures detectors with no API.
  3. Demo mode (--demo) — offline. Returns deterministic canned scores derived from a hash of the input. No API calls, no keys needed. Use to smoke-test the workflow or to demonstrate the divergence pattern without spending API credit.

Install dependencies first:

pip install -r ../../../requirements-lock.txt

Files

  • ../references/detector-list.md — supported detectors, API endpoints, known accuracy issues, citations
  • ../scripts/test_detectors.py — runs the parallel test, computes spread, prints verdict
  • Python deps (requests, python-dotenv) come from the bundle's own ../../../requirements.txt, pinned in ../../../requirements-lock.txt. The script has no separate manifest: one that has to be kept in sync with the root is one that drifts, and this one already had.
  • ../scripts/detectors.env.example — template for the 5 detector API keys (copy to .env)
  • linkedin-humanizer — rewrites text after a high score (or before, defensively)
  • post-audit.md (sibling) — pre-publish check that catches AI tells without relying on detectors

What this skill is not

It is not a detector. It does not claim a piece of text is or is not AI-written. It only documents how much the existing detectors disagree, so that a single score can never again be used as a trump card.

1# LinkedIn Detector Tester
2 
3Pipes any text through 5+ AI detectors at once and prints how badly they disagree. The point is not to find the "right" score. The point is to show there is no right score.
4 
5## Before you run it: your draft leaves your machine
6 
7This is the one skill in the bundle that sends your text to someone else. Every detector
8here is a hosted API, so running it uploads the draft, in full, to whichever services you
9have keys for: GPTZero, Originality.ai, ZeroGPT, Sapling, Copyleaks, Hive, QuillBot,
10Writer and Scribbr. Nothing else in this bundle does that. Drafting, scrubbing, auditing
11and profile-building all happen locally, and publishing goes only to Publora.
12 
13What that means in practice:
14 
15- **An unpublished post is not private once you test it.** Treat the text as disclosed to
16 every provider whose key is set, under their terms and retention policy, not ours.
17- **Do not run it on anything confidential**: unannounced launches, client names, numbers
18 under embargo, anything covered by an NDA.
19- **Only the detectors you have keys for are called.** No key, no request to that service.
20 Running with no keys at all makes no network calls.
21- It is worth asking whether you need it. The verdict this sub-skill exists to deliver is
22 that the scores disagree and none of them mean much, which is a point you can take on
23 trust rather than paying for with your draft.
24 
25## Why this exists
26 
27AI detectors get treated like medical tests. They are not. They are vibe checks with a percentage sign.
28 
29The receipts:
30 
31- **Stanford 2023** (Liang et al., Patterns / Cell Press): 7 AI detectors flagged **61.3% of TOEFL essays from non-native English speakers** as AI-generated. Same detectors flagged 5.1% of US-born 8th graders. The bias is against ESL writers, not against AI.
32- **OpenAI shut down its own AI Text Classifier in July 2023** because it hit only **26% accuracy** on AI-written text. The company that builds the AI could not reliably detect the AI.
33- **Vanderbilt University disabled Turnitin's AI detection** citing false-positive risk to students. Other R1 schools followed.
34- **Newby v. Adelphi University (October 2025)**: a federal court ordered the university to expunge an AI-cheating violation from a student's record after the only "evidence" was a detector score.
35- **Sergey's team test**: same article, three detectors, scores **82% / 100% / 50%**. That is a 50-point spread on identical text.
36 
37If accusations are coming, this skill produces the screenshot.
38 
39## When to use
40 
41- Someone accuses a post, essay, or proposal of being AI-written based on a single detector score
42- Before defending a writer publicly, get the spread on record
43- As a follow-up to Sergey's controversial detector post — paste any flagged text, run it, screenshot the divergence
44- Internal QA on Co.Actor drafts before publishing to high-stakes audiences
45 
46## Input
47 
48Any text. 200+ words gives the most stable spread; under 100 words and detectors get even more random.
49 
50Optional: a label (e.g. "ESL student essay", "GPT-4 output", "1995 Carl Sagan column") for the output header.
51 
52## Output
53 
54```
55Text: "<first 60 chars>..."
56Length: 412 words
57 
58Detector scores (% AI probability):
59 GPTZero 82
60 Originality.ai 100
61 ZeroGPT 50
62 Sapling 34
63 Copyleaks 91
64 
65Min: 34 Max: 100 Spread: 66
66 
67Verdict: USELESS — detectors disagree by more than 50 points.
68Translation: nobody actually knows. The accusation is a coin flip.
69```
70 
71## The three verdicts
72 
73| Spread (max - min) | Verdict | What it means |
74|---|---|---|
75| ≤ 15 points | **CONSENSUS** | Detectors agree. Still not proof, but at least they're not contradicting each other. |
76| 16-30 points | **MIXED** | Some signal, but enough disagreement that no single score is defensible. |
77| 31-50 points | **DIVERGENT** | The detectors are flipping a coin. |
78| > 50 points | **USELESS** | The spread is bigger than half the scale. Whatever you decide, the opposite detector also "proves" it. |
79 
80## How to run
81 
82```bash
83cd /home/sbulaev/p/linkedin-skills/skills/linkedin-humanizer
84python3 scripts/test_detectors.py --text "$(cat draft.txt)"
85```
86 
87Or pipe in:
88 
89```bash
90cat draft.txt | python3 scripts/test_detectors.py --stdin
91```
92 
93Most detectors gate their API behind paid plans. The script supports three modes:
94 
951. **API mode** — copy `../scripts/detectors.env.example` to `.env` and fill the keys you have (`GPTZERO_API_KEY`, `ORIGINALITY_API_KEY`, `ZEROGPT_API_KEY`, `SAPLING_API_KEY`, `COPYLEAKS_API_KEY` + `COPYLEAKS_EMAIL`). Detectors with valid keys run automatically; missing-key detectors are dropped from the report.
962. **Manual paste mode** (`--manual`) — opens each detector's web UI, prompts the user to paste the score back. Slower but free, and captures detectors with no API.
973. **Demo mode** (`--demo`) — offline. Returns deterministic canned scores derived from a hash of the input. No API calls, no keys needed. Use to smoke-test the workflow or to demonstrate the divergence pattern without spending API credit.
98 
99Install dependencies first:
100 
101```bash
102pip install -r ../../../requirements-lock.txt
103```
104 
105## Files
106 
107- `../references/detector-list.md` — supported detectors, API endpoints, known accuracy issues, citations
108- `../scripts/test_detectors.py` — runs the parallel test, computes spread, prints verdict
109- Python deps (`requests`, `python-dotenv`) come from the bundle's own
110 `../../../requirements.txt`, pinned in `../../../requirements-lock.txt`. The script
111 has no separate manifest: one that has to be kept in sync with the root is one that
112 drifts, and this one already had.
113- `../scripts/detectors.env.example` — template for the 5 detector API keys (copy to `.env`)
114 
115## Related skills
116 
117- `linkedin-humanizer` — rewrites text after a high score (or before, defensively)
118- `post-audit.md` (sibling) — pre-publish check that catches AI tells without relying on detectors
119 
120## What this skill is not
121 
122It is not a detector. It does not claim a piece of text is or is not AI-written. It only documents how much the existing detectors disagree, so that a single score can never again be used as a trump card.
123 
View all files on GitHub →

Details

Updated
Sep 18, 2026
License
MIT
Stars on the repo
★ 3,059
Checked
Source
sergebulaev/linkedin-skills ↗
Creator
sergebulaev · 76 listings
View creator

Similar skills

See all →

More from sergebulaev

SkillAI Writing Tells Detectorsergebulaev/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 starsSkillAI Writing Tells Referencesergebulaev/linkedin-skills · by sergebulaevFifteen rules from the linkedin-humanizer package, sorted by what kind of evidence each one actually represents.★ 3.1k GitHub starsSkillEmoji Pattern Analysissergebulaev/linkedin-skills · by sergebulaevPattern data from MagicPost LinkedIn analysis (Feb 2026, viral post with 220 engagement).★ 3.1k GitHub starsSkillIG Niche Analyzersergebulaev/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 starsSkillIG 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 starsSkillIG 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