{"id":377557,"date":"2026-09-28T22:56:00","date_gmt":"2026-09-28T22:56:00","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/do-not-disturb-my-comments-ai\/"},"modified":"2026-10-02T00:33:30","modified_gmt":"2026-10-02T00:33:30","slug":"do-not-disturb-my-comments-ai","status":"publish","type":"plugin","link":"https:\/\/sah.wordpress.org\/plugins\/do-not-disturb-my-comments-ai\/","author":18442454,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.2","requires":"4.9","requires_php":"8.0","requires_plugins":null,"header_name":"Do Not Disturb My Comments AI","header_author":"Chidiebere Chukwudi","header_description":"Uses TypeSafe's Jev AI to block spam comments before they're saved to your database.","assets_banners_color":"ffffff","last_updated":"2026-10-02 00:33:30","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/do-not-disturb-my-comments-ai\/","header_author_uri":"https:\/\/chidiebere.me\/about-me\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":69,"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":"jovialcore","date":"2026-09-29 18:15:01","revision":3719599},"1.1.0":{"tag":"1.1.0","author":"jovialcore","date":"2026-10-02 00:33:30","revision":3724025}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3724025,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3724025,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3724025,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3724025,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2353,2656,107,1756,599],"plugin_category":[44,54],"plugin_contributors":[283275],"plugin_business_model":[],"class_list":["post-377557","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-anti-spam","plugin_tags-comments","plugin_tags-moderation","plugin_tags-spam","plugin_category-discussion-and-community","plugin_category-security-and-spam-protection","plugin_contributors-jovialcore","plugin_committers-jovialcore"],"banners":{"banner":"https:\/\/ps.w.org\/do-not-disturb-my-comments-ai\/assets\/banner-772x250.png?rev=3724025","banner_2x":"https:\/\/ps.w.org\/do-not-disturb-my-comments-ai\/assets\/banner-1544x500.png?rev=3724025","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/do-not-disturb-my-comments-ai\/assets\/icon-128x128.gif?rev=3724025","icon_2x":"https:\/\/ps.w.org\/do-not-disturb-my-comments-ai\/assets\/icon-256x256.gif?rev=3724025","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Do Not Disturb My Comments AI reads every new comment and asks an AI model one simple question: is this spam?<\/p>\n\n<p>If the answer is a confident yes, the comment is turned away before it ever reaches your database. You won't find it in your spam folder because it was never saved. If the comment looks genuine, it's approved straight away, so real readers aren't left waiting. If you'd rather read every comment first, you can switch that off.<\/p>\n\n<p>The checking is done by Jev, a decision model made by TypeSafe AI and offered through Cloudflare. Jev doesn't write text. It returns a probability, which makes it fast; usually well under a second.<\/p>\n\n<p>What it does:<\/p>\n\n<ul>\n<li>Blocks comments Jev scores as likely spam, before they're saved<\/li>\n<li>Approves comments Jev considers genuine, so real readers aren't left waiting (you can switch this off)<\/li>\n<li>Skips the check for anyone who can moderate comments, like you and your editors<\/li>\n<li>Leaves WordPress in charge whenever Jev can't be reached, so nothing breaks<\/li>\n<li>Respects your Disallowed Comment Keys. If WordPress already flagged a comment, it stays flagged<\/li>\n<\/ul>\n\n<p>What it looks at when judging a comment:<\/p>\n\n<ul>\n<li>Promotional messages and link dropping<\/li>\n<li>Phishing and scams<\/li>\n<li>Generic praise that has nothing to do with your post<\/li>\n<\/ul>\n\n<h4>What you need<\/h4>\n\n<p>Nothing, for most sites. The plugin comes with a free built-in spam-check service, so there are no accounts or keys to set up.<\/p>\n\n<p>The built-in service checks up to 20 comments a minute for each site. That's far more than most blogs ever get. Comments over that limit aren't lost. They simply go through your normal WordPress moderation.<\/p>\n\n<p>If you'd rather use your own Cloudflare account, you can. You'll need a small prepaid balance on Cloudflare's AI Gateway, because Jev is a third party model and Cloudflare's free Workers AI allowance doesn't cover it.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin sends comments to an outside service to decide whether they're spam. Which service depends on the connection you choose on the settings page. Nothing is sent to either one until a site administrator saves the settings page.<\/p>\n\n<p>After that, a request is made each time someone who can't moderate comments submits a comment. Each request sends:<\/p>\n\n<ul>\n<li>The title of the post being commented on<\/li>\n<li>The commenter's name<\/li>\n<li>The commenter's website address, if they gave one<\/li>\n<li>The comment text<\/li>\n<\/ul>\n\n<p>The commenter's email address and IP address are not sent.<\/p>\n\n<h4>Built-in service (the default)<\/h4>\n\n<p>Comments are sent to the Do Not Disturb My Comments AI spam-check service at <code>https:\/\/dndmc-proxy.chidideveloper.workers.dev\/v1\/check<\/code>. It's run by the plugin author on Cloudflare Workers. The service passes the comment to Jev, a model by TypeSafe AI, through Cloudflare, and sends back only a spam score. Comments are not stored by the service. The service sees your web server's IP address, which it uses to apply the fair use limit.<\/p>\n\n<ul>\n<li>Service terms: <a href=\"https:\/\/chidiebere.me\/2026\/09\/28\/do-not-disturb-my-comments-ai-terms-of-service\/\">Terms of Service<\/a><\/li>\n<li>Service privacy policy: <a href=\"https:\/\/chidiebere.me\/2026\/09\/28\/do-not-disturb-my-comments-ai-privacy-policy\/\">Privacy Policy<\/a><\/li>\n<li>Cloudflare terms: <a href=\"https:\/\/www.cloudflare.com\/terms\/\">Cloudflare Terms<\/a><\/li>\n<li>Cloudflare privacy policy: <a href=\"https:\/\/www.cloudflare.com\/privacypolicy\/\">Cloudflare Privacy Policy<\/a><\/li>\n<li>TypeSafe AI terms: <a href=\"https:\/\/typesafe.ai\/legal\/terms\">TypeSafe AI Terms<\/a><\/li>\n<li>TypeSafe AI privacy policy: <a href=\"https:\/\/typesafe.ai\/legal\/privacy-policy\">TypeSafe AI Privacy Policy<\/a><\/li>\n<\/ul>\n\n<h4>Your own Cloudflare account<\/h4>\n\n<p>Comments are sent straight to Cloudflare's Workers AI API at <code>https:\/\/api.cloudflare.com\/client\/v4\/accounts\/{your-account-id}\/ai\/run<\/code>, which runs them on Jev. Usage is billed to your Cloudflare account. The Cloudflare and TypeSafe AI links above apply.<\/p>\n\n<p>Because comment content is shared with these services, consider mentioning it in your site's privacy policy.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Go to Settings, Do Not Disturb AI Settings.<\/li>\n<li>Leave \"Built-in service\" selected and click Save Changes.<\/li>\n<\/ol>\n\n<p>That's it. New comments from visitors are checked from then on. Nothing is checked until you save the settings page for the first time.<\/p>\n\n<h4>Using your own Cloudflare account instead<\/h4>\n\n<ol>\n<li>In your Cloudflare dashboard, add a small balance under AI Gateway, Credits Available, Manage.<\/li>\n<li>Create an API token with the Workers AI Read permission.<\/li>\n<li>Copy your Cloudflare Account ID. It's the long string in your dashboard URL.<\/li>\n<li>On the plugin's settings page, choose \"My own Cloudflare account\", paste both in, and save.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20a%20real%20comment%20get%20blocked%20by%20mistake%3F\"><h3>Can a real comment get blocked by mistake?<\/h3><\/dt>\n<dd><p>It can happen, though it should be rare. Only comments Jev scores at 85% or higher are blocked. Very short comments, or ones that include a link to the commenter's own site, are the most likely to be misjudged.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20cloudflare%20or%20jev%20is%20down%3F\"><h3>What happens if Cloudflare or Jev is down?<\/h3><\/dt>\n<dd><p>The plugin steps aside. The comment goes through your normal WordPress moderation settings, exactly as if the plugin wasn't installed.<\/p><\/dd>\n<dt id=\"is%20the%20built-in%20service%20really%20free%3F\"><h3>Is the built-in service really free?<\/h3><\/dt>\n<dd><p>Yes. There's a fair use limit of 20 comments a minute per site. Anything over that goes to your normal WordPress moderation.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20my%20own%20cloudflare%20balance%20runs%20out%3F\"><h3>What happens if my own Cloudflare balance runs out?<\/h3><\/dt>\n<dd><p>Requests fail, and comments fall back to normal WordPress moderation. Top up your balance and checking resumes.<\/p><\/dd>\n<dt id=\"will%20it%20publish%20comments%20i%20wanted%20to%20approve%20myself%3F\"><h3>Will it publish comments I wanted to approve myself?<\/h3><\/dt>\n<dd><p>Yes, by default. Comments Jev considers genuine are approved straight away, even if you hold comments for moderation. That also skips the other moderation rules in your Discussion settings, like holding comments with too many links. To read every comment yourself first, untick \"Let the plugin approve genuine comments automatically\" on the settings page, and genuine comments will go through your Discussion settings as usual.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20deactivate%20the%20plugin%3F\"><h3>What happens when I deactivate the plugin?<\/h3><\/dt>\n<dd><p>Spam protection switches off. Your settings are kept, so when you or anyone else reactivates it, just open the settings page and click \"Turn on spam protection\".<\/p><\/dd>\n<dt id=\"are%20my%20own%20comments%20checked%3F\"><h3>Are my own comments checked?<\/h3><\/dt>\n<dd><p>No. Anyone who can moderate comments skips the check.<\/p><\/dd>\n<dt id=\"does%20it%20replace%20akismet%3F\"><h3>Does it replace Akismet?<\/h3><\/dt>\n<dd><p>It can, but it doesn't have to. The two can run side by side.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: \"Let the plugin approve genuine comments automatically\" setting, on by default, with a moderation note explaining what it skips.<\/li>\n<li>New: after activation you're taken to the settings page. Spam protection stays off until you click \"Turn on spam protection\".<\/li>\n<li>Changed: deactivating the plugin switches spam protection off. Your settings are kept.<\/li>\n<li>Improved: smarter spam detection for link building, gambling, filler comments and keyword or number author names.<\/li>\n<li>Improved: sites using their own Cloudflare account now get the same spam rules as the built-in service.<\/li>\n<li>Fixed: links in this readme are now clickable.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Stops spam comments before they&#039;re saved by checking each one with TypeSafe&#039;s Jev AI model through Cloudflare.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/377557","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sah.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sah.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=377557"}],"author":[{"embeddable":true,"href":"https:\/\/sah.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jovialcore"}],"wp:attachment":[{"href":"https:\/\/sah.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=377557"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=377557"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=377557"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=377557"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=377557"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=377557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}