{"id":312254,"date":"2026-06-28T19:08:44","date_gmt":"2026-06-28T19:08:44","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/geoleaper\/"},"modified":"2026-06-28T19:08:29","modified_gmt":"2026-06-28T19:08:29","slug":"geoleaper-ai-schema","status":"publish","type":"plugin","link":"https:\/\/su.wordpress.org\/plugins\/geoleaper-ai-schema\/","author":12765912,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5.7","stable_tag":"1.5.7","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Geoleaper - AI Schema & Structured Data","header_author":"Geoleaper","header_description":"AI-powered Schema.org JSON-LD, AI visibility scoring, and LLMS.txt generation for WordPress.","assets_banners_color":"110c08","last_updated":"2026-06-28 19:08:29","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/geoleaper.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":47,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.5.7":{"tag":"1.5.7","author":"jabbe","date":"2026-06-28 19:08:29"}},"upgrade_notice":{"1.5.2":"<p>Privacy and security hardening release. Removes visitor IP and author email from outbound payloads, validates URLs against internal addresses, and adds GDPR-compliant external data deletion on uninstall. Recommended upgrade for all users.<\/p>","1.5.1":"<p>Compliance release that removes locked feature code and gates the AI crawler tracking refresh behind an explicit opt-in. Required for sites that use the AI crawler tracking feature.<\/p>","1.2.4":"<p>Initial WordPress.org release of Geoleaper.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3589223,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3589219,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3589233,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3589233,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.5.7"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Geoleaper dashboard with AI Visibility Score and site-level KPIs.","2":"Content analysis screen with generated Schema.org JSON-LD.","3":"Schema tree browser for inspecting structured data.","4":"Identity Center with organization and sameAs profile links.","5":"llms.txt generation settings.","6":"AI crawler analytics dashboard.","7":"Agency settings and branding options."}},"plugin_section":[],"plugin_tags":[2516,244604,1117,186,1121],"plugin_category":[55],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-312254","plugin","type-plugin","status-publish","hentry","plugin_tags-json-ld","plugin_tags-llms-txt","plugin_tags-schema","plugin_tags-seo","plugin_tags-structured-data","plugin_category-seo-and-marketing","plugin_committers-jabbe"],"banners":{"banner":"https:\/\/ps.w.org\/geoleaper-ai-schema\/assets\/banner-772x250.png?rev=3589233","banner_2x":"https:\/\/ps.w.org\/geoleaper-ai-schema\/assets\/banner-1544x500.png?rev=3589233","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/geoleaper-ai-schema\/assets\/icon-128x128.png?rev=3589223","icon_2x":"https:\/\/ps.w.org\/geoleaper-ai-schema\/assets\/icon-256x256.png?rev=3589219","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Geoleaper helps WordPress sites become easier for search engines and AI systems to understand.<\/p>\n\n<p>It analyzes your content, generates Schema.org JSON-LD structured data, scores your content for AI visibility signals, strengthens your organization identity, and can generate llms.txt files for large language models.<\/p>\n\n<p>Beyond basic static markup, Geoleaper focuses on semantic clarity: what the page is, who published it, which entities it is about, and how it should be understood by AI-powered search systems.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li><strong>AI-Powered Schema Generation<\/strong>: Generate Schema.org JSON-LD for posts, pages, products, custom post types, and taxonomy archives.<\/li>\n<li><strong>AI Visibility Score<\/strong>: See how well each page is structured for search engines, schema quality, entity clarity, and AI-powered discovery.<\/li>\n<li><strong>Identity Center<\/strong>: Strengthen your organization entity with sameAs profile links and verified brand information.<\/li>\n<li><strong>llms.txt Generation<\/strong>: Create an llms.txt file to help large language models understand your site structure and key content.<\/li>\n<li><strong>AI Crawler Tracking<\/strong>: Track visits from known AI crawlers and AI-related user agents when enabled.<\/li>\n<li><strong>Taxonomy Support<\/strong>: Generate structured data for category and tag archive pages.<\/li>\n<li><strong>Auto-Analysis<\/strong>: Automatically analyze posts when they are published or updated.<\/li>\n<li><strong>AI Layer<\/strong>: Optionally append a user-controlled content section to selected post types to improve semantic clarity for AI systems. This feature can be enabled, disabled, and configured by the site owner.<\/li>\n<li><strong>SEO Plugin Compatibility<\/strong>: Works alongside Yoast SEO, Rank Math, SEOPress, and other SEO plugins.<\/li>\n<\/ul>\n\n<p><strong>Supported Schema Types:<\/strong><\/p>\n\n<p>Geoleaper can generate structured data for:<\/p>\n\n<ul>\n<li>Articles and blog posts<\/li>\n<li>Pages and home pages<\/li>\n<li>Product pages<\/li>\n<li>Category and tag archives<\/li>\n<li>Collection pages<\/li>\n<li>Author and profile pages<\/li>\n<li>Organization and WebSite entities<\/li>\n<li>Breadcrumbs and ItemList structures where relevant<\/li>\n<\/ul>\n\n<p>Schema types are auto-detected based on WordPress context and page content, with manual overrides available where supported.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>Geoleaper connects to the Geoleaper API service at <a href=\"https:\/\/app.geoleaper.com\">https:\/\/app.geoleaper.com<\/a> to provide AI-powered schema generation, scoring, identity features, llms.txt generation, and optional AI crawler analytics.<\/p>\n\n<p>A Geoleaper account is required to use the plugin. API requests are made when you connect your site, run an analysis, use automatic analysis, generate llms.txt, or enable crawler tracking features.<\/p>\n\n<p>The following data may be sent to the Geoleaper API:<\/p>\n\n<ul>\n<li><strong>Post content and metadata<\/strong> (endpoint: <code>\/api\/wordpress\/v1\/analyses<\/code>, trigger: manual analyze action or auto-analysis on publish\/update when enabled): Post title, content, URL, excerpt, categories, tags, featured image URL, post type, and publish\/update metadata. Author display name, nickname, public biography, public author URL, and Gravatar URL are sent for schema.org Person nodes. <strong>Author email, username, first\/last name, and role lists are never sent.<\/strong><\/li>\n<li><strong>Term\/taxonomy data<\/strong> (endpoint: <code>\/api\/wordpress\/v1\/analyses<\/code>, trigger: manual analyze action on a taxonomy archive): Term name, description, archive URL, taxonomy type, and listed posts.<\/li>\n<li><strong>Site information<\/strong> (sent with each analysis): Site URL, site name, language, WordPress context flags, and the organization identity fields configured under Settings.<\/li>\n<li><strong>SEO plugin metadata<\/strong> (sent with each analysis when present): Public metadata such as social profile links or SEO fields used for schema generation.<\/li>\n<li><strong>Crawler visit data<\/strong> (endpoint: <code>\/api\/wordpress\/v1\/visits<\/code>, trigger: page load detected as an AI crawler request, only when AI Crawler Tracking is enabled): Page URL, user agent, referrer, UTM source, and timestamp. <strong>Visitor IP addresses are never sent.<\/strong> Crawler tracking is off by default and must be explicitly enabled under Settings \u2192 AI Crawler Tracking.<\/li>\n<li><strong>Crawler signature refresh<\/strong> (endpoint: <code>\/api\/wordpress\/v1\/visit-sources<\/code>, trigger: daily background cron, only when AI Crawler Tracking is enabled): No data sent \u2014 this is a one-way GET to download the latest AI-bot user-agent allow-list. Scheduled cron is cleared automatically when tracking is disabled.<\/li>\n<li><strong>External-data deletion<\/strong> (endpoint: <code>\/api\/wordpress\/v1\/sites\/{id}\/delete<\/code>, trigger: plugin uninstall): A best-effort request to remove the site's analysis history and identity profile from Geoleaper servers.<\/li>\n<\/ul>\n\n<p>Geoleaper does not collect personal data from regular site visitors. AI crawler tracking is optional and can be disabled from the Settings page; doing so clears the daily refresh cron and the locally cached crawler signature list immediately.<\/p>\n\n<p>The data is used to generate structured data, calculate AI visibility scores, build identity signals, generate llms.txt files, and provide analytics inside the Geoleaper dashboard.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/geoleaper.com\/terms\">Geoleaper Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/geoleaper.com\/privacy\">Geoleaper Privacy Policy<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install Geoleaper from the WordPress Plugin Directory or upload the plugin files to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the \"Plugins\" menu in WordPress.<\/li>\n<li>Create or log in to your Geoleaper account.<\/li>\n<li>Connect your site from the Geoleaper settings page.<\/li>\n<li>Start analyzing your content from the Geoleaper dashboard.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20geoleaper%20account%3F\"><h3>Do I need a Geoleaper account?<\/h3><\/dt>\n<dd><p>Yes, you need to create a free account at <a href=\"https:\/\/geoleaper.com\">geoleaper.com<\/a> to use this plugin. A free tier is available with a limited number of analyses per month.<\/p><\/dd>\n<dt id=\"which%20features%20require%20a%20geoleaper%20account%20or%20plan%3F\"><h3>Which features require a Geoleaper account or plan?<\/h3><\/dt>\n<dd><p>A Geoleaper account is required to connect the plugin and use AI-powered analysis. The free tier includes a limited number of analyses per month. Higher usage limits and additional agency features may require a paid plan.<\/p><\/dd>\n<dt id=\"does%20geoleaper%20replace%20yoast%20seo%2C%20rank%20math%2C%20or%20seopress%3F\"><h3>Does Geoleaper replace Yoast SEO, Rank Math, or SEOPress?<\/h3><\/dt>\n<dd><p>No. Geoleaper is designed to work alongside SEO plugins. SEO plugins usually handle titles, meta descriptions, sitemaps, and traditional SEO settings. Geoleaper focuses on AI-powered structured data, entity clarity, AI visibility scoring, llms.txt, and AI crawler insights.<\/p><\/dd>\n<dt id=\"can%20i%20control%20the%20generated%20schema%3F\"><h3>Can I control the generated schema?<\/h3><\/dt>\n<dd><p>Yes. Geoleaper stores generated JSON-LD locally in WordPress and provides analysis details so you can inspect the structured data before or after it is output.<\/p><\/dd>\n<dt id=\"does%20geoleaper%20output%20json-ld%20on%20the%20front%20end%3F\"><h3>Does Geoleaper output JSON-LD on the front end?<\/h3><\/dt>\n<dd><p>Yes. Generated structured data is stored locally in post and term meta and output as JSON-LD on relevant pages.<\/p><\/dd>\n<dt id=\"what%20data%20is%20sent%20to%20the%20geoleaper%20api%3F\"><h3>What data is sent to the Geoleaper API?<\/h3><\/dt>\n<dd><p>When you analyze a post or term, the plugin sends the post or term content, title, URL, and metadata to the Geoleaper API for AI-powered schema generation. See the \"External Services\" section for full details.<\/p><\/dd>\n<dt id=\"does%20geoleaper%20send%20visitor%20data%20to%20third-party%20ai%20providers%3F\"><h3>Does Geoleaper send visitor data to third-party AI providers?<\/h3><\/dt>\n<dd><p>No. Geoleaper sends content and site data to the Geoleaper API for analysis and schema generation. Optional AI crawler tracking records bot visits for analytics. Regular visitor personal data is not collected for crawler tracking.<\/p><\/dd>\n<dt id=\"can%20i%20disable%20ai%20crawler%20tracking%3F\"><h3>Can I disable AI crawler tracking?<\/h3><\/dt>\n<dd><p>Yes. AI crawler tracking is optional and can be disabled at any time from the plugin settings.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20slow%20down%20my%20site%3F\"><h3>Does this plugin slow down my site?<\/h3><\/dt>\n<dd><p>No. The structured data (JSON-LD) is stored locally and output directly from your database. API calls only happen when you trigger an analysis, when auto-analysis runs in the background, or when an enabled feature requires a request.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20compatible%20with%20other%20seo%20plugins%3F\"><h3>Is this plugin compatible with other SEO plugins?<\/h3><\/dt>\n<dd><p>Yes. Geoleaper works alongside popular SEO plugins like Yoast SEO, Rank Math, and SEOPress. It can detect public metadata such as social profile links configured in those plugins to enhance your structured data.<\/p><\/dd>\n<dt id=\"is%20there%20a%20free%20version%3F\"><h3>Is there a free version?<\/h3><\/dt>\n<dd><p>Yes, Geoleaper offers a free tier with a limited number of analyses per month. Paid plans are available on the Geoleaper website for higher analysis volume and additional features.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.2<\/h4>\n\n<ul>\n<li>Compliance: routed all production logging through a single WP_DEBUG-gated helper (geoleaper_log) to satisfy WordPress.org plugin guidelines.<\/li>\n<li>Compliance: removed JSON_UNESCAPED_SLASHES from all wp_json_encode calls; slash-escape now applied consistently across REST and admin output paths.<\/li>\n<li>Privacy: removed visitor IP address from AI crawler tracking payload; tracking remains strictly opt-in via the Settings \u2192 AI Crawler Tracking toggle.<\/li>\n<li>Privacy: removed author email from analysis payloads. Only display name and biography are sent to the Geoleaper API.<\/li>\n<li>Security: validated outbound URLs against private and reserved IP ranges in the rendered-content fetcher (SSRF defence). SSL verification is no longer disabled.<\/li>\n<li>Security: tightened nonce-scope suppression comments in identity helpers; taxonomy parameter now validated against taxonomy_exists.<\/li>\n<li>GDPR: uninstall now requests external-data deletion via the Geoleaper API when an API key is configured.<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>Compliance: removed the legacy Custom Prompts management code (admin submenu, AJAX handlers, JS module, and prompts view) per WordPress.org guideline 5 (no trialware \/ locked features).<\/li>\n<li>Compliance: opt-in gate on the \/visit-sources daily refresh in Geoleaper_Visits::init. Crawler tracking is now off by default; the cron event and cached signatures are cleared when the toggle is off.<\/li>\n<li>Security: replaced inline  blocks in views\/modals\/score-details.php and views\/modals\/term-score-details.php with a properly enqueued js\/geoleaper-score-modal.js.<\/li>\n<li>Security: wp_kses_post applied to the AI layer output in append_ai_layer_to_content; wp_kses with an SVG allow-list applied to logo_svg output.<\/li>\n<li>Naming: renamed main plugin file to geoleaper-ai-schema.php to match the directory slug.<\/li>\n<li>Documentation: External Services section in readme.txt now lists every external endpoint (analyses, visits, visit-sources) with the data sent and trigger.<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Initial WordPress.org release.<\/li>\n<li>AI-powered Schema.org JSON-LD generation for posts, pages, products, custom post types, and taxonomy archives.<\/li>\n<li>AI Visibility Score with Schema, Identity, and Coherence components.<\/li>\n<li>Identity Center for organization profile verification and sameAs links.<\/li>\n<li>llms.txt generation for large language model discovery.<\/li>\n<li>Optional AI crawler tracking and analytics.<\/li>\n<li>Auto-analysis on post publish and update.<\/li>\n<li>Optional AI Layer content section with per-post-type controls.<\/li>\n<li>REST API endpoint for headless and external integrations.<\/li>\n<li>Redesigned admin dashboard, schema tree browser, and agency branding options.<\/li>\n<\/ul>","raw_excerpt":"AI-powered Schema.org JSON-LD, AI visibility scoring, and llms.txt generation for WordPress.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/312254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=312254"}],"author":[{"embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jabbe"}],"wp:attachment":[{"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=312254"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=312254"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=312254"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=312254"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=312254"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=312254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}