WSC - Writing Style Checker について
WSCは、ライターやドキュメントチーム向けの文章チェックツールです。Webエディター、API、CLI、GitHub Action、MCPサーバーで利用でき、一般的な文体の問題と研究に基づくAI生成文の特徴を指摘します。
主な機能
- 01曖昧な表現や受動態など8種類の問題を検出
- 02研究資料に基づくAI生成文の特徴を確認
- 03Webエディターで問題をハイライトし修正を提示
- 04API、CLI、GitHub Actionで文章をチェック
- 05.wscrc.jsonで検出ルールをカスタマイズ
活用シーン
- 01文書の冗長表現や長文を編集時に確認
- 02CIでMarkdownファイルをチェック
- 03AIアシスタントで文章を確認し重複語を削除
MCP 対応
リモートのStreamable HTTPとローカルのstdioに対応し、文章チェック、重複語の修正、単語リストの参照を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" に設定すると、コードブロック、インラインコード、表、見出しをマスクして文章としての lint 対象から除外します。デフォルトの "plain" ではすべてを lint しますplain | markdown |
詳細
Writing Style Checker
文章表現のリンター兼、AI らしさの検出ツールです。WSC はAI 特有の兆候、つまり AI 生成テキストで過剰に使われる単語、フレーズ、文構造を検出します。各指摘には、公開済みのコーパス研究による裏付けがあります。また、曖昧な表現、受動態、重複語、長文、名詞化、婉曲表現、不要な副詞といった一般的な文章の問題も検出します。ウェブエディター、HTTP API、MCP サーバー、CLI、GitHub Action として利用できます。

機能
- ウェブエディター - 8 種類すべての検出機能で、リアルタイムにハイライトし、インラインの修正ボタンを表示します
- HTTP API - オプションの設定とともにテキストを POST すると、構造化された JSON レスポンスを取得できます
- MCP サーバー(リモート) - Streamable HTTP トランスポートを介して AI アシスタントを接続できます
- MCP サーバー(ローカル) - npm の
wsc-mcpを使った Stdio ベースのサーバーです - CLI -
wsc-lintを使ってコマンドラインからファイルをチェックできます - GitHub Action - CI でチェックを実行し、
::warningアノテーションを表示します - 設定可能 -
.wscrc.jsonファイルで検出機能をカスタマイズできます
WSC ができること(できないこと)
WSC は、AI 生成テキストに過剰に使われると研究で示されたパターンを指摘し、各指摘の出典を示します。文章の作成者を証明するものではなく、証明することもできません。分類器ベースの検出機能には、誤った告発につながるリスクが文書化されています。スタンフォード大学の研究では、そのうち 7 種類が英語を母語としない人の書いたエッセイの 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 のシェルスクリプトを出典とし、追加項目を拡充しています。AI 特有の兆候は、公開済みのコーパス研究(Kobak et al. 2025(Science Advances)、Juzek & Ward 2025(COLING)、Liang et al. 2024(Stanford)、Reinhart et al. 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 ではリポジトリのルートが基準になります。CLI では、これらのパターンが組み込みの **/node_modules/** および **/.git/** の除外に加え、Action の exclude 入力と CLI の --ignore フラグとともに適用されます。
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 }
}
config を指定する場合:
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
API のドキュメントを JSON で返します。
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 | 無制限 | 失敗とするまでの警告の最大数 |
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 | カバレッジレポートを出力します |
デプロイ
wsc.theserverless.dev で Cloudflare Worker としてデプロイされています。
npm run build
npx wrangler deploy
貢献
開発環境のセットアップ、テスト、プルリクエストのガイドラインについては、CONTRIBUTING.mdをご覧ください。
大規模な変更を行う場合は、まずイシューを作成してください。
謝辞
- オリジナルのシェルスクリプトを作成した Matt Might に感謝します
- SvelteKit と Svelte 5 で構築し、Cloudflare Workers にデプロイしています
- ロゴは DiffusionBee で作成しました
License
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。