{"id":291304,"date":"2026-03-27T22:28:30","date_gmt":"2026-03-27T22:28:30","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/cloaked-ink\/"},"modified":"2026-03-30T17:40:34","modified_gmt":"2026-03-30T17:40:34","slug":"cloaked-ink","status":"publish","type":"plugin","link":"https:\/\/twd.wordpress.org\/plugins\/cloaked-ink\/","author":23473521,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.1.0","stable_tag":"1.1.0","tested":"6.9.4","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"cloaked.ink","header_author":"cloaked.ink","header_description":"Injects the cloaked.ink content-protection widget loader into your site. Renders CMS content as Canvas-drawn glyphs to prevent copy and scraping.","assets_banners_color":"3b3b3b","last_updated":"2026-03-30 17:40:34","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/cloaked.ink","header_author_uri":"https:\/\/www.cloaked.ink\/docs","rating":0,"author_block_rating":0,"active_installs":0,"downloads":113,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"cloakedink","date":"2026-03-27 22:28:37"},"1.0.1":{"tag":"1.0.1","author":"cloakedink","date":"2026-03-29 19:31:10"},"1.1.0":{"tag":"1.1.0","author":"cloakedink","date":"2026-03-30 17:40:34"}},"upgrade_notice":{"1.1.0":"<p>Full post content is now stripped from HTML responses. Only an excerpt is served; the complete content is rendered as Canvas glyphs by the cloaked.ink widget.<\/p>","1.0.1":"<p>Updated legal page URLs.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3494804,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3494804,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3494804,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3494804,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[181673,258822,18193,258823],"plugin_category":[],"plugin_contributors":[258824,258825],"plugin_business_model":[],"class_list":["post-291304","plugin","type-plugin","status-publish","hentry","plugin_tags-anti-copy","plugin_tags-canvas-rendering","plugin_tags-content-protection","plugin_tags-scraping-prevention","plugin_contributors-cloakedink","plugin_contributors-purekarmalabs","plugin_committers-cloakedink"],"banners":{"banner":"https:\/\/ps.w.org\/cloaked-ink\/assets\/banner-772x250.png?rev=3494804","banner_2x":"https:\/\/ps.w.org\/cloaked-ink\/assets\/banner-1544x500.png?rev=3494804","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/cloaked-ink\/assets\/icon-128x128.png?rev=3494804","icon_2x":"https:\/\/ps.w.org\/cloaked-ink\/assets\/icon-256x256.png?rev=3494804","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>cloaked.ink injects a lightweight script tag into your site that loads the cloaked.ink widget. The widget fetches your CMS content and renders it as Canvas-drawn glyphs \u2014 no text appears in the DOM, so content cannot be selected, copied, or scraped.<\/p>\n\n<p><strong>How it works:<\/strong><\/p>\n\n<ol>\n<li>The plugin strips full post content from the HTML response, serving only a short excerpt<\/li>\n<li>The cloaked.ink widget fetches your content via a secure API and renders it as Canvas graphics<\/li>\n<li>Visitors read your content normally \u2014 but it cannot be selected, copied, or scraped from the page source<\/li>\n<\/ol>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>Zero-config per article \u2014 the widget auto-discovers content containers<\/li>\n<li>Works with any WordPress theme<\/li>\n<li>Lightweight \u2014 single async script tag, no impact on page load speed<\/li>\n<li>Full formatting preserved (headings, paragraphs, lists, links)<\/li>\n<li>Responsive \u2014 adapts to any screen size<\/li>\n<li>Server-side content stripping \u2014 full content never appears in page HTML, RSS feeds, or meta tags<\/li>\n<li>Enable\/disable toggle in settings<\/li>\n<\/ul>\n\n<p><strong>Requirements:<\/strong><\/p>\n\n<ul>\n<li>A cloaked.ink account at <a href=\"https:\/\/cloaked.ink\">cloaked.ink<\/a><\/li>\n<li>A registered WordPress site in the cloaked.ink dashboard<\/li>\n<\/ul>\n\n<p><strong>External Service (required):<\/strong><\/p>\n\n<p>This plugin depends on the <a href=\"https:\/\/cloaked.ink\">cloaked.ink<\/a> hosted service. It loads a JavaScript widget from <code>https:\/\/cdn.cloaked.ink\/w.js<\/code> on every front-end page load. This script is the runtime client for the cloaked.ink SaaS \u2014 it creates a sandboxed iframe that communicates with <code>https:\/\/api.cloaked.ink<\/code> to fetch glyph data and render your content as Canvas graphics. The script cannot be bundled locally because it is versioned and updated as part of the service infrastructure, similar to how Stripe.js, Google reCAPTCHA, and Cloudflare Turnstile operate.<\/p>\n\n<p><strong>Data transmitted to cloaked.ink servers:<\/strong><\/p>\n\n<ul>\n<li>Page URL (to identify which content source to render)<\/li>\n<li>Content source identifier (configured per-site in the cloaked.ink dashboard)<\/li>\n<li>Visitor IP address (hashed server-side for rate limiting, never stored in plaintext)<\/li>\n<\/ul>\n\n<p>No cookies are set. No personal data is collected by the plugin itself.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/www.cloaked.ink\/legal\/terms\">Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/www.cloaked.ink\/legal\/privacy\">Privacy Policy<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<p><strong>From WordPress.org (recommended):<\/strong><\/p>\n\n<ol>\n<li>In WordPress Admin, go to Plugins &gt; Add New Plugin<\/li>\n<li>Search for \"cloaked.ink\"<\/li>\n<li>Click Install Now, then Activate<\/li>\n<li>Go to Settings &gt; cloaked.ink and enter your Site ID from the cloaked.ink dashboard<\/li>\n<\/ol>\n\n<p><strong>From your cloaked.ink dashboard:<\/strong><\/p>\n\n<ol>\n<li>Download the plugin ZIP from your cloaked.ink dashboard (Sites &gt; your site &gt; WordPress Plugin)<\/li>\n<li>In WordPress Admin, go to Plugins &gt; Add New Plugin &gt; Upload Plugin<\/li>\n<li>Upload the ZIP file and click Install Now<\/li>\n<li>Activate the plugin<\/li>\n<\/ol>\n\n<p>The dashboard ZIP comes pre-configured with your site ID. No additional setup is needed after activation.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20affect%20my%20seo%3F\"><h3>Does this affect my SEO?<\/h3><\/dt>\n<dd><p>When the plugin is active, full post content is replaced with a short excerpt (~55 words) in the HTML response. Search engines index the page title, excerpt, and meta description \u2014 enough to rank and appear in search results. The full content is rendered as Canvas graphics for visitors with JavaScript enabled. This follows the same pattern used by paywalled sites like NYT and WSJ, which Google explicitly supports.<\/p><\/dd>\n<dt id=\"can%20i%20disable%20the%20plugin%20temporarily%3F\"><h3>Can I disable the plugin temporarily?<\/h3><\/dt>\n<dd><p>Yes \u2014 go to Settings &gt; cloaked.ink and uncheck the \"Enable cloaked.ink\" checkbox. The script tag will stop being injected.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20page%20builders%3F\"><h3>Does this work with page builders?<\/h3><\/dt>\n<dd><p>Yes. The plugin injects a script tag into the <code>&lt;head&gt;<\/code> and the widget auto-discovers standard content containers (<code>.post-content<\/code>, <code>.entry-content<\/code>, <code>.article-content<\/code>).<\/p><\/dd>\n<dt id=\"does%20this%20affect%20the%20wordpress%20rest%20api%3F\"><h3>Does this affect the WordPress REST API?<\/h3><\/dt>\n<dd><p>No. The WordPress REST API (\/wp-json\/wp\/v2\/posts\/) returns full post content unmodified. The content stripping only applies to the front-end HTML rendered by your theme. The cloaked.ink service uses the REST API to fetch content for Canvas rendering.<\/p><\/dd>\n<dt id=\"what%20do%20visitors%20without%20javascript%20see%3F\"><h3>What do visitors without JavaScript see?<\/h3><\/dt>\n<dd><p>They see a short excerpt of the post content and a message explaining that JavaScript is required to view the full content.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Server-side content stripping \u2014 full post content replaced with excerpt in HTML response<\/li>\n<li>RSS\/Atom feed protection \u2014 feeds serve excerpt-only content<\/li>\n<li>Automatic excerpt generation for SEO plugin compatibility (Yoast, RankMath)<\/li>\n<li>Noscript fallback message for visitors without JavaScript<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix privacy policy and terms of service URLs to point to correct legal pages<\/li>\n<li>Update Author URI to use canonical domain<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Settings page with enable\/disable toggle and site ID field<\/li>\n<li>Script injection via wp_enqueue_scripts with async loading strategy<\/li>\n<\/ul>","raw_excerpt":"Protects your content by rendering it as Canvas graphics instead of HTML text. Prevents copy, paste, and scraping.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/291304","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=291304"}],"author":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/cloakedink"}],"wp:attachment":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=291304"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=291304"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=291304"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=291304"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=291304"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=291304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}