|
| 1 | +# ai-slop-detect |
| 2 | + |
| 3 | +Find LLM-generated text patterns in markdown, prose, blog posts, README files, and code comments. Free CLI, zero dependencies, deterministic. No API key required. |
| 4 | + |
| 5 | +Built from real production use editing AI-drafted Polish FB posts and English README files. Detects 70+ patterns across EN and PL, character-level typographic tells (em-dash, curly quotes, decorative emoji), and weak openers ChatGPT and Claude overuse. |
| 6 | + |
| 7 | +## install |
| 8 | + |
| 9 | +```bash |
| 10 | +pip install ai-slop-detect |
| 11 | +``` |
| 12 | + |
| 13 | +Or run from source: |
| 14 | + |
| 15 | +```bash |
| 16 | +git clone https://github.com/antydizajn/ai-slop-detect |
| 17 | +cd ai-slop-detect |
| 18 | +python -m ai_slop_detect README.md |
| 19 | +``` |
| 20 | + |
| 21 | +## use |
| 22 | + |
| 23 | +Scan a single file: |
| 24 | + |
| 25 | +```bash |
| 26 | +ai-slop README.md |
| 27 | +``` |
| 28 | + |
| 29 | +Scan a directory (defaults to md/markdown/mdx/txt/html/rst): |
| 30 | + |
| 31 | +```bash |
| 32 | +ai-slop docs/ |
| 33 | +``` |
| 34 | + |
| 35 | +Pipe text from stdin: |
| 36 | + |
| 37 | +```bash |
| 38 | +cat draft.md | ai-slop - |
| 39 | +``` |
| 40 | + |
| 41 | +JSON output for tooling: |
| 42 | + |
| 43 | +```bash |
| 44 | +ai-slop docs/ --json > slop_report.json |
| 45 | +``` |
| 46 | + |
| 47 | +CI gate — exit 2 if any file scores 50 or higher: |
| 48 | + |
| 49 | +```bash |
| 50 | +ai-slop docs/ --fail-on 50 --quiet |
| 51 | +``` |
| 52 | + |
| 53 | +## output |
| 54 | + |
| 55 | +``` |
| 56 | +== README.md == |
| 57 | +verdict: LIKELY_AI (ai_score=47/100) |
| 58 | +stats: 12 hits across 320 words (3.75 per 100w) |
| 59 | +by_kind: char:em_dash=4, opener=2, phrase=6 |
| 60 | +
|
| 61 | +hits: |
| 62 | + 3:18 [phrase] 'in conclusion' | In conclusion, this is a great project. |
| 63 | + 5:42 [char:em_dash] '\u2014' | This tool — built from scratch — finds AI tells. |
| 64 | + 12:1 [opener] 'Certainly,' | Certainly, here is the implementation: |
| 65 | +``` |
| 66 | + |
| 67 | +Score bands: |
| 68 | + |
| 69 | +- `STRONG_AI` (70+): unmistakably AI, rewrite from scratch |
| 70 | +- `LIKELY_AI` (40-69): heavy editing needed |
| 71 | +- `TRACES` (15-39): polish remaining tells |
| 72 | +- `HUMAN_LIKE` (<15): ship it |
| 73 | + |
| 74 | +## what it catches |
| 75 | + |
| 76 | +**English phrases** (43 patterns): "let me know if", "as an AI", "in the realm of", "delve into", "harness the power", "cutting-edge", "transform your workflow", "in today's digital landscape", and more. |
| 77 | + |
| 78 | +**Polish phrases** (29 patterns): "ponadto", "warto zauważyć", "rewolucyjny", "kluczowym aspektem", "mam nadzieję, że ten post", and more. |
| 79 | + |
| 80 | +**Character tells**: em-dash (—), en-dash (–), curly quotes (" " '), horizontal ellipsis (…), non-breaking spaces. |
| 81 | + |
| 82 | +**Decorative emoji**: 🚀 ✨ 💡 💪 🎉 🔥 🌟 🎊 🌈 💫 ⭐ 🎯 💯 (the marketing-AI set). |
| 83 | + |
| 84 | +**Weak openers**: "Certainly,", "Of course,", "Absolutely,", "Great question,", "I'd be happy to", "That's a fantastic". |
| 85 | + |
| 86 | +## why |
| 87 | + |
| 88 | +LLM text has a fingerprint. Em-dash density, "delve" frequency, opener cadence, decorative emoji clusters. If you publish text that scores LIKELY_AI on this tool, readers (and other tools) can tell. This linter gives you a fast pre-publish gate. |
| 89 | + |
| 90 | +Built because Paulina, the author, needed it for her own Polish FB posts (Gniewislawa AI / Hermes). The PL pattern catalog is tested against real production drafts. |
| 91 | + |
| 92 | +## pricing |
| 93 | + |
| 94 | +The CLI is free and MIT-licensed. If you want **AI-powered rewrite suggestions** (BYO Claude/OpenAI key) or **bulk repo scan with HTML report**, those land as a paid premium tier later. Free tier covers 100% of detection. |
| 95 | + |
| 96 | +If this tool saves you 30 minutes of editing, consider tipping: |
| 97 | + |
| 98 | +- BLIK / Polish bank: `793 093 721` |
| 99 | +- Revolut: `@paulinajeoo` (or `revolut.me/paulinajeoo`) |
| 100 | +- PayPal: coming soon |
| 101 | + |
| 102 | +## roadmap |
| 103 | + |
| 104 | +- HTML report with line highlighting |
| 105 | +- Per-language profile flags (`--lang en`, `--lang pl`, `--lang both`) |
| 106 | +- Pre-commit hook template |
| 107 | +- GitHub Action wrapper |
| 108 | +- Configurable custom patterns via `.aisloprc.toml` |
| 109 | + |
| 110 | +## contributing |
| 111 | + |
| 112 | +Pattern PRs welcome. New phrase? Open an issue with three real examples and the source LLM. We add patterns that catch real AI text without flagging human writing. |
| 113 | + |
| 114 | +## license |
| 115 | + |
| 116 | +MIT |
0 commit comments