
watermarks-remover v0.5.0
एक गोपनीयता-प्रथम ऐप जो आपकी स्वयं की सामग्री से AI वॉटरमार्क हटाता है।
_ _ _ ____ ___ ____ ____ _ _ ____ ____ _ _ ____ ____ ____ _ _ ____ _ _ ____ ____
| | | |__| | |___ |__/ |\/| |__| |__/ |_/ [__ __ |__/ |___ |\/| | | | | |___ |__/
|_|_| | | | |___ | \ | | | | | \ | \_ ___] | \ |___ | | |__| \/ |___ | \
watermarks-remover
एजेंट स्किल + stdlib Python सेवा जो टेक्स्ट और फ़ाइलों से बहु-विक्रेता AI प्रोवेनेंस मार्क्स हटाती है — उस कंटेंट पर गोपनीयता और स्वच्छता के लिए जो आपके स्वामित्व में है। स्किल एक पतला क्लाइंट है: यह मशीनरी को HTTP के ज़रिए चलाता है, इसलिए एजेंट होस्ट को Python की आवश्यकता नहीं है।
| परत | लक्ष्य | कैसे |
|---|---|---|
| A | अदृश्य Unicode, विदेशी स्पेस, bidi, टैग अक्षर | नियतात्मक Python स्क्रिप्ट |
| B | सांख्यिकीय (टोकन-सैंपलिंग) टेक्स्ट वॉटरमार्क | एजेंट रीराइट + वैकल्पिक rewrite_text.py हुक |
| फ़ाइलें | C2PA / EXIF / XMP / doc props | 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-शैली (ग्रीन-लिस्ट) और keyed-Gumbel / EXP (Aaronson) मार्क्स।
नवीनतम रिलीज़: v0.7.0
स्किल पथ: skills/remove-ai-marks/
सेवा पथ: service/
(माइग्रेशन: पहले remove-claude-marks; स्लैश उपनाम /remove-claude-marks अभी भी प्रलेखित)
इंस्टॉल (एजेंट स्किल)
स्किल में कोई कोड नहीं आता — यह सेवा को HTTP के ज़रिए कॉल करती है। स्किल (केवल markdown) इंस्टॉल करें और सेवा शुरू करें, फिर यदि यह http://127.0.0.1:8765 नहीं है तो WATERMARKS_SERVICE_URL सेट करें।
Claude Code में, सबसे तेज़ रास्ता बंडल किया गया plugin marketplace है — कोई क्लोन नहीं, और यह जगह पर ही अपडेट हो जाता है। बाकी हर जगह, एक इंस्टॉलर हर समर्थित होस्ट को कवर करता है (Python 3.10+ stdlib, कोई निर्भरता नहीं):
python3 install_skill.py --skill remove-ai-marks --target claude-code
| Host | Target | Lands in |
|---|---|---|
| Claude Code (personal) | --target claude-code | ~/.claude/skills/<skill> (honors CLAUDE_CONFIG_DIR) |
| Claude Code (project) | --target claude-project --project-dir PATH | PATH/.claude/skills/<skill> |
| Codex (personal) | --target codex | ~/.agents/skills/<skill> |
| Codex (project) | --target codex-project --project-dir PATH | PATH/.agents/skills/<skill> |
| Cowork, claude.ai, cloud sessions, routines | --target cowork | dist/<skill>.zip to upload under Customize → Skills |
| Cursor | --target cursor (default) | ~/.cursor/skills/<skill> |
शिप किए गए स्किल्स: remove-ai-marks (पूर्ण, सेवा-समर्थित) और
clean-user-facing-text (केवल टेक्स्ट, स्व-निहित)। --list इन्हें प्रिंट करता है।
मौजूदा इंस्टॉलेशन तब तक संरक्षित रहते हैं जब तक आप --force पास नहीं करते; प्रतिस्थापन
पहले स्टेज किया जाता है और पिछला इंस्टॉल एक विशिष्ट नाम वाले बैकअप के रूप में रखा जाता है।
--link इस चेकआउट को कॉपी करने के बजाय सिमलिंक करता है, इसलिए संपादन
लाइव रूप से उठाए जाते हैं। Windows पर, py install_skill.py ... का उपयोग करें; install-skill.sh रैपर
macOS/Linux शेल्स के लिए प्रदान किया गया है।
कुछ भी लिखने से पहले, इंस्टॉलर स्किल को
Agent Skills पैकेजिंग नियमों के विरुद्ध मान्य करता है जिन्हें claude.ai अपलोड
और Skills API लागू करते हैं: केवल-स्पेक फ्रंटमैटर (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 में खोलें। टर्मिनल में, किसी skill का चयन करने के लिए /skills का उपयोग करें या $ टाइप करें; डेस्कटॉप ऐप में, अपने prompt में skill का चयन करें या उसका उल्लेख करें। यदि नया skill दिखाई नहीं देता है तो Codex को पुनः आरंभ करें। प्रोजेक्ट इंस्टॉल तब उपलब्ध होता है जब Codex उस प्रोजेक्ट में चलता है।
remove-ai-marks के लिए, skill का उपयोग करने से पहले इस रिपॉज़िटरी से मौजूदा HTTP सेवा को make serve के साथ शुरू करें (या Windows पर make के बिना, py service/scripts/server.py --host 127.0.0.1 --port 8765 चलाएँ)। यह WATERMARKS_SERVICE_URL (डिफ़ॉल्ट http://127.0.0.1:8765) का उपयोग करता है, /health की जाँच करता है, और मौजूदा /inspect और /clean endpoints को कॉल करता है। यदि सेवा को API key की आवश्यकता है, तो client के लिए WATERMARKS_SERVER_API_KEY सेट करें। clean-user-facing-text स्व-निहित है और इसके लिए सेवा की आवश्यकता नहीं है।
Hook के माध्यम से स्वचालित सफ़ाई (deterministic)
एक skill एक निर्देश है: मॉडल तय करता है कि इसे invoke करना है या नहीं, और मॉडल ही वह चीज़ है जो marks उत्पन्न कर रही है। एक hook को harness द्वारा प्रत्येक मेल खाते tool call पर निष्पादित किया जाता है, सहयोग की आवश्यकता नहीं होती। यही hook को इस workflow का deterministic आधा हिस्सा बनाता है।
Plugin Write|Edit|MultiEdit|NotebookEdit पर एक PostToolUse hook रजिस्टर करता है जो उस फ़ाइल के विरुद्ध service/scripts/hook_written_file.py चलाता है जिसे agent ने अभी लिखा है। दो modes, जो check-by-default की pre-commit परंपरा से मेल खाते हैं:
| Mode | व्यवहार |
|---|---|
check (डिफ़ॉल्ट) | provenance marks की रिपोर्ट करता है, फ़ाइल को अछूता छोड़ देता है। निष्कर्ष मॉडल को जाते हैं (exit 2), ताकि यह उन्हें साफ़ करने की पेशकश कर सके। |
clean | marks को यथास्थान हटा देता है, फिर मॉडल को बताता है कि डिस्क पर फ़ाइल बदल गई है। |
Mode को plugin की settings से सेट करें (Hook mode /plugin manage में, जिसे hook CLAUDE_PLUGIN_OPTION_HOOK_MODE के रूप में पढ़ता है), या environment में WATERMARKS_HOOK_MODE=clean के साथ। Hook command जानबूझकर ${user_config.hook_mode} को interpolate नहीं करता: Claude Code ऐसे hook को चलाने से इनकार कर देता है जो किसी ऐसे option का संदर्भ देता है जिसे सेट करने के लिए उपयोगकर्ता ने कभी /plugin manage नहीं खोला — एक घोषित default इसे संतुष्ट नहीं करता — इसलिए इसे interpolate करने का अर्थ होगा कि fresh install पर hook चुपचाप कभी नहीं चलेगा। Detection audit_lib के scan_file / is_actionable का पुनः उपयोग करता है, इसलिए hook, pre-commit gate, और CI SARIF export इस बात पर सहमत होते हैं कि actionable क्या माना जाता है; cleaning clean_file.py को shell out करता है, इसलिए कोई cleaning logic दोहराया नहीं जाता। clean mode एक sibling temp file में लिखता है और केवल वास्तविक अंतर होने पर swap करता है, इसलिए जो फ़ाइलें पहले से साफ़ थीं वे अपनी mtime बनाए रखती हैं और file watchers को दोबारा trigger नहीं करतीं।