업데이트로 돌아가기
New releaseAug 30, 2026

watermarks-remover v0.5.0

소유한 콘텐츠에서 AI 워터마크를 제거하는 프라이버시 우선 앱입니다.

공유
_ _ _ ____ ___ ____ ____ _  _ ____ ____ _  _ ____    ____ ____ _  _ ____ _  _ ____ ____
| | | |__|  |  |___ |__/ |\/| |__| |__/ |_/  [__  __ |__/ |___ |\/| |  | |  | |___ |__/
|_|_| |  |  |  |___ |  \ |  | |  | |  \ | \_ ___]    |  \ |___ |  | |__|  \/  |___ |  \

watermarks-remover

CI Release Stars Forks

텍스트와 파일에서 여러 벤더의 AI 출처 표시를 제거하는 에이전트 스킬 + 표준 라이브러리 Python 서비스 — 본인이 소유한 콘텐츠의 프라이버시와 위생을 위해. 이 스킬은 얇은 클라이언트로, HTTP를 통해 기계를 구동하므로 에이전트 호스트에 Python이 필요하지 않다.

계층대상방법
A보이지 않는 유니코드, 특수 공백, 양방향 문자, 태그 문자결정적 Python 스크립트
B통계적(토큰 샘플링) 텍스트 워터마크에이전트 재작성 + 선택적 rewrite_text.py 훅
파일C2PA / EXIF / XMP / 문서 속성PNG, JPEG, WebP, AVIF, HEIC, BMP, GIF, TIFF, SVG, PDF, DOCX, XLSX, PPTX, EPUB, ODT, HTML, Markdown, MP4/MOV/M4A/M4V, WAV, MP3, FLAC

벤더 / 생태계 (클래스 수준): Claude, Gemini / SynthID-Text, OpenAI 출처 표시 영역, open-LLM Kirchenbauer 방식(그린 리스트) 및 키 기반 Gumbel / EXP (Aaronson) 마크.

최신 릴리스: v0.7.0

스킬 경로: skills/remove-ai-marks/
서비스 경로: service/
(마이그레이션: 이전 명칭 remove-claude-marks; 슬래시 별칭 /remove-claude-marks는 여전히 문서화됨)

설치 (에이전트 스킬)

이 스킬은 코드를 포함하지 않는다 — HTTP를 통해 서비스를 호출한다. 스킬(마크다운만)을 설치하고 서비스를 시작한 다음, http://127.0.0.1:8765가 아니라면 WATERMARKS_SERVICE_URL을 설정하라.

Claude Code에서는 가장 빠른 방법이 번들로 제공되는 플러그인 마켓플레이스이다 — 클론이 필요 없고 제자리에서 업데이트된다. 그 외 환경에서는 하나의 설치 프로그램이 지원되는 모든 호스트를 커버한다 (Python 3.10+ 표준 라이브러리, 의존성 없음):

python3 install_skill.py --skill remove-ai-marks --target claude-code
HostTargetLands in
Claude Code (personal)--target claude-code~/.claude/skills/<skill> (CLAUDE_CONFIG_DIR 적용)
Claude Code (project)--target claude-project --project-dir PATHPATH/.claude/skills/<skill>
Codex (personal)--target codex~/.agents/skills/<skill>
Codex (project)--target codex-project --project-dir PATHPATH/.agents/skills/<skill>
Cowork, claude.ai, cloud sessions, routines--target coworkdist/<skill>.zip을 Customize → Skills에서 업로드
Cursor--target cursor (기본값)~/.cursor/skills/<skill>

제공되는 스킬: remove-ai-marks (전체, 서비스 기반) 및 clean-user-facing-text (텍스트 전용, 자체 포함). --list로 확인할 수 있습니다. 기존 설치는 --force를 전달하지 않는 한 보존됩니다. 교체는 먼저 스테이징되며 이전 설치는 고유한 이름의 백업으로 유지됩니다. --link는 복사 대신 이 체크아웃을 심볼릭 링크하므로 편집 내용이 실시간으로 반영됩니다. Windows에서는 py install_skill.py ...를 사용하세요. install-skill.sh 래퍼는 macOS/Linux 셸용으로 제공됩니다.

무엇이든 작성하기 전에, 설치 프로그램은 claude.ai 업로드 및 Skills API가 강제하는 Agent Skills 패키징 규칙에 따라 스킬을 검증합니다: 스펙 전용 프론트매터 (name, description, license, compatibility, metadata, allowed-tools), 디렉터리와 일치하는 최대 64자의 소문자 하이픈 name, 최대 1024자의 비어 있지 않은 description. Cowork 번들은 추가로 30 MB 업로드 제한에 맞아야 하며, 패키저가 이를 강제합니다.

Codex 터미널 및 데스크톱

제공되는 스킬 중 하나를 사용자용으로 설치하거나, 특정 프로젝트에 설치하세요:

python3 install_skill.py --skill remove-ai-marks --target codex
python3 install_skill.py --skill clean-user-facing-text --target codex
python3 install_skill.py --skill remove-ai-marks --target codex-project --project-dir /path/to/project

Windows에서는 python3 대신 py를 사용하세요. Codex에서 프로젝트를 여세요. 터미널에서는 /skills를 사용하거나 $를 입력하여 스킬을 선택하세요. 데스크톱 앱에서는 프롬프트에서 스킬을 선택하거나 언급하세요. 새 스킬이 나타나지 않으면 Codex를 재시작하세요. 프로젝트 설치본은 Codex가 해당 프로젝트에서 실행될 때 사용할 수 있습니다.

remove-ai-marks의 경우, 스킬을 사용하기 전에 이 저장소에서 make serve로 기존 HTTP 서비스를 시작하세요(또는 make가 없는 Windows에서는 py service/scripts/server.py --host 127.0.0.1 --port 8765를 실행하세요). 이는 WATERMARKS_SERVICE_URL(기본값 http://127.0.0.1:8765)을 사용하고, /health를 확인하며, 기존 /inspect 및 /clean 엔드포인트를 호출합니다. 서비스에 API 키가 필요한 경우 클라이언트에 WATERMARKS_SERVER_API_KEY를 설정하세요. clean-user-facing-text는 자체 포함되어 있으며 서비스가 필요하지 않습니다.

훅을 통한 자동 정리 (결정적)

스킬은 지시사항입니다: 모델이 이를 호출할지 여부를 결정하며, 모델이 바로 마크를 생성하는 주체입니다. 훅은 일치하는 모든 도구 호출에서 하네스에 의해 실행되며, 협조가 필요하지 않습니다. 이로 인해 훅은 이 워크플로의 결정적 절반이 됩니다.

플러그인은 Write|Edit|MultiEdit|NotebookEdit에 PostToolUse 훅을 등록하여 에이전트가 방금 작성한 파일에 대해 service/scripts/hook_written_file.py를 실행합니다. 기본적으로 검사하는 pre-commit 관례에 맞춘 두 가지 모드가 있습니다:

모드동작
check (기본값)출처 마크를 보고하고 파일은 그대로 둡니다. 발견 사항은 모델에게 전달되어(종료 코드 2) 정리를 제안할 수 있습니다.
clean마크를 제자리에서 제거한 후, 디스크의 파일이 변경되었음을 모델에게 알립니다.

플러그인의 설정(/plugin manage의 Hook mode, 훅이 CLAUDE_PLUGIN_OPTION_HOOK_MODE로 읽음)에서 모드를 설정하거나, 환경에서 WATERMARKS_HOOK_MODE=clean으로 설정하세요. 훅 명령은 의도적으로 ${user_config.hook_mode}를 보간하지 않습니다: Claude Code는 사용자가 /plugin manage를 열어 설정한 적 없는 옵션을 참조하는 훅 실행을 거부합니다 — 선언된 default로는 이를 충족하지 못합니다 — 따라서 이를 보간하면 새로 설치한 환경에서 훅이 조용히 실행되지 않게 됩니다. 탐지는 audit_lib의 scan_file / is_actionable을 재사용하므로, 훅, pre-commit 게이트, CI SARIF 내보내기가 무엇이 조치 가능한지에 대해 일치합니다; 정리는 clean_file.py를 호출하므로 정리 로직이 중복되지 않습니다. clean 모드는 형제 임시 파일에 작성하고 실제 차이가 있을 때만 교체하므로, 이미 깨끗했던 파일은 mtime을 유지하고 파일 감시자를 다시 트리거하지 않습니다.

플러그인 없이 사용하려면 ~/.claude/settings.json(또는 프로젝트 .claude/settings.json)에 직접 연결하세요:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit|MultiEdit|NotebookEdit",
        "hooks": [
          {
            "type": "command",
            "command": "python3",
            "args": ["/path/to/watermarks-remover/service/scripts/hook_written_file.py",
                     "--mode", "check"],
            "timeout": 30
          }
        ]
      }
    ]
  }
}

Windows에서는 python3를 py로 바꾸세요.

훅이 할 수 없는 일. 어떤 훅도 당신이 읽기 전에 어시스턴트의 채팅 메시지를 다시 쓸 수 없습니다. Claude Code의 Stop 훅은 last_assistant_message를 읽기 전용으로 받으며, 최종 응답에 대한 사전 전송 필터는 없습니다 — 이는 이 프로젝트가 이미 Cursor 규칙에 대해 문서화한 것과 동일한 한계입니다. 따라서 결정론적 보장은 에이전트가 작성하는 파일과 git으로 들어가는 모든 것에 대한 pre-commit 게이트를 포괄합니다. 채팅 기록에만 존재하는 텍스트는 여전히 스킬 워크플로에 의존하며, 이는 모델 지시 기반이므로 최선 노력 방식입니다.

Claude Code 플러그인 (마켓플레이스)

이 저장소는 Claude Code 플러그인이자 단일 플러그인 마켓플레이스(.claude-plugin/)이기도 하므로, 두 스킬 모두 두 개의 명령으로 설치 및 업데이트할 수 있으며 클론이나 스크립트가 필요 없습니다:

/plugin marketplace add guillaumemeyer/watermarks-remover
/plugin install watermarks-remover@watermarks-remover

스킬은 그다음 네임스페이스가 지정된 형태로 로드됩니다: /watermarks-remover:remove-ai-marks 그리고 /watermarks-remover:clean-user-facing-text (다른 것이 그 이름을 차지하지 않으면 그냥 /remove-ai-marks도 작동합니다). /plugin marketplace update watermarks-remover는 이후 버전을 가져옵니다. CLI에서도 claude plugin marketplace add … / claude plugin install …로 동일하게 작동하며, 로컬 체크아웃에서는 owner/repo 대신 경로를 전달하여 사용할 수 있습니다.

유지관리자: make plugin-validate는 두 매니페스트에 대해 claude plugin validate . --strict를 실행합니다; tests/test_plugin_manifest.py는 CLI 없이도 동일한 파일을 검사합니다.

Claude Code

# Personal — available in all your projects
python3 install_skill.py --skill remove-ai-marks --target claude-code
# or: make install-claude-code-skill

# Project — commit .claude/skills/ to share it with the repo
python3 install_skill.py --skill remove-ai-marks --target claude-project \
  --project-dir /path/to/project
# or: make install-claude-project-skill PROJECT=/path/to/project

카테고리