SlopMonster README

The project's README from github.com/ItsssssJack/SlopMonster. As one markdown file: README.md.

SlopMonster

The five SlopMonster mascots in a line-up, one for each rule it scores you on

Turn AI-written copy into copy a human would ship.

AI writing has a smell. delve, seamless, unlock, it's not just a tool, it's a journey. Readers catch it now, and a page that smells of it is a page they stop trusting.

Most tools that fix this are built on the same public research. This one adds the two things the others skip.

It scores your copy out of 5 and it can fail your build. No opinions, no vibes, just patterns. Developers call this a linter. Everyone else can call it a checker that will not let you ship.

A rival model does the cleaning. If Claude wrote the draft, GPT cleans it. A model cannot hear its own accent, the same way you cannot hear yours.

Works on landing pages, READMEs, emails and scripts. Anything a person is going to read and judge.

The loop

1. SCORE     tools/deslop.py     marks it out of 5, exits red below 5. Patterns, no opinions.
2. REWRITE   three passes        kill the vocabulary → kill the shapes → put a person back in
3. CLEANSE   tools/cleanse.sh    a different model family strips the tells the first one wrote
4. RESCORE   tools/deslop.py     ship only at 5/5

The scorer gets the first word and the last word, because the scorer is honest and the model is persuasive. "Mostly clean" is how a page ends up sounding like every other AI page on the internet.

Receipts, not claims

A real run on seven verbatim sentences of Jasper.ai's live homepage (29 Aug 2026):

score
Their copy, as fetched 3/5 — unlock, empower, four rule-of-three lists
After one pass through this loop 5/5 — meaning intact, length within 10%, nothing invented

Every command and its exact output: examples/jasper-live-run.md. Their copy is quoted for criticism and remains theirs; the MIT licence below covers this repo's own code and prose.

Quick start

git clone https://github.com/ItsssssJack/SlopMonster && cd SlopMonster

# score anything
python3 tools/deslop.py --text "It's not just a tool, it's a game-changing journey."
# → score 3/5, names both tells, exits 1

# score a built page (reads only what a visitor can SEE)
python3 tools/deslop.py index.html

# score a markdown file (skips code spans, fenced blocks and struck-through text)
python3 tools/deslop.py README.md

# cleanse a draft with a rival model, then re-score
tools/cleanse.sh draft.md > cleansed.md
python3 tools/deslop.py --text "$(cat cleansed.md)"

# your numbers are real and you can evidence them? stop the proof rule blocking the build
python3 tools/deslop.py index.html --allow-proof

# changed a regex? this is what catches a silently half-blind catalogue
python3 tools/test_deslop.py

The catalogue is English only. Copy in another language scores 5/5 because the scorer cannot read it, not because it is clean.

No dependencies. The scorer is stdlib Python. The cleanse script needs one AI CLI (codex or claude), or neither, in which case it prints the prompt for you to paste. .github/workflows/slop.yml is the build gate, ready to copy into your own repo.

Install as an agent skill

Claude Code: copy this folder to ~/.claude/skills/slopmonster/, then say /slopmonster or "de-slop this". Codex / other agents: point the agent at SKILL.md — it is plain-markdown instructions, nothing Claude-specific.

The cleanse is model-aware

The rule: the cleanse runs on a different model family than the one that wrote the draft. Different families have different accents, and a model is poor at hearing its own.

You work in Draft's accent cleanse.sh does
Claude Code Anthropic calls GPT-5.6 via your codex CLI, time-bound, read-only sandbox
Codex / ChatGPT OpenAI set DESLOP_WRITER=gpt and it calls Claude via claude -p
Gemini CLI Google whichever rival CLI is installed
no rival CLI n/a prints the full prompt to paste into the other family's chat

It refuses to route a draft back to its own family. A model marking its own homework is the one thing this step exists to prevent.

Then it re-lints, always: a frontier model is very good at removing tells and quite capable of adding new ones while it does.

What the scorer hunts

Five groups. Trip one and you lose a point. Below 5/5 the command exits red, so a build can stop on it.

Four groups strip the AI accent. The fifth asks whether the line sells anything.

Every before and after below is a real line from the Ridgeline Roofing build. Struck through is what the first draft said. Bold is what shipped. The full record: examples/ridgeline-roofing.md.

Every specimen on this page sits in code formatting or is struck through. That is not decoration. A literal is not copy, so deslop.py skips both when it reads a .md file, which is how this README passes the scorer it documents.

Rule 1, AI vocabulary: delve, leverage, seamless, unlock

1. AI vocabulary. Words that turn up far more in AI writing than in human writing.

There are two lists and they work differently.

The first list is matched by root. So elevate also catches elevates, elevated and elevating. This matters more than it sounds. Sales pages are written in the third person. Acme elevates your workflow is the commonest form of the word, and exact matching walked straight past it.

The second list holds words that have an honest everyday meaning too. crafted, harness, landscape, journey. Those are matched word for word instead. So "we craft furniture by hand" stays clean, and only the marketing use gets caught.

The fix is a plainer word. Not a posher synonym for the same idea.

We leverage industry-leading materials to deliver unparalleled protection. We source materials from manufacturers who test for wind, hail and sun. leverage, deliver, unparalleled. Every one of them means nothing and costs a line.

Rule 2, AI constructions:

2. AI constructions. This group catches sentence shapes, not single words.

A shape is a pattern you can fill with anything. not just X, but Y is the loudest one in English right now. Once you see it you cannot stop seeing it.

There are 17 shapes in the list. Things like that's where X comes in, say goodbye to and whether you're X or Y, stacked hedges such as could potentially, and questions the writer then answers themselves.

Both the short and long forms are checked, "it's" and "it is". Formal register is not a clever disguise. It is the default thing a model writes.

Shapes are worth more than words, because a page can pass a vocabulary check and still read like a machine wrote it.

Not just a roof, but peace of mind. A written scope and a fixed number before anyone climbs a ladder. The shape promises a reveal, then hands you an abstraction.

Rule 3, punctuation cadence: two em dashes in one sentence

3. Punctuation cadence. Two em dashes inside one sentence.

One dash in a paragraph is punctuation. Three is a tic. Models reach for them at roughly three to five times the human rate.

The check only looks inside a 220 character window, and that limit is doing real work. Interface text has no full stops. Nav items, buttons and labels all run together, so a naive sentence split treats a whole page as one sentence and the rule then fires on everything. A scorer that cries wolf gets switched off, so the window stays.

Semicolons are counted too, but only past a floor of three, scaled to the length of the page. Two semicolons in a long technical document is a style, not a tell.

Our team — trained, certified and local — is ready to help. Thirty-eight on the crew, factory-trained for every material we install. The dashes were hiding the fact that the sentence had no information in it.

Rule 4, rule-of-three rhythm:

4. Rule-of-three rhythm. Three items in a row. faster, smarter, and better.

Three adjectives is a rhythm, not an argument. One tricolon is rhetoric. Three of them on a page is a machine. A tricolon is just the posh name for a three-item list.

This check is deliberately narrow, and only two shapes fire it. With the Oxford comma it needs three single words. Without it, the third item has to be a short phrase that ends the clause.

The narrowness is the point. "Inspection, repair and replacement for homes and commercial buildings" is three real things a roofer does, and it scores clean. Flagging that would be crying wolf, and the next person would turn the scorer off.

Trusted, reliable and built to last. Six nails per shingle, every shingle. One specification beats three adjectives every time. Nobody invents a line like that, because invented copy does not know it.

Rule 5, sales and marketing: the rewrite built on Krug, Priestley and Hormozi

5. Sales & marketing. The first four rules get the robot out. This one asks the harder question. Does the line sell anything?

Clean copy that says nothing is still a dead page. Two things run here.

The hard rule: never invent proof. No customer counts, no testimonials, no ratings the business has not earned. The scorer flags any number sitting next to a people-noun, like 10,000+ happy users. It is deliberately trigger-happy. A false alarm costs you ten seconds. A miss puts a claim on your site that you cannot back. If your number is real and you can evidence it, --allow-proof drops it to a warning and still prints the hits.

Fake proof is a sales failure before it is a writing failure. Nobody buys from a page they have caught lying.

Loved by 10,000+ happy homeowners. Project names and photography are placeholders. Swap in your own jobs before this goes live. Say the slot is empty. It reads as confidence, not weakness.

The area's most trusted roofing experts. Roofing, and only roofing, since 2001. "Most trusted" cannot be checked, so the reader discounts it. A date cannot be argued with.

Where the lines come from. Four sources. If a sentence cannot name its source, it does not go on the page.

  1. What the trade actually does. The strongest source by a mile. "Six nails per shingle" is a real specification with a real failure mode behind it.
  2. What the customer already fears. That the price will move. That the yard will be wrecked. That they are being sold a whole roof for a flashing problem.
  3. What the competition will not say. Refusals travel further than promises. "We do not do overlays" positions you and disqualifies the wrong customer in one line.
  4. The lines that were already good. "From first call to final nail" arrived written in the wireframe and beat every rewrite. It stayed.

The named work behind the rewrite:

Who What this takes
Steve Krug, Don't Make Me Think (2000) every line the reader has to decode is a line they skip
Daniel Priestley, pitch order open on the problem and the insight, never the product
Alex Hormozi, the offer side named pain, checkable specificity, proof you actually own

Those three plus the category benchmark become five working principles, each with a real before and after: references/principles.md.

What goes in the tells' place

Clean is not the same as good. Five principles decide what the line says instead — Krug's Don't Make Me Think, Priestley's problem-first pitch order, and the specificity-over-superlatives argument Hormozi makes from the offer side. Each with a real before/after: references/principles.md.

A full worked example

The Ridgeline Roofing build: a Lorem-ipsum wireframe to a shipped site, with every headline's before → after, the six tells caught in first drafts, and the verify-or-mark pass on every number. This is the file that teaches: examples/ridgeline-roofing.md.

The area's most trusted roofing experts. Roofing, and only roofing, since 2001. "Most trusted" is unfalsifiable, so the reader discounts it entirely. A date cannot be argued with.

The one hard rule

Never invent proof. No user counts, no testimonials, no ratings you have not earned. If a claim needs a number you do not have, write [needs number] and move on. The lift from a fabricated number is smaller than the lift from real specificity, and it is the one mistake with no route back.

And this skill will never claim to "beat AI detectors". Detectors are noise. The target is a human reader's gut.

This file passes its own scorer. python3 tools/deslop.py README.md scores 5/5, and it is the same catalogue and the same regexes that score your landing page. Nothing was softened to get there. The specimens are marked as literals, in code or struck through, and the prose around them had to be written clean like anything else.

What this is built on

All sources named in references/sources.md: Wikipedia's Signs of AI writing (WikiProject AI Cleanup) as the canonical catalogue, plus four MIT-licensed open-source humanizers: blader/humanizer, harshaneel/humanize, lguz/humanize-writing-skill, haidrrrry/humanize-ai-writing. The rewrite principles come from Krug, Priestley and Hormozi. Detector-bypass repos are deliberately excluded.

Repo map

SKILL.md                            the agent skill — the whole loop as instructions
tools/deslop.py                     the scorer. stdlib, no deps, exits red below 5/5
tools/test_deslop.py                regression suite. run it after touching any regex
tools/cleanse.sh                    rival-model cleanse, auto-routed, time-bound
.github/workflows/slop.yml          the build gate, ready to copy
prompts/cleanse.txt                 the exact instruction the cleanse model gets
references/signs-of-ai-writing.md   the full catalogue: 2 vocab tiers, 8 shapes, cadence, rhythm, proof
references/principles.md            the five rewrite principles, each with a real pair
references/sources.md               every source this stands on
examples/ridgeline-roofing.md       full site build, every line before → after
examples/jasper-live-run.md         unedited live run: 3/5 → 5/5 on a real page

MIT. Same as the humanizers it stands on.

SlopMonster (ItsssssJack/SlopMonster)

Searching Database…

这是什么?SlopMonster 是一个 linter,按满分 5 分为文案中泄露 AI 写作痕迹的模式打分,分数太差时可以让 CI 构建失败;它还有一个 cleanse 步骤,用另一个 AI 模型重写被标记的句子。
这是 linter,还是 AI 写作生成器?它是 linter 而非生成器:一个 CLI 检查器,读取现有文案,标记五类 AI「特征」,还可以选择把草稿交给另一个模型家族进行清理。
怎么运行它?运行 `python3 tools/deslop.py README.md`(或任意文件)即可得到一个分数;把 `.github/workflows/slop.yml` 复制到你的仓库,就能将其用作构建门禁;作为 Claude Code 技能,把该文件夹复制到 `~/.claude/skills/slopmonster/`,然后输入 '/slopmonster'。
使用它需要 AI CLI 吗?评分器本身只需要 Python 标准库。cleanse 步骤在安装了 'codex' 或 'claude' CLI 时效果最好;如果两者都不存在,它只会打印提示词,由你自己粘贴到任意模型中。
它对其他语言写的文案有效吗?无效,词汇表和模式库仅支持英文,因此非英文文本会自动得到满分 5/5 —— 那是因为评分器无法解析它,而不是因为它真的干净。
它是给谁用的?任何要发布供人阅读和评判的文案的人:落地页、README、电子邮件和脚本;还为想把它用作 CI 门禁或 Claude Code / Codex 智能体技能的开发者内置了挂钩。
评分器具体检查什么?五组规则:AI 风味词汇(词根匹配和精确匹配),「不只是 X,而是 Y」之类的特征性句式,标点节奏(破折号和分号),三段式排比节奏,以及诸如编造客户数量之类未经证实的营销说辞。
为什么用与原作者不同的模型来清理文本?模型很难听出自己的写作风格,所以 Claude 写的草稿由 GPT 来清理,反之亦然;该工具明确拒绝把草稿送回它自己的模型家族。
如果我没装竞争 AI 的 CLI 会怎样?cleanse.sh 会打印完整的重写提示词,你可以手动把它粘贴到你能使用的任何其他模型的聊天界面中。
我能保留真实的数字声明而不让构建失败吗?可以,--allow-proof 标志会把被标记的数字(如客户数量)降级为警告而不是导致失败的分数,同时仍会打印命中项,方便你核实。
Size
6.5 MB
Stars
1.1K
Updated
CommitSep 26
Age
1mo
Commits · 90 Days