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": {}}'
典型适用场景
- 隐私敏感内容发布:你用 AI 辅助撰写了一篇文章,希望发布时完全以个人身份出现,不被溯源检测工具关联回 AI 服务商
- AI 工作流中的中间文件处理:用 AI 生成初稿 → 用 watermarks-remover 清洗 → 人工修改润色 → 最终发布(保留人类作者属性)
- 内容二次创作:AI 生成图片后去除 Content Credentials,再用自己的工具处理,避免 Adobe/Meta/Google 的 AI 溯源标签残留在元数据中
- 多 AI 服务混合工作流:同时使用 Claude、GPT、Gemini 的输出,用同一工具统一清洗
- MCP Agent 隐私保护:Grok 等 Agent 工具调用
/remove-ai-marksskill,自动在对外输出前清洗痕迹
坑与注意
⚠️ 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 按需开启。