
watermarks-remover v0.5.0
プライバシー優先のアプリで、所有するコンテンツからAIウォーターマークを除去します。
_ _ _ ____ ___ ____ ____ _ _ ____ ____ _ _ ____ ____ ____ _ _ ____ _ _ ____ ____
| | | |__| | |___ |__/ |\/| |__| |__/ |_/ [__ __ |__/ |___ |\/| | | | | |___ |__/
|_|_| | | | |___ | \ | | | | | \ | \_ ___] | \ |___ | | |__| \/ |___ | \
watermarks-remover
テキストおよびファイルから複数ベンダーの AI 由来マークを除去するエージェントスキル + 標準ライブラリのみの Python サービス — あなたが所有するコンテンツのプライバシーと衛生のために。このスキルはシンクライアントであり、HTTP 経由で機構を操作するため、エージェントホストに Python は不要です。
| レイヤー | 対象 | 方法 |
|---|---|---|
| A | 不可視 Unicode、特殊スペース、bidi、タグ文字 | 決定論的 Python スクリプト |
| B | 統計的(トークンサンプリング)テキスト透かし | エージェントによるリライト + オプションの rewrite_text.py フック |
| ファイル | C2PA / EXIF / XMP / doc props | PNG、JPEG、WebP、AVIF、HEIC、BMP、GIF、TIFF、SVG、PDF、DOCX、XLSX、PPTX、EPUB、ODT、HTML、Markdown、MP4/MOV/M4A/M4V、WAV、MP3、FLAC |
ベンダー / エコシステム(クラスレベル): Claude、Gemini / SynthID-Text、OpenAI の由来サーフェス、open-LLM の Kirchenbauer 方式(グリーンリスト)およびキー付き Gumbel / EXP(Aaronson)マーク。
最新リリース: v0.7.0
スキルパス: skills/remove-ai-marks/
サービスパス: service/
(移行: 以前は remove-claude-marks。スラッシュエイリアス /remove-claude-marks も引き続きドキュメント化されています)
インストール(エージェントスキル)
このスキルはコードを同梱していません — HTTP 経由でサービスを呼び出します。スキル(Markdown のみ)をインストールしてサービスを起動し、http://127.0.0.1:8765 でない場合は WATERMARKS_SERVICE_URL を設定してください。
Claude Code では、最速の方法は同梱の プラグインマーケットプレイスです — クローン不要で、 その場で更新されます。それ以外の環境では、1 つのインストーラーがサポート対象のすべてのホストをカバーします (Python 3.10+ 標準ライブラリ、依存関係なし):
python3 install_skill.py --skill remove-ai-marks --target claude-code
| Host | Target | Lands in |
|---|---|---|
| Claude Code (personal) | --target claude-code | ~/.claude/skills/<skill> (CLAUDE_CONFIG_DIR を尊重) |
| Claude Code (project) | --target claude-project --project-dir PATH | PATH/.claude/skills/<skill> |
| Codex (personal) | --target codex | ~/.agents/skills/<skill> |
| Codex (project) | --target codex-project --project-dir PATH | PATH/.agents/skills/<skill> |
| Cowork, claude.ai, cloud sessions, routines | --target cowork | dist/<skill>.zip を Customize → Skills でアップロード |
| Cursor | --target cursor (デフォルト) | ~/.cursor/skills/<skill> |
同梱スキル: remove-ai-marks (完全版、サービス連携) と
clean-user-facing-text (テキストのみ、自己完結型)。--list で一覧を表示します。
既存のインストールは --force を渡さない限り保持されます。置き換えは
まずステージングされ、以前のインストールは一意の名前のバックアップとして保持されます。
--link はコピーの代わりにこのチェックアウトをシンボリックリンクするため、編集が
即座に反映されます。Windows では py install_skill.py ... を使用してください。install-skill.sh ラッパー
は macOS/Linux シェル用に提供されています。
何かを書き込む前に、インストーラーはスキルを
Agent Skills のパッケージングルール (claude.ai のアップロード
および Skills API が適用するもの) に対して検証します: 仕様のみのフロントマター (name、description、
license、compatibility、metadata、allowed-tools)、ディレクトリと一致する
最大 64 文字の小文字ハイフン区切りの name、最大 1024 文字の
空でない description。Cowork バンドルはさらに
30 MB のアップロード制限に収まる必要があり、これはパッケージャーが適用します。
Codex ターミナルとデスクトップ
同梱スキルのいずれかをユーザー用にインストールするか、特定の プロジェクトにインストールします:
python3 install_skill.py --skill remove-ai-marks --target codex
python3 install_skill.py --skill clean-user-facing-text --target codex
python3 install_skill.py --skill remove-ai-marks --target codex-project --project-dir /path/to/project
Windows では、python3 の代わりに py を使用します。プロジェクトを Codex で開きます。ターミナルでは /skills を使用するか $ を入力してスキルを選択します。デスクトップアプリでは、プロンプト内でスキルを選択または言及します。新しいスキルが表示されない場合は Codex を再起動してください。プロジェクトインストールは、Codex がそのプロジェクトで実行されている場合に利用できます。
remove-ai-marks の場合、スキルを使用する前にこのリポジトリから既存の HTTP サービスを make serve で起動します(または make のない Windows では py service/scripts/server.py --host 127.0.0.1 --port 8765 を実行します)。これは WATERMARKS_SERVICE_URL(デフォルト http://127.0.0.1:8765)を使用し、/health をチェックし、既存の /inspect および /clean エンドポイントを呼び出します。サービスが API キーを必要とする場合は、クライアント用に WATERMARKS_SERVER_API_KEY を設定します。clean-user-facing-text は自己完結型であり、サービスを必要としません。
フックによる自動クリーニング(決定論的)
スキルは指示です。モデルがそれを呼び出すかどうかを決定し、モデルはマークを生成するものです。フックは、一致するすべてのツール呼び出しでハーネスによって実行され、協力は必要ありません。これにより、フックはこのワークフローの決定論的な半分となります。
プラグインは Write|Edit|MultiEdit|NotebookEdit に PostToolUse フックを登録し、エージェントが書き込んだファイルに対して service/scripts/hook_written_file.py を実行します。2 つのモードがあり、デフォルトでチェックするという pre-commit の慣例に一致します。
| モード | 動作 |
|---|---|
check(デフォルト) | 来歴マークを報告し、ファイルには手を付けません。検出結果はモデルに送信され(終了コード 2)、モデルがそれらをクリーニングすることを提案できます。 |
clean | マークをその場で削除し、ディスク上のファイルが変更されたことをモデルに伝えます。 |
モードはプラグインの設定(/plugin manage の Hook mode、フックによって CLAUDE_PLUGIN_OPTION_HOOK_MODE として読み取られます)から、または環境内の WATERMARKS_HOOK_MODE=clean で設定します。フックコマンドは意図的に ${user_config.hook_mode} を補間しません。Claude Code は、ユーザーが /plugin manage を開いて設定したことのないオプションを参照するフックの実行を拒否します — 宣言された default ではそれを満たしません — そのため、それを補間すると、フックが新規インストールでサイレントに実行されなくなることを意味します。検出は audit_lib の scan_file / is_actionable を再利用するため、フック、pre-commit ゲート、および CI SARIF エクスポートは、何がアクション可能と見なされるかについて一致します。クリーニングは clean_file.py を呼び出すため、クリーニングロジックは重複しません。clean モードは兄弟の一時ファイルに書き込み、実際の差分がある場合にのみ交換するため、すでにクリーンだったファイルは mtime を保持し、ファイルウォッチャーを再トリガーしません。
プラグインなしで、~/.claude/settings.json(またはプロジェクトの .claude/settings.json)に自分で配線します。
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit|MultiEdit|NotebookEdit",
"hooks": [
{
"type": "command",
"command": "python3",
"args": ["/path/to/watermarks-remover/service/scripts/hook_written_file.py",
"--mode", "check"],
"timeout": 30
}
]
}
]
}
}
Windows では、python3 を py に置き換えてください。
フックにできないこと。 どのフックも、あなたが読む前にアシスタントのチャットメッセージを書き換えることはできません。Claude Code の Stop フックは last_assistant_message を読み取り専用で受け取り、最終応答用の送信前フィルターは存在しません — これはこのプロジェクトが Cursor ルールについてすでに文書化しているのと同じ制限です。したがって、決定論的な保証がカバーするのはエージェントが書き込むファイル、および git に入る途中のあらゆるものに対するpre-commit ゲートです。チャットのトランスクリプトにのみ存在するテキストは、依然としてスキルワークフローに依存しており、これはモデル指示ベースであるためベストエフォートです。
Claude Code プラグイン(マーケットプレイス)
このリポジトリは Claude Code のプラグインであり、単一プラグインのマーケットプレイス(.claude-plugin/)でもあるため、両方のスキルを 2 つのコマンドでインストールおよび更新できます。クローンやスクリプトは不要です:
/plugin marketplace add guillaumemeyer/watermarks-remover
/plugin install watermarks-remover@watermarks-remover
スキルは名前空間付きでロードされます: /watermarks-remover:remove-ai-marks と
/watermarks-remover:clean-user-facing-text(他にその名前を主張するものがない場合、裸の /remove-ai-marks も機能します)。/plugin marketplace update watermarks-remover は以降のバージョンを取得します。同じことは CLI から claude plugin marketplace add … / claude plugin install … で動作し、ローカルチェックアウトからは owner/repo の代わりにパスを渡すことでも動作します。
メンテナー向け: make plugin-validate は両方のマニフェストに対して claude plugin validate . --strict を実行します。tests/test_plugin_manifest.py は CLI を必要とせずに同じファイルをカバーします。
Claude Code
# Personal — available in all your projects
python3 install_skill.py --skill remove-ai-marks --target claude-code
# or: make install-claude-code-skill