mcpField
W
WSC - Writing Style Checker

WSC - Writing Style Checker

远程服务
wsc.theserverless.dev生产力92 周前更新

关于 WSC - Writing Style Checker

WSC 是面向写作者和文档团队的文本风格检查器,可通过网页、API、命令行、GitHub Action 和 MCP 使用。它检查常见行文问题及有研究来源支持的 AI 文本特征,并将每项标记对应到可解释的修改建议。

主要功能

  1. 01检测模糊用词、被动语态等 8 类问题
  2. 02检查有研究引用的 AI 文本特征
  3. 03网页编辑器实时标记并提供行内修正
  4. 04通过 API、命令行和 GitHub Action 检查
  5. 05使用 .wscrc.json 自定义检测规则

适用场景

  1. 01编辑文档时查找冗词和长句
  2. 02在 CI 中检查 Markdown 文件
  3. 03让 AI 助手检查文本并修复重复词

MCP 相关

提供远程 Streamable HTTP 和本地 stdio MCP 服务,供 MCP 客户端调用文本检查、重复词修复和词表查询;本地版本还可读取并检查文件。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://wsc.theserverless.dev/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npmwsc-mcp2.2.2

工具

4
参数类型必填说明
textstring是要分析写作风格问题的文本
configobject否用于启用/禁用检测器或添加/删除词表条目的可选配置;架构与 .wscrc.json 相同(https://wsc.theserverless.dev/schema.json)
formatenum否设为 "markdown" 可屏蔽代码块、行内代码、表格和标题,使其不作为散文进行检查;默认值 "plain" 会检查所有内容plain | markdown

详细介绍

写作风格检查器

CI npm smithery badge wsc MCP server M8ven Score License: MIT

一款散文检查工具和 AI 腔检测器。WSC 会查找AI 特征——在 AI 生成文本中出现频率偏高的词语、短语和句式结构,每个标记都有已发表的语料库研究作为依据。它还会发现常见写作问题:模糊措辞、被动语态、重复词语、长句、名词化、模棱两可的表达和填充性副词。可作为网页编辑器、HTTP API、MCP 服务、命令行工具和 GitHub Action 使用。

在线体验:wsc.theserverless.dev

Writing Style Checker 截图

功能

  • 网页编辑器 - 实时高亮显示,并为全部 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-warningsunlimited触发失败前允许的最多警告数
only-changedfalse在拉取请求中,检查与 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。

致谢

License

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。