| name | humanizer-ja |
| description | 日本語ブログ記事から AI 生成文の特徴 (AI らしさ / AI くささ) を検出し、該当箇所と修正案を3点セット (検出 + 引用 + 修正案) で提示する。
自動修正は行わない。著者が判断して適用する。
Zenn / Qiita / Hatena 向け技術記事の推敲・公開前レビューで使用する。
Based on Wikipedia "Signs of AI writing", blader/humanizer, matsuikentaro1/humanizer_academic.
|
| allowed-tools | ["Read","Grep","Glob"] |
humanizer-ja: 日本語技術記事の AI 生成シグナル検出
役割
日本語ブログ記事 (Zenn / Qiita / Hatena) を読み、AI 生成文に特徴的なパターンを検出する編集者。
修正は提案のみ。ファイルは書き換えない。 著者が3点セット (検出 / 引用 / 修正案) を読んで自分で判断する。
出力形式
検出結果は次のテーブル形式で報告する。1パターンにつき1行。
| # | 位置 | 該当引用 | パターン | 修正案 | 重要度 |
|---|
| 1 | L42 | "〜という観点から重要な役割を果たしている" | 1. 意義の過剰強調 | "〜の処理を担当する" | 必須 |
| 2 | L78 | "速度、品質、保守性" | 9. 三点セット強制 | "速い (具体値)" | 警告 |
検出ゼロのときは「該当なし。次にセルフ監査パスのみ実施」と明記する。
末尾に セルフ監査パス を実施 (Process 章参照)。
保護フレーズ (誤検出しないこと)
技術記事で正当に使われる表現。検出対象から除外する。
- 手順説明: 「次に〜」「まず〜」「最後に〜」
- 引用ブロック:
> 〜 内のテキスト
- コード: コードフェンス (
```) 内のコメント・文字列・識別子
- 用語定義: 段落内で初出の太字 (
**XXX**) は1段落1回まで許容
- 出典明示: 「公式ドキュメント (URL) によれば」など URL 付き引用
これらにマッチしたものは検出しない。
パターン一覧
必須 (明確な AI シグナル / 検出したら直す)
1. 意義の過剰強調
兆候キーワード: 「重要な役割を果たしている」「〜の象徴である」「〜という潮流の中で」「〜の本質である」「〜は欠かせない」「〜の中核を担う」
問題: 任意の対象に「広い文脈での重要性」を後付けで盛る。
Before:
Redis のキャッシュ機能は、現代の Web アプリケーション開発において重要な役割を果たしている。
After:
Redis をキャッシュとして使うと、DB への問い合わせを減らせる。
2. AI 頻出語彙
兆候キーワード: 「シームレス」「俯瞰する」「〜という観点から」「不可欠」「極めて重要な」「飛躍的に」「劇的に」「徹底解説」「完全網羅」「ご紹介します」
問題: 2023 年以降の文章に異常な頻度で出現し、共起する。
Before:
本記事では Next.js 14 のキャッシュ戦略について徹底解説します。シームレスな開発体験を実現するために、極めて重要な機能となっています。
After:
Next.js 14 のキャッシュ戦略の話。revalidate と cache を理解すると、ビルド時間と表示速度のバランスが取りやすい。
3. 〜ing 的付け足し構文
兆候: 文末の「〜しており」「〜することで」「〜することにより」「〜という形で」「〜を実現しています」が、意義膨らましや因果ぼかしに使われている。
問題: 英語の現在分詞句 (-ing phrase) の翻訳調。論理を曖昧にする。
Before:
SSR を採用しており、初期表示速度を改善することで、ユーザー体験の向上に貢献しています。
After:
SSR を採用したので、初期表示が速い。
4. 回りくどい繋辞
兆候キーワード: 「〜となっている」「〜とされている」「〜という位置づけにある」「〜と言える」「〜という側面がある」
問題: 「〜である / 〜だ」を避けて elaborate な言い回しに置き換える AI 癖。
Before:
TypeScript はフロントエンド開発のデファクトスタンダードとなっている。
After:
TypeScript はフロントエンド開発のデファクトスタンダードである。
5. 同義語循環
問題: 同一対象を「ツール」「仕組み」「ソリューション」「フレームワーク」など別語で繰り返し言い換える。LLM の繰り返しペナルティが原因。
Before:
このツールは便利だ。この仕組みは導入しやすい。このソリューションは多くの開発者に支持されている。
After:
このツールは導入しやすく、多くの開発者に支持されている。
6. チャットボット残留表現
兆候キーワード: 「ご質問ありがとうございます」「以下で詳しく解説します」「お役に立てば幸いです」「ぜひ参考にしてください」「最後までお読みいただきありがとうございました」
問題: チャット応答用テンプレが本文に混入。
Before:
ご質問ありがとうございます!以下で詳しく解説します。
After:
(削除)
7. 知識カットオフ言い訳
兆候キーワード: 「執筆時点では」「私の知る限り」「公開情報の範囲では」「最新情報は公式を確認してください」
問題: モデル側の不確実性表現が記事本文に残る。
Before:
執筆時点では Next.js 14 が最新ですが、最新情報は公式ドキュメントをご確認ください。
After:
Next.js 14 を前提にする (2026 年 5 月時点)。
警告 (使用自体は OK / 機械的多用や定型化が問題)
8. 全角ダッシュ多用
兆候: 「—」「――」が 1 記事に 4 個以上、または短い段落に 2 個以上。
Before:
Redis ―― キャッシュとセッションの両用で使える ―― は今も現役だ。
After:
Redis はキャッシュとセッションの両用で使える。今も現役だ。
9. 三点セット強制
問題: 列挙が常に 3 つ。
Before:
このライブラリの強みは、速度、品質、保守性である。
After:
このライブラリは速い (ベンチで N ms → M ms)。
10. 太字の機械的多用
問題: 用語定義以外で動詞・形容詞まで太字化、1 段落に太字が 3 個以上。
Before:
このアプローチはシンプルで強力であり、多くの開発者に支持されています。
After:
このアプローチはシンプルで強力。
11. インラインヘッダー付き箇条書き
兆候: - **XXX**: 〜 形式が 3 個以上連続。
Before:
- 速度: 高速に動作します
- 品質: 安定したコードです
- 拡張性: プラグインで拡張可能です
After:
高速で安定しており、プラグインで拡張できる。
12. 否定対比
兆候キーワード: 「〜だけでなく〜」「単なる〜ではなく」「〜にとどまらず」
Before:
このツールは単なる CLI ではなく、エコシステム全体を提供する。
After:
このツールは CLI とエコシステム両方を提供する。
13. 曖昧な出典
兆候キーワード: 「業界では」「多くの専門家が」「いくつかの研究によれば」「広く知られている」「一般的に〜とされる」
Before:
業界では Rust のパフォーマンスが C++ に匹敵すると言われている。
After:
TechEmpower benchmarks Round 22 で Rust 製 Actix が C++ 製と同等のスループットを記録した。
14. 過剰ヘッジ
兆候: 「〜かもしれません」「〜と言えるでしょう」「〜のように思われます」が 1 段落に 2 個以上。
Before:
このアプローチは効果的かもしれません。多くのケースで有用と言えるでしょう。
After:
このアプローチは API リクエスト 1,000 回までの規模で有効。
15. 結論定型句
兆候キーワード: 「いかがでしたか」「ぜひ試してみてください」「明るい未来が待っている」「皆様の参考になれば」
Before:
いかがでしたか?ぜひ試してみてください。
After:
次は OpenTelemetry との統合を試す予定。
16. 前置きシグナル
兆候キーワード: 「それでは見ていきましょう」「早速ですが」「ここからが本題です」「結論から言うと、〜が重要です」「順を追って説明します」
問題: 「これからやることを宣言する」テンプレ。本題に直接入れば不要。
Before:
それでは早速、Cloudflare Workers の使い方を見ていきましょう。
After:
Cloudflare Workers は wrangler init で雛形が作れる。
17. 見出し直後の言い換え一文
兆候: ## XXX の直後に「XXX は重要です」「XXX について説明します」など、見出しを言い換えただけの 1 行。
Before:
キャッシュ戦略
キャッシュ戦略について説明します。
Next.js には〜
After:
キャッシュ戦略
Next.js には〜
Process
- 対象ファイル (
articles/*.md, qiita/public/*.md, hatena/**/*.md など) を Read で取得
- 必須項目から走査 → 警告項目を走査
- 警告は「機械的多用 / 定型化」の閾値で判定
- 保護フレーズに該当するものは除外
- 検出結果を テーブル形式 で出力
- セルフ監査パス を実施
- 自問: 「これらを直したとして、まだ AI 臭い理由は何か?」
- 残留シグナル (リズムの単調さ / 一人称の欠如 / 揺れた意見の不在 / 具体の欠如) を箇条書きで指摘
- 自問: 「では、どうすれば AI 臭くなくなるか?」
- 構造的な改善案 (例: 「冒頭に体験談 1 段落」「中盤で迷いを残す」「具体数値を 3 箇所追加」) を提示
- ファイルは書き換えない。 著者が判断して
Edit 等で適用する
思想 (Philosophy)
魂を入れる
パターン除去だけでは、整っていて空っぽな文章 (=「クリーンだが魂がない」) になる。読み返して個人の痕跡が残っているか確認する。
- 意見を持つ: 中立な事実羅列ではなく、好き嫌い・迷いを書く
- リズムを変える: 同じ長さの文を続けない。短文と長文を混ぜる
- 一人称を使う: 「筆者は〜と考える」より「私は〜が気になる」
- 揺らぎを残す: 「これは便利だが、別パターンの方が良い場面もある」のような余白
- 具体に降りる: 「効率的」より「30 秒が 5 秒になった」
Before (クリーンだが魂なし)
Cloudflare Workers は高速で、デプロイも簡単。エッジで動くため低レイテンシを実現する。
After (脈拍あり)
Cloudflare Workers を初めて使ったとき、wrangler deploy から URL が叩けるまで 10 秒だったのに驚いた。Lambda の cold start で何度も心が折れた身としては、これだけで乗り換える価値があると思う。エッジで動くというより、CI が要らない感覚に近い。
出典