关于 watermarks-remover
watermarks-remover 是基于 Python 脚本的 Agent 技能,用于检查和清理文本及文件中的 AI 来源标记。它处理 Unicode 和统计型文本标记、文件元数据及可选的图像水印流程,并按置信度报告发现,区分检查与清理。
主要功能
- 01检查文本和文件来源标记
- 02清理不可见 Unicode 和文本标记
- 03移除支持格式的文件元数据
- 04审计目录和网站站点地图
- 05可选检测或移除图像水印
适用场景
- 01检查并清理获准处理的 Markdown 草稿
- 02清除图像或文档中的来源元数据
- 03审计目录或网站中的来源信号
- 04使用可选后端检查潜在图像水印
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ akillness/ jeo-skills --skill watermarks-remover安装后在 Claude Code 中输入/watermarks-remover确认已加载。
附带文件scripts/watermarks-remover.shreferences/commands.md
详细介绍
水印移除器 — 清除 AI 来源标记
Agent 技能,封装了 guillaumemeyer/watermarks-remover。这是一组仅依赖 Python 标准库的脚本,可从文本(不可见 Unicode 字符、统计采样水印)和文件(C2PA / EXIF / XMP / 文档属性)中移除多个厂商的 AI 来源标记。本工具适用于保护隐私和清理你拥有或获准处理的内容,不适用于学术造假或虚假声称内容由「人工撰写」。
何时使用此技能
- 清除 AI 工具悄悄插入生成文本中的不可见 Unicode 字符、双向控制符、标签字符或奇异空格同形字
- 从 PNG、JPEG、SVG、PDF、DOCX、ODT、HTML 或 Markdown 文件中移除 C2PA 清单、EXIF/XMP AI 来源字段或生成器元数据
- 通过引导式改写,在保留事实、名称和数字的同时,降低 AI 撰写文本中统计(token 采样)水印的信号
- 审计整个目录树或实时网站(通过其站点地图)中的 AI 来源信号,并获取按置信度分类的报告
- 可选:使用项目的外部引导脚本,对图像中的像素域 SynthID 类水印进行评分或移除
何时不要使用此技能
- 用户要求保证某厂商的官方检测器无法检测出来——此工具包只会报告可验证的移除结果,并尽力改写;没有任何本地工具能保证达到该结果
- 移除音频/视频水印,或破坏训练数据后门触发机制——上游项目明确不支持这些用途
- 清除 C2PA 软绑定(一种可将已剥除的文件重新关联到远程 Content Credentials 清单的水印)——剥除硬绑定的 C2PA 元数据并不能清除这一关联
- 用户明确表示要对其不拥有的内容进行学术造假、抄袭或虚假声称内容由「人工撰写」——请根据上游的
skills/remove-ai-marks/references/ethics.md发出警告,并且只对获准处理的内容进行技术清理
说明
步骤 1:克隆仓库并确定脚本目录
git clone --depth 1 https://github.com/guillaumemeyer/watermarks-remover.git
SCRIPTS=watermarks-remover/skills/remove-ai-marks/scripts
此工具包未以 pip 包的形式发布;它作为独立脚本目录使用(仅依赖 Python 3.10+ 标准库)。如果系统中存在 c2patool 和 exiftool,工具会自动检测并使用它们,尤其是在处理 PDF 时。
步骤 2:为输入选择合适的处理层
| 输入 | 路径 |
|---|---|
粘贴的文本 / .txt / 代码 | 文本层 A(inspect_text.py / clean_text.py) |
.md / .html | 容器清理(frontmatter/元数据)+ 层 A |
.png / .jpg / .jpeg | 移除图像元数据(inspect_image.py / clean_image.py) |
.svg / .pdf / .docx / .odt | 移除容器元数据 |
| 混合格式 / 未知格式 | 统一工具 inspect_file.py / clean_file.py(按格式自动路由) |
| 目录 | 使用 audit_dir.py 生成汇总报告 |
| 网站 / 站点地图 | audit_website.py |
默认情况下,文本工具会拒绝二进制输入(检测文件魔数和控制字节),以免将 .docx / .pdf / 图像的压缩字节解码为文本并破坏文件;可以传入 --force-text 覆盖此限制,或者使用会自行正确路由的统一 _file.py 工具。
步骤 3:清理前先检查
python3 "$SCRIPTS/inspect_file.py" --json path/to/input
python3 "$SCRIPTS/inspect_text.py" --json path/or/-
python3 "$SCRIPTS/inspect_image.py" --json image.png
检查结果分为 confirmed / probable / informational / likely_false_positive。清理前,请汇总可疑代码点和 C2PA/AI 标记;不要在没有提示的情况下覆盖原文件。
步骤 4:确定性清理(层 A + 文件元数据)
python3 "$SCRIPTS/clean_text.py" INPUT -o OUTPUT --stats
python3 "$SCRIPTS/clean_file.py" INPUT -o OUTPUT # unified, any supported format
python3 "$SCRIPTS/inspect_file.py" OUTPUT # verify the result
除非用户明确要求原地修改(可使用 --in-place,但此操作具有破坏性),否则请优先写入 *.cleaned.* 输出文件。
步骤 5:始终为散文内容提供 Layer B(统计改写)
完成 Layer A 后,提出改写自然语言内容的步骤,以降低 token 采样水印的信号;不要悄悄跳过:
python3 "$SCRIPTS/rewrite_text.py" draft.md --backend print-prompt --strength paraphrase
print-prompt 是适用于 CI 的默认选项(不会调用模型;只会输出改写提示词,供 Agent 自行运行)。也可以通过环境变量接入本地 Ollama 或兼容 OpenAI 的后端:
export WATERMARKS_REWRITE_BACKEND=ollama
export WATERMARKS_REWRITE_MODEL=llama3.2
python3 "$SCRIPTS/rewrite_text.py" draft.md -o draft.rewritten.md --strength paraphrase
规则:API 密钥只能通过 WATERMARKS_REWRITE_API_KEY 提供(绝不通过 argv);除非明确设置 --allow-remote 或 WATERMARKS_REWRITE_ALLOW_REMOTE=1,否则拒绝非回环端点;优先选择与疑似来源厂商不同的改写模型,以避免重新打上水印。务必告知用户,此步骤会牺牲散文质量(语气/风格)来换取清理效果——请参阅上游 README 的“Disclaimer”部分;此方法尽力而为,绝不是经过认证的绕过方案。
步骤 6:可选的像素域 SynthID 评分 / CtrlRegen 移除
只有当输入是带有疑似像素域水印(SynthID 类、StegaStamp、Tree-Ring、StableSignature)的图像时,才使用这些功能。两者都很重、依赖外部工具,且未捆绑在此仓库中:
# Detection-only score (external aloshdenny/reverse-SynthID checkout)
"$SCRIPTS/setup_synthid.sh"
REVERSE_SYNTHID_DIR=~/reverse-SynthID ~/reverse-SynthID/.venv/bin/python "$SCRIPTS/score_synthid.py" shot.png
# Removal (external mertizci/noai-watermark checkout; conservative default strength 0.25)
"$SCRIPTS/setup_ctrlregen.sh"
NOAI_WATERMARK_DIR=~/noai-watermark ~/noai-watermark/.venv/bin/python \
"$SCRIPTS/clean_ctrlregen.py" shot.png -o shot.ctrlregen.png
预计模型下载量约为 10 GB;CtrlRegen 强烈建议使用 GPU,CPU 运行速度较慢。clean_image.py --remove-pixel ctrlregen 也会在剥离元数据后,将其接入统一的图像处理流水线。CtrlRegen 的后端未附带 LICENSE 文件(按保留所有权利处理),且只会在运行时从用户自己的检出目录加载。
步骤 7:汇总审计目录树或网站
python3 "$SCRIPTS/audit_dir.py" DIR --json
python3 "$SCRIPTS/audit_website.py" --sitemap https://example.com/sitemap.xml --json
python3 "$SCRIPTS/audit_website.py" --base https://example.com --json # auto-discovers the sitemap
audit_website.py 仅使用标准库;对于远程 URL,不会通过 shell 调用 c2patool/exiftool。如需此级别的详细信息,请下载资源并在本地运行 audit_dir.py。
步骤 8:使用封装器进行只读环境检查
bash .agent-skills/watermarks-remover/scripts/watermarks-remover.sh doctor <repo-dir>
bash .agent-skills/watermarks-remover/scripts/watermarks-remover.sh inspect <repo-dir> <file>
bash .agent-skills/watermarks-remover/scripts/watermarks-remover.sh clean <repo-dir> <file> <output>
doctor 只会报告 Python 版本和可选工具(c2patool、exiftool)的可用情况;不会写入磁盘或安装软件包。
最佳实践
- 清理前先检查,清理后再验证——先运行
inspect_*,再运行clean_*,最后对输出运行inspect_file.py。 - 绝不静默覆盖——默认使用
*.cleaned.*输出路径;只有在用户明确要求时才使用--in-place。 - 始终提供 Layer B,但诚实说明其代价——移除统计水印意味着改写文字,而改写会损害语气/风格;应明确说明这种取舍,不要悄悄改写生产文案。
- 优先选择与来源不同的改写模型——用 Claude 改写 Claude 文本(或用 Gemini 改写 Gemini 文本),可能会在输出中重新打上同类水印。
- 如实报告置信度——区分
confirmed/probable结果与informational/likely_false_positive噪声,绝不要声称官方厂商检测器会失效。 - 确定性处理路径不涵盖 C2PA 软绑定及像素/音频/视频标记——只有可选的外部 CtrlRegen 后端能够处理像素域图像标记,即便如此,也只是尽力而为的再生成式移除工具。
- 重型后端须选择启用——除非用户确实需要像素域评分/移除,否则不要运行
setup_synthid.sh/setup_ctrlregen.sh;它们会拉取数 GB 的依赖项和模型。
参考资料
- references/commands.md — 按工作流阶段整理的命令参考
- scripts/watermarks-remover.sh — 只读 doctor,以及精简的检查/清理包装脚本
- 上游仓库:guillaumemeyer/watermarks-remover
- 上游技能:
skills/remove-ai-marks/SKILL.md - 上游伦理说明:
skills/remove-ai-marks/references/ethics.md - 项目标准:
.agent-skills/skill-standardization/SKILL.md
示例
示例 1:清理 Markdown 草稿并验证
git clone --depth 1 https://github.com/guillaumemeyer/watermarks-remover.git
SCRIPTS=watermarks-remover/skills/remove-ai-marks/scripts
python3 "$SCRIPTS/inspect_file.py" --json draft.md
python3 "$SCRIPTS/clean_file.py" draft.md -o draft.cleaned.md
python3 "$SCRIPTS/inspect_file.py" draft.cleaned.md
示例 2:从屏幕截图中移除 C2PA/EXIF,然后检查是否存在像素水印
python3 "$SCRIPTS/inspect_image.py" shot.png
python3 "$SCRIPTS/clean_image.py" shot.png -o shot.cleaned.png
示例 3:在推荐工作流前检查环境
bash .agent-skills/watermarks-remover/scripts/watermarks-remover.sh doctor ~/src/watermarks-remover