guillaumemeyer/watermarks-remover · 上手攻略

  • 仓库:guillaumemeyer/watermarks-remover
  • 链接:https://github.com/guillaumemeyer/watermarks-remover
  • 分类:skill / privacy
  • 作者:Tom
  • 更新:2026-08-22

这是什么

watermarks-remover 是一个多层级 AI 溯源标记清除工具,旨在从文本和文件中移除各大 AI 服务商嵌入的 provenance(水印/元数据)。它的目标用户是希望保护自己内容隐私的个人和团队,以及需要在 AI 工作流中处理混合内容的开发者

工具分为三个处理层级:

层级 目标 处理方式
Layer A 不可见 Unicode 字符(零宽空格、方向控制符、标签字符、空格同形字) 确定性 Python 脚本
Layer B 统计采样类文本水印(token-sampling watermark,如 Claude seam、Gemini SynthID-Text 类) Agent 重写 + 可选 rewrite_text.py hook
File Layer C2PA/EXIF/XMP 等文件元数据(PNG、JPEG、PDF、DOCX、SVG、HTML 等) Python stdlib + 外部工具(c2patool、exiftool、qpdf)

支持的 AI 水印类别:Claude 系列、 Gemini / SynthID-Text、OpenAI provenance surfaces、open-LLM(Kirchenbauer 风格 / keyed-Gumbel / EXP/Aaronson)。

最新版本:v0.5.0

⚠️ 版本说明:v0.5.0 发布于 2025 年中后期,具体发布日期未经独立核验,以 GitHub Releases 页为准。

解决什么问题

当你使用 AI 工具(Claude、GPT、Gemini 等)生成文本或处理图片后,这些内容可能包含:

  • 不可见字符:AI 生成文本常被嵌入零宽空格或 bidi 控制符,用来追踪来源或破坏文本处理工具
  • 统计水印:部分 AI 服务会在 token 采样过程中留下可被检测到的统计分布偏差(SynthID-Text 类)
  • C2PA/EXIF 元数据:AI 处理过的图片和 PDF 会携带内容凭证(Content Credentials),记录「此文件由某 AI 生成」
  • 文件属性:Word/PDF 文档的创建工具、修改历史等元数据

watermarks-remover 将以上这些「AI 溯源痕迹」分层清除,让你对自己的内容拥有完整所有权,不被外部检测工具关联回特定的 AI 服务商。

快速安装

方式一:Grok Skill(最简,推荐用于 Agent 场景)

# 项目本地 Grok skill
mkdir -p .grok/skills
ln -sfn "$(pwd)/skills/remove-ai-marks" .grok/skills/remove-ai-marks

# 用户全局 Grok skill
mkdir -p ~/.grok/skills
ln -sfn "$(pwd)/skills/remove-ai-marks" ~/.grok/skills/remove-ai-marks

调用方式:Grok 中输入 /remove-ai-marks 或直接说「strip AI watermarks」。

方式二:Cursor Skill(文档/手稿场景)

git clone https://github.com/guillaumemeyer/watermarks-remover.git
cd watermarks-remover
python3 install_skill.py   # macOS/Linux
py install_skill.py        # Windows

方式三:本地 Python HTTP 服务(核心用法)

git clone https://github.com/guillaumemeyer/watermarks-remover.git
cd watermarks-remover

# 启动服务(Python 3.10+,纯 stdlib,无需 Docker)
make serve
# 监听 http://127.0.0.1:8765

# 或直接运行
python3 service/scripts/server.py --host 127.0.0.1 --port 8765

可选外部工具(建议安装,提升处理能力)

工具 作用
c2patool 解析和剥离 C2PA manifests
exiftool 深度清除 PDF 等文件的残留元数据
qpdf PDF 结构重建(完整清除 PDF 水印必须)

核心用法

命令行直接处理

SCRIPTS=service/scripts

# 统一 inspect + clean(自动识别格式)
python3 "$SCRIPTS/inspect_file.py" draft.md
python3 "$SCRIPTS/clean_file.py" draft.md -o draft.cleaned.md
python3 "$SCRIPTS/clean_file.py" photo.png -o photo.cleaned.png
python3 "$SCRIPTS/clean_file.py" notes.docx -o notes.cleaned.docx

# Layer A:仅文本清洗(Unicode 类)
python3 "$SCRIPTS/clean_text.py" draft.md -o draft.cleaned.md --stats

# Layer B:统计水印重写(需要模型,默认 print-prompt 不调用模型)
python3 "$SCRIPTS/rewrite_text.py" draft.md --backend print-prompt --strength paraphrase

# Layer B + Ollama 本地模型(可选,需 WATERMARKS_REWRITE_ALLOW_REMOTE=1)
WATERMARKS_REWRITE_BACKEND=ollama \
WATERMARKS_REWRITE_MODEL=llama3.2 \
python3 "$SCRIPTS/rewrite_text.py" draft.md -o draft.rewritten.md

# 图片清洗
python3 "$SCRIPTS/inspect_image.py" shot.png
python3 "$SCRIPTS/clean_image.py" shot.png -o shot.cleaned.png

⚠️ Layer B 模型调用说明:默认 --backend print-prompt 只打印重写提示词,不实际调用模型。若需实际重写,需配置 Ollama 或 OpenAI 兼容 API。API key 通过环境变量 WATERMARKS_REWRITE_API_KEY 传入(不在命令行参数中暴露)。

HTTP API

启动服务后(默认 http://127.0.0.1:8765),可用以下接口:

# 健康检查
curl http://127.0.0.1:8765/health

# 检查文件(Base64 编码)
curl -X POST http://127.0.0.1:8765/inspect \
  -H "Content-Type: application/json" \
  -d '{"file": "<base64>", "name": "notes.md"}'

# 清除水印
curl -X POST http://127.0.0.1:8765/clean \
  -H "Content-Type: application/json" \
  -d '{"file": "<base64>", "name": "notes.md", "options": {}}'

典型适用场景

  1. 隐私敏感内容发布:你用 AI 辅助撰写了一篇文章,希望发布时完全以个人身份出现,不被溯源检测工具关联回 AI 服务商
  2. AI 工作流中的中间文件处理:用 AI 生成初稿 → 用 watermarks-remover 清洗 → 人工修改润色 → 最终发布(保留人类作者属性)
  3. 内容二次创作:AI 生成图片后去除 Content Credentials,再用自己的工具处理,避免 Adobe/Meta/Google 的 AI 溯源标签残留在元数据中
  4. 多 AI 服务混合工作流:同时使用 Claude、GPT、Gemini 的输出,用同一工具统一清洗
  5. MCP Agent 隐私保护:Grok 等 Agent 工具调用 /remove-ai-marks skill,自动在对外输出前清洗痕迹

坑与注意

⚠️ Layer B 统计水印清除是「最佳努力」而非「保证清除」:SynthID-Text 类水印的检测和清除是活跃研究领域,工具不能 100% 保证清除干净。README 明确标注 Google 已于 2026 年 8 月停用自己的检测 API——意味着部分 SynthID 类水印的官方检测通道已关闭,清除效果更难独立验证。

⚠️ PDF 清除需要 qpdf:纯 stdlib 脚本无法完全清除 PDF 水印,必须安装 qpdf 才能完成结构级清除。没有 qpdf 的情况下,PDF 处理结果不完整。

⚠️ Layer A 清洗是确定性的,B 不是:Unicode 字符清除(Layer A)由脚本精确执行,效果可复现;统计重写(Layer B)依赖 AI 模型,结果有随机性,且重写后的文本语义可能与原文有偏差,需要人工校验。

⚠️ 二进制文件不能直接传给文本脚本inspect_text.py 等文本脚本已内置二进制拒绝逻辑。如果误传 .docx 等二进制文件给文本脚本,工具会报错并告诉你用 inspect_file.py。这是 v0.5.0 的安全加固改动,防止文件被误写回损坏的二进制内容。

⚠️ Skill 安装需要手动软链接install_skill.py 不会自动创建 .grok/skills 目录,需要先 mkdir -p 再运行脚本。

⚠️ 水印检测 ≠ 法律意义:清除水印不等于清除版权归属。AI 服务商可能在服务条款中对 AI 生成内容的权利另有约定,清洗溯源标记不改变这些合同条款的约束力。

与同类对比

工具 处理层级 多厂商支持 HTTP API Agent Skill
watermarks-remover Layer A + B + File ✅ Claude/Gemini/OpenAI/open-LLM ✅ Grok/Cursor
remove-claude-marks(旧版) 仅 Claude
c2patool(官方) 仅 C2PA ⚠️ 仅 C2PA 标准
MarkLLM 水印检测(不解清除) ✅ 多种
Towards AI 文章方案 手动编辑

核心差异watermarks-remover 是目前支持最广泛的 AI 溯源清除工具,不仅清除 Claude,还覆盖 Gemini/SynthID、OpenAI、open-LLM 三大家族,同时支持文件元数据(C2PA/EXIF)和不可见 Unicode 字符,是同类中覆盖层级最完整的开源方案。

一句话推荐结论

如果你在 AI 工作流中需要对自己生成的内容拥有完整所有权、不希望被溯源检测工具关联回特定 AI 服务商,watermarks-remover 是目前最实用、最多厂商覆盖的开源选择——安装简单、Layer A 零门槛可用,Layer B 按需开启。