Pitch: no-watermark: seu texto pode ja estar marcado, um jeito de checar
A Anthropic confirmou: o Claude agora embute um watermark imperceptivel direto no texto que gera. Segundo o proprio artigo do help center deles, "voce nao vai ver, e isso nao muda o sentido, qualidade ou legibilidade". A marca sobrevive a copiar e colar, e cobre o app do Claude, Claude Code, Claude Cowork, Claude Tag, a API, e as integracoes com AWS, Google Cloud e Microsoft Foundry, no mundo todo. Arquivos ganham metadata de proveniencia assinada no padrao C2PA. O motivo e a Anthropic ter assinado o Article 50(2) do EU AI Act, o Code of Practice on Transparency of AI-Generated Content. Modelos lancados a partir de 2 de agosto de 2026 ja saem com isso ativo, e modelos anteriores estao recebendo a marca aos poucos.
Isso nao e exclusividade do Claude. Watermark por caractere invisivel ja circula em texto de IA ha um tempo: zero-width space, zero-width joiner, variation selectors, encoding em tag-block, controles de bidi, espacos Unicode fora do padrao. Nada disso aparece na tela. Tudo isso sobrevive quando voce cola o texto num documento, numa descricao de PR, num email pro cliente.
Escrevi o no-watermark pra inspecionar e remover essa camada via normalizacao deterministica de caracteres, sem modelo nenhum tentando adivinhar padrao.
O que ele remove
- Caracteres de formatacao: zero-width space/joiner/non-joiner, word joiner, BOM, controles bidi
- Variation selectors (U+FE00-FE0F, U+E0100-E01EF)
- Tag block (U+E0000-E007F)
- Espacos anomalos: as 16 variantes nao-ASCII da categoria Unicode "Zs", normalizadas pra espaco comum
- Variantes de quebra de linha: NEL, LINE SEPARATOR, PARAGRAPH SEPARATOR, convertidas pra newline
- Soft hyphen, Mongolian vowel separator, combining grapheme joiner
Alem da camada de caracteres invisiveis, ele tambem ataca tells estilisticos que denunciam texto de IA pra detectores: travessao em excesso, estrutura formulaica.
Guarda de seguranca
Zero-width joiner tambem e o mecanismo por tras de sequencias legitimas de emoji (familia, casal, bandeira), e ZWNJ tem uso linguistico real em scripts indicos. Os dois ficam preservados por padrao. Da pra passar --no-emoji-guard se quiser remocao incondicional.
O que ele nao faz
A propria Anthropic admite que a marca deles nao prova autoria, so sinaliza que o texto "pode ter passado pelo Claude", e some com edicao pesada, paráfrase ou traducao. Minha ferramenta tem um limite parecido: watermarking estatistico por distribuicao de tokens, tipo green/red list do Kirchenbauer, fica fora do escopo. Esse tipo de marca nao e um conjunto de caracteres extras, e um vies em qual token foi escolhido durante a geracao, e remover isso exige parafrasear o texto, nao normalizar caractere.
Uso
pip install -e .
nowatermark detect suspeito.txt
nowatermark clean suspeito.txt -o limpo.txt --report
echo "texto" | nowatermark clean -
Python, testado com pytest, licenca MIT. Tem uma skill do Claude Code junto, pra rodar deteccao direto de dentro de uma conversa e ver o que realmente ta embutido no texto que voce ta usando.
Ta em estagio inicial, funcional, e o cenario de marcacao invisivel acabou de ficar bem mais comum. Repo em https://github.com/obrenoalvim/no-watermark, issues e PRs sao bem-vindas. Ja checou o que pode estar escondido no texto que voce copiou de uma IA recentemente?
Ps.: Desenvolvo o BloodLink, plataforma gratuita que conecta doadores de sangue a campanhas de doacao. Se quiser conhecer, vale a visita.