AI Slop Detection Method

AI Slop Detection: Two-Tier Reflex Methodology

by AgriciDaniel · MIT license · ★ 2,219 on GitHub · updated Sep 18

AI Slop Detection: Two-Tier Reflex Methodology cover

A phrase blocklist catches the obvious tells. Most AI-generated prose passes that filter and still reads like AI.

# AI Slop Detection: Two-Tier Reflex Methodology

A phrase blocklist catches the obvious tells. Most AI-generated prose passes that filter and still reads like AI. The structural tics, the rhythmic flatness, the "everything is a three-clause sentence" cadence: those survive the first pass.

This reference defines a **two-tier reflex check** for editorial review. Run both passes before declaring a draft human-natural. Adapted from the impeccable plugin's UI slop methodology (Paul Bakaus, Apache 2.0).

---

## Why two tiers

LLMs converge on a small set of safe patterns. The first thing the model reaches for is the **first-order reflex**: the genre-obvious tell. Replace it and the model reaches for the **second-order reflex**, the next-most-trained pattern that survives anti-AI guidance.

Most AI-detection passes only check the first-order pattern. The result is "anti-AI" rewrites that still read like AI because the structural pass was never run.

**Note on terminology**: this file uses **"first-order"** and **"second-order"** for the two detection passes. Elsewhere in the project, "Tier 1 / Tier 2 / Tier 3" refers to *source authority* (Google Search Central = Tier 1, Ahrefs = Tier 2, reputable industry sources = Tier 3). The two namespaces are intentionally kept separate; do not call the second-order detection pass "Tier 2."

Examples of the same idea across both tiers:

Overview

A phrase blocklist catches the obvious tells. Most AI-generated prose passes that filter and still reads like AI. The structural tics, the rhythmic flatness, the "everything is a three-clause sentence" cadence: those survive the first pass.

Manual install (npx, ZIP)
Claude Codenpx skills add AgriciDaniel/claude-blog --skill ai-slop-detection-two-tier-reflex-methodology -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

  • ai-slop-detection.md8.7 KB
Read ai-slop-detection.md here
AgriciDaniel/main1 file
ai-slop-detection.md
Show the full text157 lines

AI Slop Detection: Two-Tier Reflex Methodology

A phrase blocklist catches the obvious tells. Most AI-generated prose passes that filter and still reads like AI. The structural tics, the rhythmic flatness, the "everything is a three-clause sentence" cadence: those survive the first pass.

This reference defines a two-tier reflex check for editorial review. Run both passes before declaring a draft human-natural. Adapted from the impeccable plugin's UI slop methodology (Paul Bakaus, Apache 2.0).


Why two tiers

LLMs converge on a small set of safe patterns. The first thing the model reaches for is the first-order reflex: the genre-obvious tell. Replace it and the model reaches for the second-order reflex, the next-most-trained pattern that survives anti-AI guidance.

Most AI-detection passes only check the first-order pattern. The result is "anti-AI" rewrites that still read like AI because the structural pass was never run.

Note on terminology: this file uses "first-order" and "second-order" for the two detection passes. Elsewhere in the project, "Tier 1 / Tier 2 / Tier 3" refers to source authority (Google Search Central = Tier 1, Ahrefs = Tier 2, reputable industry sources = Tier 3). The two namespaces are intentionally kept separate; do not call the second-order detection pass "Tier 2."

Examples of the same idea across both tiers:

Topic First-order tell Second-order tell that survives
SEO blog "In today's digital landscape..." Every H2 ends with a rhetorical question
SaaS post "Game-changer," "Revolutionize" Three-clause sentence rhythm, "While X, also Y" framings
How-to guide "Dive into," "Unlock the potential" Every step opens with an imperative verb identical in length
Listicle "Cutting-edge," numbered fluff Every item is ~80 words, identical structure
Thought leadership "Comprehensive guide," "harness the power" Hedge stack: "often," "typically," "may" within 20 words

The point: a draft can score zero on a phrase blocklist and still be obviously AI.


First-order reflex (phrase + lexical)

This is what the existing AI-detection in blog-analyze and blog-rewrite already covers. Documented here for completeness.

Trigger phrases (full list in agents/blog-reviewer.md and scripts/analyze_blog.py):

  • "In today's digital landscape" / "In the ever-evolving"
  • "It's important to note" / "It is worth mentioning"
  • "Dive into" / "deep dive" / "delve"
  • "Game-changer" / "Revolutionize" / "transformative"
  • "Cutting-edge" / "state-of-the-art" / "robust"
  • "Harness the power" / "Unlock the potential"
  • "Leverage" (as a verb, non-financial)
  • "Seamlessly" / "seamless integration"
  • "Tapestry" / "rich tapestry" / "multifaceted"
  • "Comprehensive guide" (in body text)
  • "Furthermore" / "Moreover" (transition overload)
  • Em dashes used as a stylistic flourish (any density)

Lexical signals:

  • AI trigger-word density > 5 per 1,000 words
  • Type-Token Ratio (TTR) below 0.40 on long-form
  • Burstiness (sentence-length standard deviation / mean) below 0.3

Outcome of the first-order pass: a "phrase-clean" draft. Necessary, not sufficient.


Second-order reflex (structural + rhythmic)

These are the patterns LLMs default to after the obvious vocabulary is replaced. They are structural and rhythmic, so a vocabulary swap doesn't fix them. Run this pass on drafts that already passed the first-order check.

Structural tics to flag
  1. Question-cadence H2s. Every section heading is phrased as a question. Real long-form mixes question, statement, and noun-phrase headings. Flag if > 70% of H2 headings end with a question mark.

  2. The Here opener. A paragraph opens with the word "Here" ("Here's why...", "Here are five..."). Once is fine. Three or more in a 1,500-word post is an AI fingerprint.

  3. Three-clause sentence rhythm. Most sentences in a paragraph follow the structure [clause], [clause], [clause]. The cadence is metronomic. Flag if > 50% of sentences in any 200-word window match this shape.

  4. False-balance framing. Repeated use of "While X, also Y" or "On one hand X, on the other Y" without a real contrast. The model uses it to feel even-handed but it adds no information. Flag if it appears more than twice per 1,000 words.

  5. Hedge stacking. Three or more hedges in a 20-word span ("It may often be the case that..."). Flag any 20-word window with > 2 of: may, might, often, typically, generally, usually, tend to, perhaps, somewhat, likely.

  6. Symmetric list bloat. Every item in a numbered or bulleted list is the same length within +/- 10 words and follows the same syntactic structure. Real lists vary; some items need one line, others need a paragraph. Flag if list-item length standard deviation < 5 words.

  7. The wrap-up question. Section ends with "What does this mean for [audience]?" or "Why does this matter?" Once per post is rhetorical; three or more is filler.

  8. Capsule transitions. Each H2 opener begins with a single-word transition ("First..." "Next..." "Additionally..." "Crucially..."). Real prose buries transitions inside sentences. Flag if > 50% of H2 openers start with a transition word.

  9. The "key insight" tell. The phrase "The key insight is..." or "What's important here is..." appears as a sentence-opener. This is the model telegraphing that it's about to summarize. Cut and let the sentence stand.

  10. Listicle introduction bloat. Before the actual list, three or more paragraphs of "context." Real listicles get to the list. Flag if > 250 words of pre-list intro.

Rhythmic signals to compute
  • Sentence-length flatness within paragraphs. Compute SD of sentence length per paragraph; flag any paragraph with internal SD < 4.
  • Opening-word repetition. Count first-word frequencies across all sentences. Flag if the top three first-words account for > 25% of all sentence openings.
  • Paragraph-shape flatness. Compute SD of paragraph word counts across the post; flag if < 25 (real long-form varies dramatically).

How to run the two-tier check

For blog-rewrite and blog-reviewer:

  1. Run the first-order pass first (phrase + lexical). If it fails, fix and re-run before moving on.
  2. Once the first-order pass is clean, run the second-order pass. Report each second-order pattern with line numbers and an example.
  3. Do not declare "AI-detection passed" unless both passes are clean.

For blog-write (initial drafting):

  • First-order is enforced at generation time via the persona's anti-phrase list.
  • Second-order is checked once on the full draft before delivery.

Output format

When reporting findings, use:

## AI Slop Detection Report

### First-order (Phrase + Lexical)
- Trigger phrases: [N found] -> [list with line numbers]
- AI trigger words: [N/1K words], [pass/fail at ≤5]
- TTR: [score], [pass/fail at ≥0.40]
- Burstiness: [score], [pass/fail at ≥0.3]

### Second-order (Structural + Rhythmic)
- Question-cadence H2s: [X%], [pass/fail at ≤70%]
- "Here" openers: [N], [pass/fail at ≤2]
- Three-clause rhythm: [X%], [pass/fail at ≤50%]
- False-balance framings: [N/1K words], [pass/fail at ≤2]
- Hedge stacking: [N windows], [pass/fail at 0]
- Symmetric list bloat: [N lists], [pass/fail at 0]
- Wrap-up questions: [N], [pass/fail at ≤2]
- Capsule transitions on H2s: [X%], [pass/fail at ≤50%]
- "Key insight" sentence openers: [N], [pass/fail at 0]
- Listicle intro bloat: [pre-list words], [pass/fail at ≤250]
- Sentence-length flat paragraphs: [N], [pass/fail at 0]
- Opening-word repetition: [top-3 share], [pass/fail at ≤25%]
- Paragraph-shape SD: [value], [pass/fail at ≥25]

### Verdict
First-order: [PASS / FAIL]
Second-order: [PASS / FAIL]
Overall: [PASS only if both passes clean]

Why this matters for ranking + AI citations

  • Editorial quality risk: content that lacks experience and original perspective is easier to classify as interchangeable consensus content. Second-order patterns are a warning sign, even when no specific Google update is cited.
  • AI citations: ChatGPT and Perplexity reward citable, distinctive passages. Second-order tics produce interchangeable prose that no AI surface has reason to prefer over the source it was trained on.

The two-tier check is the editorial parallel to impeccable's "design slop" methodology: vocabulary-clean is necessary but not sufficient; structural distinctiveness is what separates citeable content from indexable filler.


Attribution

The two-tier first-order / second-order reflex methodology is adapted from the impeccable plugin v3.1.1 (Paul Bakaus, Apache 2.0, https://github.com/pbakaus/impeccable). The original applies it to UI design cliches ("observability -> dark blue"). This reference adapts the same mental model to prose.

1# AI Slop Detection: Two-Tier Reflex Methodology
2 
3A phrase blocklist catches the obvious tells. Most AI-generated prose passes that filter and still reads like AI. The structural tics, the rhythmic flatness, the "everything is a three-clause sentence" cadence: those survive the first pass.
4 
5This reference defines a **two-tier reflex check** for editorial review. Run both passes before declaring a draft human-natural. Adapted from the impeccable plugin's UI slop methodology (Paul Bakaus, Apache 2.0).
6 
7---
8 
9## Why two tiers
10 
11LLMs converge on a small set of safe patterns. The first thing the model reaches for is the **first-order reflex**: the genre-obvious tell. Replace it and the model reaches for the **second-order reflex**, the next-most-trained pattern that survives anti-AI guidance.
12 
13Most AI-detection passes only check the first-order pattern. The result is "anti-AI" rewrites that still read like AI because the structural pass was never run.
14 
15**Note on terminology**: this file uses **"first-order"** and **"second-order"** for the two detection passes. Elsewhere in the project, "Tier 1 / Tier 2 / Tier 3" refers to *source authority* (Google Search Central = Tier 1, Ahrefs = Tier 2, reputable industry sources = Tier 3). The two namespaces are intentionally kept separate; do not call the second-order detection pass "Tier 2."
16 
17Examples of the same idea across both tiers:
18 
19| Topic | First-order tell | Second-order tell that survives |
20|---|---|---|
21| SEO blog | "In today's digital landscape..." | Every H2 ends with a rhetorical question |
22| SaaS post | "Game-changer," "Revolutionize" | Three-clause sentence rhythm, "While X, also Y" framings |
23| How-to guide | "Dive into," "Unlock the potential" | Every step opens with an imperative verb identical in length |
24| Listicle | "Cutting-edge," numbered fluff | Every item is ~80 words, identical structure |
25| Thought leadership | "Comprehensive guide," "harness the power" | Hedge stack: "often," "typically," "may" within 20 words |
26 
27The point: **a draft can score zero on a phrase blocklist and still be obviously AI.**
28 
29---
30 
31## First-order reflex (phrase + lexical)
32 
33This is what the existing AI-detection in `blog-analyze` and `blog-rewrite` already covers. Documented here for completeness.
34 
35**Trigger phrases** (full list in `agents/blog-reviewer.md` and `scripts/analyze_blog.py`):
36 
37- "In today's digital landscape" / "In the ever-evolving"
38- "It's important to note" / "It is worth mentioning"
39- "Dive into" / "deep dive" / "delve"
40- "Game-changer" / "Revolutionize" / "transformative"
41- "Cutting-edge" / "state-of-the-art" / "robust"
42- "Harness the power" / "Unlock the potential"
43- "Leverage" (as a verb, non-financial)
44- "Seamlessly" / "seamless integration"
45- "Tapestry" / "rich tapestry" / "multifaceted"
46- "Comprehensive guide" (in body text)
47- "Furthermore" / "Moreover" (transition overload)
48- Em dashes used as a stylistic flourish (any density)
49 
50**Lexical signals**:
51 
52- AI trigger-word density > 5 per 1,000 words
53- Type-Token Ratio (TTR) below 0.40 on long-form
54- Burstiness (sentence-length standard deviation / mean) below 0.3
55 
56**Outcome of the first-order pass**: a "phrase-clean" draft. Necessary, not sufficient.
57 
58---
59 
60## Second-order reflex (structural + rhythmic)
61 
62These are the patterns LLMs default to **after** the obvious vocabulary is replaced. They are structural and rhythmic, so a vocabulary swap doesn't fix them. Run this pass on drafts that already passed the first-order check.
63 
64### Structural tics to flag
65 
661. **Question-cadence H2s.** Every section heading is phrased as a question. Real long-form mixes question, statement, and noun-phrase headings. Flag if > 70% of H2 headings end with a question mark.
67 
682. **The Here opener.** A paragraph opens with the word "Here" ("Here's why...", "Here are five..."). Once is fine. Three or more in a 1,500-word post is an AI fingerprint.
69 
703. **Three-clause sentence rhythm.** Most sentences in a paragraph follow the structure `[clause], [clause], [clause].` The cadence is metronomic. Flag if > 50% of sentences in any 200-word window match this shape.
71 
724. **False-balance framing.** Repeated use of "While X, also Y" or "On one hand X, on the other Y" without a real contrast. The model uses it to feel even-handed but it adds no information. Flag if it appears more than twice per 1,000 words.
73 
745. **Hedge stacking.** Three or more hedges in a 20-word span ("It may often be the case that..."). Flag any 20-word window with > 2 of: may, might, often, typically, generally, usually, tend to, perhaps, somewhat, likely.
75 
766. **Symmetric list bloat.** Every item in a numbered or bulleted list is the same length within +/- 10 words and follows the same syntactic structure. Real lists vary; some items need one line, others need a paragraph. Flag if list-item length standard deviation < 5 words.
77 
787. **The wrap-up question.** Section ends with "What does this mean for [audience]?" or "Why does this matter?" Once per post is rhetorical; three or more is filler.
79 
808. **Capsule transitions.** Each H2 opener begins with a single-word transition ("First..." "Next..." "Additionally..." "Crucially..."). Real prose buries transitions inside sentences. Flag if > 50% of H2 openers start with a transition word.
81 
829. **The "key insight" tell.** The phrase "The key insight is..." or "What's important here is..." appears as a sentence-opener. This is the model telegraphing that it's about to summarize. Cut and let the sentence stand.
83 
8410. **Listicle introduction bloat.** Before the actual list, three or more paragraphs of "context." Real listicles get to the list. Flag if > 250 words of pre-list intro.
85 
86### Rhythmic signals to compute
87 
88- **Sentence-length flatness within paragraphs.** Compute SD of sentence length per paragraph; flag any paragraph with internal SD < 4.
89- **Opening-word repetition.** Count first-word frequencies across all sentences. Flag if the top three first-words account for > 25% of all sentence openings.
90- **Paragraph-shape flatness.** Compute SD of paragraph word counts across the post; flag if < 25 (real long-form varies dramatically).
91 
92---
93 
94## How to run the two-tier check
95 
96For `blog-rewrite` and `blog-reviewer`:
97 
981. Run the first-order pass first (phrase + lexical). If it fails, fix and re-run before moving on.
992. Once the first-order pass is clean, run the second-order pass. Report each second-order pattern with line numbers and an example.
1003. Do not declare "AI-detection passed" unless both passes are clean.
101 
102For `blog-write` (initial drafting):
103 
104- First-order is enforced at generation time via the persona's anti-phrase list.
105- Second-order is checked once on the full draft before delivery.
106 
107---
108 
109## Output format
110 
111When reporting findings, use:
112 
113```
114## AI Slop Detection Report
115 
116### First-order (Phrase + Lexical)
117- Trigger phrases: [N found] -> [list with line numbers]
118- AI trigger words: [N/1K words], [pass/fail at ≤5]
119- TTR: [score], [pass/fail at ≥0.40]
120- Burstiness: [score], [pass/fail at ≥0.3]
121 
122### Second-order (Structural + Rhythmic)
123- Question-cadence H2s: [X%], [pass/fail at ≤70%]
124- "Here" openers: [N], [pass/fail at ≤2]
125- Three-clause rhythm: [X%], [pass/fail at ≤50%]
126- False-balance framings: [N/1K words], [pass/fail at ≤2]
127- Hedge stacking: [N windows], [pass/fail at 0]
128- Symmetric list bloat: [N lists], [pass/fail at 0]
129- Wrap-up questions: [N], [pass/fail at ≤2]
130- Capsule transitions on H2s: [X%], [pass/fail at ≤50%]
131- "Key insight" sentence openers: [N], [pass/fail at 0]
132- Listicle intro bloat: [pre-list words], [pass/fail at ≤250]
133- Sentence-length flat paragraphs: [N], [pass/fail at 0]
134- Opening-word repetition: [top-3 share], [pass/fail at ≤25%]
135- Paragraph-shape SD: [value], [pass/fail at ≥25]
136 
137### Verdict
138First-order: [PASS / FAIL]
139Second-order: [PASS / FAIL]
140Overall: [PASS only if both passes clean]
141```
142 
143---
144 
145## Why this matters for ranking + AI citations
146 
147- **Editorial quality risk**: content that lacks experience and original perspective is easier to classify as interchangeable consensus content. Second-order patterns are a warning sign, even when no specific Google update is cited.
148- **AI citations**: ChatGPT and Perplexity reward citable, distinctive passages. Second-order tics produce interchangeable prose that no AI surface has reason to prefer over the source it was trained on.
149 
150The two-tier check is the editorial parallel to impeccable's "design slop" methodology: vocabulary-clean is necessary but not sufficient; structural distinctiveness is what separates citeable content from indexable filler.
151 
152---
153 
154## Attribution
155 
156The two-tier first-order / second-order reflex methodology is adapted from the impeccable plugin v3.1.1 (Paul Bakaus, Apache 2.0, https://github.com/pbakaus/impeccable). The original applies it to UI design cliches ("observability -> dark blue"). This reference adapts the same mental model to prose.
157 
View all files on GitHub →

Details

Updated
Sep 18, 2026
License
MIT
Stars on the repo
★ 2,219
Checked
Source
AgriciDaniel/claude-blog ↗
Creator
AgriciDaniel · 129 listings
View creator

Similar skills

See all →
SkillProse Naturalizerblader/humanizer · by bladerRewrite AI-sounding text so it reads like the writer without changing what it says. Use when editing or reviewing prose for AI tells: not-X-but-Y contrasts, one-line closers, staged openers, forced triads, dashes everywhere, inflated claims, sales language, stock AI words, bold labels, or filler. Based on Wikipedia's "Signs of AI writing.★ 53.6k GitHub starsSkillAI Pattern Removerhardikpandya/stop-slop · by hardikpandyaRemove AI writing patterns from prose. Use when drafting, editing, or reviewing text to eliminate predictable AI tells.★ 17.8k GitHub starsSkillAI Slop Editorpetergyang/no-ai-slop · by petergyangEdit drafts into sharper, more human writing while preserving the writer's personal voice, or detect AI-slop patterns without rewriting. Use when the user wants a draft clearer, more direct, more opinionated, or less AI-sounding, or asks whether writing reads as AI.★ 12k GitHub starsSkillAI Writing Pattern Detectorconorbronsdon/avoid-ai-writing · by conorbronsdonUse when the user asks to detect, scan, audit, score, or flag AI-writing patterns without rewriting the text, including requests for a deterministic local detector result when the host can execute Node.★ 4.7k GitHub starsSkillAI Writing Auditorconorbronsdon/avoid-ai-writing · by conorbronsdonAudit and rewrite content to remove AI writing patterns ("AI-isms"). Use this skill when asked to "remove AI-isms," "clean up AI writing," "edit writing for AI patterns," "audit writing for AI tells," or "make this sound less like AI." Supports a detect-only mode, an edit-in-place mode for files, an optional voice profile (casual / professional / technical / warm / blunt), and an iterate-to-convergence pass.★ 4.7k GitHub starsSkillDe-AI WritingNanako0129/sepia · by Nanako0129Make AI-generated writing read as human-written, in fiction and in professional prose. Repairs the narrative architecture of fiction and stories (based on StoryScope, arXiv:2604.03136); routes professional text through domain rules for release notes, announcements, PR and issue replies, code-review comments, incident postmortems, tickets, work orders, technical articles, blog posts, and long-form journalism. Four operations - write, review (diagnose AI tells without editing), refactor (minimal in-place edits), recreate (full rewrite). Use when asked to humanize, de-AI, unslop, or strip AI flavor from any text; when writing or revising any of these document types; or whenever output must not read as machine-written.★ 3.1k GitHub stars

More from AgriciDaniel

SkillAgent Browsing AuditorAgriciDaniel/claude-seo · by AgriciDanielAudit and fix agent readiness: the Lighthouse Agentic Browsing fraction, accessibility tree for agents, robots.txt and Content-Signal for AI agents, WAF treatment of agent traffic, llms.txt, Markdown delivery, ai-catalog.json, /.well-known discovery files, and WebMCP tools. Exclude AI citability and brand signals (seo-geo) and commerce protocol depth (seo-ecommerce).★ 17.4k GitHub starsSkillAI Search OptimizationAgriciDaniel/claude-seo · by AgriciDanielOptimize content for AI Overviews (formerly SGE), ChatGPT web search, Perplexity, and other AI-powered search experiences. Generative Engine Optimization (GEO) analysis including brand mention signals, AI crawler accessibility, llms.txt compliance, passage-level citability scoring, and platform-specific optimization. Use when user says "AI Overviews", "SGE", GEO", "AI search", "LLM optimization", "Perplexity", "AI citations", ChatGPT search", or "AI visibility".★ 17.4k GitHub starsSkillBacklink Profile AnalysisAgriciDaniel/claude-seo · by AgriciDanielBacklink profile analysis: referring domains, anchor text distribution, toxic link detection, competitor gap analysis. Works with free APIs (Moz, Bing Webmaster, Common Crawl) and DataForSEO extension. Use when user says backlinks, link profile, referring domains, anchor text, toxic links, link gap, link building, disavow, or backlink audit.★ 17.4k GitHub starsSkillAmazon Ads AuditorAgriciDaniel/claude-ads · by AgriciDanielYou share your Amazon advertising numbers and goals; you get back a plain-language review of what's draining your budget and what to change first.★ 9.5k GitHub starsSkillApple Search Ads AuditorAgriciDaniel/claude-ads · by AgriciDanielPaste what you're spending on Apple Search Ads and your recent numbers; get back a plain review of what's wasting money and what to fix first.★ 9.5k GitHub starsSkillAttribution AuditorAgriciDaniel/claude-ads · by AgriciDanielPaste the sales and spend numbers each ad platform claims, and get back a plain explanation of why they disagree and which figure to trust.★ 9.5k GitHub stars