What is this thing?
Your writing sounds like it was "delving" into a "tapestry" of "multifaceted" ideas and "testament"-ing its way to a conclusion? SlopCheck knows.
It's a fully offline, zero-dependency AI-prose detector that reads your text the way a tired English teacher reads a suspicious essay, then hands back a cold, hard score.
No GPU. No API key. No cloud. No excuses.
Why developers actually like it
| The Old Way | The SlopCheck Way |
|---|---|
| Pay for a cloud "AI detector" | Runs 100% on your CPU, offline |
| Wait on network round-trips | Instant, local, stdlib-only |
| Black-box "trust me" score | 5 transparent heuristic signals |
| Manual review before merge | Drop it in your CI, block the slop |
Get it running (30 seconds, we timed it)
pip install slopcheck-cli
Point it at a file:
slopcheck doc.txt --explain
Or pipe anything into its mouth:
echo "delving into multifaceted layers" | slopcheck -
Sample verdict
slopcheck: stdin
Score: 45/100 (medium AI-signal density)
Phrase matches 5/40
Sentence rhythm 15/20
Punctuation 10/15
Paragraph uniformity 10/15
Lexical diversity 5/10
Flagged spans:
L1: "...delving into this multifaceted ecosystem..."
Heuristic estimate, not proof. False positives happen
on formal/corporate writing and non-native English styles.
How Sniffy actually smells the slop
Five independent signals, no ML, no black box:
- 📖 Phrase matcher: greedy scan against a weighted bank of known AI clichés
- 🎵 Sentence rhythm: flags suspiciously uniform sentence lengths (real humans ramble)
- ✒️ Punctuation signature: em-dash, colon, and parenthesis frequency checked against a bot-like baseline
- 📐 Paragraph uniformity: every paragraph exactly the same size? Suspicious.
- 🔤 Lexical diversity: Type-Token Ratio checks if your vocabulary is actually alive
CLI cheat sheet
slopcheck <file|-> # target file, or "-" for stdin
--json # machine-readable output
--explain # show flagged spans + context
--no-color # for your soulless CI logs
Use it as a library too
from slopcheck import scorer
result = scorer.score("Text to evaluate")
print(result.score, result.signals)
CI gatekeeper mode
SlopCheck exits with code 1 on high-risk documents, so wire it straight into pre-commit or CI and let Sniffy guard the gate.
- name: Block the slop
run: slopcheck docs/*.md --no-color
Under the hood
slopcheck/
├── cli.py → argument parsing & runner
├── scorer.py → orchestrates all 5 signals
├── render.py → console + JSON formatting
├── signals/
│ ├── phrases.py → AI-cliché matcher
│ ├── rhythm.py → sentence-length variance
│ ├── punctuation.py → em-dash / colon frequency
│ ├── structure.py → paragraph uniformity
│ └── lexical.py → TTR vocabulary scorer
└── data/phrase_bank.json → the naughty-phrase database
Contributing
Found new slop in the wild? Sniffy accepts submissions. See CONTRIBUTING.md.
License
MIT: free as in "delving into the multifaceted world of open source."
SlopCheck · sniffing out the tapestry, one testament at a time 🐾
Metadata
Release files for slopcheck-cli 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| slopcheck_cli-0.1.4.tar.gz | 23.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| slopcheck_cli-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.1 kB
Release files / slopcheck_cli-0.1.4.tar.gz
| Download URL | slopcheck_cli-0.1.4.tar.gz |
|---|---|
| Size | 23.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e938e9978e4c8b58daa266231dd3e4baeb38b943fa49e4ec1e49d106eeba0f9f
|
|
BLAKE2b-256 checksum How to use checksums |
f94cd4a37a698d638b8ea6364ddb6400b18af20ff3004c8521be9c9e2212221b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.0
|
Release files / slopcheck_cli-0.1.4-py3-none-any.whl
| Download URL | slopcheck_cli-0.1.4-py3-none-any.whl |
|---|---|
| Size | 17.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e78bd25804346715bbf584f3ea4809638bf75bed21f3201e1017dfef4add7881
|
|
BLAKE2b-256 checksum How to use checksums |
15d6586c7d7e946ccd72512f9d0a835ad51d795c16331a644ccb906da1fc7c4a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.0
|
Security for slopcheck-cli 0.1.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.