{"id":387678,"date":"2026-10-26T06:38:21","date_gmt":"2026-10-26T06:38:21","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/dropndot-ai-content-checker\/"},"modified":"2026-10-27T05:42:14","modified_gmt":"2026-10-27T05:42:14","slug":"dropndot-ai-content-checker","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/dropndot-ai-content-checker\/","author":14438263,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.3","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Dropndot AI Content Checker","header_author":"Dropndot Solutions","header_description":"Check posts and pages for likely AI-generated text using the GPTZero API. Results are an editorial signal, not proof of authorship.","assets_banners_color":"f4f9fe","last_updated":"2026-10-27 05:42:14","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.dropndot.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":88,"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":"Dropndot","date":"2026-10-26 06:38:11","revision":3765638},"1.1.0":{"tag":"1.1.0","author":"Dropndot","date":"2026-10-27 05:42:14","revision":3767798}},"upgrade_notice":{"1.1.0":"<p>Adds the AI Content Check panel to the Classic Editor.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3767798,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3765688,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3765688,"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":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3765638,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3765638,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3765638,"resolution":"3","location":"assets","locale":"","width":1440,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3765638,"resolution":"4","location":"assets","locale":"","width":1440,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3765638,"resolution":"5","location":"assets","locale":"","width":1440,"height":913},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3765638,"resolution":"6","location":"assets","locale":"","width":1440,"height":1057},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3765638,"resolution":"7","location":"assets","locale":"","width":1440,"height":1249},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3765638,"resolution":"8","location":"assets","locale":"","width":1440,"height":1083},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3765638,"resolution":"9","location":"assets","locale":"","width":1440,"height":900}},"screenshots":{"1":"The \"AI Content Check\" panel in the block editor: classification, class probabilities, confidence and the sentences GPTZero highlighted as AI.","2":"Full text colour-coded by each sentence's AI score.","3":"The \"AI Check\" column on the Posts list.","4":"The AI Check report, opened from the Posts list.","5":"A bulk check running on the Posts list.","6":"Settings \u2192 Connection: encrypted API key, connection test and plan usage.","7":"Settings \u2192 General: content types, multilingual detection, history retention and low credit email alerts.","8":"Settings \u2192 Scan history.","9":"Settings \u2192 Privacy &amp; data: what is sent to GPTZero, and when."}},"plugin_section":[],"plugin_tags":[195933,235494,280833,8485,288582],"plugin_category":[],"plugin_contributors":[229120],"plugin_business_model":[],"class_list":["post-387678","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-content","plugin_tags-ai-detection","plugin_tags-content-checker","plugin_tags-editorial","plugin_tags-gptzero","plugin_contributors-dropndot","plugin_committers-dropndot"],"banners":{"banner":"https:\/\/ps.w.org\/dropndot-ai-content-checker\/assets\/banner-772x250.png?rev=3765688","banner_2x":"https:\/\/ps.w.org\/dropndot-ai-content-checker\/assets\/banner-1544x500.png?rev=3765688","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/dropndot-ai-content-checker\/assets\/icon-128x128.gif?rev=3767798","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/dropndot-ai-content-checker\/assets\/screenshot-1.png?rev=3765638","caption":"The \"AI Content Check\" panel in the block editor: classification, class probabilities, confidence and the sentences GPTZero highlighted as AI."},{"src":"https:\/\/ps.w.org\/dropndot-ai-content-checker\/assets\/screenshot-2.png?rev=3765638","caption":"Full text colour-coded by each sentence's AI score."},{"src":"https:\/\/ps.w.org\/dropndot-ai-content-checker\/assets\/screenshot-3.png?rev=3765638","caption":"The \"AI Check\" column on the Posts list."},{"src":"https:\/\/ps.w.org\/dropndot-ai-content-checker\/assets\/screenshot-4.png?rev=3765638","caption":"The AI Check report, opened from the Posts list."},{"src":"https:\/\/ps.w.org\/dropndot-ai-content-checker\/assets\/screenshot-5.png?rev=3765638","caption":"A bulk check running on the Posts list."},{"src":"https:\/\/ps.w.org\/dropndot-ai-content-checker\/assets\/screenshot-6.png?rev=3765638","caption":"Settings \u2192 Connection: encrypted API key, connection test and plan usage."},{"src":"https:\/\/ps.w.org\/dropndot-ai-content-checker\/assets\/screenshot-7.png?rev=3765638","caption":"Settings \u2192 General: content types, multilingual detection, history retention and low credit email alerts."},{"src":"https:\/\/ps.w.org\/dropndot-ai-content-checker\/assets\/screenshot-8.png?rev=3765638","caption":"Settings \u2192 Scan history."},{"src":"https:\/\/ps.w.org\/dropndot-ai-content-checker\/assets\/screenshot-9.png?rev=3765638","caption":"Settings \u2192 Privacy &amp; data: what is sent to GPTZero, and when."}],"raw_content":"<!--section=description-->\n<p>Dropndot AI Content Checker connects WordPress to the GPTZero AI-detection API so editors can check content before publishing.<\/p>\n\n<p>AI detection is probabilistic and can be wrong. Results are an editorial signal, not proof of authorship.<\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>\"AI Content Check\" panel in the block editor, and an \"AI Content Check\" meta box in the Classic Editor. Checks the current text, including unsaved changes, only when you click the button.<\/li>\n<li>GPTZero's classification (likely AI, likely human, or mixed), class probabilities, confidence category and per-sentence AI scores: a ranked list of sentences to revise and the full text colour-coded by score. In the editor, clicking a sentence selects its block (or its text in the Classic Editor).<\/li>\n<li>GPTZero's own result message and AI subclass (pure AI, AI-paraphrased, polished, combined); sentences GPTZero excludes (references, tables, code) are left out.<\/li>\n<li>Optional GPTZero multilingual detection (French and Spanish).<\/li>\n<li>Plan usage (words left, cycle end) via GPTZero's usage-statistics endpoint, which uses no words.<\/li>\n<li>Low credit email alert: one email per billing cycle when usage reaches a percentage you choose, sent to the admin email or custom addresses, with a test-email button.<\/li>\n<li>Last-checked time, plus a warning when content has changed since the check.<\/li>\n<li>\"AI Check\" column, row action and bounded bulk action (up to 20 items, one at a time) on Posts and Pages lists.<\/li>\n<li>API key encrypted at rest and shown masked, optional <code>wp-config.php<\/code> constant, and a connection test.<\/li>\n<li>Lightweight scan history that stores a content fingerprint, never the content, with automatic cleanup. The sentence scores of each post's latest check are kept in post meta (replaced on every check) so reports can be reopened later.<\/li>\n<li>Enable the checker per post type.<\/li>\n<\/ul>\n\n<p>This plugin is developed by Dropndot Solutions and is not affiliated with or endorsed by GPTZero.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the <strong>GPTZero API<\/strong>, provided by GPTZero, at two endpoints. Nothing is sent until an administrator saves a GPTZero API key.<\/p>\n\n<p><strong>1. AI detection<\/strong> (https:\/\/api.gptzero.me\/v2\/predict\/text), to estimate whether text was written by AI.<\/p>\n\n<ul>\n<li><strong>What is sent:<\/strong> the plain-text body of the post or page being checked (HTML, block markup and shortcodes removed), your GPTZero API key, and two settings flags (<code>multilingual<\/code>, <code>apiVersion<\/code>). No title, author, URL, comments, visitor or user data, or other site information is sent.<\/li>\n<li><strong>When:<\/strong> only when a user who can edit that content clicks a check button or runs a bulk check. Content is never sent automatically.<\/li>\n<\/ul>\n\n<p><strong>2. Plan usage<\/strong> (https:\/\/api.gptzero.me\/v3\/usage-stats), to read your plan name, words used and left, and billing-cycle dates. It uses no words.<\/p>\n\n<ul>\n<li><strong>What is sent:<\/strong> your GPTZero API key only. No content or site information is sent.<\/li>\n<li><strong>When:<\/strong> when an administrator clicks \"Test connection\", and, while the \"Low credit email\" setting is on (the default), automatically twice a day and a few minutes after a check runs. Turn off \"Low credit email\" under Settings \u2192 AI Content Checker \u2192 General to stop the automatic requests.<\/li>\n<\/ul>\n\n<p>GPTZero: <a href=\"https:\/\/gptzero.me\/terms-of-use.html\">Terms of use<\/a>, <a href=\"https:\/\/gptzero.me\/privacy-policy.html\">Privacy policy<\/a>.<\/p>\n\n<p>A GPTZero account whose plan includes API access is required. API usage may be billed by GPTZero.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>dropndot-ai-content-checker<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the zip via Plugins \u2192 Add New \u2192 Upload Plugin.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Get an API key from your GPTZero dashboard (https:\/\/app.gptzero.me\/api).<\/li>\n<li>Go to Settings \u2192 AI Content Checker, paste the key, click \"Save key\", then \"Test connection\".<\/li>\n<\/ol>\n\n<p>Optionally, define the key in <code>wp-config.php<\/code> instead of storing it in the database:<\/p>\n\n<pre><code>define( 'DNDAICC_GPTZERO_API_KEY', 'your-key-here' );\n<\/code><\/pre>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20a%20result%20prove%20who%20wrote%20the%20text%3F\"><h3>Does a result prove who wrote the text?<\/h3><\/dt>\n<dd><p>No. Detectors make mistakes, especially on short, edited or non-English text. Use results as one signal in editorial review.<\/p><\/dd>\n<dt id=\"is%20my%20content%20sent%20anywhere%20automatically%3F\"><h3>Is my content sent anywhere automatically?<\/h3><\/dt>\n<dd><p>No. Text is sent to GPTZero only when someone clicks a check button or runs a bulk check.<\/p><\/dd>\n<dt id=\"where%20is%20the%20api%20key%20stored%3F\"><h3>Where is the API key stored?<\/h3><\/dt>\n<dd><p>Encrypted in the <code>wp_options<\/code> table (libsodium XSalsa20-Poly1305), using a key derived from <code>DNDAICC_ENCRYPTION_KEY<\/code> or your site's salts in <code>wp-config.php<\/code>. This protects the key in database dumps and backups, but not against anyone who can read <code>wp-config.php<\/code> or run code on the server. You can also define <code>DNDAICC_GPTZERO_API_KEY<\/code> in <code>wp-config.php<\/code> to keep it out of the database entirely. The key is never sent to browsers.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20check%20fails%3F\"><h3>What happens if a check fails?<\/h3><\/dt>\n<dd><p>An error is shown and no score is recorded. A failed check is never treated as \"human-written\".<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20classic%20editor%3F\"><h3>Does it work with the Classic Editor?<\/h3><\/dt>\n<dd><p>Yes. With the Classic Editor, an \"AI Content Check\" meta box appears in the sidebar of the post edit screen. It checks the current text from the Visual or Text tab, including unsaved changes. The row and bulk actions on the Posts \/ Pages list also work and check saved content.<\/p><\/dd>\n<dt id=\"who%20can%20run%20checks%3F\"><h3>Who can run checks?<\/h3><\/dt>\n<dd><p>Any user who can edit the specific post. Only administrators can manage the API key and settings.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20data%20when%20i%20delete%20the%20plugin%3F\"><h3>What happens to data when I delete the plugin?<\/h3><\/dt>\n<dd><p>Deleting the plugin removes its database table, options, transients and scheduled event. Deactivating keeps them.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added: \"AI Content Check\" meta box in the Classic Editor. Checks the current Visual or Text tab content, including unsaved changes, and clicking a sentence finds it in the editor.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Check posts and pages for likely AI-generated text with the GPTZero API, from the block editor or the Posts list.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/387678","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=387678"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dropndot"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=387678"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=387678"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=387678"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=387678"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=387678"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=387678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}