关于 WSC - Writing Style Checker
WSC 是面向写作者和文档团队的文本风格检查器,可通过网页、API、命令行、GitHub Action 和 MCP 使用。它检查常见行文问题及有研究来源支持的 AI 文本特征,并将每项标记对应到可解释的修改建议。
主要功能
- 01检测模糊用词、被动语态等 8 类问题
- 02检查有研究引用的 AI 文本特征
- 03网页编辑器实时标记并提供行内修正
- 04通过 API、命令行和 GitHub Action 检查
- 05使用 .wscrc.json 自定义检测规则
适用场景
- 01编辑文档时查找冗词和长句
- 02在 CI 中检查 Markdown 文件
- 03让 AI 助手检查文本并修复重复词
MCP 相关
提供远程 Streamable HTTP 和本地 stdio MCP 服务,供 MCP 客户端调用文本检查、重复词修复和词表查询;本地版本还可读取并检查文件。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://wsc.theserverless.dev/mcpclaude mcp add --transport http wsc https://wsc.theserverless.dev/mcp{"mcpServers":{"wsc":{"type":"http","url":"https://wsc.theserverless.dev/mcp"}}}在 Cursor 中打开{"servers":{"wsc":{"type":"http","url":"https://wsc.theserverless.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"wsc":{"type":"http","url":"https://wsc.theserverless.dev/mcp"}}}{"mcpServers":{"wsc":{"serverUrl":"https://wsc.theserverless.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
4| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| text | string | 是 | 要分析写作风格问题的文本 |
| config | object | 否 | 用于启用/禁用检测器或添加/删除词表条目的可选配置;架构与 .wscrc.json 相同(https://wsc.theserverless.dev/schema.json) |
| format | enum | 否 | 设为 "markdown" 可屏蔽代码块、行内代码、表格和标题,使其不作为散文进行检查;默认值 "plain" 会检查所有内容plain | markdown |
详细介绍
写作风格检查器
一款散文检查工具和 AI 腔检测器。WSC 会查找AI 特征——在 AI 生成文本中出现频率偏高的词语、短语和句式结构,每个标记都有已发表的语料库研究作为依据。它还会发现常见写作问题:模糊措辞、被动语态、重复词语、长句、名词化、模棱两可的表达和填充性副词。可作为网页编辑器、HTTP API、MCP 服务、命令行工具和 GitHub Action 使用。

功能
- 网页编辑器 - 实时高亮显示,并为全部 8 种检测器提供行内修正按钮
- HTTP API - 发送文本并可选附带配置,获取结构化 JSON 响应
- MCP 服务(远程) - 通过 Streamable HTTP 传输连接 AI 助手
- MCP 服务(本地) - 通过 npm 上的
wsc-mcp提供基于 Stdio 的服务 - 命令行工具 - 通过
wsc-lint从命令行检查文件 - GitHub Action - 在 CI 中运行检查,并生成
::warning注释 - 可配置 - 使用
.wscrc.json文件自定义检测器
WSC 能做什么(以及不能做什么)
WSC 会标记研究发现其在 AI 生成文本中出现频率偏高的模式,并为每个标记提供来源。它不会也无法证明文本由谁创作。基于分类器的检测器存在已有记录的误指控风险:一项 Stanford 研究发现,其中七种检测器会错误标记 61% 的非英语母语者所写的文章。WSC 从设计上避开了这一问题——每个标记都对应一项具体、易于解释的编辑建议,无论文本由谁或什么创作,应用后都能改善文本。
检测规则
| 检测器 | 项目数 | 说明 |
|---|---|---|
| 模糊措辞 | 95 个词语/短语 | 含义模糊的词语,如 "very"、"basically"、"arguably"、"numerous" |
| 被动语态 | 260 个不规则动词 | 助动词 + 过去分词(规则 -ed 形式 + 不规则形式) |
| 重复词语 | — | 忽略大小写,检测被空白字符分隔的相邻重复词语 |
| 长句 | 阈值:30 个词 | 超过可配置词数的句子 |
| 名词化 | 245 组词语 | 可用动词替代的名词("utilization" → "use") |
| 模棱两可的表达 | 100 个短语 | 弱化断言的短语("I think"、"it seems") |
| 填充性副词 | 139 个词语 | 只加强语气、不增加实质内容的副词("totally"、"utterly") |
| AI 特征 | 98 个词语(+111 个屈折形式)+ 83 个短语 + 12 种结构模式 | 在 AI 生成文本中出现频率偏高的词语、短语和句式结构(delve、rich tapestry、It's not just X — it's Y) |
词语列表源自 Matt Might 的 shell 脚本,并补充了其他条目。AI 特征参考已发表的语料库研究:Kobak 等人,2025 年(Science Advances)、Juzek 与 Ward,2025 年(COLING)、Liang 等人,2024 年(Stanford)以及 Reinhart 等人,2025 年(PNAS)。Wikipedia 由编辑维护的 AI 写作迹象目录和 AI 检测供应商报告也构成了参考来源。
配置
创建 .wscrc.json 以自定义检测器。所有工具(API、MCP、CLI)均支持此配置文件。
{
"$schema": "https://wsc.theserverless.dev/schema.json",
"ignore": ["CHANGELOG.md", "docs/vendor/**"],
"detectors": {
"weaselWords": {
"enabled": true,
"add": ["synergy", "leverage"],
"remove": ["very"]
},
"longSentences": { "maxWords": 25 },
"adverbs": { "enabled": false }
}
}
所有字段均为可选项。缺少的字段将使用默认值。JSON Schema 可在 VS Code 中提供自动补全。
ignore 是一个 glob 模式数组,路径相对于工作目录。GitHub Action 使用仓库根目录。这些模式会与 Action 的 exclude 输入和 CLI 的 --ignore 标志一起,添加到内置的 **/node_modules/** 和 **/.git/** 跳过规则中。
API 用法
POST /api/check
分析文本中的写作风格问题。可选接受 config 对象。
curl -X POST https://wsc.theserverless.dev/api/check \
-H "Content-Type: application/json" \
-d '{"text":"The code was written very quickly."}'
响应:
{
"summary": {
"total": 2,
"weaselWords": 1,
"passiveVoice": 1,
"duplicateWords": 0,
"longSentences": 0,
"nominalizations": 0,
"hedging": 0,
"adverbs": 0
},
"issues": {
"weaselWords": [{ "word": "very", "index": 21, "line": 1, "column": 22, "context": "..." }],
"passiveVoice": [{ "phrase": "was written", "index": 9, "line": 1, "column": 10, "context": "..." }],
"duplicateWords": [],
"longSentences": [],
"nominalizations": [],
"hedging": [],
"adverbs": []
},
"meta": { "characterCount": 34, "wordCount": 6, "sentenceCount": 1, "processingTimeMs": 2 }
}
使用配置:
curl -X POST https://wsc.theserverless.dev/api/check \
-H "Content-Type: application/json" \
-d '{"text":"The code was written very quickly.", "config":{"detectors":{"weaselWords":{"enabled":false}}}}'
GET /api/check
以 JSON 格式返回 API 文档。
GET /api/detectors
返回全部 8 个检测器的列表,包含说明、可配置性和词数。
GET /health
使用已知文本运行冒烟测试,并返回 {"status":"healthy"} 或 503。
限制: 每个请求最多 100,000 个字符。所有来源均启用 CORS。
MCP 服务
Writing Style Checker 可作为 MCP 服务使用,让 AI 助手能够直接检查你的写作。
工具
| 工具 | 说明 |
|---|---|
check_text | 检查文本中的全部 8 种写作风格问题。可选接受 config。 |
fix_duplicates | 移除相邻重复词,并返回清理后的文本 |
list_word_lists | 返回所有检测器词表的信息 |
check_file | (仅本地) 从磁盘读取文件并进行分析。自动发现 .wscrc.json。 |
远程 MCP 服务
将任意 MCP 客户端连接到托管服务,无需安装。
{
"mcpServers": {
"writing-style-checker": {
"type": "url",
"url": "https://wsc.theserverless.dev/mcp"
}
}
}
本地 MCP 服务(stdio)
通过 npm 安装以供本地使用。包含 check_file,可自动发现 .wscrc.json 并分析磁盘上的文件。
npx wsc-mcp
Claude Desktop / Claude Code 配置:
{
"mcpServers": {
"writing-style-checker": {
"command": "npx",
"args": ["wsc-mcp"]
}
}
}
完整文档请参阅 wsc-mcp npm 页面。
CLI
通过命令行检查文件。
# Check all markdown files
npx wsc-lint check "**/*.md"
# Read from stdin
echo "The code was written very quickly." | npx wsc-lint check --stdin
# JSON output for scripting
npx wsc-lint check "**/*.md" --format json
# GitHub Actions annotations
npx wsc-lint check "**/*.md" --format github
# Create a config file
npx wsc-lint init
完整文档请参阅 wsc-lint README。
GitHub Action
- uses: theserverlessdev/wsc@v1
with:
files: '**/*.md'
max-warnings: 20
exclude: |
CHANGELOG.md
vendor/**
| 输入 | 默认值 | 说明 |
|---|---|---|
files | **/*.md | 要检查文件的 glob 模式 |
config | — | .wscrc.json 配置文件的路径 |
max-warnings | unlimited | 触发失败前允许的最多警告数 |
only-changed | false | 在拉取请求中,检查与 files 匹配的已更改文件。如果没有匹配项,则跳过检查。其他事件会检查 files。 |
exclude | — | 要跳过的 glob 模式。用逗号或换行符分隔。追加到配置中的 ignore。 |
隐私
网页编辑器在你的浏览器中运行——我们绝不会将文本发送到任何服务端。API 和 MCP 端点只会处理你明确发送给它们的文本。
项目结构
.
├── src/
│ ├── core/ # Shared detection engine
│ │ ├── detector.ts # 8 detection algorithms
│ │ ├── words.ts # Word/phrase lists (800+ entries)
│ │ ├── config.ts # Config types, merging, validation
│ │ ├── config-node.ts # Node-only: file loading, discovery
│ │ ├── analyzer.ts # Unified analyzeText() entry point
│ │ └── index.ts # Public API exports
│ ├── docs/ # Documentation content (Markdown files)
│ ├── mcp/
│ │ └── handler.ts # MCP JSON-RPC 2.0 handler
│ ├── lib/
│ │ ├── App.svelte # Main editor page component
│ │ ├── stores/theme.ts # Theme store (light/dark/system)
│ │ └── components/ # UI components (StatsBar, ConfigPanel, etc.)
│ ├── routes/
│ │ ├── +layout.svelte # Shared layout (header, nav, footer)
│ │ ├── api/check/+server.ts # HTTP API endpoint
│ │ ├── mcp/+server.ts # MCP endpoint
│ │ ├── health/+server.ts # Health check endpoint
│ │ ├── docs/+page.svelte # Documentation page
│ │ └── words/+page.svelte # Word library browser
│ └── styles/
│ └── main.scss # Global styles (light + dark themes)
├── mcp-server/ # Standalone stdio MCP server (npm: wsc-mcp)
├── cli/ # CLI tool (npm: wsc-lint)
├── action/ # GitHub Action (composite)
├── tests/ # 341 tests across 18 files
├── static/
│ ├── schema.json # JSON Schema for .wscrc.json
│ ├── llms.txt # AI/LLM discovery file
│ └── llms-full.txt # Detailed LLM context
├── wrangler.toml # Cloudflare Workers config
└── svelte.config.js # SvelteKit configuration
本地开发
git clone https://github.com/theserverlessdev/wsc.git
cd wsc
npm install
npm run dev
访问 http://localhost:5173。API 位于 /api/check,MCP 位于 /mcp,健康检查位于 /health。
命令
| 命令 | 说明 |
|---|---|
npm run dev | 启动开发服务器 |
npm run build | 构建生产版本 |
npm run check | 使用 svelte-check 进行类型检查 |
npm test | 运行全部 341 项测试 |
npm run test:coverage | 生成覆盖率报告 |
部署
部署为 Cloudflare Worker,地址为 wsc.theserverless.dev。
npm run build
npx wrangler deploy
贡献
有关开发环境设置、测试和拉取请求指南,请参阅 CONTRIBUTING.md。
对于较大的改动,请先提交 issue。
致谢
- 感谢 Matt Might 提供原始 shell 脚本
- 使用 SvelteKit 和 Svelte 5 构建,部署于 Cloudflare Workers
- Logo 使用 DiffusionBee 制作
License
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。