{
  "version": "1.0.1",
  "last_updated": "2026-01-03",
  "settings": {
    "tabs": {
      "general": [
        {
          "title": "General Settings",
          "icon": "dashicons-admin-settings",
          "content": "<ul><li>\ud83d\udcca Set your organization/site name (used in schema and social sharing)</li><li>\ud83d\uddbc\ufe0f Upload a logo for previews and schema (square or wide both work)</li><li>\ud83d\udca1 Keep your site name and logo consistent everywhere</li><li>\u2139\ufe0f These settings improve clarity, not rankings</li></ul>",
          "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/general-settings/"
        }
      ],
      "verification": [
        {
            "title": "Search Engine Verification",
            "icon": "dashicons-search",
            "content": "<ul><li>🔑 Verification proves that you own this website</li><li>📊 It allows search engines to show you reports about your site</li><li>🔍 Google Search Console shows indexing, errors, and search traffic</li><li>🌐 Bing Webmaster Tools shows crawl and visibility data for Bing</li><li>🧭 Yandex is useful only if you target Russian or CIS regions</li><li>✂️ Paste only the <strong>content value</strong> — the plugin adds the full meta tag automatically</li><li>⚠️ Verification does <strong>not</strong> improve rankings by itself</li><li>ℹ️ After saving, complete verification inside each webmaster tool</li></ul>",
            "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/verification/"
        }
      ],
      "indexnow": [
        {
            "title": "IndexNow (Instant URL Notification)",
            "icon": "dashicons-update",
            "content": "<ul><li>🚀 IndexNow notifies participating search engines when a page is added, updated, or removed</li><li>🌐 Supported by Bing, Yandex, Seznam, and other IndexNow partners</li><li>❌ Google does <strong>not</strong> currently use IndexNow</li><li>🔄 Pages may still take time to appear — indexing is not guaranteed</li><li>🔑 The API key is generated automatically and identifies your site</li><li>⏱️ Most useful for frequently updated or time-sensitive content</li><li>ℹ️ This feature improves discovery speed, not rankings</li></ul>",
            "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/indexnow/"
        }
        ],
      "social": [
        {
            "title": "Social Sharing (Open Graph & Twitter)",
            "icon": "dashicons-share",
            "content": "<ul><li>🖼️ Controls how your pages look when shared on social apps</li><li>📌 A default image is used when a page has no featured image</li><li>📏 Recommended image size: 1200×630 pixels (works on most platforms)</li><li>🌐 Most platforms use Open Graph tags automatically</li><li>🐦 Twitter/X uses its own card format for large preview images</li><li>📘 Facebook App ID is optional and used only for Insights and validation</li><li>🎨 Theme color affects link previews in some apps (Discord, Telegram)</li><li>ℹ️ Social tags affect previews — not Google rankings</li></ul>",
            "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/social-settings/"
        }
        ],
      "schema": [
        {
            "title": "Schema (Structured Data)",
            "icon": "dashicons-location",
            "content": "<ul><li>🏷️ Schema adds structured information so search engines understand your site</li><li>📄 It describes what your pages represent (organization, business, breadcrumbs)</li><li>✨ Some schema types <em>may</em> be used for rich results if search engines choose to</li><li>🏢 Enable Local Business only if you serve customers in a physical or service area</li><li>📍 Business details should exactly match your Google Business Profile</li><li>🧭 Breadcrumbs help search engines understand page hierarchy</li><li>⚠️ Schema improves clarity — rich results and rankings are never guaranteed</li><li>ℹ️ Leaving optional fields empty will not harm your site</li></ul>",
            "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/schema/"
        }
        ],
      "templates": [
        {
            "title": "SEO Templates (Automatic Fallbacks)",
            "icon": "dashicons-text",
            "content": "<ul><li>🧩 Templates are used only when a page does not have custom SEO values</li><li>✏️ Page-level titles and descriptions always take priority</li><li>🏷️ Use variables to create consistent, readable fallbacks</li><li>➗ The separator controls how titles are visually split</li><li>🧠 Simple templates are usually better than complex ones</li><li>📄 Descriptions can be left empty to auto-generate from content</li><li>ℹ️ Templates help consistency — they do not guarantee rankings</li></ul>",
            "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/templates/"
        }
        ],
      "maintenance": [
        {
          "title": "Safety & Maintenance",
          "icon": "dashicons-admin-generic",
          "content": "<ul><li>🛠️ This page is for maintenance and recovery — most users rarely need it</li><li>📦 Export settings before making major changes or updates</li><li>📥 Import settings only from files created by this plugin</li><li>🔄 Reset removes all plugin settings and cannot be undone</li><li>🧪 Use reset only for troubleshooting or starting fresh</li><li>⚠️ These tools do not affect rankings directly</li></ul>",
          "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/maintenance-settings/"
        }
      ]
    },
    "modals": {
      "settings-general": {
        "title": "General Settings Overview",
        "body": "<h3>What are General Settings?</h3><p>These settings control <strong>site-wide identity</strong> used in structured data (schema) and social metadata. They help search engines and social platforms understand your brand and display your pages consistently.</p><div class='asnerisseo-modal-info'><strong>Tip:</strong> Set these once, then keep them stable. Frequent changes can cause inconsistent previews and schema signals.</div><h3>What you configure here</h3><ul><li><strong>Organization / Site Name</strong> (used in schema and sometimes social templates)</li><li><strong>Logo URL</strong> (used in schema and social previews)</li><li><strong>XML Sitemap link</strong> (so you can submit it to search engines)</li><li><strong>Default Robots Settings</strong> (site-wide indexing + link-following defaults)</li></ul><div class='asnerisseo-modal-warning'><strong>Important:</strong> These settings help with clarity and consistency. They do <strong>not</strong> guarantee indexing or improve rankings by themselves.</div>"
      },
      "site-name": {
        "title": "Organization / Site Name",
        "body": "<h3>What does this do?</h3><p>This is your brand or organization name. It can appear in:</p><ul><li><strong>Schema.org markup</strong> (Organization / WebSite)</li><li><strong>Social previews</strong> (when templates use site name)</li><li><strong>Default titles</strong> (if you use title templates)</li></ul><h3>Best practice</h3><ul><li>Use your official brand name (exact spelling and capitalization)</li><li>Keep it consistent with your website header, social profiles, and Google Business Profile (if you have one)</li><li>Avoid keyword stuffing (e.g., \"ZenDigitalWorld | Quotes | Greetings | Books\")</li></ul><div class='asnerisseo-modal-info'><strong>Recommendation:</strong> If your site name is \"Zendigitalworld\", enter exactly that.</div>"
      },
      "logo-url": {
        "title": "Logo URL",
        "body": "<h3>What does this do?</h3><p>Your logo may be used in:</p><ul><li><strong>Organization schema</strong> (brand identification)</li><li><strong>Social previews</strong> (some platforms use it in cards)</li><li><strong>Rich results</strong> (only if search engines choose to show brand/logo)</li></ul><h3>Recommended logo formats</h3><ul><li><strong>Best overall:</strong> square logo (e.g., 512×512 or 600×600)</li><li><strong>Also ok:</strong> horizontal brand mark (your UI recommends 600×60)</li><li>Use a clean image, readable at small sizes</li><li>Prefer a transparent background (PNG) if possible</li></ul><div class='asnerisseo-modal-warning'><strong>Note:</strong> The URL should be a publicly accessible image URL on your live site (not localhost) for real search engines and social platforms.</div>"
      },
      "sitemap-info": {
        "title": "XML Sitemap",
        "body": "<h3>What is a sitemap?</h3><p>An XML sitemap is a list of your important URLs. Search engines use it to discover new and updated pages more efficiently.</p><h3>What this section shows</h3><ul><li><strong>Sitemap URL:</strong> the sitemap your site is currently exposing</li><li><strong>View Sitemap:</strong> opens the sitemap so you can confirm it loads</li><li><strong>Submission links:</strong> shortcuts to Google Search Console and Bing Webmaster Tools</li></ul><h3>How to use it (recommended)</h3><ol><li>Click <strong>View Sitemap</strong> and confirm the URL loads without errors</li><li>Verify your site in Google Search Console and/or Bing Webmaster Tools</li><li>Submit the <strong>exact sitemap URL shown here</strong> in their Sitemaps section</li></ol><div class='asnerisseo-modal-info'><strong>Tip:</strong> Use the sitemap URL displayed on this page. Different setups can use different sitemap paths.</div><div class='asnerisseo-modal-warning'><strong>Reality check:</strong> A sitemap helps discovery, but it does <strong>not</strong> guarantee indexing or rankings.</div>"
      },
      "default-robots": {
        "title": "Default Robots Settings",
        "body": "<h3>What are Robots settings?</h3><p>Robots settings control your site-wide defaults for:</p><ul><li><strong>Indexing</strong> — whether search engines may show pages in search results</li><li><strong>Following</strong> — whether search engines may follow links on pages</li></ul><h3>Default Indexing</h3><ul><li><strong>Index</strong>: allows pages to appear in search results (recommended for most public sites)</li><li><strong>NoIndex</strong>: prevents pages from appearing in search results</li></ul><h3>Default Following</h3><ul><li><strong>Follow</strong>: allows search engines to follow links (recommended for most sites)</li><li><strong>NoFollow</strong>: tells search engines not to follow links on pages</li></ul><div class='asnerisseo-modal-warning'><strong>Critical warning:</strong> If you set <strong>Default Indexing = NoIndex</strong>, you are telling search engines to hide <strong>your entire site</strong> from search results. This is usually only correct for <strong>staging/dev</strong> sites.</div><h3>Recommended defaults (most public sites)</h3><ul><li><strong>Default Indexing:</strong> Index</li><li><strong>Default Following:</strong> Follow</li></ul><h3>Page-level overrides</h3><p>Even with safe defaults, you can still set specific pages to NoIndex (e.g., thank-you pages, login pages) using per-page SEO controls.</p><div class='asnerisseo-modal-info'><strong>Tip:</strong> If you're unsure, use <strong>Index + Follow</strong> as defaults and apply NoIndex only to specific pages when needed.</div>"
      },
      "gsc-verification": {
        "title": "Google Search Console Verification",
        "body": "<h3>What Is Google Search Console Verification?</h3><p>Verification proves to Google Search Console that you own or manage this website. Once verified, you gain access to:</p><ul><li>Search performance analytics and ranking data</li><li>Indexing status and crawl error reports</li><li>Page experience insights (Core Web Vitals)</li><li>Sitemap submission and URL inspection tools</li><li>Manual action notifications</li></ul><div class='asnerisseo-modal-info'><strong>💡 Important:</strong> Verification does NOT improve your search rankings. It only gives you access to Google's webmaster data and tools.</div><h3>How it works</h3><p>Each search engine gives you a unique code. This plugin outputs that code as a <code>&lt;meta&gt;</code> tag in your site’s <code>&lt;head&gt;</code>. When you click <strong>Verify</strong>, the search engine checks your homepage source for that tag.</p><h3>Step-by-Step Google Verification</h3><ol><li>Go to <a href='https://search.google.com/search-console/' target='_blank'>Google Search Console</a> and add your property</li><li>Choose the <strong>HTML tag</strong> verification method</li><li>Copy <strong>only</strong> the value inside <code>content=&quot;...&quot;</code> (not the full meta tag)</li><li>Paste it into the Google verification field in this plugin and click <strong>Save Settings</strong></li><li>Return to Google Search Console and click <strong>Verify</strong></li></ol><div class='asnerisseo-modal-warning'><strong>Common mistake:</strong> Don’t paste the entire <code>&lt;meta&gt;</code> tag. Paste only the content value (the long string).</div><h3>Google Search Console (GSC)</h3><p>Google provides a tag like:</p><pre>&lt;meta name=&quot;google-site-verification&quot; content=&quot;abc123xyz456&quot; /&gt;</pre><p>Paste only: <code>abc123xyz456</code></p><p><strong>Tip:</strong> If you’re using the <em>Domain</em> property in GSC, Google may require DNS verification instead. This meta-tag method is typically for <em>URL-prefix</em> properties.</p><h3>Troubleshooting Google Verification</h3><ul><li><strong>Clear cache:</strong> If you use caching/CDN, purge cache after saving.</li><li><strong>Check page source:</strong> Open your homepage, view source, and confirm the meta tag is present in <code>&lt;head&gt;</code>.</li><li><strong>Avoid duplicates:</strong> Don’t add the same verification code in multiple plugins (it can create confusion).</li><li><strong>Staging sites:</strong> If your site is globally set to <code>noindex</code>, verification can still work, but indexing won’t happen until <code>noindex</code> is removed.</li></ul><h3>After Successful Verification</h3><ul><li>Submit your XML sitemap to help Google find all your pages</li><li>Monitor indexing status and fix crawl errors</li><li>Track search performance and click-through rates</li><li>Set up email alerts for critical issues</li><li>Use URL inspection tool to test individual pages</li></ul><div class='asnerisseo-modal-info'><strong>💡 Pro Tip:</strong> Google Search Console data has a 3-day delay. Don't expect immediate results after making SEO changes.</div>"
      },
      "bing-verification": {
        "title": "Bing Webmaster Tools Verification",
        "body": "<h3>What Is Bing Verification?</h3><p>Bing verification proves to Bing Webmaster Tools that you own or manage this website. Once verified, you gain access to:</p><ul><li>Indexing and crawl reports for Bing and Yahoo</li><li>Sitemap submission and crawl control</li><li>Search performance data</li><li>SEO and site health insights</li></ul><h3>How Bing Verification Works</h3><p>Bing provides a unique verification code that must be added as a <code>&lt;meta&gt;</code> tag inside your site's <code>&lt;head&gt;</code> section.</p><p>This plugin automatically inserts the meta tag for you.</p><h3>Step-by-Step Verification Process</h3><ol><li>Go to <a href='https://www.bing.com/webmasters/' target='_blank'>Bing Webmaster Tools</a></li><li>Add your website (or select an existing site)</li><li>Choose the <strong>HTML Meta Tag</strong> verification method</li><li>Copy ONLY the <code>content</code> value provided by Bing</li><li>Paste the value into the Bing verification field in this plugin</li><li>Click <strong>Save Settings</strong></li><li>Return to Bing Webmaster Tools and click <strong>Verify</strong></li></ol><h3>Example: Bing Meta Tag</h3><pre>&lt;meta name=\"msvalidate.01\" content=\"ABC123DEF456\" /&gt;</pre><p>You only need to copy: <code>ABC123DEF456</code></p><div class='asnerisseo-modal-warning'><strong>⚠️ Common Mistake:</strong> Do not paste the entire meta tag. Paste only the value inside <code>content=\"\"</code>.</div><h3>Why Bing Matters</h3><ul><li>Powers <strong>Bing Search</strong></li><li>Used by <strong>Yahoo Search</strong></li><li>Feeds results to <strong>DuckDuckGo</strong> and other platforms</li><li>Often easier and faster indexing than Google</li></ul><div class='asnerisseo-modal-info'><strong>💡 Note:</strong> Verification does NOT improve rankings. It only unlocks access to Bing’s webmaster reports and tools.</div><h3>After Verification</h3><ul><li>Submit your sitemap</li><li>Monitor crawl errors</li><li>View search queries and impressions</li><li>Manage crawl rate and indexing preferences</li></ul>"
      },
      "yandex-verification": {
        "title": "Yandex Webmaster Verification",
        "body": "<h3>What Is Yandex Verification?</h3><p>Yandex verification confirms that you own or manage this website, allowing access to Yandex Webmaster tools.</p><p>Yandex is a major search engine in Russian-speaking regions.</p><h3>When Yandex Verification Is Useful</h3><ul><li>You target users in Russia, Ukraine, Belarus, Kazakhstan, or CIS regions</li><li>Your content is multilingual or region-specific</li><li>You want visibility insights for Yandex search</li></ul><h3>How Yandex Verification Works</h3><p>Yandex provides a unique verification code that must be added as a <code>&lt;meta&gt;</code> tag in your site’s <code>&lt;head&gt;</code>.</p><p>This plugin automatically adds the tag for you.</p><h3>Step-by-Step Verification Process</h3><ol><li>Go to <a href='https://webmaster.yandex.com/' target='_blank'>Yandex Webmaster</a></li><li>Add your website</li><li>Select the <strong>Meta Tag</strong> verification method</li><li>Copy ONLY the verification code value</li><li>Paste the value into the Yandex verification field in this plugin</li><li>Click <strong>Save Settings</strong></li><li>Return to Yandex Webmaster and click <strong>Verify</strong></li></ol><h3>Example: Yandex Meta Tag</h3><pre>&lt;meta name=\"yandex-verification\" content=\"abcdef123456\" /&gt;</pre><p>You only need to copy: <code>abcdef123456</code></p><div class='asnerisseo-modal-warning'><strong>⚠️ Common Mistake:</strong> Do not paste the full meta tag. Only paste the verification string.</div><h3>Important Notes About Yandex</h3><ul><li>Verification is optional for most global websites</li><li>Not required if you do not target Yandex users</li><li>Yandex uses different ranking and crawling rules than Google</li></ul><div class='asnerisseo-modal-info'><strong>💡 Note:</strong> Verification does NOT influence rankings. It only enables access to Yandex Webmaster data.</div><h3>After Verification</h3><ul><li>Submit your sitemap</li><li>Monitor indexing and crawl issues</li><li>View search queries and regional performance</li><li>Manage crawl settings for Yandex bots</li></ul>"
      },                              
      "indexnow-protocol": {
        "title": "Understanding IndexNow",
        "body": "<h3>What is IndexNow?</h3><p><strong>IndexNow</strong> is a protocol that lets your site <strong>notify participating search engines</strong> when a URL is created, updated, or deleted. This reduces the waiting time for discovery compared to relying only on crawling.</p><div class='asnerisseo-modal-info'><strong>Plain meaning:</strong> Your site “pings” search engines when something changes, so they know what to check next.</div><h3>How it works</h3><ol><li>You publish, update, or delete a page</li><li>This plugin sends the changed URL(s) to an IndexNow endpoint</li><li>Participating search engines can pick up those URLs for faster crawling</li><li>Search engines may crawl the URL sooner than usual</li></ol><h3>Participating search engines</h3><p><strong>Commonly supported via IndexNow:</strong></p><ul><li>✅ Bing (Microsoft)</li><li>✅ Yandex</li><li>✅ Seznam.cz (Czech Republic)</li><li>✅ Naver (South Korea)</li></ul><p><strong>Not supported:</strong></p><ul><li>❌ Google (Google does not use IndexNow)</li></ul><h3>What IndexNow helps with</h3><ul><li><strong>Faster discovery</strong> of new or updated pages (especially on Bing and other participating engines)</li><li><strong>Less wasted crawling</strong> (engines don’t need to re-check unchanged pages as often)</li><li><strong>Better for time-sensitive content</strong> (news, deals, events, frequent updates)</li></ul><h3>What IndexNow does NOT do</h3><div class='asnerisseo-modal-warning'><strong>Important realities:</strong><ul><li>IndexNow does <strong>not</strong> guarantee indexing</li><li>IndexNow does <strong>not</strong> improve rankings by itself</li><li>Search engines still decide whether/when to crawl and index</li><li>You still need Google Search Console for Google-related indexing workflows</li></ul></div><h3>API key and verification file</h3><p>IndexNow requires proof that you control the site. When you enable IndexNow, this plugin generates an <strong>API key</strong> and creates a verification file at:</p><pre>https://yoursite.com/&lt;your-api-key&gt;.txt</pre><p>Participating search engines may check for this file before accepting URL notifications.</p><h3>Should you enable it?</h3><p><strong>Enable IndexNow if:</strong></p><ul><li>You publish or update content frequently (weekly or more)</li><li>You care about Bing visibility or non-Google search engines</li><li>You run time-sensitive pages (offers, announcements, event pages)</li></ul><p><strong>Skip IndexNow if:</strong></p><ul><li>You publish rarely (e.g., monthly) and don’t need faster discovery</li><li>Your only focus is Google</li><li>Your site is still in staging / not meant to be indexed yet</li></ul><div class='asnerisseo-modal-info'><strong>Best practice:</strong> Keep your sitemap enabled and submitted in Google Search Console and Bing Webmaster Tools. IndexNow is a <strong>complement</strong>, not a replacement.</div>"
      },
      "social-media-tags": {
        "title": "Social Media & Open Graph Tags",
        "body": "<h3>What Are Open Graph Tags?</h3><p>Open Graph (OG) tags control how your pages appear when shared on social media platforms. They define:<ul><li>Preview image</li><li>Title and description</li><li>URL and site name</li></ul></p><h3>Platform Support</h3><p><strong>Open Graph is used by:</strong><ul><li>Facebook</li><li>LinkedIn</li><li>Pinterest</li><li>WhatsApp</li><li>Discord</li><li>Telegram</li><li>Slack</li><li>Most other social and messaging apps</li></ul></p><p><strong>Twitter/X uses:</strong><ul><li>Twitter Cards (similar to Open Graph but with different meta tags)</li><li>Falls back to Open Graph if Twitter Card tags are missing</li></ul></p><h3>Default Open Graph Image</h3><p>This image is used when:<ul><li>A page doesn't have a featured image</li><li>A page is shared on social media</li><li>No other image is explicitly set</li></ul></p><p><strong>Recommended size:</strong> 1200×630 pixels</p><p><strong>Why this size?</strong> It works well on Facebook, LinkedIn, Twitter, Discord, and most platforms without cropping.</p><h3>Twitter Username</h3><p>Setting your Twitter/X username enables \"Twitter Card\" previews with large images when your content is shared on Twitter/X.</p><p>Format: Just the username (without @)</p><p>Example: <code>yourusername</code> not <code>@yourusername</code></p><h3>Facebook App ID</h3><p>This is optional and only needed if you want:<ul><li>Facebook Insights for your website</li><li>Advanced analytics on how your content performs on Facebook</li><li>Validation tools in Facebook's Sharing Debugger</li></ul></p><p>Most sites can skip this.</p><h3>Theme Color</h3><p>Some platforms (Discord, Telegram) display a colored strip or embed border using the <code>theme-color</code> meta tag. This is purely cosmetic.</p><p>Example: <code>#2271b1</code> (WordPress blue)</p><div class='asnerisseo-modal-info'><strong>💡 Tip:</strong> Use your brand's primary color for consistency.</div><h3>Do Social Tags Affect SEO?</h3><p><strong>No.</strong> Google does not use Open Graph or Twitter Card tags for rankings. However, better social previews can lead to:<ul><li>More clicks from social media</li><li>More traffic to your site</li><li>Better brand recognition</li></ul></p><div class='asnerisseo-modal-warning'><strong>⚠️ Reality Check:</strong> Social tags affect how your links look when shared. They do not improve your Google rankings directly.</div><h3>Testing Your Social Tags</h3><p>Use these tools to preview how your pages will look when shared:<ul><li><strong>Facebook:</strong> <a href='https://developers.facebook.com/tools/debug/' target='_blank'>Sharing Debugger</a></li><li><strong>Twitter/X:</strong> <a href='https://cards-dev.twitter.com/validator' target='_blank'>Card Validator</a></li><li><strong>LinkedIn:</strong> <a href='https://www.linkedin.com/post-inspector/' target='_blank'>Post Inspector</a></li></ul></p>"
      },
      "schema-structured-data": {
        "title": "Schema & Structured Data",
        "body": "<h3>What Is Schema.org Markup?</h3><p>Schema (structured data) is code that describes your content in a machine-readable format. It helps search engines understand:<ul><li>What your page is about</li><li>What type of content it contains (article, business, event, recipe, etc.)</li><li>Key details (name, address, phone, hours, reviews, etc.)</li></ul></p><h3>Why Use Schema?</h3><p><strong>Benefits:</strong><ul><li>Helps search engines understand your content better</li><li><em>May</em> enable rich results (stars, breadcrumbs, business info) in search</li><li>Improves content clarity for voice assistants and AI</li></ul></p><div class='asnerisseo-modal-warning'><strong>⚠️ Important Reality:</strong> Schema does NOT guarantee rich results or better rankings. Google may choose to display rich results if it finds the schema useful and the content high-quality, but there's no guarantee.</div><h3>Organization Schema</h3><p>This markup describes your business or brand:<ul><li>Official name</li><li>Logo</li><li>Social media profiles</li><li>Website URL</li></ul></p><p>Most sites should enable Organization schema — it's simple and helps establish brand identity.</p><h3>Breadcrumbs Schema</h3><p>Breadcrumbs show page hierarchy (e.g., Home > Blog > Article Title).</p><p><strong>Enable if:</strong><ul><li>Your site has multiple levels (categories, subcategories, pages)</li><li>You want breadcrumbs to appear in Google search results (if Google chooses to display them)</li></ul></p><p><strong>Skip if:</strong><ul><li>Your site is simple (only homepage and a few pages)</li><li>You don't use category/taxonomy structures</li></ul></p><div class='asnerisseo-modal-info'><strong>💡 Tip:</strong> Use Google's <a href='https://search.google.com/test/rich-results' target='_blank'>Rich Results Test</a> to validate your schema after setup.</div><h3>Schema Does Not Guarantee Rankings</h3><p>Schema helps search engines understand your content. It may lead to better visibility through rich results, but it does NOT directly improve rankings. High-quality content, good user experience, and proper technical SEO still matter most.</p>"
      },
      "local-biz-data": {
        "title": "Local Business Schema",
        "body": "<h3>What Is Local Business Schema?</h3><p>Local Business schema is structured data that helps search engines understand your physical business location, services, and operating details. It's specifically designed for businesses that serve customers at a physical location or within a defined service area.</p><h3>When to Enable Local Business Schema</h3><p><strong>Enable only if you:</strong><ul><li>Have a physical location customers can visit</li><li>Serve customers in a defined geographic area</li><li>Want to appear in local search and Google Maps</li><li>Have consistent business hours and contact information</li></ul></p><p><strong>Don't enable if you:</strong><ul><li>Run a purely online business with no physical presence</li><li>Don't serve specific geographic areas</li><li>Only sell digital products or services globally</li></ul></p><h3>Business Information Must Match</h3><div class='asnerisseo-modal-warning'><strong>🔥 Critical:</strong> If you have a Google Business Profile, your Name, Address, and Phone (NAP) must EXACTLY match between:<ul><li>This plugin's schema settings</li><li>Your Google Business Profile</li><li>Your website footer/contact page</li></ul><p>Inconsistent information confuses search engines and hurts local SEO.</p></div><h3>Business Type Selection</h3><p>Choose the most specific business type that matches your business. For example:<ul><li>Don't choose \"Restaurant\" if you're a \"FastFoodRestaurant\"</li><li>Don't choose \"Store\" if you're a \"ClothingStore\"</li><li>Don't choose \"Professional Service\" if you're a \"LegalService\"</li></ul></p><p>Specific types give search engines more context about your business category.</p><h3>Required vs Optional Fields</h3><p><strong>Essential for Local SEO:</strong><ul><li>Business name</li><li>Complete address</li><li>Phone number</li><li>Business hours</li><li>Business type/category</li></ul></p><p><strong>Optional but helpful:</strong><ul><li>Price range ($$, $$$, etc.)</li><li>Payment methods accepted</li><li>Languages spoken</li><li>Service areas</li></ul></p><p>Leaving optional fields empty won't harm your site, but complete information may help with local visibility.</p><div class='asnerisseo-modal-info'><strong>💡 Tip:</strong> Use Google's <a href='https://search.google.com/test/rich-results' target='_blank'>Rich Results Test</a> to validate your local business schema after setup.</div><h3>Local Business Schema Benefits</h3><p>Local Business schema may help with:<ul><li>Appearing in \"Map Pack\" results</li><li>Showing business hours in search results</li><li>Displaying contact information directly</li><li>Better local search visibility</li></ul></p><div class='asnerisseo-modal-warning'><strong>⚠️ Important:</strong> Schema does not guarantee rich results or improved rankings. It helps search engines understand your business better, which may lead to better local visibility.</div>"
      },
      "seo-templates": {
        "title": "SEO Templates Explained",
        "body": "<h3>What Are SEO Templates?</h3><p>SEO templates provide automatic fallback values for page titles and meta descriptions when individual pages don't have custom SEO set.</p><p><strong>Key point:</strong> Templates are used ONLY when per-page SEO values are missing.</p><h3>How Templates Work</h3><p><strong>Priority order:</strong><ol><li><strong>Custom per-page SEO</strong> (highest priority) — set via meta box on individual posts/pages</li><li><strong>Template</strong> (fallback) — uses template with variables</li><li><strong>WordPress default</strong> (last resort) — basic title from post/page title</li></ol></p><h3>Available Variables</h3><p>Templates use variables that automatically fill with page-specific information:</p><ul><li><code>{title}</code> - The page or post title</li><li><code>{site}</code> - Your site name (from General Settings)</li><li><code>{separator}</code> - The separator character you configure (e.g., |)</li><li><code>{excerpt}</code> - The post excerpt (if available)</li><li><code>{category}</code> - The primary category (for posts)</li><li><code>{author}</code> - The post author name</li><li><code>{date}</code> - The publication date</li></ul><div class='asnerisseo-modal-info'><strong>💡 Note:</strong> You don't need to use all variables. Only use what makes sense for your site.</div><h3>Common Template Examples</h3><p><strong>Simple title template:</strong></p><pre>{title} {separator} {site}</pre><p>Result: \"About Us | Asneris SEO Toolkit\"</p><p><strong>Blog post with category:</strong></p><pre>{title} {separator} {category} {separator} {site}</pre><p>Result: \"How to Use Schema | SEO Tips | Asneris SEO Toolkit\"</p><p><strong>Minimalist:</strong></p><pre>{title}</pre><p>Result: Just the page title, no site name</p><h3>Title Separator</h3><p>The separator is the character that visually splits parts of the title. Common options:<ul><li><code>|</code> (pipe) - most common</li><li><code>-</code> (dash)</li><li><code>·</code> (middle dot)</li><li><code>•</code> (bullet)</li></ul></p><p>Choose one that matches your brand style. There's no SEO advantage to any specific separator.</p><h3>Description Templates</h3><p>Description templates work similarly, but you can often leave them empty.</p><p><strong>If empty:</strong> This plugin (or your theme) will automatically extract the first ~155 characters from the page content or excerpt.</p><p><strong>If filled:</strong> The template will be used as the meta description fallback.</p><p>Example description template:</p><pre>Read about {title} on {site}. {excerpt}</pre><div class='asnerisseo-modal-warning'><strong>⚠️ Best Practice:</strong> For most sites, it's better to leave description templates empty and let the plugin auto-generate from content. This ensures descriptions are unique and relevant.</div><h3>Per-Post Type Templates</h3><p>You can set different templates for:<ul><li>Posts</li><li>Pages</li><li>Custom post types (e.g., Products, Events)</li></ul></p><p>This gives you flexibility. For example:<ul><li><strong>Pages:</strong> <code>{title} | {site}</code></li><li><strong>Posts:</strong> <code>{title} - {category} | {site}</code></li></ul></p><h3>When Should I Use Templates?</h3><p><strong>Use templates if:</strong><ul><li>You have many pages and can't write custom SEO for each one</li><li>You want consistent title formatting across your site</li><li>You're okay with generic fallback descriptions</li></ul></p><p><strong>Write custom per-page SEO if:</strong><ul><li>The page is important (homepage, key landing pages, popular posts)</li><li>You want to optimize for specific keywords or phrases</li><li>You want compelling, unique descriptions that drive clicks</li></ul></p><div class='asnerisseo-modal-info'><strong>💡 Pro Tip:</strong> Start with simple templates like <code>{title} | {site}</code>. You can always customize important pages individually later.</div><h3>Do Templates Affect Rankings?</h3><p>Templates help ensure every page has a title and description. However:<ul><li>Custom, hand-written SEO titles and descriptions usually perform better</li><li>Templates provide consistency but lack specificity</li><li>High-value pages should always have custom SEO</li></ul></p><p>Think of templates as safety nets, not optimization tools.</p>"
      },
      "maintenance-safety": {
        "title": "Maintenance & Safety Tools",
        "body": "<h3>What's on This Tab?</h3><p>The Maintenance & Safety tab provides tools for:<ul><li>Detecting conflicts with other SEO plugins</li><li>Exporting your settings as a backup</li><li>Importing settings from a backup</li><li>Resetting all plugin settings</li></ul></p><p>Most users rarely need these tools unless troubleshooting issues or migrating sites.</p><h3>Conflict Detection</h3><p>This plugin checks for other active SEO plugins and warns you if multiple plugins might be outputting duplicate meta tags, schema, or sitemaps.</p><p><strong>Common conflicts:</strong><ul><li>Multiple title tags</li><li>Duplicate meta descriptions</li><li>Conflicting canonical URLs</li><li>Duplicate schema markup</li><li>Multiple active sitemaps</li></ul></p><div class='asnerisseo-modal-warning'><strong>⚠️ Warning:</strong> Running multiple SEO plugins simultaneously can confuse search engines and hurt your SEO. Keep only one SEO plugin active at a time.</div><p><strong>How to fix conflicts:</strong><ol><li>Decide which SEO plugin you want to use as your primary tool</li><li>Deactivate or uninstall other SEO plugins</li><li>Clear your site cache (if using a caching plugin)</li><li>Test a few pages to ensure meta tags appear correctly</li></ol></p><h3>Export Settings</h3><p>Use this to download your current plugin settings as a JSON file.</p><p><strong>When to export:</strong><ul><li>Before making major changes</li><li>Before updating WordPress or the plugin</li><li>Before migrating to a new hosting provider</li><li>As a regular backup (monthly or quarterly)</li></ul></p><p>The exported file contains all your settings (verification codes, social media config, schema settings, templates, etc.) but does NOT include per-post SEO data.</p><h3>Import Settings</h3><p>Upload a previously exported JSON file to restore settings.</p><div class='asnerisseo-modal-warning'><strong>⚠️ Important:</strong> Only import files that were exported from this plugin. Importing settings from other plugins or manually edited JSON files may cause errors.</div><p><strong>Use cases:</strong><ul><li>Restoring settings after a reset</li><li>Cloning settings to a new site (staging, development)</li><li>Recovering from accidental changes</li></ul></p><h3>Reset Settings</h3><p>This button deletes ALL plugin settings and returns everything to default.</p><div class='asnerisseo-modal-warning'><strong>🔥 Danger:</strong> This action is PERMANENT and cannot be undone. All configuration, verification codes, schema settings, and templates will be deleted.</div><p><strong>Use reset only if:</strong><ul><li>You want to start fresh with a clean configuration</li><li>You're troubleshooting a serious issue and need to rule out bad settings</li><li>You're preparing to uninstall the plugin</li></ul></p><p><strong>Before resetting:</strong> Export your settings so you can restore them later if needed.</p><h3>Plugin Information</h3><p>This section shows:<ul><li>Plugin version number</li><li>Plugin installation path</li></ul></p><p>Useful for troubleshooting or when contacting support.</p><div class='asnerisseo-modal-info'><strong>💡 Pro Tip:</strong> Make it a habit to export settings before making major changes. It takes 5 seconds and can save you hours of reconfiguration if something goes wrong.</div>"
      }
    }
  },
  "page-diagnostics": {
  "cards": [
    {
      "title": "About Page Diagnostics",
      "icon": "dashicons-info",
      "content": "<p>Inspect a single page and see exactly what search engines can read from it — including title, description, canonical URL, indexing rules, and structured data.</p>",
      "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/page-diagnostics/"
    },
    {
      "title": "How to Use",
      "icon": "dashicons-search",
      "content": "<ul><li>Select a page from your site or paste a full URL</li><li>Click <strong>Run Diagnostics</strong> to fetch the page</li><li>Review each section to confirm what search engines and social platforms can read</li><li><em>Tip:</em> This tool does not change your page — it only inspects it</li></ul>",
      "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/diagnostics-guide/"
    },
    {
      "title": "What You’ll See",
      "icon": "dashicons-lightbulb",
      "content": "<ul><li><strong>Page Fetch:</strong> Whether the page loads correctly or redirects</li><li><strong>Indexing Rules:</strong> Whether the page is allowed to appear in search results</li><li><strong>Canonical URL:</strong> Which URL the page declares as its main version</li><li><strong>Meta & Schema:</strong> Title, description, social preview tags, and structured data</li></ul>",
      "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/understanding-results/"
    },
    {
      "title": "Note",
      "icon": "dashicons-warning",
      "content": "<p>This page is read-only. It shows factual output only — no scoring, no recommendations, and no ranking predictions. Use it to spot missing, conflicting, or unexpected signals.</p>",
      "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/facts-based-approach/"
    }
  ],
  "modals": {
    "page-diagnostics-overview": {
      "title": "Page Diagnostics Overview",
      "body": "<h3>What is Page Diagnostics?</h3><p><strong>Page Diagnostics</strong> is a read-only inspection tool that shows you exactly what search engines, social platforms, and browsers can read from a single page on your site.</p><p>This page reflects a <strong>single fetch at a specific point in time</strong>. Results may change if your page, settings, or server behavior changes.</p><h3>What It Does</h3><ul><li>Fetches a page's HTML as search engines would see it</li><li>Extracts all SEO-relevant meta tags and structured data</li><li>Shows HTTP status codes and redirects</li><li>Displays title tags, descriptions, canonical URLs, and robots directives</li><li>Lists social media preview tags (Open Graph, Twitter Cards)</li><li>Shows structured data (schema.org JSON-LD)</li></ul><div class=\"asnerisseo-info-box\"><strong>Important:</strong> This tool is <strong>read-only</strong>. It shows facts about what exists — no scoring, no recommendations, no changes.</div><h3>What It Does NOT Do</h3><ul><li>Does not predict rankings or guarantee results</li><li>Does not assign quality scores</li><li>Does not provide content optimization suggestions</li><li>Does not modify your page in any way</li></ul><h3>When to Use Page Diagnostics</h3><ul><li>Verify SEO settings are correctly applied to a specific page</li><li>Troubleshoot indexing issues for individual URLs</li><li>Check if multiple plugins are creating duplicate tags</li><li>Confirm redirects are working as expected</li><li>Verify social preview tags before sharing</li><li>Inspect structured data output</li></ul><h3>How It Works</h3><ol><li>Select a page from the dropdown or enter a custom URL</li><li>Click \"Run Diagnostics\" to fetch the page</li><li>Review the results in categorized sections</li><li>Use findings to verify or troubleshoot settings</li></ol>"
    },
    "page-fetch-status": {
      "title": "Page Fetch & HTTP Status",
      "body": "<h3>What is Page Fetch?</h3><p>Page fetch shows whether the page loads successfully and reports the HTTP status code returned by your server.</p><h3>HTTP Status Codes</h3><p><strong>2xx Success:</strong></p><ul><li><code>200 OK</code> — Page loaded successfully (most common)</li></ul><p><strong>3xx Redirects:</strong></p><ul><li><code>301 Moved Permanently</code> — Page has permanently moved to a new URL</li><li><code>302 Found</code> — Page temporarily redirects to another URL</li><li><code>307 Temporary Redirect</code> — Similar to 302, preserves request method</li></ul><p><strong>4xx Client Errors:</strong></p><ul><li><code>404 Not Found</code> — Page does not exist</li><li><code>403 Forbidden</code> — Access denied</li><li><code>410 Gone</code> — Page permanently removed</li></ul><p><strong>5xx Server Errors:</strong></p><ul><li><code>500 Internal Server Error</code> — Server-side problem</li><li><code>503 Service Unavailable</code> — Server temporarily down</li></ul><div class=\"asnerisseo-warning-box\"><strong>Important:</strong> If a page returns 404, 500, or other error codes, search engines cannot index it — even if it appears in your sitemap.</div><h3>Redirects</h3><p>If the page redirects, you'll see:</p><ul><li><strong>Tested URL:</strong> The URL you entered</li><li><strong>Final URL:</strong> Where the page ultimately lands</li><li><strong>Redirect Type:</strong> 301, 302, 307, etc.</li></ul><p><strong>Important:</strong> The <em>Final URL</em> is where the browser lands after redirects. It is not necessarily the canonical URL.</p><div class=\"asnerisseo-info-box\"><strong>Note:</strong> Search engines follow redirects but may lose signals through redirect chains. Keep redirects to 1 hop when possible.</div>"
    },
    "indexing-rules": {
      "title": "Indexing Rules (Robots Meta)",
      "body": "<h3>What Are Indexing Rules?</h3><p>Indexing rules tell search engines whether a page is <strong>allowed</strong> to appear in search results. These rules are communicated through:</p><ul><li><code>&lt;meta name=\"robots\"&gt;</code> tags in HTML</li><li><code>X-Robots-Tag</code> HTTP headers</li></ul><h3>Common Directives</h3><p><strong>index:</strong> Allow the page in search results (default)</p><p><strong>noindex:</strong> Prevent the page from appearing in search results</p><p><strong>follow:</strong> Allow search engines to follow links on the page (default)</p><p><strong>nofollow:</strong> Do not follow links on this page</p><p><strong>noarchive:</strong> Do not show a cached copy in search results</p><p><strong>nosnippet:</strong> Do not show a text snippet or video preview in search results</p><div class=\"asnerisseo-warning-box\"><strong>Critical:</strong> If a page has <code>noindex</code>, search engines will <strong>remove it</strong> from their index (or never index it). Make sure this is intentional.</div><p><strong>Note:</strong> Removing <code>noindex</code> does not instantly restore rankings — search engines must re-crawl the page.</p><h3>Multiple Robots Tags</h3><p>If Page Diagnostics detects <strong>multiple robots meta tags</strong>, this indicates a conflict:</p><ul><li>Multiple SEO plugins outputting tags</li><li>Theme and plugin both adding tags</li><li>Manual tags in addition to plugin-generated ones</li></ul><div class=\"asnerisseo-info-box\"><strong>Resolution:</strong> Search engines typically use the <strong>most restrictive</strong> directive when multiple tags exist. Fix conflicts by disabling duplicate SEO plugins.</div><h3>X-Robots-Tag Header</h3><p>Some sites use HTTP headers instead of meta tags. If present, Page Diagnostics will show the <code>X-Robots-Tag</code> value. This header has the same effect as the meta tag.</p>"
    },
    "canonical-url": {
      "title": "Canonical URL",
      "body": "<h3>What is a Canonical URL?</h3><p>A <strong>canonical URL</strong> tells search engines which version of a page to index when multiple URLs show the same (or very similar) content.</p><h3>Why Canonical URLs Matter</h3><p>These URLs may show the same content:</p><ul><li><code>example.com/page</code></li><li><code>example.com/page/</code> (with trailing slash)</li><li><code>example.com/page?utm_source=email</code> (with tracking parameters)</li></ul><p>The canonical tag consolidates ranking signals to one preferred URL.</p><h3>Canonical Tag Format</h3><pre>&lt;link rel=\"canonical\" href=\"https://example.com/page/\" /&gt;</pre><h3>Common Patterns</h3><p><strong>Self-referencing canonical:</strong> Most pages should canonical to themselves (the current URL). This is the default WordPress behavior.</p><p><strong>Cross-page canonical:</strong> Page A canonicals to Page B. This tells search engines to index Page B instead of Page A.</p><div class=\"asnerisseo-warning-box\"><strong>Important:</strong> If a page canonicals to a <strong>different URL</strong>, search engines will likely <strong>not index</strong> that page — they'll index the canonical target instead.</div><h3>Issues to Watch For</h3><ul><li><strong>Multiple canonical tags:</strong> Indicates plugin conflicts (search engines use the first one)</li><li><strong>Canonical to homepage:</strong> All pages pointing to homepage (loses page-level indexing)</li><li><strong>Canonical to redirected URL:</strong> Target URL redirects elsewhere (creates confusion)</li><li><strong>Canonical to noindex page:</strong> Target is blocked from indexing (page won't be indexed)</li><li><strong>HTTP vs HTTPS mismatch:</strong> Canonical uses wrong protocol</li></ul><h3>Testing Canonical Target</h3><p>Page Diagnostics will test the canonical target URL and report:</p><ul><li><strong>HTTP Status:</strong> Does the target load successfully?</li><li><strong>Redirects:</strong> Does the target redirect elsewhere?</li><li><strong>Indexability:</strong> Is the target allowed to be indexed?</li></ul><p><strong>Tip:</strong> A green \"self-referencing\" canonical is usually the safest and recommended setup.</p><div class=\"asnerisseo-info-box\"><strong>WordPress Default:</strong> WordPress automatically adds a self-referencing canonical to most pages. Custom canonicals are rarely needed.</div>"
    },
    "meta-tags": {
      "title": "Meta Tags (Title & Description)",
      "body": "<h3>Title Tag</h3><p>The title tag (<code>&lt;title&gt;</code>) is what appears:</p><ul><li>In search engine results as the blue clickable link</li><li>In browser tabs</li><li>When pages are shared on social media</li></ul><h3>Title Tag Best Practices</h3><ul><li>Keep under 60 characters (search engines may truncate longer titles)</li><li>Include primary keywords naturally</li><li>Make titles unique across pages</li><li>Write for humans first, search engines second</li></ul><div class=\"asnerisseo-warning-box\"><strong>Multiple Title Tags:</strong> If Page Diagnostics detects multiple <code>&lt;title&gt;</code> tags, this indicates a conflict between your theme and plugins. Search engines typically use the first title tag.</div><h3>Meta Description</h3><p>The meta description is the brief text that appears below the title in search results.</p><h3>Key Points About Descriptions</h3><ul><li>Search engines <strong>may</strong> display your description or generate their own</li><li>Does <strong>not</strong> directly affect rankings</li><li>Affects click-through rates (CTR) when shown</li><li>Typical display range: ~120–160 characters (varies by query and device)</li></ul><div class=\"asnerisseo-info-box\"><strong>Note:</strong> Google often ignores custom descriptions and generates its own based on the user's search query and page content.</div><h3>Multiple Meta Tags</h3><p>If Page Diagnostics shows <strong>multiple meta descriptions</strong>, this indicates:</p><ul><li>Multiple SEO plugins are active</li><li>Theme and plugin both output descriptions</li><li>Manual meta tags exist in addition to plugin-generated ones</li></ul><p><strong>Resolution:</strong> Disable duplicate SEO plugins or remove manual meta tags. Search engines typically use the first meta description tag.</p><h3>Missing Title or Description</h3><p>If no custom title or description is set:</p><ul><li><strong>Title:</strong> WordPress uses the post title + site name</li><li><strong>Description:</strong> May auto-generate from post excerpt or first ~30 words of content</li></ul>"
    },
    "social-preview": {
      "title": "Social Media Preview Tags",
      "body": "<h3>What Are Social Preview Tags?</h3><p>Social preview tags control how your pages look when shared on social media platforms like Facebook, Twitter, LinkedIn, and messaging apps.</p><p>These tags affect how links look when shared — they do not affect search rankings.</p><h3>Open Graph (og:) Tags</h3><p>Used by Facebook, LinkedIn, Discord, and most social platforms:</p><ul><li><code>og:title</code> — Title shown in preview</li><li><code>og:description</code> — Description text</li><li><code>og:image</code> — Preview image</li><li><code>og:url</code> — Canonical URL for social sharing</li><li><code>og:type</code> — Content type (article, website, etc.)</li><li><code>og:site_name</code> — Your site's name</li></ul><h3>Twitter Card Tags</h3><p>Twitter/X uses its own tags (but falls back to Open Graph if missing):</p><ul><li><code>twitter:card</code> — Card type (summary, summary_large_image)</li><li><code>twitter:title</code> — Title for Twitter</li><li><code>twitter:description</code> — Description for Twitter</li><li><code>twitter:image</code> — Image for Twitter card</li><li><code>twitter:site</code> — Your Twitter username</li></ul><div class=\"asnerisseo-info-box\"><strong>Fallback Behavior:</strong> Most platforms will use Open Graph tags if Twitter-specific tags are missing.</div><h3>Recommended Image Sizes</h3><ul><li><strong>Open Graph:</strong> 1200×630 pixels (works on most platforms)</li><li><strong>Twitter Summary:</strong> 120×120 pixels (minimum)</li><li><strong>Twitter Large Image:</strong> 1200×628 pixels</li></ul><h3>Testing Social Previews</h3><p>Use these official tools to see how your pages appear when shared:</p><ul><li><strong>Facebook:</strong> <a href=\"https://developers.facebook.com/tools/debug/\" target=\"_blank\">Sharing Debugger</a></li><li><strong>Twitter:</strong> <a href=\"https://cards-dev.twitter.com/validator\" target=\"_blank\">Card Validator</a></li><li><strong>LinkedIn:</strong> <a href=\"https://www.linkedin.com/post-inspector/\" target=\"_blank\">Post Inspector</a></li></ul><div class=\"asnerisseo-warning-box\"><strong>Cache Note:</strong> Social platforms cache preview data. After updating tags, use their debug tools to clear the cache and fetch fresh data.</div><h3>Multiple Social Tags</h3><p>If Page Diagnostics detects multiple <code>og:title</code> or <code>og:image</code> tags, this indicates plugin conflicts. Platforms typically use the <strong>first</strong> tag they encounter.</p>"
    },
    "structured-data": {
      "title": "Structured Data (Schema)",
      "body": "<h3>What is Structured Data?</h3><p><strong>Structured data</strong> (also called schema markup) is code that helps search engines understand what your content represents — not just what it says.</p><h3>Common Schema Types</h3><ul><li><strong>Organization:</strong> Your company/site information</li><li><strong>WebSite:</strong> Site-level data and search box</li><li><strong>WebPage:</strong> Individual page information</li><li><strong>BreadcrumbList:</strong> Navigation path</li><li><strong>Article:</strong> Blog posts and news articles</li><li><strong>Product:</strong> E-commerce products</li><li><strong>LocalBusiness:</strong> Business location and hours</li><li><strong>Review:</strong> Customer reviews and ratings</li></ul><h3>JSON-LD Format</h3><p>Most modern structured data uses JSON-LD format, which appears in <code>&lt;script type=\"application/ld+json\"&gt;</code> tags.</p><p>Example:</p><pre>&lt;script type=\"application/ld+json\"&gt;\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Organization\",\n  \"name\": \"Your Company\",\n  \"url\": \"https://example.com\"\n}\n&lt;/script&gt;</pre><div class=\"asnerisseo-info-box\"><strong>Benefits:</strong> Structured data can help search engines show <strong>rich results</strong> (star ratings, breadcrumbs, event details, etc.) in search results — but rich results are never guaranteed.</div><p><strong>Note:</strong> Valid structured data does not guarantee rich results. Display is entirely at the search engine's discretion.</p><h3>What Page Diagnostics Shows</h3><ul><li><strong>Schema Block Count:</strong> Number of JSON-LD blocks found</li><li><strong>Schema Types:</strong> Which schema types are present</li><li><strong>Raw JSON:</strong> Full structured data code (expandable)</li></ul><h3>Validating Structured Data</h3><p>Use Google's official tools to validate schema:</p><ul><li><strong>Rich Results Test:</strong> <a href=\"https://search.google.com/test/rich-results\" target=\"_blank\">Test Tool</a> — Tests for rich result eligibility</li><li><strong>Schema Markup Validator:</strong> <a href=\"https://validator.schema.org/\" target=\"_blank\">Validator</a> — Validates schema.org syntax</li></ul><div class=\"asnerisseo-warning-box\"><strong>Important:</strong> Structured data improves <strong>understanding</strong>, not rankings. Rich results may appear if Google chooses to display them, but this is not guaranteed.</div><h3>Multiple Schema Blocks</h3><p>It's normal to have multiple JSON-LD blocks on a page (e.g., Organization + WebPage + BreadcrumbList). Each block serves a different purpose.</p><h3>Missing Structured Data</h3><p>If Page Diagnostics shows \"No schema blocks detected\":</p><ul><li>The page has no structured data (not necessarily a problem)</li><li>Schema may be embedded in HTML attributes (Page Diagnostics only shows JSON-LD)</li><li>You can add structured data through plugin settings or manually</li></ul>"
    }
  }
}, 
  "site-diagnostics": {
    "cards": [
      {
        "title": "About Site Diagnostics",
        "icon": "dashicons-info",
        "content": "<p>Site Diagnostics checks <strong>site-wide SEO patterns</strong> that may affect how search engines discover, understand, and index your pages. It focuses on global signals, not individual pages.</p><p>This helps you identify issues that impact <em>all</em> pages at once.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/site-diagnostics/"
      },
      {
        "title": "Can search engines easily discover your pages?",
        "icon": "dashicons-networking",
        "content": "<ul><li>Checks whether your XML sitemap exists and is accessible</li><li>Verifies HTTP status of the sitemap</li><li>Confirms whether the sitemap is referenced in robots.txt</li><li>Shows whether WordPress is managing the sitemap</li></ul><p><strong>Why this matters:</strong> If search engines cannot find your sitemap, they may discover pages slowly or miss updates.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/sitemaps/"
      },
      {
        "title": "Is your site sending clear, single signals?",
        "icon": "dashicons-yes",
        "content": "<ul><li>Detects multiple active SEO plugins</li><li>Checks for duplicate title tags</li><li>Checks for duplicate meta descriptions</li><li>Verifies single canonical output</li><li>Ensures robots and schema tags are not duplicated</li></ul><p><strong>Why this matters:</strong> Search engines expect one clear SEO signal per page. Multiple outputs can cause confusion.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/duplicate-signals/"
      },
      {
        "title": "Is anything blocking your site from search results?",
        "icon": "dashicons-shield",
        "content": "<ul><li>Checks if global <code>noindex</code> is enabled</li><li>Detects large robots.txt crawl blocks</li><li>Reviews sitemap accessibility</li><li>Samples redirect chains that may block crawling</li></ul><p><strong>Important:</strong> Even a well-optimized site cannot appear in search results if indexing is blocked.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/indexing-safety/"
      },
      {
        "title": "Do pages clearly identify their main URL?",
        "icon": "dashicons-admin-links",
        "content": "<ul><li>Detects pages canonicalizing to the homepage</li><li>Checks for canonical loops</li><li>Finds canonicals pointing to redirected URLs</li><li>Verifies consistent HTTP / HTTPS usage</li><li>Confirms default WordPress canonical behavior</li></ul><p><strong>Why this matters:</strong> Canonical URLs tell search engines which version of a page should be indexed.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/canonical-consistency/"
      },
      {
        "title": "How to use this page",
        "icon": "dashicons-lightbulb",
        "content": "<ol><li>Fix blocking issues (red status) first</li><li>Resolve duplicate or conflict warnings next</li><li>Use Page Diagnostics for deep checks on individual URLs</li><li>Re-run Site Diagnostics after major changes</li></ol>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/validation/"
      },
      {
        "title": "Important Note",
        "icon": "dashicons-warning",
        "content": "<p>This page shows <strong>facts and detected patterns only</strong>.</p><p>It does not predict rankings, assign scores, or guarantee results. It reflects what search engines can see at a site-wide level.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/facts-based-approach/"
      }
    ],
    "modals": {
      "site-diagnostics-overview": {
        "title": "Site Diagnostics Overview",
        "body": "<h3>What is Site Diagnostics?</h3><p><strong>Site Diagnostics</strong> performs automated checks on site-wide SEO patterns that may affect how search engines discover, crawl, and index your content.</p><h3>What It Checks</h3><ul><li><strong>Discovery:</strong> Can search engines find your sitemap and content?</li><li><strong>Conflicts:</strong> Are multiple plugins outputting duplicate SEO tags?</li><li><strong>Blocking Issues:</strong> Is anything preventing your site from appearing in search results?</li><li><strong>Canonical Consistency:</strong> Are pages correctly identifying their main URL?</li><li><strong>Technical Patterns:</strong> Are there redirect chains or crawl issues?</li></ul><div class=\"asnerisseo-info-box\"><strong>Note:</strong> Sitemaps help discovery, not rankings. They don't guarantee indexing or improve rankings directly.</div><div class=\"asnerisseo-info-box\"><strong>Important:</strong> This tool shows <strong>facts and patterns</strong> only. It does not predict rankings, assign scores, or guarantee results.</div><h3>What It Does NOT Check</h3><ul><li>Content quality or keyword optimization</li><li>Page speed or performance</li><li>Mobile-friendliness</li><li>Backlinks or domain authority</li><li>Individual page-level issues (use Page Diagnostics for that)</li></ul><h3>When to Run Site Diagnostics</h3><ul><li>After initial plugin setup</li><li>After major site changes (theme, plugins, settings)</li><li>When troubleshooting site-wide indexing issues</li><li>Before launching a new site</li><li>Periodically (monthly or quarterly)</li></ul><h3>Understanding Results</h3><p><strong>Status Indicators:</strong></p><ul><li><strong>✓ Pass (Green):</strong> No issues detected</li><li><strong>⚠ Warning (Yellow):</strong> Potential issues that may need attention</li><li><strong>✗ Error (Red):</strong> Critical issues that may prevent indexing</li><li><strong>ℹ Info (Blue):</strong> Informational notes, no action required</li><li>On newly launched sites, to verify nothing is blocking indexing</li></ul><div class=\"asnerisseo-warning-box\"><strong>Priority:</strong> Fix red errors first, then address yellow warnings. Info items are for reference only.</div><h3>How Long Does It Take?</h3><p>Site Diagnostics runs automatically when you load the page and typically completes in a few seconds. Results are cached for performance.</p>"
      },
      "sitemap-discovery": {
        "title": "Sitemap Discovery & Accessibility",
        "body": "<h3>What is Sitemap Discovery?</h3><p>Site Diagnostics checks whether your XML sitemap exists, is accessible, and is properly announced to search engines.</p><h3>What Gets Checked</h3><ul><li><strong>Sitemap Exists:</strong> Does your site have an XML sitemap?</li><li><strong>HTTP Status:</strong> Does the sitemap return 200 OK (not 404 or redirect)?</li><li><strong>Referenced in robots.txt:</strong> Is the sitemap declared in your robots.txt file?</li><li><strong>Format Validity:</strong> Is the sitemap valid XML?</li><li><strong>WordPress Core Sitemap:</strong> Is WordPress generating the sitemap?</li></ul><h3>Common Sitemap Locations</h3><ul><li><code>/wp-sitemap.xml</code> — WordPress core sitemap (default since WP 5.5)</li><li><code>/sitemap.xml</code> — Common SEO plugin location</li><li><code>/sitemap_index.xml</code> — Sitemap index (for large sites)</li></ul><h3>Why Sitemaps Matter</h3><ul><li>Help search engines discover new and updated pages faster</li><li>Provide last-modified dates for prioritization</li><li>Useful for large sites or sites with deep page hierarchies</li><li>Required for submitting to Google Search Console and Bing Webmaster Tools</li></ul><div class=\"asnerisseo-info-box\"><strong>Note:</strong> Sitemaps help <strong>discovery</strong>, not rankings. They don't guarantee indexing or improve rankings directly.</div><h3>Common Issues & Fixes</h3><p><strong>Sitemap Not Found (404):</strong></p><ul><li>Check if WordPress core sitemap is enabled (Settings → Reading)</li><li>Verify SEO plugin sitemap settings</li><li>Ensure only one sitemap source is active (avoid conflicts)</li><li>Check permalink settings (Settings → Permalinks, save to flush)</li></ul><p><strong>Sitemap Not in robots.txt:</strong></p><ul><li>Add <code>Sitemap: https://yoursite.com/sitemap.xml</code> to robots.txt</li><li>Most SEO plugins add this automatically</li><li>Manual addition is acceptable</li></ul><p><strong>Multiple SEO Plugins:</strong></p><ul><li>Disable sitemap generation in all but one plugin</li><li>Use WordPress core sitemap if no advanced features needed</li><li>Check for conflicts using Site Diagnostics</li></ul><div class=\"asnerisseo-warning-box\"><strong>Critical:</strong> If your sitemap returns 404 or redirects, search engines cannot access it — even if it's declared in robots.txt or submitted to Search Console.</div><h3>After Fixing Sitemap Issues</h3><ol><li>Verify sitemap is accessible: Visit the URL directly</li><li>Check robots.txt: Visit <code>yoursite.com/robots.txt</code></li><li>Submit sitemap to Google Search Console</li><li>Submit sitemap to Bing Webmaster Tools</li><li>Re-run Site Diagnostics to confirm fixes</li></ol>"
      },
      "duplicate-signals": {
        "title": "Duplicate SEO Signals & Plugin Conflicts",
        "body": "<h3>What Are Duplicate Signals?</h3><p>Duplicate signals occur when multiple sources (plugins, theme, manual code) output the same type of SEO tag, creating confusion for search engines.</p><h3>What Gets Checked</h3><p>Site Diagnostics detects:</p><ul><li><strong>Multiple SEO Plugins:</strong> More than one active SEO plugin</li><li><strong>Duplicate Title Tags:</strong> Multiple <code>&lt;title&gt;</code> tags in HTML</li><li><strong>Duplicate Meta Descriptions:</strong> Multiple description tags</li><li><strong>Duplicate Canonical URLs:</strong> Multiple canonical tags</li><li><strong>Duplicate Robots Tags:</strong> Multiple robots meta tags</li><li><strong>Duplicate Schema:</strong> Multiple Organization or WebSite schema blocks</li></ul><h3>Why This Matters</h3><p>When search engines encounter duplicate tags, they typically:</p><ul><li>Use the <strong>first</strong> tag they encounter (ignoring others)</li><li>May use the <strong>most restrictive</strong> directive (for robots tags)</li><li>Experience confusion about which signal is authoritative</li><li>May index content inconsistently</li></ul><div class=\"asnerisseo-warning-box\"><strong>Important:</strong> Search engines expect <strong>one clear signal per page</strong>. Multiple outputs dilute clarity and can cause indexing issues.</div><h3>Common Causes</h3><ul><li><strong>Multiple SEO plugins active:</strong> Yoast + Rank Math + this plugin</li><li><strong>Theme outputting SEO tags:</strong> Theme includes built-in SEO features</li><li><strong>Manual tags in templates:</strong> Developer added manual meta tags</li><li><strong>Leftover code:</strong> Old plugin code not removed after deactivation</li></ul><h3>How to Fix Conflicts</h3><ol><li><strong>Choose ONE SEO plugin</strong> as your primary tool</li><li>Deactivate or uninstall other SEO plugins</li><li>Check theme settings — disable theme-based SEO features</li><li>Search template files for manual meta tags (header.php, functions.php)</li><li>Clear site cache after making changes</li><li>Re-run Site Diagnostics to verify fixes</li></ol><h3>Detected Conflicting Plugins</h3><p>Site Diagnostics will list any active SEO plugins it detects. Common conflicts include:</p><ul><li>Yoast SEO</li><li>Rank Math SEO</li><li>All in One SEO Pack</li><li>SEOPress</li><li>The SEO Framework</li><li>Slim SEO</li></ul><div class=\"asnerisseo-info-box\"><strong>Recommendation:</strong> Keep only ONE SEO plugin active. This plugin is designed to work standalone or can be disabled if you prefer another SEO solution.</div><h3>Testing After Fixes</h3><p>Use <strong>Page Diagnostics</strong> to inspect a few pages and verify:</p><ul><li>Only one title tag appears</li><li>Only one meta description exists</li><li>Only one canonical URL is set</li><li>Robots meta tags are singular and consistent</li></ul>"
      },
      "indexing-blocks": {
        "title": "Indexing Blocks & Search Visibility",
        "body": "<h3>What Are Indexing Blocks?</h3><p>Indexing blocks are settings or directives that prevent search engines from indexing your site or specific pages, effectively hiding them from search results.</p><h3>What Gets Checked</h3><p>Site Diagnostics looks for:</p><ul><li><strong>Global noindex:</strong> WordPress \"Discourage search engines\" setting</li><li><strong>Homepage noindex:</strong> Homepage blocked from indexing</li><li><strong>robots.txt blocks:</strong> Overly aggressive crawl restrictions</li><li><strong>Conflicting signals:</strong> Pages in sitemap but marked noindex</li><li><strong>HTTP headers:</strong> X-Robots-Tag blocking indexing</li></ul><h3>WordPress \"Discourage Search Engines\"</h3><p>Location: <strong>Settings → Reading → Search engine visibility</strong></p><p>When checked, WordPress adds this to every page:</p><pre>&lt;meta name=\"robots\" content=\"noindex, nofollow\" /&gt;</pre><div class=\"asnerisseo-warning-box\"><strong>Critical:</strong> If this setting is enabled, your <strong>entire site</strong> is blocked from search results. This setting should <strong>only</strong> be checked for development/staging sites.</div><h3>How to Fix Global Noindex</h3><ol><li>Go to WordPress Dashboard → Settings → Reading</li><li>Find \"Search engine visibility\" section</li><li>Ensure \"Discourage search engines from indexing this site\" is <strong>UNCHECKED</strong></li><li>Click Save Changes</li><li>Wait for search engines to re-crawl (typically several days, depending on crawl frequency)</li><li>Request re-indexing in Google Search Console (optional but faster)</li></ol><h3>Homepage Noindex</h3><p>If only your homepage is noindexed:</p><ul><li>Check homepage meta box SEO settings (if editing homepage)</li><li>Check SEO plugin global settings for homepage rules</li><li>Use Page Diagnostics to inspect the homepage</li><li>Verify no theme code is adding noindex to the homepage</li></ul><h3>robots.txt Blocks</h3><p>Site Diagnostics checks for overly broad robots.txt rules like:</p><ul><li><code>Disallow: /</code> — Blocks entire site from crawling</li><li><code>Disallow: /wp-content/</code> — Blocks themes, plugins, uploads</li><li>Missing <code>Allow:</code> exceptions for necessary resources</li></ul><div class=\"asnerisseo-info-box\"><strong>Important:</strong> robots.txt blocks <strong>crawling</strong>, not indexing. However, search engines cannot index pages they cannot crawl.</div><h3>Conflicting Signals</h3><p>Common conflicts detected:</p><ul><li><strong>Page in sitemap but noindexed:</strong> Tells search engines to index, then tells them not to</li><li><strong>Canonical to noindexed page:</strong> Points to a page that won't be indexed</li><li><strong>Redirect to noindexed page:</strong> Sends visitors to a page not in search results</li></ul><p><strong>Fix:</strong> Either remove the page from the sitemap OR remove the noindex tag. Both signals should agree.</p><h3>Checking Individual Pages</h3><p>After fixing site-wide blocks, check key pages using <strong>Page Diagnostics</strong> to verify:</p><ul><li>No robots meta tag says noindex</li><li>No X-Robots-Tag header blocks indexing</li><li>Page appears in sitemap (if applicable)</li><li>Canonical points to itself or an indexable page</li></ul><h3>How Long Until Fixed?</h3><p>After removing noindex blocks:</p><ul><li>Search engines must re-crawl to see changes (typically several days, depending on crawl frequency)</li><li>Previously indexed pages may stay in results longer</li><li>New pages will begin indexing if eligible</li><li>Use Google Search Console to request faster re-crawling</li></ul>"
      },
      "canonical-consistency": {
        "title": "Canonical URL Consistency",
        "body": "<h3>What is Canonical Consistency?</h3><p>Canonical consistency ensures pages correctly declare their <strong>preferred URL</strong> to search engines, preventing duplicate content issues and consolidating ranking signals.</p><h3>What Gets Checked</h3><p>Site Diagnostics checks a representative sample of pages to detect:</p><ul><li><strong>Canonical to homepage:</strong> Pages incorrectly pointing to homepage as canonical</li><li><strong>Canonical loops:</strong> Page A → B, Page B → A (circular references)</li><li><strong>Canonical to redirected URL:</strong> Canonical target redirects elsewhere</li><li><strong>HTTP/HTTPS mismatches:</strong> Canonical uses wrong protocol</li><li><strong>Trailing slash inconsistency:</strong> Mixed usage of trailing slashes</li><li><strong>Missing canonicals:</strong> Pages without canonical tags</li></ul><h3>Understanding Canonical URLs</h3><p>A canonical URL is the \"main\" version of a page when multiple URLs show similar content:</p><ul><li><code>example.com/page</code></li><li><code>example.com/page/</code> (with trailing slash)</li><li><code>example.com/page?utm_source=email</code> (with tracking)</li></ul><p>The canonical tag tells search engines: <strong>\"Index this URL, ignore the others.\"</strong></p><h3>WordPress Default Behavior</h3><p>WordPress automatically adds a <strong>self-referencing canonical</strong> to most pages:</p><pre>&lt;link rel=\"canonical\" href=\"https://example.com/current-page/\" /&gt;</pre><p>This is the recommended approach for most sites. Custom canonicals are rarely needed.</p><div class=\"asnerisseo-info-box\"><strong>Best Practice:</strong> Let WordPress handle canonicals automatically unless you have a specific reason to customize them.</div><h3>Common Canonical Issues</h3><p><strong>1. Canonical to Homepage</strong></p><ul><li><strong>Problem:</strong> All pages canonical to homepage (e.g., all pages point to <code>example.com/</code>)</li><li><strong>Impact:</strong> Search engines may only index the homepage, ignoring other pages</li><li><strong>Cause:</strong> Plugin misconfiguration, theme bug, or manual error</li><li><strong>Fix:</strong> Review canonical settings, check for plugin conflicts</li></ul><p><strong>2. Canonical Loops</strong></p><ul><li><strong>Problem:</strong> Page A canonicals to Page B, Page B canonicals to Page A</li><li><strong>Impact:</strong> Confuses search engines, may result in neither page being indexed</li><li><strong>Cause:</strong> Manual canonical override errors</li><li><strong>Fix:</strong> Remove custom canonical or ensure one-way canonical flow</li></ul><p><strong>3. Canonical to Redirected URL</strong></p><ul><li><strong>Problem:</strong> Canonical points to a URL that redirects elsewhere</li><li><strong>Impact:</strong> Creates confusion; search engines may ignore the canonical</li><li><strong>Cause:</strong> Old canonical not updated after URL change</li><li><strong>Fix:</strong> Update canonical to point to the final destination</li></ul><p><strong>4. HTTP/HTTPS Mismatch</strong></p><ul><li><strong>Problem:</strong> Site uses HTTPS, but canonical uses HTTP (or vice versa)</li><li><strong>Impact:</strong> Splits ranking signals between two versions</li><li><strong>Cause:</strong> Incorrect site URL in WordPress settings</li><li><strong>Fix:</strong> Update WordPress settings (Settings → General → WordPress Address URL and Site Address URL)</li></ul><div class=\"asnerisseo-warning-box\"><strong>Critical:</strong> If a page canonicals to a <strong>different URL</strong>, search engines will likely <strong>not index</strong> that page — they'll index the canonical target instead.</div><h3>How to Fix Canonical Issues</h3><ol><li>Use <strong>Page Diagnostics</strong> to inspect affected pages</li><li>Check WordPress Settings → General (ensure correct HTTPS/HTTP)</li><li>Review per-page canonical settings in SEO meta box</li><li>Check for plugin conflicts (multiple SEO plugins)</li><li>Verify theme isn't adding conflicting canonical tags</li><li>Clear site cache after making changes</li><li>Re-run Site Diagnostics to confirm fixes</li></ol><h3>When to Use Custom Canonicals</h3><p>Only use custom canonicals when:</p><ul><li>Consolidating duplicate content (e.g., print version → main version)</li><li>Handling URL parameters that don't change content</li><li>Managing paginated series (page 2+ → page 1)</li></ul><p>For most sites, WordPress default canonicals are sufficient and safer.</p>"
      },
      "redirect-chains": {
        "title": "Redirect Chains & Performance",
        "body": "<p><strong>Note:</strong> Site Diagnostics identifies the presence of redirect chain patterns. Detailed per-URL analysis is available in Page Diagnostics.</p><h3>What Are Redirect Chains?</h3><p>A redirect chain occurs when a URL redirects multiple times before reaching the final destination. For example:</p><pre>Page A → Page B → Page C → Final Page</pre><p>Each hop adds latency and may cause search engines to stop following the chain.</p><h3>What Gets Checked</h3><p>Site Diagnostics checks a representative sample of pages to detect:</p><ul><li><strong>Redirect chains:</strong> URLs with 2+ redirect hops</li><li><strong>Redirect loops:</strong> URLs that redirect back to themselves (infinite loops)</li><li><strong>Redirects to 404s:</strong> Redirect destination doesn't exist</li><li><strong>Redirects to noindex pages:</strong> Final destination blocked from indexing</li><li><strong>Mixed HTTP/HTTPS redirects:</strong> Unnecessary protocol redirects</li></ul><h3>Why Redirect Chains Matter</h3><ul><li><strong>Slow user experience:</strong> Each redirect adds load time</li><li><strong>Wasted crawl budget:</strong> Search engines may stop after 3-5 hops</li><li><strong>Lost signals:</strong> Each hop may dilute ranking signals</li><li><strong>Indexing issues:</strong> Long chains may prevent indexing entirely</li></ul><div class=\"asnerisseo-warning-box\"><strong>Important:</strong> Google and other search engines may not follow redirect chains longer than 5 hops. Pages at the end of long chains may not be indexed.</div><h3>Common Causes of Redirect Chains</h3><ul><li><strong>Multiple URL changes:</strong> Page moved multiple times without cleaning up old redirects</li><li><strong>HTTP → HTTPS + www:</strong> Protocol redirect + subdomain redirect</li><li><strong>Plugin conflicts:</strong> Multiple redirect sources (server, plugin, theme)</li><li><strong>Manual redirects + automatic redirects:</strong> Overlapping redirect rules</li></ul><h3>How to Fix Redirect Chains</h3><ol><li><strong>Identify the final destination:</strong> Follow the chain to see where it ends</li><li><strong>Update redirect to point directly:</strong> Skip intermediate hops</li><li><strong>Example:</strong> If A → B → C, change to A → C (direct)</li><li><strong>Remove unnecessary redirects:</strong> If a page no longer needs to redirect, remove the rule</li><li><strong>Consolidate redirect sources:</strong> Use ONE redirect management tool</li><li>Clear server cache and CDN cache after changes</li><li>Test with Page Diagnostics or browser tools</li></ol><h3>Redirect Loops</h3><p>A redirect loop occurs when a URL redirects back to itself:</p><pre>Page A → Page B → Page A (infinite loop)</pre><div class=\"asnerisseo-warning-box\"><strong>Critical:</strong> Redirect loops make pages completely inaccessible to both users and search engines. Fix immediately.</div><p><strong>How to fix:</strong></p><ol><li>Identify which page redirects back to itself</li><li>Check redirect rules in SEO plugin or .htaccess</li><li>Remove the conflicting redirect rule</li><li>Verify the page loads correctly after fix</li></ol><h3>Redirects to 404s</h3><p>If a redirect points to a non-existent page:</p><ul><li><strong>Problem:</strong> Users see 404 error after redirect</li><li><strong>Impact:</strong> Bad user experience, page won't be indexed</li><li><strong>Fix:</strong> Update redirect to point to an existing, relevant page</li></ul><h3>Best Practices for Redirects</h3><ul><li><strong>Always redirect directly:</strong> A → C (not A → B → C)</li><li><strong>Use 301 for permanent moves:</strong> Tells search engines to transfer signals</li><li><strong>Test after creating redirects:</strong> Verify they work as expected</li><li><strong>Clean up old redirects:</strong> Remove redirects that are no longer needed (after 6-12 months)</li><li><strong>Avoid redirect loops:</strong> Never redirect back to the original URL</li><li><strong>Limit chain length:</strong> Keep redirects to 1 hop maximum</li></ul><h3>Testing Redirects</h3><p>Use these tools to test redirect behavior:</p><ul><li><strong>Page Diagnostics:</strong> Shows redirect chains and final destination</li><li><strong>Browser DevTools:</strong> Network tab shows all redirects</li><li><strong>Online tools:</strong> Redirect checker tools (e.g., redirect-checker.org)</li><li><strong>cURL command:</strong> <code>curl -I -L https://yoursite.com/page</code></li></ul><h3>After Fixing Chains</h3><ol><li>Test the URL directly in a browser</li><li>Verify with Page Diagnostics</li><li>Re-run Site Diagnostics to confirm</li><li>Monitor Google Search Console for crawl errors</li><li>Clear any CDN or server-level caching</li></ol>"
      }
    }
  },
  "bulk-edit": {
    "cards": [
      {
        "title": "About SEO Bulk Edit",
        "icon": "dashicons-edit",
        "content": "<p>Bulk Edit lets you update SEO titles, descriptions, and indexing settings for multiple posts at once.</p><p>This is useful when cleaning up old content or applying consistent SEO rules.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/bulk-edit/"
      },
      {
        "title": "How to use Bulk Edit",
        "icon": "dashicons-filter",
        "content": "<ul><li>Filter by post type (Posts, Pages, etc.)</li><li>Optionally filter by indexing status</li><li>Select the items you want to change</li><li>Apply a bulk action or edit fields inline</li></ul>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/bulk-edit-usage/"
      },
      {
        "title": "Bulk actions explained",
        "icon": "dashicons-admin-tools",
        "content": "<ul><li><strong>✓ Allow in Search (Index):</strong> Allow selected pages to appear in search results</li><li><strong>✗ Hide from Search (NoIndex):</strong> Prevent selected pages from appearing in search results</li><li><strong>Clear SEO Titles:</strong> Removes custom titles and reverts to automatic generation (uses template if configured, otherwise uses post title)</li><li><strong>Clear Descriptions:</strong> Removes custom descriptions and allows auto-generation (priority: template → post excerpt → first 30 words of content)</li></ul><p><em>💡 Tip:</em> Clearing values doesn't delete content — it tells the system to generate them automatically using fallback rules.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/bulk-actions/"
      },
      {
        "title": "Best practices",
        "icon": "dashicons-lightbulb",
        "content": "<ul><li>Make small, controlled changes</li><li>Avoid using the same title across many pages</li><li>Use Noindex carefully — it removes pages from search results</li><li>Review a few updated pages in Page Diagnostics after saving</li></ul>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/bulk-edit-best-practices/"
      },
      {
        "title": "Important notes",
        "icon": "dashicons-warning",
        "content": "<ul><li>Changes are applied only after clicking <strong>Save All Changes</strong></li><li>Bulk edits affect many pages — double-check selections</li><li>This tool does not change content, only SEO metadata</li></ul>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/bulk-edit-safety/"
      }
    ],
    "modals": {
    "bulk-overview": {
      "title": "SEO Bulk Edit Overview",
      "body": "<h3>What is SEO Bulk Edit?</h3><p>SEO Bulk Edit lets you update <strong>Content Titles</strong>, <strong>Content Descriptions</strong>, and <strong>Search Visibility (Index/NoIndex)</strong> for multiple items at once. This helps when cleaning up older content or applying consistent SEO rules across many pages.</p><h3>How to Use</h3><ol><li><strong>Filter Content:</strong> Choose a <em>Content Type</em> (Posts, Pages, etc.) and optionally filter by <em>Indexing Status</em></li><li><strong>Select Items:</strong> Check the boxes next to the items you want to update</li><li><strong>Apply Changes:</strong> Use <em>Quick Bulk Actions</em> or edit fields inline</li><li><strong>Save:</strong> Click <strong>Save All Changes</strong> to commit the edits</li></ol><h3>What You Can Edit</h3><ul><li><strong>Custom Content Title:</strong> Set or clear the SEO title used in search results</li><li><strong>Custom Content Description:</strong> Set or clear the meta description</li><li><strong>Search Visibility:</strong> Control whether items are allowed to appear in search (Index/NoIndex)</li></ul><div class=\"asnerisseo-warning-box\"><strong>Important:</strong> Nothing is applied until you click <strong>Save All Changes</strong>. Bulk edits can affect many pages—double-check selections before saving.</div><h3>Best Practices</h3><ul><li>Make small, controlled changes first</li><li>Avoid using the same title across many pages</li><li>Use <strong>NoIndex</strong> carefully—it can remove pages from search results after re-crawling</li><li>After saving, verify a few pages using <em>Page Diagnostics</em></li><li>Clearing values does not delete content—it tells the plugin to use automatic fallback rules</li></ul>"
    },
    "quick-bulk-actions": {
      "title": "Quick Bulk Actions",
      "body": "<h3>What Are Quick Bulk Actions?</h3><p>These buttons apply one change to <strong>all selected items</strong>. First select rows using the checkboxes, then click an action.</p><h3>✓ Allow in Search (Index)</h3><p>Allows selected items to appear in search results.</p><ul><li>Outputs indexing-allowed robots rules (Index)</li><li>Use for normal public content</li></ul><h3>✗ Hide from Search (NoIndex)</h3><p>Prevents selected items from appearing in search results.</p><ul><li>Adds <code>noindex</code> to the page output</li><li>Pages remain accessible via direct URL</li><li>Removal happens after search engines re-crawl</li></ul><div class=\"asnerisseo-warning-box\"><strong>Important:</strong> <code>NoIndex</code> removes pages from search results, but it does <strong>not</strong> block visitors from viewing the page.</div><h3>Clear Content Titles</h3><p>Removes custom titles from selected items.</p><ul><li>Reverts to automatic title generation</li><li>Useful when titles are outdated or inconsistent</li></ul><h3>Clear Descriptions</h3><p>Removes custom descriptions from selected items.</p><ul><li>Reverts to automatic description generation</li><li>Useful when descriptions are outdated, duplicated, or low quality</li></ul><h3>How to Use</h3><ol><li>Filter content (optional)</li><li>Select rows using checkboxes</li><li>Click an action button</li><li>Review updates in the table</li><li>Click <strong>Save All Changes</strong> to commit</li></ol><p><strong>Reminder:</strong> Nothing is saved until you click <strong>Save All Changes</strong>.</p>"
    },
    "filter-content": {
      "title": "Filter Content",
      "body": "<p>Use filters to narrow the table before making bulk updates.</p><ul><li><strong>Content Type:</strong> Choose Posts, Pages, or other content types</li><li><strong>Indexing Status:</strong> Filter by Index / NoIndex (optional)</li><li>Click <strong>Filter</strong> to refresh the table</li></ul><div class=\"asnerisseo-info-box\"><strong>Tip:</strong> Always filter first before bulk NoIndex actions to avoid updating the wrong content type.</div>"
    },
    "seo-title-field": {
      "title": "Custom Content Title",
      "body": "<h3>What is the Custom Content Title?</h3><p>This is the SEO title (title tag) that may appear as the clickable headline in search results and browser tabs.</p><h3>How to Use</h3><ul><li><strong>Edit inline:</strong> Type directly in the field</li><li><strong>Leave blank:</strong> Uses automatic generation</li><li><strong>Clear in bulk:</strong> Use <em>Clear Content Titles</em> to remove custom titles across selected items</li></ul><h3>Best Practices</h3><ul><li>Keep titles concise (often truncated if too long)</li><li>Make titles unique across pages</li><li>Reflect the page content clearly—avoid misleading titles</li></ul><div class=\"asnerisseo-warning-box\"><strong>Note:</strong> Titles help clarity and clicks, but they do not guarantee rankings.</div>"
    },
    "meta-description-field": {
      "title": "Custom Content Description",
      "body": "<h3>What is the Custom Content Description?</h3><p>This is the meta description that may appear under the title in search results. Search engines may use it—or generate their own snippet depending on the query.</p><h3>How to Use</h3><ul><li><strong>Edit inline:</strong> Type directly in the field</li><li><strong>Leave blank:</strong> Uses automatic generation</li><li><strong>Clear in bulk:</strong> Use <em>Clear Descriptions</em> to remove custom descriptions across selected items</li></ul><h3>Best Practices</h3><ul><li>Write a clear summary of the page</li><li>Avoid duplication across many pages</li><li>Keep it concise and readable</li></ul><div class=\"asnerisseo-info-box\"><strong>Tip:</strong> Prioritize custom descriptions for important pages; let less important pages auto-generate.</div>"
    },
    "indexing-status": {
      "title": "Search Visibility (Index / NoIndex)",
      "body": "<h3>What is Search Visibility?</h3><p>This controls whether a page is <strong>allowed</strong> to appear in search results.</p><h3>Options</h3><ul><li><strong>Index:</strong> Allowed to appear in search results</li><li><strong>NoIndex:</strong> Blocked from appearing in search results</li></ul><div class=\"asnerisseo-warning-box\"><strong>Important:</strong> NoIndex does <strong>not</strong> hide the page from visitors. It only affects search engine indexing.</div><h3>When Changes Take Effect</h3><p>Search engines must re-crawl pages to observe changes, so updates may take days or longer to reflect in search results.</p>"
    }
  }
  },
  "redirects": {
    "cards": [
      {
        "title": "About SEO Redirects",
        "icon": "dashicons-randomize",
        "content": "<p>Redirects guide visitors and search engines from an old URL to the correct page when URLs change.</p><p>This helps avoid broken links and preserves search visibility.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/redirects/"
      },
      {
        "title": "How redirects work",
        "icon": "dashicons-admin-links",
        "content": "<ul><li>Visitors are automatically sent from the old URL to the new one</li><li>Search engines update their records over time</li><li>The original URL does not show content anymore</li></ul><p><strong>Why this matters:</strong> Without redirects, users may see errors and search engines may drop old pages.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/how-redirects-work/"
      },
      {
        "title": "Choosing the right redirect type",
        "icon": "dashicons-filter",
        "content": "<ul><li><strong>301 (Permanent):</strong> Use when a page has moved permanently (recommended for SEO)</li><li><strong>302 / 307 (Temporary):</strong> Use when the change is short-term and the original page will return</li></ul><p><strong>Tip:</strong> Temporary redirects keep the original URL indexed.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/redirect-types/"
      },
      {
        "title": "Best practices",
        "icon": "dashicons-yes",
        "content": "<ul><li>Always test the old URL after adding a redirect</li><li>Avoid redirect chains (URL A → B → C)</li><li>Remove redirects that are no longer needed</li><li>Use relative paths when redirecting within the same site</li></ul>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/redirect-best-practices/"
      },
      {
        "title": "Important Note",
        "icon": "dashicons-warning",
        "content": "<p>This tool manages redirects only.</p><p>It does not modify page content, predict rankings, or guarantee SEO improvements.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/facts-based-approach/"
      }
    ],
    "modals": {
      "redirects-overview": {
        "title": "What Are Redirects?",
        "body": "<h3>Purpose</h3><p>Redirects automatically send visitors and search engines from one URL to another. Use them when:</p><ul><li>A page's URL changes (permalink updated)</li><li>Content moves to a new location</li><li>You delete a page but want visitors to see related content</li><li>You're consolidating similar pages</li></ul><div class=\"asnerisseo-info-box\"><strong>Important:</strong> Redirects help search engines understand that a page has moved, instead of treating it as missing or deleted.</div><h3>Automatic Redirects</h3><p>This plugin automatically creates 301 redirects when you change a published post's permalink. Manual redirects give you full control for other scenarios.</p><h3>When NOT to Use Redirects</h3><ul><li>Don't redirect pages that still exist at their original URL</li><li>Don't create redirect chains (A → B → C). Use direct redirects (A → C)</li><li>Don't redirect to unrelated content</li></ul>"
      },
      "from-url": {
        "title": "From (Old URL)",
        "body": "<h3>What to Enter</h3><p>Enter the <strong>old URL path</strong> that visitors or search engines might request. Do not include your domain name.</p><h3>Supported Formats</h3><ul><li><code>/old-page/</code> - Pretty permalink</li><li><code>/old-page</code> - Without trailing slash</li><li><code>/?page_id=123</code> - Query string format</li><li><code>/category/old-post/</code> - With path segments</li></ul><div class=\"asnerisseo-info-box\"><strong>Tip:</strong> You can copy the URL from your browser and remove the <code>http://yoursite.com</code> part.</div><h3>Example</h3><p>If your old page was:<br><code>https://example.com/old-page/</code></p><p>Enter only:<br><code>/old-page/</code></p>"
      },
      "to-url": {
        "title": "To (New URL)",
        "body": "<h3>What to Enter</h3><p>Enter the <strong>new URL</strong> where visitors should land. You can use:</p><h3>Supported Formats</h3><ul><li><code>/new-page/</code> - Internal page (recommended)</li><li><code>/?page_id=456</code> - Query string format</li><li><code>https://example.com/page/</code> - Full URL for external sites</li></ul><div class=\"asnerisseo-warning-box\"><strong>Important:</strong> Make sure the destination page exists and is accessible. Redirecting to a broken page creates a bad user experience.</div><h3>Example</h3><p>If your new page is:<br><code>https://example.com/new-page/</code></p><p>You can enter:<br><code>/new-page/</code></p><h3>External Redirects</h3><p>To redirect to another domain, use the full URL:<br><code>https://otherdomain.com/page/</code></p>"
      },
      "redirect-types": {
        "title": "Redirect Types (301, 302, 307)",
        "body": "<h3>301 Permanent (Most Common)</h3><p>Use when the old page is <strong>permanently replaced</strong> by the new page.</p><ul><li>Tells search engines: \"This page moved permanently\"</li><li>Preserves existing signals for the new URL</li><li>Browsers may cache this redirect</li></ul><p><strong>Use for:</strong> Permalink changes, content consolidation, deleted pages</p><h3>302 Temporary</h3><p>Use when the redirect is <strong>temporary</strong> and the old URL may come back.</p><ul><li>Tells search engines: \"This is temporary, check back later\"</li><li>Does not transfer signals to the new URL</li><li>Less likely to be cached</li></ul><p><strong>Use for:</strong> Maintenance pages, A/B testing, seasonal content</p><h3>307 Temporary (Preserve Method)</h3><p>Similar to 302, but guarantees that POST requests stay as POST (not converted to GET).</p><p><strong>Use for:</strong> Form submissions, API endpoints (rare for most sites)</p><div class=\"asnerisseo-info-box\"><strong>Recommendation:</strong> When in doubt, use <strong>301 Permanent</strong>. It's the right choice for 95% of scenarios.</div><h3>Important</h3><p>Redirects preserve existing value. They do <strong>not</strong> improve rankings or create new value.</p>"
      }
    }
  },
  "validation": {
    "cards": [
      {
        "title": "About Validation",
        "icon": "dashicons-yes",
        "content": "<p><strong>Validation</strong> checks your site for common SEO issues that may affect how search engines discover, crawl, and index your content.</p><p>It looks for clarity issues — not rankings or guarantees.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/validation/"
      },
      {
        "title": "What Validation Checks",
        "icon": "dashicons-search",
        "content": "<ul><li><strong>Indexing Status:</strong> Are pages marked noindex when they shouldn't be?</li><li><strong>Canonical URLs:</strong> Are pages correctly identifying their main URL?</li><li><strong>Redirects:</strong> Are redirect chains or loops blocking access?</li><li><strong>Sitemap:</strong> Is your sitemap accessible and referenced correctly?</li><li><strong>Robots.txt:</strong> Is your robots.txt blocking critical content?</li></ul>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/validation-checks/"
      },
      {
        "title": "How to Use Validation",
        "icon": "dashicons-admin-tools",
        "content": "<ol><li>Click <strong>Run Validation</strong> to scan your site</li><li>Review results by category (errors, warnings, info)</li><li>Fix errors first (red status)</li><li>Address warnings as needed (yellow status)</li><li>Re-run validation after making changes</li></ol>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/using-validation/"
      },
      {
        "title": "Understanding Results",
        "icon": "dashicons-info",
        "content": "<ul><li><strong>Error (Red):</strong> Blocking issues that prevent search engines from accessing content</li><li><strong>Warning (Yellow):</strong> Potential issues that may affect clarity or discovery</li><li><strong>Info (Blue):</strong> Informational notes with no immediate action needed</li><li><strong>Success (Green):</strong> No issues detected</li></ul>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/validation-results/"
      },
      {
        "title": "Important Note",
        "icon": "dashicons-warning",
        "content": "<p>Validation shows <strong>facts and detected patterns</strong> — not rankings or scores.</p><p>Fixing all issues does <strong>not</strong> guarantee improved rankings. It ensures your site sends clear, consistent signals to search engines.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/facts-based-approach/"
      }
    ],
    "modals": {
      "validation-overview": {
        "title": "Validation Overview",
        "body": "<h3>What is Validation?</h3><p><strong>Validation</strong> is an automated scan that checks your WordPress site for common SEO issues that may prevent search engines from properly discovering, crawling, and indexing your content.</p><h3>What Validation Does</h3><ul><li>Scans site-wide SEO patterns</li><li>Detects blocking issues (errors)</li><li>Identifies potential problems (warnings)</li><li>Provides informational notes</li><li>Groups results by category for easier review</li></ul><h3>What Validation Does NOT Do</h3><ul><li>Predict or guarantee rankings</li><li>Assign quality scores</li><li>Provide content recommendations</li><li>Check keyword optimization</li><li>Measure page speed or performance</li></ul><div class=\"asnerisseo-info-box\"><strong>Purpose:</strong> Validation ensures your site sends <strong>clear, consistent signals</strong> to search engines. It identifies technical barriers, not content quality.</div><h3>When to Run Validation</h3><ul><li>After initial plugin setup</li><li>After major site changes (theme, plugins)</li><li>When troubleshooting indexing issues</li><li>Before launching a new site</li><li>Periodically (monthly or quarterly)</li></ul><h3>How Long Does It Take?</h3><p>Validation typically takes 30-60 seconds depending on site size and complexity.</p>"
      },
      "indexing-checks": {
        "title": "Indexing Status Checks",
        "body": "<h3>What Are Indexing Checks?</h3><p>Indexing checks verify that pages intended to appear in search results are <strong>not</strong> accidentally blocked by noindex tags or settings.</p><h3>Common Issues Detected</h3><ul><li><strong>Global noindex enabled:</strong> WordPress setting \"Discourage search engines\" is active (blocks entire site)</li><li><strong>Homepage noindex:</strong> Your homepage is marked noindex</li><li><strong>Key pages noindex:</strong> Important pages (products, posts) are accidentally blocked</li><li><strong>Conflicting signals:</strong> Page is in sitemap but marked noindex</li></ul><h3>Why This Matters</h3><p>If a page is marked noindex:</p><ul><li>Search engines will <strong>remove it</strong> from their index (if already indexed)</li><li>Search engines will <strong>not index it</strong> (if new)</li><li>The page is still publicly accessible, just not in search results</li></ul><div class=\"asnerisseo-warning-box\"><strong>Critical:</strong> If your entire site is noindexed, it will disappear from search results entirely.</div><h3>How to Fix</h3><ol><li>Check WordPress Settings → Reading → \"Discourage search engines\" (should be unchecked)</li><li>Check individual pages in Bulk Edit for noindex status</li><li>Verify plugin settings don't have global noindex enabled</li><li>Check for theme or other plugin conflicts</li></ol><div class=\"asnerisseo-info-box\"><strong>Note:</strong> It may take days or weeks for search engines to re-crawl and re-index pages after fixing noindex issues.</div>"
      },
      "canonical-checks": {
        "title": "Canonical URL Checks",
        "body": "<h3>What Are Canonical Checks?</h3><p>Canonical checks verify that pages correctly declare their <strong>main URL version</strong> to search engines, preventing duplicate content issues.</p><h3>What is a Canonical URL?</h3><p>A canonical URL is the \"preferred\" version of a page when multiple URLs show the same content. For example:</p><ul><li><code>example.com/page</code></li><li><code>example.com/page/</code> (with trailing slash)</li><li><code>example.com/page?utm_source=email</code> (with tracking)</li></ul><p>All three may show the same content, but the canonical tells search engines which one to index.</p><h3>Common Issues Detected</h3><ul><li><strong>Canonical to homepage:</strong> Pages incorrectly canonical to the homepage (loses page-level indexing)</li><li><strong>Canonical loops:</strong> Page A canonicals to B, B canonicals to A (confuses search engines)</li><li><strong>Canonical to redirected URL:</strong> Canonical points to a URL that redirects elsewhere</li><li><strong>HTTP/HTTPS mismatch:</strong> Canonical uses wrong protocol (http vs https)</li><li><strong>Missing canonical:</strong> No canonical tag present (WordPress should add automatically)</li></ul><div class=\"asnerisseo-warning-box\"><strong>Important:</strong> If a page canonicals to a different URL, search engines will likely <strong>not index</strong> that page — they'll index the canonical URL instead.</div><h3>Why This Matters</h3><ul><li>Prevents duplicate content issues</li><li>Consolidates ranking signals to one URL</li><li>Ensures search engines index the correct version</li></ul><h3>How to Fix</h3><ol><li>Use Page Diagnostics to check canonical URLs for affected pages</li><li>Verify custom canonical settings in page editor</li><li>Check for plugin conflicts (multiple SEO plugins)</li><li>Ensure redirects don't create canonical conflicts</li></ol><div class=\"asnerisseo-info-box\"><strong>WordPress Default:</strong> WordPress automatically adds a canonical to the current URL for most pages. Custom canonicals are rarely needed.</div>"
      },
      "discovery-checks": {
        "title": "Discovery & Crawling Checks",
        "body": "<h3>What Are Discovery Checks?</h3><p>Discovery checks verify that search engines can <strong>find</strong> and <strong>crawl</strong> your pages efficiently through sitemaps and robots.txt.</p><h3>Sitemap Checks</h3><p>Validation verifies:</p><ul><li>Sitemap exists and is accessible (e.g., <code>/sitemap.xml</code>)</li><li>Sitemap is referenced in robots.txt</li><li>Sitemap returns HTTP 200 (not 404 or redirect)</li><li>Sitemap is valid XML format</li></ul><h3>Why Sitemaps Matter</h3><ul><li>Help search engines discover pages faster</li><li>Notify search engines of new or updated content</li><li>Provide last-modified dates for prioritization</li><li>Especially important for large or deep sites</li></ul><div class=\"asnerisseo-info-box\"><strong>Note:</strong> Sitemaps help <strong>discovery</strong>, not rankings. They don't guarantee indexing or improve rankings directly.</div><h3>Robots.txt Checks</h3><p>Validation verifies:</p><ul><li>robots.txt is accessible</li><li>No critical content is accidentally blocked</li><li>Sitemap is declared in robots.txt</li><li>No syntax errors preventing crawling</li></ul><h3>Common Issues Detected</h3><ul><li><strong>Sitemap not found:</strong> Returns 404 error</li><li><strong>Sitemap not in robots.txt:</strong> Not declared, may be harder for bots to find</li><li><strong>robots.txt blocks sitemap:</strong> Sitemap URL itself is blocked</li><li><strong>Overly broad blocking:</strong> robots.txt blocks important content</li></ul><h3>How to Fix</h3><ol><li>Verify sitemap exists: Visit <code>yoursite.com/sitemap.xml</code></li><li>Add sitemap to robots.txt if missing</li><li>Review robots.txt rules in Robots.txt Editor</li><li>Submit sitemap to Google Search Console and Bing Webmaster Tools</li></ol><div class=\"asnerisseo-warning-box\"><strong>Critical:</strong> If robots.txt blocks your sitemap or key pages, search engines cannot crawl them — even if they're not noindexed.</div>"
      },
      "redirect-checks": {
        "title": "Redirect & Performance Checks",
        "body": "<h3>What Are Redirect Checks?</h3><p>Redirect checks identify issues with redirects that may slow crawling, waste crawl budget, or prevent indexing entirely.</p><h3>Common Issues Detected</h3><ul><li><strong>Redirect chains:</strong> URL A → B → C → D (multiple hops)</li><li><strong>Redirect loops:</strong> URL A → B → A (infinite loop)</li><li><strong>Redirects to noindex pages:</strong> Redirect destination is blocked from indexing</li><li><strong>Redirects to 404s:</strong> Redirect points to a page that doesn't exist</li></ul><h3>Why This Matters</h3><ul><li><strong>Chains waste crawl budget:</strong> Search engines may stop following after 3-5 hops</li><li><strong>Loops prevent access:</strong> Page becomes uncrawlable</li><li><strong>Signals may be lost:</strong> Each redirect hop may dilute ranking signals</li><li><strong>Slow page loads:</strong> Each redirect adds latency for users</li></ul><div class=\"asnerisseo-warning-box\"><strong>Important:</strong> If a redirect chain ends in a noindex page or 404, search engines may not index the final URL (or any URL in the chain).</div><h3>How to Fix</h3><ol><li>Review detected redirect chains in Validation results</li><li>Update redirects to point directly to the final destination</li><li>Remove redirect loops entirely</li><li>Verify final destinations are indexable (not noindex)</li><li>Use Page Diagnostics to confirm redirect behavior</li></ol><h3>Redirect Best Practices</h3><ul><li>Always redirect directly to the final destination</li><li>Use 301 (permanent) for most scenarios</li><li>Avoid redirect chains longer than 1 hop</li><li>Regularly audit old redirects (remove unnecessary ones)</li></ul><div class=\"asnerisseo-info-box\"><strong>Tool Tip:</strong> Use the Redirects page to manage redirects and avoid creating chains.</div>"
      }
    }
  },
  "robots-txt": {
    "cards": [
      {
        "title": "About robots.txt",
        "icon": "dashicons-shield",
        "content": "<p>The <strong>robots.txt</strong> file tells search engines which parts of your site they are allowed to visit.</p><p>It controls crawling only — not rankings or indexing.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/robots-txt/"
      },
      {
        "title": "What robots.txt does (and doesn’t do)",
        "icon": "dashicons-info",
        "content": "<ul><li>Controls which URLs search engines can <strong>crawl</strong></li><li>Does <strong>not</strong> control rankings</li><li>Does <strong>not</strong> hide pages from the public</li></ul><p><strong>Important:</strong> Pages blocked here may still appear in search results if linked elsewhere.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/robots-txt-basics/"
      },
      {
        "title": "Common safe rules",
        "icon": "dashicons-yes",
        "content": "<ul><li>Block <code>/wp-admin/</code> except <code>admin-ajax.php</code></li><li>Block <code>/wp-includes/</code> system files</li><li>Allow all public content</li><li>Include your sitemap URL</li></ul><p>These defaults are safe for most WordPress sites.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/robots-txt-safe-defaults/"
      },
      {
        "title": "When to be careful",
        "icon": "dashicons-warning",
        "content": "<ul><li>Do not block CSS or JavaScript needed for page rendering</li><li>Do not use robots.txt to hide sensitive or private content</li><li>Avoid blocking entire sections unless necessary</li></ul><p>Incorrect rules can prevent search engines from understanding your pages.</p>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/robots-txt-mistakes/"
      },
      {
        "title": "After making changes",
        "icon": "dashicons-update",
        "content": "<ul><li>Save the file and view the live robots.txt</li><li>Test important pages using Page Diagnostics</li><li>Re-check crawling status in Google Search Console</li></ul>",
        "review_url": "https://wordpress.org/plugins/asneris-seo-toolkit/robots-txt-testing/"
      }
    ],
    "modals": {
       "robots-overview": {
    "title": "robots.txt Overview",
    "body": "<h3>What is robots.txt?</h3><p>The <strong>robots.txt</strong> file is a publicly accessible text file located at the root of your site (for example, <code>https://example.com/robots.txt</code>). It tells search engine crawlers which URLs they are allowed or not allowed to <strong>crawl</strong>.</p><h3>Key Points</h3><ul><li>Controls <strong>crawling</strong>, not indexing or rankings</li><li>Does <strong>not</strong> hide content from users</li><li>Does <strong>not</strong> guarantee pages won’t appear in search results</li><li>Best used sparingly to avoid accidental crawl blocking</li></ul><div class=\"asnerisseo-info-box\"><strong>Best Practice:</strong> Use robots.txt only for crawl management. Avoid blocking URLs you want search engines to understand.</div><h3>Common Uses</h3><ul><li>Block admin areas (e.g. <code>/wp-admin/</code>)</li><li>Block system paths (e.g. <code>/wp-includes/</code>)</li><li>Reduce crawling of duplicate or low-value URLs</li></ul><h3>Security & Privacy Note</h3><div class=\"asnerisseo-warning-box\"><strong>robots.txt is public.</strong> Anyone can view it by visiting <code>/robots.txt</code>.</div><p>robots.txt is a <strong>crawler directive</strong>, not a security mechanism. To actually restrict access:</p><ul><li><strong>Hide from search:</strong> Use <code>noindex</code> meta tags</li><li><strong>Restrict visitors:</strong> Use authentication or passwords</li><li><strong>Protect sensitive data:</strong> Store outside the web root</li></ul>"
  },
   "robots-validation": {
    "title": "robots.txt Validation Checks",
    "body": "<h3>What Is Being Validated?</h3><p>This section checks whether search engines can successfully access your <code>robots.txt</code> file.</p><h3>Checks Performed</h3><ul><li><strong>robots.txt file found:</strong> Confirms the file exists at <code>/robots.txt</code></li><li><strong>HTTP 200 response:</strong> Confirms the file is accessible without errors</li></ul><h3>Common Issues</h3><ul><li><strong>HTTP instead of HTTPS:</strong> The file exists but is served over HTTP</li><li><strong>Redirects:</strong> robots.txt should return directly, not redirect</li><li><strong>Server restrictions:</strong> Firewalls or hosting rules blocking access</li></ul><div class=\"asnerisseo-warning-box\"><strong>Important:</strong> Validation checks the <em>live public URL</em>, not what is currently typed in the editor.</div><p>After saving changes, re-run validation to confirm search engines can access the updated file.</p>"
  },
  "robots-editor": {
    "title": "Edit robots.txt",
    "body": "<h3>What Does This Editor Do?</h3><p>This editor lets you modify the <code>robots.txt</code> file that is served to search engines.</p><h3>How It Works</h3><ul><li>Edits apply only after clicking <strong>Save robots.txt</strong></li><li><strong>View Live File</strong> shows what search engines currently see</li><li>Validation always checks the live file, not unsaved changes</li></ul><div class=\"asnerisseo-info-box\"><strong>Tip:</strong> After saving, always click <em>View Live File</em> and re-run validation to confirm the update.</div><h3>What This Does NOT Do</h3><ul><li>Does not force indexing or rankings</li><li>Does not block public access to URLs</li><li>Does not protect sensitive data</li></ul>"
  },
     "robots-syntax": {
    "title": "robots.txt Syntax Guide",
    "body": "<h3>Basic Rule Format</h3><pre>User-agent: [crawler name]\nDisallow: [path]\nAllow: [path]</pre><h3>User-agent</h3><ul><li><code>*</code> — applies to all crawlers</li><li><code>Googlebot</code> — Google only</li><li><code>Bingbot</code> — Bing only</li></ul><h3>Disallow</h3><ul><li><code>Disallow: /private/</code> — blocks a directory</li><li><code>Disallow: /file.html</code> — blocks a file</li><li><code>Disallow:</code> (empty) — allows all paths</li></ul><h3>Allow</h3><ul><li>Overrides a broader disallow rule</li><li>Example: <code>Allow: /wp-admin/admin-ajax.php</code></li></ul><h3>Sitemap</h3><ul><li><code>Sitemap: https://example.com/sitemap.xml</code></li></ul><div class=\"asnerisseo-warning-box\"><strong>Note:</strong> Paths are case-sensitive and must be exact.</div>"
  },
      "robots-best-practices": {
    "title": "robots.txt Best Practices",
    "body": "<h3>Safe WordPress Defaults</h3><pre>User-agent: *\nDisallow: /wp-admin/\nAllow: /wp-admin/admin-ajax.php\nDisallow: /wp-includes/\n\nSitemap: https://yoursite.com/sitemap.xml</pre><h3>Recommended Blocks</h3><ul><li>Admin dashboards</li><li>System directories</li><li>Internal search results</li></ul><h3>Do NOT Block</h3><ul><li>CSS or JavaScript files</li><li>Images you want indexed</li><li>Main public content</li></ul><div class=\"asnerisseo-info-box\"><strong>Tip:</strong> Blocking resources needed for rendering can harm search engine understanding.</div><h3>Common Mistakes</h3><ul><li>Using <code>Disallow: /</code> unintentionally</li><li>Trying to hide sensitive data with robots.txt</li><li>Blocking assets required for mobile rendering</li></ul>"
  }
    }
  }
}