
watermarks-remover v0.5.0
Un'app che mette al primo posto la privacy e rimuove le filigrane AI dai contenuti di tua proprietà.
_ _ _ ____ ___ ____ ____ _ _ ____ ____ _ _ ____ ____ ____ _ _ ____ _ _ ____ ____
| | | |__| | |___ |__/ |\/| |__| |__/ |_/ [__ __ |__/ |___ |\/| | | | | |___ |__/
|_|_| | | | |___ | \ | | | | | \ | \_ ___] | \ |___ | | |__| \/ |___ | \
watermarks-remover
Skill per agent + servizio Python basato sulla stdlib per rimuovere marcatori di provenienza AI multi-vendor da testo e file — per privacy e igiene su contenuti di tua proprietà. Lo skill è un thin client: pilota il motore via HTTP, quindi l'host dell'agent non necessita di Python.
| Livello | Obiettivo | Come |
|---|---|---|
| A | Unicode invisibile, spazi esotici, bidi, tag chars | Script Python deterministici |
| B | Watermark testuali statistici (token-sampling) | Riscrittura dell'agent + hook opzionale rewrite_text.py |
| File | 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 |
Vendor / ecosistemi (a livello di classe): Claude, Gemini / SynthID-Text, superfici di provenienza OpenAI, watermark open-LLM in stile Kirchenbauer (green-list) e keyed-Gumbel / EXP (Aaronson).
Ultima release: v0.7.0
Percorso dello skill: skills/remove-ai-marks/
Percorso del servizio: service/
(migrazione: precedentemente remove-claude-marks; l'alias slash /remove-claude-marks è ancora documentato)
Installazione (skill per agent)
Lo skill non include codice — chiama il servizio via HTTP. Installa lo skill (solo markdown) e avvia il servizio, poi imposta WATERMARKS_SERVICE_URL se non è http://127.0.0.1:8765.
In Claude Code, la via più rapida è il plugin marketplace incluso — nessun clone, e si aggiorna sul posto. Ovunque altro, un singolo installer copre ogni host supportato (Python 3.10+ stdlib, nessuna dipendenza):
python3 install_skill.py --skill remove-ai-marks --target claude-code
| Host | Target | Lands in |
|---|---|---|
| Claude Code (personale) | --target claude-code | ~/.claude/skills/<skill> (rispetta CLAUDE_CONFIG_DIR) |
| Claude Code (progetto) | --target claude-project --project-dir PATH | PATH/.claude/skills/<skill> |
| Codex (personale) | --target codex | ~/.agents/skills/<skill> |
| Codex (progetto) | --target codex-project --project-dir PATH | PATH/.agents/skills/<skill> |
| Cowork, claude.ai, sessioni cloud, routine | --target cowork | dist/<skill>.zip da caricare in Customize → Skills |
| Cursor | --target cursor (predefinito) | ~/.cursor/skills/<skill> |
Skill incluse: remove-ai-marks (completa, con supporto al servizio) e
clean-user-facing-text (solo testo, autonoma). --list le stampa.
Le installazioni esistenti vengono preservate a meno che non si passi --force; la sostituzione viene
preparata prima e l'installazione precedente viene conservata come backup con un nome univoco.
--link crea un symlink a questo checkout invece di copiarlo, così le modifiche vengono recepite
in tempo reale. Su Windows, usa py install_skill.py ...; il wrapper install-skill.sh è
fornito per le shell macOS/Linux.
Prima di scrivere qualsiasi cosa, l'installer convalida la skill rispetto alle
regole di packaging di Agent Skills che gli upload su claude.ai
e la Skills API applicano: frontmatter conforme alla specifica (name, description,
license, compatibility, metadata, allowed-tools), un
name in minuscolo con trattini di lunghezza massima 64 caratteri che corrisponda alla directory, una
description non vuota di lunghezza massima 1024 caratteri. Il bundle Cowork deve inoltre
rispettare il limite di upload di 30 MB, che il packager applica.
Terminale e desktop Codex
Installa una delle skill incluse per il tuo utente, oppure installane una in un progetto specifico:
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
Su Windows, usa py al posto di python3. Apri il progetto in Codex. Nel
terminale, usa /skills o digita $ per selezionare una skill; nell'app desktop,
seleziona o menziona la skill nel tuo prompt. Riavvia Codex se la nuova skill non
compare. L'installazione del progetto è disponibile quando Codex viene eseguito in quel progetto.
Per remove-ai-marks, avvia il servizio HTTP esistente da questo repository
con make serve prima di usare la skill (o su Windows senza make, esegui
py service/scripts/server.py --host 127.0.0.1 --port 8765). Usa
WATERMARKS_SERVICE_URL (predefinito http://127.0.0.1:8765), controlla /health,
e chiama gli endpoint esistenti /inspect e /clean. Se il servizio
richiede una chiave API, imposta WATERMARKS_SERVER_API_KEY per il client.
clean-user-facing-text è
autonomo e non necessita del servizio.
Pulizia automatica tramite hook (deterministica)
Una skill è un'istruzione: il modello decide se invocarla, e il modello è ciò che produce i marcatori. Un hook viene eseguito dall'harness a ogni chiamata di strumento corrispondente, senza necessità di cooperazione. Questo rende l'hook la metà deterministica di questo flusso di lavoro.
Il plugin registra un hook PostToolUse su Write|Edit|MultiEdit|NotebookEdit
che esegue service/scripts/hook_written_file.py
sul file appena scritto dall'agente. Due modalità, in linea con la convenzione
pre-commit del controllo per impostazione predefinita:
| Modalità | Comportamento |
|---|---|
check (predefinita) | Segnala i marcatori di provenienza, lasciando il file invariato. I risultati vanno al modello (uscita 2), così può proporre di pulirli. |
clean | Rimuove i marcatori sul posto, poi informa il modello che il file su disco è cambiato. |