OpenSource-Hub

humanizer

その他

blader/humanizer

AIライティングの痕跡を除去するテキスト書き換えスキル。

概要

Markdown ベースの Agent スキル。一般的な AI ライティングパターンを識別し、自然な人間の文体に書き換えます。Wikipedia の 35 種類のライティング痕跡パターンを参考に、事実の詳細を保持しながら、ユーザーの個人的な文体に合わせることが可能です。スキルメカニズムをサポートするさまざまな Agent に適用できます。

README プレビュー

# Humanizer\n\n[](https://skills.sh/blader/humanizer)\n\nHumanizer rewrites AI-sounding text so it reads like a person wrote it, without changing what it says. Because it is just Markdown, it works with any agent that supports skills.\n\n## How it works\n\nHumanizer uses 35 patterns from Wikipedia's ["Signs of AI writing"](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing), maintained by WikiProject AI Cleanup. It makes a first pass without treating the original structure as fixed. Then it checks the draft against those patterns and the original claims before rewriting whatever still needs work.\n\n> "LLMs use statistical algorithms to guess what should come next. The result tends toward the most statistically likely result that applies to the widest variety of cases."\n\nIt does not make things up. A name, number, date, quote, citation, or other factual detail must come from the source or the writer. For personal writing, Humanizer keeps the writer's style. Technical and reference prose stays neutral and plain. If you provide a writing sample, Humanizer follows that sample instead of its default style rules.\n\nWhen you paste text, Humanizer shows its work before giving you the final version. You see the first rewrite and a short critique of anything that still sounds artificial. Point it at a file and it changes only the prose, leaving code, data, frontmatter, and link targets alone.\n\n## Usage\n\nCall the skill directly:\n\n```\n/humanizer\n\n[paste your text here]\n```\n\nOr ask in plain language:\n\n```\nPlease humanize this text: [your text]\n```\n\nTo rewrite a file, give Humanizer its path:\n\n```\nHumanize the prose in docs/launch-post.md\n```\n\n### Match your voice\n\nIf you want the rewrite to sound more like you, include a sample:\n\n```\n/humanizer\n\nHere's a sample of my writing for voice matching:\n[paste 2-3 paragraphs of your own writing]\n\nNow humanize this text:\n[paste AI text to humanize]\n```\n\nHumanizer follows the sample's rhyt

FAQ (3)

トラブル対応
Humanizerプラグインは、PangramなどのAI検出ツールをバイパスまたは回避できますか?

いいえ。Humanizerは、AI検出ツールを回避するためではなく、AIが生成したテキストを人間にとって読みやすくするために書き換えることを目的として設計されています。報告されたブラインド調査では、検出スコアはほとんど変化しませんでした:生の出力、書き換えパス、書き換え+チェッカーで、それぞれ100% → 98.6% → 97.8%でした。Pangram 4.0は、文境界の変更のみを加えたバージョンを含む、テストされた4つのバリアントすべてに対して100% AIを返しました。メンテナーは、純粋なLLMプロンプティングでは現時点でPangramを打ち負かすことができず、検出ツールの回避はプロジェクトの目標ではないことを認めています。可読性を向上させ、語彙的なAIの兆候を減らすためにHumanizerを使用してください。AI検出ツールを通過するためにHumanizerに頼ってはいけません。

参照 Issue #229
ハウツー
すべてのOpenCodeセッションでHumanizerを自動的に読み込むにはどうすればよいですか?

OpenCode 1.18.29 以降にアップグレードしてください。OpenCode がリポジトリから実行されると、Humanizer ガイダンスが自動的に注入され、V1 と V2 の両方のプラグインフックがサポートされます。古いバージョンで手動セットアップを行う場合は、.opencode/plugins/humanizer.mjs を作成し、SKILL.md を読み込み、そのフロントマターを取り除き、experimental.chat.system.transform フックを使用してルールをシステムプロンプトにプッシュします:

import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';

const __dirname = path.dirname(fileURLToPath(import.meta.url));
const skillPath = path.resolve(__dirname, '../../SKILL.md');

export default async () => ({
  'experimental.chat.system.transform': async (_input, output) => {
    const body = fs.readFileSync(skillPath, 'utf8')
      .replace(/^---[^\S\r\n]*\r?\n[\s\S]*?\r?\n---[^\S\r\n]*(?:\r?\n|$)/, '')
      .replace(/(?:\r?\n)+$/, '');

    output.system.push(
      'HUMANIZER MODE ACTIVE. Apply these rules to assistant prose while preserving code, commands, paths, structured data, URLs, quoted text, and exact-output requests.\n\n' + body
    );
  },
});

OpenCode を再起動し、Humanizer プラグインがアクティブになっているかどうかを尋ねて確認してください。

参照 Issue #279
トラブル対応
読者がすでに知っているコンテキストを過剰に説明してしまう、AIっぽいPRコメントを修正するにはどうすればよいですか?

Humanizer の conversational-context チェック(issue #269 の修正で pattern #26 として追加されたもの)を使用してください。その PR を含むリリースにアップグレードしたうえで、返信を書き換える際に次のルールを適用してください:(1) そのテキストが進行中のスレッドへの返信かどうかを特定する。(2) PR、Slack、またはメールでの会話ですでに確立されている共有コンテキストを前提とする。(3) 決定を裏付けるために必要な場合を除き、繰り返しの診断、調査の証明、クエリ、メトリクスを削除する。(4) 実際の決定事項や依頼を最初に述べる。(5) 必要最小限の理由のみを残す。たとえば、根本原因と backfill に関する完全な説明を次のように置き換えます:「ここで MergeService を変更すると、この PR のスコープが広がってしまいます。この変更は Client A 固有のものに留め、MergeService の修正と backfill については別のチケットを起票したいと思います。それで問題なければ LMK してください。」

参照 Issue #269