StackMap
Subscribe
Explore / watermarks-remover
guillaumemeyer

watermarks-remover

Agent skill plus local service that strips AI provenance marks: invisible Unicode and bidi characters, statistical text watermarks, and C2PA/EXIF/XMP metadata across 20+ file formats.

17,432 2,005 Python MITupdated yesterday
View on GitHubDispute this mapping →
Curator's take

Useful for a real hygiene problem: agent-written files quietly carry zero-width characters, exotic spaces and tag chars that break diffs, grep and downstream parsers, and a `PostToolUse` hook can check or clean every file the agent writes — deterministic, because the harness runs it rather than the model choosing to. The skill ships no code and drives a stdlib-only local service over HTTP, so the agent host needs no Python. Be clear-eyed about the rest: statistical watermark removal (SynthID-text, green-list, Gumbel) means an LLM rewrite pass, which is best-effort rather than guaranteed, and stripping C2PA is provenance destruction — the README scopes it to content you own, and that scoping is doing a lot of work.

Mapped by ShipWithAI editors · links verified
README.md
_ _ _ ____ ___ ____ ____ _  _ ____ ____ _  _ ____    ____ ____ _  _ ____ _  _ ____ ____
| | | |__|  |  |___ |__/ |\/| |__| |__/ |_/  [__  __ |__/ |___ |\/| |  | |  | |___ |__/
|_|_| |  |  |  |___ |  \ |  | |  | |  \ | \_ ___]    |  \ |___ |  | |__|  \/  |___ |  \

watermarks-remover

CI Release Stars Forks

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.5.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):

python3 install_skill.py --skill remove-ai-marks --target claude-code
Host Target Lands in
Claude Code (personal) --target claude-code ~/.claude/skills/<skill> (honors 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 to upload under Customize → Skills
Cursor --target cursor (default) ~/.cursor/skills/<skill>

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 (name, description, license, compatibility, metadata, allowed-tools), a lowercase hyphenated name of at most 64 characters matching t

Continue your stack

What teams reach for next — and why each earns a place beside watermarks-remover. Ranked by curator confidence.