Patina について
Patinaは、AI生成または自分で書いた原稿を整える人向けのオフライン文章チェッカーです。機械生成らしく見える行とその理由を示し、ファイル自体は変更しません。
主な機能
- 01機械的な表現や文型の検出
- 02予測されやすい文の順位付け
- 03文の特徴を人間の範囲と比較
- 04短い見出しやタグラインの確認
- 05文章の用途別プロファイル
- 06CLIとMCPサーバーとして動作
活用シーン
- 01共有前のAI原稿の確認
- 02自分の文章にある文体の癖の把握
- 03公開前の見出しの確認
- 04CIやコミット前の文章チェック
MCP 対応
PatinaはローカルでMCPサーバーとして動作し、patina_check、patina_explain、patina_rules、patina_profilesの4つのツールとrewrite_with_patinaプロンプトを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Patina
AI で書いても、あなたらしい文章に。 Patina は、下書きの中で機械が書いたように読める箇所に印を付け、その理由を説明します。
AI の下書きは時間を節約できます。一方で、知り合いなら誰も言わないような文がいくつか残りがちです。Patina はそうした箇所を見つけ、それぞれにどんな特徴があるのかを説明します。ファイルには一切手を加えないため、書き直しも文体も、あなたのものです。
自分で書いた文章にも使えます。作品が ChatGPT っぽいと何度も言われるなら、Patina がどんな癖をそう感じさせるのかを示します。どの癖を残すかは、あなたが決められます。
チェック項目
- 特徴:読者が見分けるようになった定型句や文の形です。
- 予測可能性:言語モデルが最初に書きそうな文を順位付けし、どこから取りかかればよいかを示します。
- The Copybook:各文の文法、語彙、書き出し、コンマの位置を、出版された小説2作品と比較します。人間らしさの範囲から外れた文には印が付きます。
- 短い文:見出しやタグライン向けの、短い説明、フィルター、先入観のない読み取りです。公開前に、初めて読む人にも伝わるかを確認できます。
ビフォーとアフター
短編小説の冒頭です。左は最初の AI 下書き、右は Patina を使って書き直した同じ場面です。

下書きはそれぞれ違うため、自分の文章で試すのが一番です。無料なので、書いたものを実際にチェックしてみてください。
クイックスタート
Node 18 以降が必要です。それ以外のインストールは不要です。
npx github:taxmanhaven/patina-showcase check my-draft.md
各印には、行と列、重要度、機械が書いたように読める理由が含まれます。
my-draft.md:3:1 warning connector-open "Moreover," Let the ideas join by their own logic.
my-draft.md:3:14 warning style-words "delve" Use the plain word a person would say.
印の意味がわからない場合は、patina explain style-words を実行してください。
--profile で読者に合ったプロファイルを選べます。fiction、web(デフォルト)、email、pro-email、technical、playful、captions、spoken、headline、testimonial、ui から選んでください。リポジトリをクローンした場合は、node tools/cli.mjs を実行すれば npx を使わずに同じことができます。
AI アプリ内で使う
Patina は MCP サーバーとしても動作するため、Claude、Cursor など MCP に対応したアプリは、下書きをあなたに渡す前にチェックできます。お使いのマシン上でオフラインで動作し、テキストを変更することはありません。アプリからは4つのツール(patina_check、patina_explain、patina_rules、patina_profiles)と1つのプロンプト、rewrite_with_patina を利用できます。チェックし、印の付いた箇所だけを書き直して、もう一度チェックします。
Claude Code:
claude mcp add patina -- npx -y github:taxmanhaven/patina-showcase mcp
Claude Desktop、Cursor などでは、同じコマンドを MCP の設定に指定します。
{
"mcpServers": {
"patina": { "command": "npx", "args": ["-y", "github:taxmanhaven/patina-showcase", "mcp"] }
}
}
続けて、次のように頼んでください。「ローンチメールを書いて、見せる前に Patina にチェックしてもらって。」
CI またはコミット前に使う
合格時の終了コードは0、下書きがプロファイルの基準を満たさない場合は1です。そのため、定型文のように読めるページを含むプルリクエストはマージできません。--format github を指定すると、プルリクエスト上で印がインライン表示されます。
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 20 }
- run: npx -y github:taxmanhaven/patina-showcase check docs/*.md --format github
--format json を指定すると、同じ印を独自のスクリプトで利用できます。--fail-on any は印が1つでもあれば失敗とし、--fail-on never は報告のみを行います。
設定
patina init を実行すると、.patinarc.json が作成されます。Patina は対象ファイルのあるフォルダーと、その上位フォルダーすべてを探します。
{
"profile": "web",
"profiles": { ".md": "web", ".txt": "email" },
"disable": ["em-dash"],
"protect": ["A line you wrote on purpose"],
"failOn": "gate"
}
disable には、ルール(style-words)、ファミリー(triplet)、または評価項目(rhythm、specificity)を指定できます。patina rules ですべての項目を一覧表示できます。
その他のツール
アプリ内の短い文字列を大量に扱う場合は、batch を使います。
node tools/patina.mjs batch strings.json --report report.md
見出しやタグラインの場合は、templates/headline-brief.txt に必要事項を入力してから、次を実行します。
node tools/patina.mjs brief brief.txt
node tools/patina.mjs lines --brief brief.txt --candidates candidates.txt
候補はそれぞれ technique | line / subline の形式で記述します。テクニックは craft/headlines.md にあります。
オプションの追加機能
- 予測可能性マップとコールドリーダーは、OpenAI 互換 API(デフォルトでは Prima Labs)を通じて言語モデルを呼び出します。キーを環境変数
PRIMALABS_API_KEYに設定してください。Patina はプロセス内でキーを読み取り、表示することはありません。node tools/predict.mjs my-draft.md --out predict.md - Copybook の文法レイヤーには、Python 3.12 と spaCy および wordfreq が必要です。これらはご自身でインストールしてください。
ドラフト全体を人間の範囲と照らし合わせるには、pip install "spacy>=3.8,<3.9" wordfreq python -m spacy download en_core_web_md python tools/intro_commas.py check my-draft.mdnode tools/sentences.mjs label my-draft.md --out draft.lab.jsonl(キーが必要)を実行し、続いてpython tools/anatomy.py draft.lab.jsonl draft.an.jsonl、その後node tools/copybook.mjs --draft draft.an.jsonl --panelを実行します。
Copybook には人間の範囲を収録した norms/norms.json が含まれているため、書籍がなくても動作します。規範データは数値のみです。書籍の文章は含まれていません。
ここに含まれるもの
| フォルダー | 内容 |
|---|---|
tools/ | コマンドライン(cli.mjs)、MCP サーバー(mcp.mjs)、チェッカー、予測可能性マップ、Copybook、テスト(npm test) |
craft/ | 見出し作成ガイドと文のコードブック |
norms/ | 出典とともに収録した、出版済み小説2作品で測定した人間の範囲 |
templates/ | 見出しの概要 |
glossaries/ | デザイン用語の流出チェックに使う、製品のデザイン用語リストの例 |
examples/ | 上記のビフォー・アフター画像 |
corpus/ | 人間の基準として使う、パブリックドメインの章1編(Willa Cather 著、My Antonia) |
正直な限界
- Patina は指標を示しますが、どの検出器にもテキストが合格することを保証するものではありません。熟練した読者には単語の置き換えが見抜かれるため、解決策はご自身で書き直すことです。
- 規範データはフィクションに基づいています。README やセールスページでは、目安としてお使いください。
- スキャンは最低限の確認です。最終的に判断するのは、ご自身の感覚と、信頼できる読者です。
ライセンス
MIT。使用、変更、拡張は自由です。ただし、examples/before-after.png の物語の抜粋は例外で、著者に権利が留保されています。詳細は LICENSE と NOTICE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。