A privacy-first app that strips AI watermarks from content you own.

★ 26,939⑂ 3,062👁 117⑃ 281● 129▤ 9◈ 21
26,939
stars
+159+943+3,557
3,062
forks
117
watchers
281
prs
129
issues
9
releases
21
discussions

README

_ _ _ ____ ___ ____ ____ _  _ ____ ____ _  _ ____    ____ ____ _  _ ____ _  _ ____ ____
| | | |__|  |  |___ |__/ |\/| |__| |__/ |_/  [__  __ |__/ |___ |\/| |  | |  | |___ |__/
|_|_| |  |  |  |___ |  \ |  | |  | |  \ | \_ ___]    |  \ |___ |  | |__|  \/  |___ |  \


 watermarks-remover








Agent skill + stdlib Python service to strip multi-vendor AI provenance marks from text and files — for privacy and hygiene on content you own. The skill is a thin client: it drives the machinery over HTTP, so the agent host needs no Python.

| Layer | Target | How |
| --- | --- | --- |
| A | Invisible Unicode, exotic spaces, bidi, tag chars | Deterministic Python scripts |
| B | Statistical (token-sampling) text watermarks | Agent rewrite + optional rewrite_text.py hook |
| Files | 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 |

Vendors / ecosystems (class-level): Claude, Gemini / SynthID-Text, OpenAI provenance surfaces, open-LLM Kirchenbauer-style (green-list) and keyed-Gumbel / EXP (Aaronson) marks.

Latest release: v0.7.0

Skill path: skills/remove-ai-marks/  
Service path: service/  
(migration: formerly remove-claude-marks; slash alias /remove-claude-marks still documented)

 Install (agent skill)

The skill ships no code — it calls the service over HTTP. Install the skill (markdown only) and start the service, then set WATERMARKS_SERVICE_URL if it is not http://127.0.0.1:8765.

In Claude Code, the fastest route is the bundled
plugin marketplace — no clone, and it updates
in place. Everywhere else, one installer covers every supported host
(Python 3.10+ stdlib, no dependencies):

bash
python3 install_skill.py --skill remove-ai-marks --target claude-code


| Host | Target | Lands in |
| --- | --- | --- |
| Claude Code (personal) | --target claude-code | ~/.claude/skills/ (honors CLAUDE_CONFIG_DIR) |
| Claude Code (project) | --target claude-project --project-dir PATH | PATH/.claude/skills/ |
| Codex (personal) | --target codex | ~/.agents/skills/ |
| Codex (project) | --target codex-project --project-dir PATH | PATH/.agents/skills/ |
| Cowork, claude.ai, cloud sessions, routines | --target cowork | dist/.zip to upload under Customize → Skills |
| Cursor | --target cursor (default) | ~/.cursor/skills/ |

Shipped skills: remove-ai-marks (full, service-backed) and
clean-user-facing-text (text only, self-contained). --list prints them.
Existing installations are preserved unless you pass --force; replacement is
staged first and the previous install is kept as a uniquely named backup.
--link symlinks this checkout instead of copying, so edits are picked up
live. On Windows, use py install_skill.py ...; the install-skill.sh wrapper
is provided for macOS/Linux shells.

Before writing anything, the installer validates the skill against the
Agent Skills packaging rules that claude.ai uploads
and the Skills API enforce: spec-only frontmatter (na

Top issues

Discussions

Latest release

v0.7.0 — /clean Layer B rewrite, watermark-stealing module, audio/video watermark removal, and benchmark/tooling breadth v0.7.0 2026-09-03
v0.7.0 brings the Layer B statistical-mark rewrite into the /clean service itself, driven by a configurable, benchmark-tuned strategy ([email protected],[email protected]). Alongside it: a black-box watermark-stealing module, destructive audio and per-frame video watermark removal, a substantially richer rewrite benchmark, and a stack of hardening, security, and tooling fixes.

 Layer B rewriting in the service

- /clean now runs the Layer B rewrite for text after Layer A. The default comes from config/clean_strategy.json; a per-request options.strategy overrides it, and /clean rejects with 400 when the re

Snapshot: 2026-11-10T09:35:25Z · Data license Apache-2.0 · JSON