
项目简介
xxd-strip-ai-meta 是一个基于 ExifTool 的图片元数据清理工具,既可以作为独立命令行程序使用,也可以安装为 AI Agent Skill。它能够批量处理本地图片,清理受支持的 C2PA、Content Credentials、OpenAI、gpt-image 来源信息,以及 EXIF、XMP、IPTC 和注释等元数据。
工具默认直接修改原文件,但不会解码或重新编码图片像素。它会保留 ICC 色彩配置和文件修改时间,适合用于隐私保护、内部素材处理和元数据整理。
使用边界:这是元数据清理工具,不能删除画面中肉眼可见的水印,也不能保证清除像素级隐形水印、平台指纹或服务器端记录。请勿使用它误导他人对图片来源的判断。
核心特性
- 递归查找 PNG、JPEG、WebP、TIFF、HEIC、HEIF 和 AVIF 图片。
- 清理受支持的 AI 来源信息以及 EXIF、XMP、IPTC、注释等元数据。
- 默认保留 ICC 色彩配置,减少色彩显示发生变化的风险。
- 保留文件修改时间,不对图片像素进行解码或重新编码。
- 支持同时传入多个文件和目录,并自动去除重叠输入产生的重复项。
- 跳过隐藏子目录和常见缓存目录。
- 默认跳过扩展名与文件头不匹配且已被识别的文件。
- 支持预览、原文件备份、并发批处理、日志、后台运行和清理后验证。
具体格式的元数据写入能力取决于 ExifTool 及对应文件格式。工具只接受本地文件或目录,不直接处理远程链接和压缩包。
安装前提
运行项目需要 Python 3.10 或更高版本,以及已加入系统 PATH 的 ExifTool。项目本身没有第三方 Python 依赖。
1. 安装 ExifTool
macOS 用户可以通过 Homebrew 安装:
brew install exiftoolDebian 或 Ubuntu 用户可以通过系统包管理器安装:
sudo apt install libimage-exiftool-perlWindows 用户可从 ExifTool 官网 下载并安装,然后确保其可执行文件所在目录已经加入 PATH。
2. 检查运行环境
python3 --version
exiftool -verPython 版本应为 3.10 或更高。Windows 环境中的 Python 命令可能是 python,此时应相应替换后续示例中的 python3。
3. 克隆项目
git clone https://github.com/nevertoday/xxd-strip-ai-meta.git
cd xxd-strip-ai-meta以下命令均假设当前目录为仓库根目录。
基础使用流程
第一步:先预览待处理文件
由于默认行为会直接修改原文件,首次操作时应先使用 --dry-run。该参数只列出文件,不执行清理。
python3 scripts/clean_image_provenance.py /path/to/images --dry-run检查输出,确认扫描范围中没有不应处理的图片。如果日志提示文件被跳过或路径不存在,也应先解决这些问题。
第二步:保留备份后清理
确认文件列表无误后,建议首次正式执行时添加 --backup:
python3 scripts/clean_image_provenance.py /path/to/images --backupExifTool 会保留名为 *_original 的原文件备份。确认处理结果满足预期后,再自行决定如何管理这些备份。
第三步:混合处理文件与目录
脚本支持一次传入多个本地文件和目录:
python3 scripts/clean_image_provenance.py \
/path/to/a.png \
/path/to/folder-a \
/path/to/folder-b目录会被递归扫描。若输入路径彼此重叠,工具会自动去重,避免同一文件因重叠路径被重复处理。
常用参数
--dry-run:只预览文件,不执行修改。--backup:保留 ExifTool 生成的原文件备份。--jobs 5:设置并发批次数,默认值为 5;可设置为 1 以降低系统负载。--chunk-size 100:设置每批处理的文件数量,默认值为 100。--log-file PATH:将日志写入指定路径。--background:在后台启动任务,并输出停止任务和查看日志所需的命令;适用于 POSIX shell。--drop-color-profile:同时删除 ICC 色彩配置,但可能影响图片的色彩显示。--no-verify:跳过清理后的元数据来源标记检查。
大批量任务
后台执行
在支持 POSIX shell 的系统上,可以使用后台模式运行耗时较长的任务:
python3 scripts/clean_image_provenance.py /path/to/images --background命令启动后会输出停止任务和查看日志的命令。应保存这些提示,以便后续监控或终止任务。
控制并发与批次大小
默认使用 5 个并发批次,每批最多 100 个文件。若设备资源有限,可将并发数降为 1:
python3 scripts/clean_image_provenance.py /path/to/images \
--jobs 1 \
--chunk-size 100 \
--log-file /path/to/clean-image-meta.log日志不仅用于查看清理失败,还应检查被跳过的文件和不存在的输入路径。退出码为 0 并不一定表示处理了图片,也可能代表没有找到文件。
验证与退出码
默认情况下,脚本会在清理后检查 ExifTool 输出中是否仍有相关来源关键字。该验证仅用于检查元数据标记,不是通用水印检测,也无法判断像素级隐形标记是否存在。
- 退出码
0:没有报告清理失败或残留;也可能没有找到任何文件。 - 退出码
1:发生清理失败。 - 退出码
2:发现残留标记。
如果有特殊原因不需要执行清理后验证,可以使用:
python3 scripts/clean_image_provenance.py /path/to/images --no-verify跳过验证后,工具不会进行上述来源关键字检查,因此应结合日志和其他检查方式确认结果。
高级使用建议
建立更稳妥的处理顺序
- 先对目标路径运行
--dry-run,核对扫描范围。 - 首次正式执行时使用
--backup,保留可恢复的原文件。 - 为大任务指定
--log-file,方便检查失败、跳过和缺失文件。 - 资源紧张时将
--jobs调低至 1,再根据环境调整--chunk-size。 - 根据退出码判断是否存在失败或残留,但不要忽略日志内容。
- 使用图片查看器检查处理后的色彩和可用性,再管理备份文件。
谨慎删除 ICC 色彩配置
默认保留 ICC 配置是为了维持图片的色彩显示。如果确实需要同时删除色彩配置,可以添加:
python3 scripts/clean_image_provenance.py /path/to/images \
--backup \
--drop-color-profile--drop-color-profile 可能改变不同软件或设备中的色彩呈现,因此应先对少量副本进行测试。
理解格式限制
脚本会查找受支持扩展名的文件,但某种格式能否成功写入,仍取决于已安装的 ExifTool 版本及该文件格式本身。遇到失败时,应查看日志和 ExifTool 输出,而不是仅根据扩展名判断兼容性。
安装为 AI Agent Skill
项目也可以放入 AI Agent 的技能目录。以 Claude Code 为例:
git clone https://github.com/nevertoday/xxd-strip-ai-meta.git \
~/.claude/skills/xxd-strip-ai-meta如果目标位置已经存在同名目录,应先备份该目录或改用其他安装位置。Skill 的入口文件为 SKILL.md。Agent 应从安装目录运行脚本,或先解析并使用脚本的绝对路径。
结语
xxd-strip-ai-meta 提供了一个无需第三方 Python 包的批量元数据整理流程。实际使用时,推荐遵循“先预览、再备份、后清理、查日志”的顺序,并明确区分元数据清理、可见水印删除和像素级标记检测。项目采用 MIT 许可证;ExifTool 是单独安装的依赖,遵循其自身许可证。
