{"id":369888,"date":"2026-09-28T16:27:31","date_gmt":"2026-09-28T16:27:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/aicite-guard\/"},"modified":"2026-09-28T16:18:08","modified_gmt":"2026-09-28T16:18:08","slug":"spg-by-ppros","status":"publish","type":"plugin","link":"https:\/\/mn.wordpress.org\/plugins\/spg-by-ppros\/","author":17676349,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.5","stable_tag":"1.0.5","tested":"7.1.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"SitePulse Guard by PPros","header_author":"Plugin Pros","header_description":"Companion for Yoast\/Rank Math: AI search visibility, approve-before-write accessibility, and site health.","assets_banners_color":"","last_updated":"2026-09-28 16:18:08","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/pluginpros.co","header_author_uri":"https:\/\/profiles.wordpress.org\/sakibbd08\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":39,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"sakibbd08","date":"2026-09-28 16:18:08","revision":3717559}},"upgrade_notice":{"1.0.4":"<p>Security fix in JSON-LD output. Upgrade recommended.<\/p>","1.0.2 = Reactivate the plugin after updating if WordPress lists it as inactive.":"","1.0.1":"<p>Optional AI features now use the WordPress AI Client.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.5"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[1953,2591,244604,151481,1956],"plugin_category":[34,49],"plugin_contributors":[269283],"plugin_business_model":[],"class_list":["post-369888","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility","plugin_tags-geo","plugin_tags-llms-txt","plugin_tags-site-health","plugin_tags-wcag","plugin_category-accessibility","plugin_category-maps-and-location","plugin_contributors-sakibbd08","plugin_committers-sakibbd08"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/spg-by-ppros.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>SitePulse Guard by PPros is a <strong>companion<\/strong>, not another SEO plugin and not another llms.txt-only generator.<\/p>\n\n<p>It is built for sites that already use Yoast or Rank Math and still have three gaps those plugins do not fully cover:<\/p>\n\n<ul>\n<li><strong>AI search visibility (GEO)<\/strong> \u2014 publish <code>llms.txt<\/code> \/ <code>llms-full.txt<\/code> from real content, allow answer engines while blocking known training scrapers, and see a plain-English AI Readiness Score.<\/li>\n<li><strong>Real accessibility (EAA \/ WCAG)<\/strong> \u2014 scan for missing alt text, weak headings, unlabeled fields, and vague links. Suggested alt text is <strong>never<\/strong> written until you approve it. A visitor widget is a helper, not a substitute for fixes.<\/li>\n<li><strong>Site health<\/strong> \u2014 unused or heavy plugins, common SEO\/cache\/security overlap, local Core Web Vitals impact, and a simple security surface.<\/li>\n<\/ul>\n\n<h4>What makes SitePulse Guard by PPros different<\/h4>\n\n<p>Most directory plugins in this area do one job (usually <code>llms.txt<\/code>). SitePulse Guard by PPros is the small toolkit that sits <strong>beside<\/strong> your SEO plugin:<\/p>\n\n<ul>\n<li>Schema is deferred when Yoast or Rank Math is already outputting JSON-LD, so you do not get duplicate markup.<\/li>\n<li>Accessibility changes are approve-before-write. Nothing is silently patched in the media library.<\/li>\n<li>Core features run locally. No AI provider is required to generate files, scores, crawler rules, or rule-based alt text.<\/li>\n<li>Optional AI-assisted alt text uses the <strong>WordPress AI Client<\/strong> (WordPress 7.0+) and the provider the site owner already configured under Settings \u2192 Connectors. SitePulse Guard by PPros does not store vendor API keys and does not call a provider HTTP API directly.<\/li>\n<\/ul>\n\n<h4>AI Visibility<\/h4>\n\n<ul>\n<li>Auto-generate and preview <code>llms.txt<\/code> and <code>llms-full.txt<\/code> from published content<\/li>\n<li>Choose post types and regenerate in one click<\/li>\n<li>Allow answer engines and block known training scrapers via <code>robots.txt<\/code><\/li>\n<li>JSON-LD structured data (WebSite, Organization, Article\/WebPage, FAQ) only when Yoast\/Rank Math are not active<\/li>\n<li>AI Readiness Score (0\u2013100) with clear next steps<\/li>\n<\/ul>\n\n<h4>Accessibility<\/h4>\n\n<ul>\n<li>Image alt scan (missing and filename-like text)<\/li>\n<li>Rule-based suggestions; optional AI via the WordPress AI Client when a site-wide provider is configured<\/li>\n<li>Per-page and site-wide scores<\/li>\n<li>Heading, form label, iframe, and vague-link warnings<\/li>\n<li>Visitor widget (text size, contrast, links, spacing, reduce motion)<\/li>\n<li>Accessibility statement page generator<\/li>\n<\/ul>\n\n<p>Nothing is written to the media library until you approve it.<\/p>\n\n<h4>Site Health Guardian<\/h4>\n\n<ul>\n<li>Unused \/ inactive plugin list with folder size<\/li>\n<li>Common SEO, cache, security, and optimizer overlap<\/li>\n<li>Local Core Web Vitals impact (plugin count, autoload size, cache, HTTPS)<\/li>\n<li>Outdated and possibly abandoned plugin reminders<\/li>\n<li>Overall health score on the dashboard<\/li>\n<\/ul>\n\n<h4>Designed to stay light<\/h4>\n\n<ul>\n<li>No page-builder lock-in (Gutenberg, Elementor, Bricks, and others)<\/li>\n<li>Front end loads a tiny widget only when you enable it<\/li>\n<li>Admin assets load only on SitePulse Guard by PPros screens<\/li>\n<li>Native WordPress APIs \u2014 no Composer stack in the free plugin<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>Core features (llms.txt generation, robots.txt rules, scores, rule-based alt text, site health) run on your WordPress site. They do not send content to a third-party API.<\/p>\n\n<h4>WordPress AI Client (optional)<\/h4>\n\n<p>Optional AI-assisted alt text is available on WordPress 7.0 or later when the site owner has configured an AI provider under <strong>Settings \u2192 Connectors<\/strong>. SitePulse Guard by PPros uses the core WordPress AI Client instead of calling a vendor directly.<\/p>\n\n<ul>\n<li><strong>What it is used for:<\/strong> improving suggested image alt text when an administrator clicks generate.<\/li>\n<li><strong>What data is sent, and when:<\/strong> the generation prompt, a short image context (title\/filename), and \u2014 when the model supports it \u2014 the public image URL. Data is sent only after an administrator action, never on ordinary front-end page views.<\/li>\n<li><strong>Where it goes:<\/strong> whichever provider the site owner already connected (for example the official OpenAI, Anthropic, or Google provider plugins). SitePulse Guard by PPros does not collect or store those API keys.<\/li>\n<\/ul>\n\n<p>If the site owner connects one of the official provider plugins, that vendor\u2019s terms apply:<\/p>\n\n<ul>\n<li>OpenAI \u2014 <a href=\"https:\/\/openai.com\/policies\/terms-of-use\/\">Terms of use<\/a> and <a href=\"https:\/\/openai.com\/policies\/privacy-policy\/\">Privacy policy<\/a><\/li>\n<li>Anthropic \u2014 <a href=\"https:\/\/www.anthropic.com\/legal\/consumer-terms\">Consumer terms<\/a> and <a href=\"https:\/\/www.anthropic.com\/legal\/privacy\">Privacy policy<\/a><\/li>\n<li>Google Gemini \u2014 <a href=\"https:\/\/ai.google.dev\/gemini-api\/terms\">API terms<\/a> and <a href=\"https:\/\/policies.google.com\/privacy\">Privacy policy<\/a><\/li>\n<\/ul>\n\n<p>If no provider is configured, or you turn the option off in SitePulse Guard by PPros settings, no prompt data leaves the site.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>spg-by-ppros<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate SitePulse Guard by PPros<\/li>\n<li>Complete the setup wizard<\/li>\n<li>Visit <strong>SitePulse Guard by PPros \u2192 AI Visibility<\/strong> and generate your files<\/li>\n<li>If pretty permalinks are off, flush permalinks once under Settings \u2192 Permalinks<\/li>\n<li>(Optional, WordPress 7.0+) Configure an AI provider under Settings \u2192 Connectors to improve alt-text suggestions<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20replace%20yoast%20or%20rank%20math%3F\"><h3>Does this replace Yoast or Rank Math?<\/h3><\/dt>\n<dd><p>No. Keep one SEO plugin for titles, schema, and sitemaps. SitePulse Guard by PPros adds AI files, accessibility, and health checks, and it skips JSON-LD when those plugins already handle it.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20api%20key%3F\"><h3>Do I need an API key?<\/h3><\/dt>\n<dd><p>No. <code>llms.txt<\/code>, crawler rules, scores, and rule-based alt text work without one. SitePulse Guard by PPros never asks you to paste a vendor key. Optional AI alt text uses the WordPress AI Client and a provider configured once for the whole site.<\/p><\/dd>\n<dt id=\"how%20is%20this%20different%20from%20other%20llms.txt%20plugins%3F\"><h3>How is this different from other llms.txt plugins?<\/h3><\/dt>\n<dd><p>SitePulse Guard by PPros is not an llms.txt-only plugin. It combines AI visibility with approve-before-write accessibility and a site-health pass, and it is written as a companion to Yoast\/Rank Math rather than a replacement.<\/p><\/dd>\n<dt id=\"will%20the%20visitor%20widget%20make%20my%20site%20accessible%3F\"><h3>Will the visitor widget make my site accessible?<\/h3><\/dt>\n<dd><p>No overlay can replace real content fixes. The widget is a helper. Use the scan and approval queue for actual issues.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20with%20elementor%20or%20bricks%3F\"><h3>Can I use this with Elementor or Bricks?<\/h3><\/dt>\n<dd><p>Yes. Builder pages with little stored HTML are noted in the scan so you are not given a false perfect score.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Fix: echo JSON-LD output using <code>wp_json_encode()<\/code> directly inside <code>echo<\/code> instead of via an intermediate variable, satisfying WPCS <code>EscapeOutput<\/code> sniff without suppression comments.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Security: added <code>JSON_HEX_TAG<\/code> flag to <code>wp_json_encode()<\/code> in the schema output to prevent <code>&lt;\/script&gt;<\/code> tag breakout in JSON-LD. Removed <code>phpcs:ignore<\/code> suppression comments that were masking the issue.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Removed <code>Tested up to<\/code> from the main plugin PHP header \u2014 it is now declared only in readme.txt per WordPress.org guidelines.<\/li>\n<li>Aligned readme Stable tag with plugin Version (both 1.0.3).<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Plugin name is now SitePulse Guard by PPros so the WordPress.org-restricted term \"plugin\" is not in the product name or slug.<\/li>\n<li>Directory slug is now <code>spg-by-ppros<\/code>.<\/li>\n<li>Translations load automatically on WordPress.org; <code>load_plugin_textdomain()<\/code> was removed.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Renamed the plugin to SitePulse Guard by PPros.<\/li>\n<li>Optional AI alt text now uses the WordPress AI Client instead of a direct OpenAI integration.<\/li>\n<li>Documented optional third-party AI providers in this readme.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial free release: AI visibility, accessibility core, site health, setup wizard.<\/li>\n<\/ul>","raw_excerpt":"Companion for Yoast or Rank Math: AI search visibility, approve-before-write accessibility, and plugin-bloat health checks in one small plugin.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/369888","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=369888"}],"author":[{"embeddable":true,"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sakibbd08"}],"wp:attachment":[{"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=369888"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=369888"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=369888"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=369888"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=369888"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=369888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}