Voltar às atualizações
New releaseAug 30, 2026

watermarks-remover v0.5.0

Um aplicativo com foco em privacidade que remove marcas d'água de IA de conteúdo que você possui.

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

watermarks-remover

CI Release Stars Forks

Skill de agente + serviço Python stdlib para remover marcas de proveniência de IA de múltiplos fornecedores de textos e arquivos — para privacidade e higiene em conteúdo que você possui. A skill é um cliente leve: ela controla a maquinaria via HTTP, então o host do agente não precisa de Python.

CamadaAlvoComo
AUnicode invisível, espaços exóticos, bidi, caracteres de tagScripts Python determinísticos
BMarcas d'água estatísticas (amostragem de tokens) em textoReescrita pelo agente + hook opcional rewrite_text.py
ArquivosC2PA / EXIF / XMP / propriedades de documentosPNG, JPEG, WebP, AVIF, HEIC, BMP, GIF, TIFF, SVG, PDF, DOCX, XLSX, PPTX, EPUB, ODT, HTML, Markdown, MP4/MOV/M4A/M4V, WAV, MP3, FLAC

Fornecedores / ecossistemas (nível de classe): Claude, Gemini / SynthID-Text, superfícies de proveniência da OpenAI, marcas open-LLM estilo Kirchenbauer (green-list) e keyed-Gumbel / EXP (Aaronson).

Última versão: v0.7.0

Caminho da skill: skills/remove-ai-marks/
Caminho do serviço: service/
(migração: anteriormente remove-claude-marks; o alias de barra /remove-claude-marks ainda está documentado)

Instalação (skill de agente)

A skill não inclui código — ela chama o serviço via HTTP. Instale a skill (apenas markdown) e inicie o serviço, depois defina WATERMARKS_SERVICE_URL se ele não for http://127.0.0.1:8765.

No Claude Code, o caminho mais rápido é o marketplace de plugins incluído — sem clonar, e ele se atualiza no local. Em todos os outros lugares, um único instalador cobre todos os hosts suportados (Python 3.10+ stdlib, sem dependências):

python3 install_skill.py --skill remove-ai-marks --target claude-code
HostTargetLands in
Claude Code (pessoal)--target claude-code~/.claude/skills/<skill> (honors CLAUDE_CONFIG_DIR)
Claude Code (projeto)--target claude-project --project-dir PATHPATH/.claude/skills/<skill>
Codex (pessoal)--target codex~/.agents/skills/<skill>
Codex (projeto)--target codex-project --project-dir PATHPATH/.agents/skills/<skill>
Cowork, claude.ai, cloud sessions, routines--target coworkdist/<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 the directory, a non-empty description of at most 1024 characters. The Cowork bundle additionally has to fit the 30 MB upload limit, which the packager enforces.

Codex terminal and desktop

Install either shipped skill for your user, or install one into a particular project:

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

No Windows, use py em vez de python3. Abra o projeto no Codex. No terminal, use /skills ou digite $ para selecionar uma skill; no aplicativo desktop, selecione ou mencione a skill no seu prompt. Reinicie o Codex se a nova skill não aparecer. A instalação do projeto fica disponível quando o Codex é executado nesse projeto.

Para remove-ai-marks, inicie o serviço HTTP existente deste repositório com make serve antes de usar a skill (ou no Windows sem make, execute py service/scripts/server.py --host 127.0.0.1 --port 8765). Ele usa WATERMARKS_SERVICE_URL (padrão http://127.0.0.1:8765), verifica /health e chama os endpoints existentes /inspect e /clean. Se o serviço exigir uma chave de API, defina WATERMARKS_SERVER_API_KEY para o cliente. clean-user-facing-text é autocontido e não precisa do serviço.

Limpeza automática via hook (determinística)

Uma skill é uma instrução: o modelo decide se deve invocá-la, e o modelo é quem produz as marcas. Um hook é executado pelo harness em cada chamada de ferramenta correspondente, sem necessidade de cooperação. Isso torna o hook a metade determinística deste fluxo de trabalho.

O plugin registra um hook PostToolUse em Write|Edit|MultiEdit|NotebookEdit que executa service/scripts/hook_written_file.py no arquivo que o agente acabou de escrever. Dois modos, seguindo a convenção de pré-commit de verificação por padrão:

ModoComportamento
check (padrão)Relata marcas de proveniência, deixa o arquivo intacto. Os achados vão para o modelo (exit 2), para que ele possa oferecer limpá-los.
cleanRemove as marcas no local e informa ao modelo que o arquivo em disco mudou.

Defina o modo nas configurações do plugin (Hook mode em /plugin manage, lido pelo hook como CLAUDE_PLUGIN_OPTION_HOOK_MODE), ou com WATERMARKS_HOOK_MODE=clean no ambiente. O comando do hook deliberadamente não interpola ${user_config.hook_mode}: o Claude Code se recusa a executar um hook que referencia uma opção que o usuário nunca abriu /plugin manage para definir — um default declarado não satisfaz isso — então interpolá-lo faria com que o hook silenciosamente nunca fosse executado em uma instalação nova. A detecção reutiliza scan_file / is_actionable do audit_lib, então o hook, o portão de pré-commit e a exportação SARIF do CI concordam sobre o que conta como acionável; a limpeza chama clean_file.py, então nenhuma lógica de limpeza é duplicada. O modo clean grava em um arquivo temporário irmão e troca apenas em caso de diferença real, então arquivos que já estavam limpos mantêm seu mtime e não disparam novamente os observadores de arquivo.

Sem o plugin, configure-o em ~/.claude/settings.json (ou em um .claude/settings.json do projeto) você mesmo:

Categorias