unslopf
Feed it markdown, URLs, or a sitemap. It profiles 2-to-4-word phrases, drops domain nouns and grammar glue, and returns a short list of phrases that already show up too often — a negative prompt so the next draft does not sound like the last ten.
Negative keywords
The list will show up here.
Limits: 12 URLs, 80000 characters per document, 10 / 10 min per IP. Nothing is stored. Private hosts are rejected.
The honest part
This is frequency, not taste. A phrase that belongs in the subject will still rank if you did not put it on the keep list. Ban lists also go stale: after enough new words, regenerate. Pair the list with a structural instruction so the model does not swap "delve into" for "dive into".
API
POST JSON. Pass a sitemap, a list of page URLs, inline markdown, or a mix. The response is the scored list plus an injectable prompt.
curl -sS -X POST https://ninokroesen.com/api/unslopf \
-H 'Content-Type: application/json' \
-d '{"sitemap":"https://ninokroesen.com/sitemap.xml"}'
Pages instead of a sitemap
curl -sS -X POST https://ninokroesen.com/api/unslopf \
-H 'Content-Type: application/json' \
-d '{"urls":["https://example.com/post-one","https://example.com/post-two"]}'
FAQ
What do I do with the list?
Put it in the system prompt as a negative prompt, so the next draft stops leaning on the phrases the previous ten already used. It is a list of phrases that already show up too often in the pages you fed it.
How does it pick the phrases?
Mechanically: it counts 2-to-4-word n-grams, drops domain nouns and grammar glue, and keeps what repeats across documents. No LLM is involved, so the same input gives the same list.
Can I point it at my own site?
Yes, with a sitemap or a list of page URLs (https and public hosts only; private addresses are rejected). Up to 12 URLs and 80000 characters per document, 10 / 10 min per IP.
Do you keep the pages it fetches?
No. It fetches, profiles, and returns; nothing is written to disk or to the database.