Writing Style Checker
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
A prose linter and AI-slop detector. WSC finds **AI tells** — words, phrases, and sentence structures overrepresented in AI-generated text, each flag backed by a published corpus study. It also catches classic writing issues: **weasel words**, **passive voice**, **duplicate words**, **long sentences**, **nominalizations**, **hedging**, and **filler adverbs**. Available as a web editor, HTTP API, MCP server, CLI, and GitHub Action.
**Live: wsc.theserverless.dev**
Features
- **Web Editor** - Real-time highlighting with inline fix buttons for all 8 detectors
- **HTTP API** - POST text with optional config, retrieve structured JSON responses
- **MCP Server (Remote)** - Connect AI assistants via Streamable HTTP transport
- **MCP Server (Local)** - Stdio-based server via wsc-mcp on npm
- **CLI** - Check files from the command line via wsc-lint
- **GitHub Action** - Run checks in CI with ::warning annotations
- **Configurable** - Customize detectors with .wscrc.json files
---
What WSC is (and isn't)
WSC flags patterns that research on AI-generated text finds overrepresented, and cites a source for every flag. It does not, and cannot, prove authorship. Classifier-based detectors carry a documented false-accusation risk: a Stanford study found that seven of them misflagged 61% of essays written by non-native English speakers. WSC avoids that trap by design — every flag is a specific, explainable edit that improves the text no matter who, or what, wrote it.
---
Detection Rules
| Detector | Items | Description |
|----------|-------|-------------|
| **Weasel Words** | 95 words/phrases | Vague terms like "very", "basically", "arguably", "numerous" |
| **Passive Voice** | 260 irregular verbs | Auxiliary verbs + past participles (regular -ed + irregular) |
| **Duplicate Words** | — | Adjacent repeated words across whitespace, case-insensitive |
| **Long Sentences** | threshold: 30 words | Sentences exceeding a configurable word count |
| **Nominalizations** | 245 word pairs | Nouns replaceable with verbs ("utilization" → "use") |
| **Hedging** | 100 phrases | Phrases that weaken assertions ("I think", "it seems") |
| **Filler Adverbs** | 139 words | Adverbs adding emphasis without substance ("totally", "utterly") |
| **AI Tells** | 98 words (+111 inflected forms) + 83 phrases + 12 structural patterns | Words, phrases, and sentence constructions overrepresented in AI-generated text (delve, rich tapestry, It's not just X — it's Y) |
Word lists sourced from Matt Might's shell scripts and expanded with additional entries. AI tells draw on published corpus studies: Kobak et al. 2025 (Science Advances), Juzek & Ward 2025 (COLING), Liang et al. 2024 (Stanford), and Reinhart et al. 2025 (PNAS). Wikipedia's editor-maintained Signs of AI writing catalogue and AI-detection vendor reports round out the sources.
---
Configuration
Create a .wscrc.json to customize detectors. All tools (API, MCP, CLI) support it.
Every field is optional. Missing fields use defaults. JSON Schema provides autocompletion in VS Code.
ignore is an array of glob patterns relative to the working directory. The GitHub Action uses the repository root. The CLI adds these patterns to its built-in **/node_modules/** and **/.git/** skips, together with the Action exclude input and the CLI --ignore flag.