{"id":312196,"date":"2026-05-14T13:44:21","date_gmt":"2026-05-14T13:44:21","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/npc-site-doctor\/"},"modified":"2026-05-14T13:43:40","modified_gmt":"2026-05-14T13:43:40","slug":"npc-maintenance-inspector","status":"publish","type":"plugin","link":"https:\/\/oci.wordpress.org\/plugins\/npc-maintenance-inspector\/","author":23491267,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"NPC Maintenance Inspector","header_author":"npc","header_description":"WordPress maintenance health-check tool with 9-point diagnostics, history tracking, and optional AI-powered reports.","assets_banners_color":"babcb1","last_updated":"2026-05-14 13:43:40","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/n-pc.jp\/products\/maintenance-inspector\/","header_author_uri":"https:\/\/n-pc.jp\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":21,"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":"npc01","date":"2026-05-14 13:43:40"}},"upgrade_notice":{"1.0.0":"<p>Initial public release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3532074,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3532074,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3532074,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3532074,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3532074,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3532074,"resolution":"2","location":"assets","locale":"","width":1280,"height":1100},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3532074,"resolution":"3","location":"assets","locale":"","width":1280,"height":800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3532074,"resolution":"4","location":"assets","locale":"","width":1280,"height":800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3532074,"resolution":"5","location":"assets","locale":"","width":1280,"height":800},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3532074,"resolution":"6","location":"assets","locale":"","width":1280,"height":800},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3532074,"resolution":"7","location":"assets","locale":"","width":1280,"height":800},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3532074,"resolution":"8","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"Dashboard with the latest diagnosis result and overall grade.","2":"9-point health check cards (WP Core \/ Plugins \/ Site Health \/ PHP \/ Error Log \/ File Integrity \/ Suspicious Files \/ SSL \/ Permissions).","3":"Diagnosis history accordion with per-entry download.","4":"Settings \u2014 security and bound site URL.","5":"Settings \u2014 automatic diagnosis and email notification.","6":"Settings \u2014 AI report feature configuration.","7":"AI report rendered with severity badges.","8":"Suspicious files card with safe-by-default whitelist behavior."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[23519,196269,732,5603,600],"plugin_category":[52,54],"plugin_contributors":[262582],"plugin_business_model":[],"class_list":["post-312196","plugin","type-plugin","status-publish","hentry","plugin_tags-diagnostics","plugin_tags-healthcheck","plugin_tags-maintenance","plugin_tags-monitoring","plugin_tags-security","plugin_category-performance","plugin_category-security-and-spam-protection","plugin_contributors-npc01","plugin_committers-npc01"],"banners":{"banner":"https:\/\/ps.w.org\/npc-maintenance-inspector\/assets\/banner-772x250.png?rev=3532074","banner_2x":"https:\/\/ps.w.org\/npc-maintenance-inspector\/assets\/banner-1544x500.png?rev=3532074","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/npc-maintenance-inspector\/assets\/icon-128x128.png?rev=3532074","icon_2x":"https:\/\/ps.w.org\/npc-maintenance-inspector\/assets\/icon-256x256.png?rev=3532074","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/npc-maintenance-inspector\/assets\/screenshot-1.png?rev=3532074","caption":"Dashboard with the latest diagnosis result and overall grade."},{"src":"https:\/\/ps.w.org\/npc-maintenance-inspector\/assets\/screenshot-2.png?rev=3532074","caption":"9-point health check cards (WP Core \/ Plugins \/ Site Health \/ PHP \/ Error Log \/ File Integrity \/ Suspicious Files \/ SSL \/ Permissions)."},{"src":"https:\/\/ps.w.org\/npc-maintenance-inspector\/assets\/screenshot-3.png?rev=3532074","caption":"Diagnosis history accordion with per-entry download."},{"src":"https:\/\/ps.w.org\/npc-maintenance-inspector\/assets\/screenshot-4.png?rev=3532074","caption":"Settings \u2014 security and bound site URL."},{"src":"https:\/\/ps.w.org\/npc-maintenance-inspector\/assets\/screenshot-5.png?rev=3532074","caption":"Settings \u2014 automatic diagnosis and email notification."},{"src":"https:\/\/ps.w.org\/npc-maintenance-inspector\/assets\/screenshot-6.png?rev=3532074","caption":"Settings \u2014 AI report feature configuration."},{"src":"https:\/\/ps.w.org\/npc-maintenance-inspector\/assets\/screenshot-7.png?rev=3532074","caption":"AI report rendered with severity badges."},{"src":"https:\/\/ps.w.org\/npc-maintenance-inspector\/assets\/screenshot-8.png?rev=3532074","caption":"Suspicious files card with safe-by-default whitelist behavior."}],"raw_content":"<!--section=description-->\n<p>NPC Maintenance Inspector performs 9-point health diagnostics on your WordPress site directly from the admin dashboard:<\/p>\n\n<ol>\n<li><strong>WordPress core updates<\/strong> \u2014 Detect missing core updates.<\/li>\n<li><strong>Plugin updates<\/strong> \u2014 List plugins with available updates.<\/li>\n<li><strong>Site Health issues<\/strong> \u2014 Extract critical issues from WP standard Site Health API.<\/li>\n<li><strong>PHP version<\/strong> \u2014 Warn on end-of-life PHP versions.<\/li>\n<li><strong>Error log analysis<\/strong> \u2014 Summarize debug.log entries and save a one-click backup to uploads\/ for safe review.<\/li>\n<li><strong>File integrity<\/strong> \u2014 Detect suspicious code patterns in core files (eval \/ base64_decode \/ etc.) by comparing checksums against the WordPress.org Checksum API.<\/li>\n<li><strong>Suspicious files<\/strong> \u2014 Find unexpected PHP files in wp-content\/uploads\/, with built-in whitelist for known legitimate plugin files (Ajax Load More templates, WP STAGING index.php, AIOS firewall rules, etc.).<\/li>\n<li><strong>SSL certificate<\/strong> \u2014 Check days until expiration (warn under 30 days, critical at 0).<\/li>\n<li><strong>File permissions<\/strong> \u2014 Check critical files like wp-config.php, .htaccess, wp-content\/.<\/li>\n<\/ol>\n\n<p>Operational features:<\/p>\n\n<ul>\n<li><strong>History<\/strong> \u2014 Keep the last 10 diagnoses as a custom post type.<\/li>\n<li><strong>Scheduled auto-check<\/strong> \u2014 Run daily, weekly, or monthly via WP Cron.<\/li>\n<li><strong>Email notifications<\/strong> \u2014 Send alerts only on critical issues.<\/li>\n<li><strong>One-click debug.log clear<\/strong> \u2014 Truncate the log while preserving file permissions.<\/li>\n<li><strong>Optional AI report<\/strong> \u2014 Generate maintenance suggestions via Anthropic Claude API. Disabled by default; opt-in via a wp-config.php constant.<\/li>\n<\/ul>\n\n<p>The plugin is locked to the user who activated it and to the original site URL, so it stays inert after backup restores to a different domain.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin can optionally connect to the <strong>Anthropic Claude API<\/strong> (<code>https:\/\/api.anthropic.com\/v1\/messages<\/code>) to generate AI-powered maintenance reports. This is the only external service the plugin ever contacts.<\/p>\n\n<p><strong>When is data sent?<\/strong><\/p>\n\n<ul>\n<li>When you manually click the \"Generate AI Report\" button in the admin.<\/li>\n<li>When an automatic scheduled diagnosis detects a critical issue <strong>and<\/strong> notifications are enabled. In that case the AI report is generated once per critical run and attached to the notification email.<\/li>\n<\/ul>\n\n<p><strong>What data is sent?<\/strong><\/p>\n\n<ul>\n<li>The diagnosis result text only:\n\n<ul>\n<li>Site URL, site name, WordPress version, theme name<\/li>\n<li>Counts of plugin updates \/ Site Health issues \/ error-log entries<\/li>\n<li>PHP version, memory limit, max upload size<\/li>\n<li>SSL expiration date and days remaining<\/li>\n<li>File-permission status of critical files<\/li>\n<li>Suspicious code patterns detected (function names like <code>eval<\/code>, <code>base64_decode<\/code>)<\/li>\n<\/ul><\/li>\n<li>No login data, no post content, no personal data of site visitors.<\/li>\n<\/ul>\n\n<p><strong>Is the data sent unconditionally?<\/strong><\/p>\n\n<p>No. The AI feature is <strong>completely disabled<\/strong> unless you define <code>NPCMI_API_KEY<\/code> in <code>wp-config.php<\/code>. Without that constant, no external connection to Anthropic is ever made.<\/p>\n\n<p><strong>Anthropic's terms and privacy policy:<\/strong><\/p>\n\n<ul>\n<li>Consumer Terms of Service: https:\/\/www.anthropic.com\/legal\/consumer-terms<\/li>\n<li>Privacy Policy: https:\/\/www.anthropic.com\/legal\/privacy<\/li>\n<li>Commercial Terms of Service (if you use a paid API plan): https:\/\/www.anthropic.com\/legal\/commercial-terms<\/li>\n<\/ul>\n\n<p>By enabling the AI report feature (i.e. by defining <code>NPCMI_API_KEY<\/code>), you agree to Anthropic's applicable terms.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install it via <strong>Plugins \u2192 Add New<\/strong> in the admin.<\/li>\n<li>Activate <strong>NPC Maintenance Inspector<\/strong> through the <strong>Plugins<\/strong> menu.<\/li>\n<li>Open <strong>NPC Inspector<\/strong> in the admin sidebar.<\/li>\n<li>Click <strong>Run Diagnosis<\/strong> to start a manual check.<\/li>\n<li>(Optional) Open <strong>NPC Inspector \u2192 Settings<\/strong> to enable scheduled auto-checks and email notifications.<\/li>\n<li>(Optional) Define <code>NPCMI_API_KEY<\/code> in <code>wp-config.php<\/code> to enable the AI report feature (see FAQ).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20the%20ai%20report%20feature%20required%3F\"><h3>Is the AI report feature required?<\/h3><\/dt>\n<dd><p>No. AI report is optional and <strong>disabled by default<\/strong>. To enable it, add this line above <code>\/* That's all, stop editing! *\/<\/code> in your <code>wp-config.php<\/code>:<\/p>\n\n<pre><code>define( 'NPCMI_API_KEY', 'sk-ant-xxxx' );\n<\/code><\/pre>\n\n<p>Without that constant the plugin still runs all 9 diagnostics, scheduled checks, email notifications, and history.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20any%20data%20externally%3F\"><h3>Does the plugin send any data externally?<\/h3><\/dt>\n<dd><p>By default, <strong>no<\/strong>. Only the AI report feature sends data, and only to Anthropic Claude API, and only when explicitly triggered (manual \"Generate AI Report\" button, or automatic generation when a scheduled check detects a critical issue). See the <strong>External services<\/strong> section below for details.<\/p><\/dd>\n<dt id=\"who%20can%20use%20the%20plugin%20after%20activation%3F\"><h3>Who can use the plugin after activation?<\/h3><\/dt>\n<dd><p>Only the user who activated it. The user ID\/email and the site URL are recorded on first activation, and the plugin refuses to operate for other users or on a different domain. This is a deliberate constraint to keep the AI cost surface and the admin actions tied to a specific operator.<\/p><\/dd>\n<dt id=\"why%20are%20ai%20reports%20in%20japanese%3F\"><h3>Why are AI reports in Japanese?<\/h3><\/dt>\n<dd><p>This plugin was initially built for Japanese-speaking WordPress maintainers. The AI prompt instructs Claude to reply in Japanese. We will localize the prompt for additional output languages in a future release.<\/p><\/dd>\n<dt id=\"my%20site%20shows%20%22suspicious%20files%22%20in%20wp-content%2Fuploads%2F.%20should%20i%20delete%20them%3F\"><h3>My site shows \"suspicious files\" in wp-content\/uploads\/. Should I delete them?<\/h3><\/dt>\n<dd><p>Not automatically. The detector tries to whitelist known legitimate plugin files (Ajax Load More templates, WP STAGING index.php, AIOS firewall rules, etc.). Anything that still appears in the warning should be opened and inspected first \u2014 many backup\/staging\/security plugins legitimately drop PHP files there.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0 (2026-05-11)<\/h4>\n\n<ul>\n<li>Initial public release on WordPress.org (forked from the internal <code>npc-wp-healthcheck<\/code> 0.7.8 series).<\/li>\n<li>9-point health diagnostics.<\/li>\n<li>Diagnosis history (last 10 entries) stored as a custom post type.<\/li>\n<li>WP Cron-based auto-check (daily \/ weekly \/ monthly).<\/li>\n<li>Email notifications on critical issues only.<\/li>\n<li>Optional AI-powered maintenance reports via Anthropic Claude API (opt-in via <code>NPCMI_API_KEY<\/code>).<\/li>\n<li>Full internationalization (English source strings, Japanese translation included).<\/li>\n<\/ul>","raw_excerpt":"WordPress maintenance health-check tool with 9-point diagnostics, history tracking, and optional AI-powered reports.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/312196","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=312196"}],"author":[{"embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/npc01"}],"wp:attachment":[{"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=312196"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=312196"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=312196"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=312196"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=312196"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=312196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}