
プライバシー優先のアプリで、所有するコンテンツからAIウォーターマークを除去します。
_ _ _ ____ ___ ____ ____ _ _ ____ ____ _ _ ____ ____ ____ _ _ ____ _ _ ____ ____
| | | |__| | |___ |__/ |\/| |__| |__/ |_/ [__ __ |__/ |___ |\/| | | | | |___ |__/
|_|_| | | | |___ | \ | | | | | \ | \_ ___] | \ |___ | | |__| \/ |___ | \
エージェントスキル + 標準ライブラリのみの Python サービスで、テキストおよびファイルから複数ベンダーの AI 由来マークを除去します — あなたが所有するコンテンツのプライバシーと衛生のために。このスキルはシンクライアントです。HTTP 経由で機構を操作するため、エージェントホストに Python は不要です。
| レイヤー | 対象 | 方法 |
|---|---|---|
| A | 不可視 Unicode、特殊スペース、bidi、タグ文字 | 決定論的な Python スクリプト |
| B | 統計的(トークンサンプリング)テキスト透かし | エージェントによるリライト + オプションの rewrite_text.py フック |
| ファイル | C2PA / EXIF / XMP / ドキュメントプロパティ | 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+ 標準ライブラリ、依存関係なし):```bash 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>` |
| 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](https://agentskills.io) のパッケージングルール
(claude.ai のアップロードと Skills API が強制するもの) に対して検証します:
仕様のみのフロントマター (`name`、`description`、
`license`、`compatibility`、`metadata`、`allowed-tools`)、ディレクトリと
一致する最大 64 文字の小文字ハイフン区切りの `name`、最大 1024 文字の
空でない `description`。Cowork バンドルはさらに 30 MB のアップロード
制限に収まる必要があり、これはパッケージャーが強制します。
### フックによる自動クリーニング (決定論的)
スキルは指示です: モデルがそれを呼び出すかどうかを決定し、
モデルはマークを生成するものです。**フック**は一致するすべてのツール
呼び出しでハーネスによって実行され、協力は必要ありません。これにより
フックはこのワークフローの決定論的な半分となります。
プラグインは `Write|Edit|MultiEdit|NotebookEdit` に `PostToolUse` フックを
登録し、エージェントが書き込んだファイルに対して
[`service/scripts/hook_written_file.py`](https://github.com/guillaumemeyer/watermarks-remover/blob/main/service/scripts/hook_written_file.py)
を実行します。2 つのモードがあり、デフォルトでチェックするという
pre-commit の慣習に一致します:
| Mode | Behaviour |
| --- | --- |
| `check` (デフォルト) | 来歴マークを報告し、ファイルには手を付けません。検出結果はモデルに送信され (exit 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`) に自分で配線してください:```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-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```bash
# Personal — available in all your projects
python3 install_skill.py --skill remove-ai-marks --target claude-code
# or: make install-claude-code-skill
# Project — commit .claude/skills/ to share it with the repo
python3 install_skill.py --skill remove-ai-marks --target claude-project \
--project-dir /path/to/project
# or: make install-claude-project-skill PROJECT=/path/to/project
Claude Code は再起動なしで個人用およびプロジェクト用のスキルを読み込みます; /skills
は読み込まれたものを一覧表示します。/remove-ai-marks で呼び出すか、「AI
ウォーターマーク / C2PA / Claude マーク / SynthID クラスのテキストを除去して」と依頼してください。プロジェクトへのインストールは
クラウドセッションも読み取る対象です。なぜなら、それらはリポジトリをクローンしてその .claude/skills/ を読み込むからです。
Cowork セッションは、あなたのマシン上の ~/.claude/skills を読み込みません — それらは
あなたの claude.ai アカウントで有効化されたスキルを読み込み、セッション開始時に同期されます。
そのため、そこにインストールするにはバンドルをアップロードします:```bash
python3 install_skill.py --skill remove-ai-marks --target cowork
次に、Claude Desktop アプリで **Customize → Skills → Add** を開き、zip をアップロードします(claude.ai 上の同じスキル設定でも同様に機能します)。このバンドルは再現可能で、単一のトップレベル `remove-ai-marks/` ディレクトリを含み、そのルートに `SKILL.md` が配置されています。これはアップロードが期待するレイアウトです。