{"id":399206,"date":"2026-11-11T07:46:52","date_gmt":"2026-11-11T07:46:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/geo-engine-agent\/"},"modified":"2026-11-11T08:23:02","modified_gmt":"2026-11-11T08:23:02","slug":"geoenginepro-seo-automation","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/geoenginepro-seo-automation\/","author":23591737,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.9.23","stable_tag":"1.9.23","tested":"7.1.4","requires":"5.8","requires_php":"8.0","requires_plugins":null,"header_name":"GEOEnginePro SEO Automation","header_author":"GEO Engine","header_description":"Automatically applies SEO settings from GEO Engine to WordPress pages, posts and products \u2014 meta tags, JSON-LD, OG markup, WooCommerce catalog sync, AI product content.","last_updated":"2026-11-11 08:23:02","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/geoengine.pro\/help\/integration","header_author_uri":"https:\/\/geoengine.pro","rating":0,"author_block_rating":0,"active_installs":0,"downloads":67,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.9.21":{"tag":"1.9.21","author":"lyalikdenis","date":"2026-11-11 07:46:33","revision":3795826},"1.9.22":{"tag":"1.9.22","author":"lyalikdenis","date":"2026-11-11 07:56:00","revision":3795841},"1.9.23":{"tag":"1.9.23","author":"lyalikdenis","date":"2026-11-11 08:23:02","revision":3795872}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3795853,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3795853,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3795853,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3795853,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.9.21","1.9.22","1.9.23"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2516,2988,1117,186,286],"plugin_category":[45,55],"plugin_contributors":[292001],"plugin_business_model":[],"class_list":["post-399206","plugin","type-plugin","status-publish","hentry","plugin_tags-json-ld","plugin_tags-meta-tags","plugin_tags-schema","plugin_tags-seo","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-seo-and-marketing","plugin_contributors-lyalikdenis","plugin_committers-lyalikdenis"],"banners":{"banner":"https:\/\/ps.w.org\/geoenginepro-seo-automation\/assets\/banner-772x250.png?rev=3795853","banner_2x":"https:\/\/ps.w.org\/geoenginepro-seo-automation\/assets\/banner-1544x500.png?rev=3795853","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/geoenginepro-seo-automation\/assets\/icon-128x128.png?rev=3795853","icon_2x":"https:\/\/ps.w.org\/geoenginepro-seo-automation\/assets\/icon-256x256.png?rev=3795853","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>GEOEnginePro SEO Automation links your WordPress site to the GEO Engine platform and executes its tasks \u2014 from SEO metadata to publishing AI product descriptions and media. The full cycle: sync \u2192 AI generation \u2192 manual approval \u2192 publish \u2192 rollback.<\/p>\n\n<p><strong>SEO &amp; AI visibility:<\/strong><\/p>\n\n<ul>\n<li>Automatic meta tag updates (title, description, keywords)<\/li>\n<li>JSON-LD schema injection (Article, Product, FAQPage, BreadcrumbList)<\/li>\n<li>Open Graph and Twitter Cards<\/li>\n<li>Canonical URL management<\/li>\n<li>Local generation of llms.txt, llms-full.txt and dynamic Markdown (.md) pages for AI search \u2014 auto-regenerated on content change<\/li>\n<li>robots.txt and sitemap.xml management<\/li>\n<li>SEO audit, robots.txt fixes, snapshot-based rollback<\/li>\n<li>Plugin and server health check \/ self-diagnostics<\/li>\n<\/ul>\n\n<p><strong>Catalog &amp; content (WooCommerce):<\/strong><\/p>\n\n<ul>\n<li>Product catalog sync into GEO Engine (names, prices, attributes, images)<\/li>\n<li>AI product content publishing: descriptions, attributes, meta, FAQ, image alt texts \u2014 after approval in the dashboard<\/li>\n<li>AI product photos and videos \u2014 existing media is never overwritten<\/li>\n<li>Price and post updates (<code>update_post<\/code>, <code>update_price<\/code>)<\/li>\n<li>Content plan articles published to the chosen post type<\/li>\n<li>Content export for AI (<code>ai_export<\/code>)<\/li>\n<\/ul>\n\n<p><strong>Infrastructure:<\/strong><\/p>\n\n<ul>\n<li>Push + poll task delivery (instant webhook plus 5-minute fallback polling)<\/li>\n<li>Self-update packages from GEO Engine (direct channel builds only)<\/li>\n<li>Yoast SEO, Rank Math and All in One SEO integration \u2014 their meta fields are updated directly<\/li>\n<li>Automatic site structure scanning<\/li>\n<li>Task journal and debug log<\/li>\n<\/ul>\n\n<p><strong>How it works:<\/strong><\/p>\n\n<ol>\n<li>Install the plugin on your WordPress site<\/li>\n<li>Enter your GEO Engine project API key in the settings<\/li>\n<li>The plugin registers itself with GEO Engine automatically<\/li>\n<li>GEO Engine queues tasks \u2014 the plugin executes them via WP-Cron and webhook<\/li>\n<\/ol>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to the <strong>GEO Engine<\/strong> service (https:\/\/geoengine.pro) operated by GEO Engine. It is the core purpose of the plugin \u2014 the service orchestrates SEO and content tasks for your site. Every request carries your project API key (stored as a WordPress option) as a Bearer token; requests without a valid key are rejected by the service.<\/p>\n\n<p><strong>Data sent TO GEO Engine:<\/strong><\/p>\n\n<ul>\n<li><strong>Registration<\/strong> (<code>POST \/api\/v1\/cms\/agent\/register<\/code>): site URL, CMS version, plugin version \u2014 once, when you enter the project API key.<\/li>\n<li><strong>Heartbeat<\/strong> (<code>POST \/api\/v1\/cms\/agent\/ping<\/code>): agent id, plugin version, AI crawler\/referral\/404 counters and basic health metrics \u2014 on every WP-Cron poll (default: every 5 minutes).<\/li>\n<li><strong>Task delivery<\/strong> (<code>GET \/api\/v1\/cms\/tasks\/pending<\/code>): the plugin polls for queued tasks; tasks can also be pushed instantly via the plugin's own REST webhook (<code>\/wp-json\/geoengine\/v1\/webhook<\/code>, protected by your agent token).<\/li>\n<li><strong>Task results<\/strong> (<code>POST \/api\/v1\/cms\/tasks\/{id}\/result<\/code>, <code>POST \/api\/v1\/cms\/tasks\/bulk-result<\/code>): outcome of each executed task \u2014 when a task completes.<\/li>\n<li><strong>Site structure<\/strong> (<code>POST \/api\/v1\/cms\/agent\/submit-pages<\/code>): public page\/post URLs, titles and meta of your site \u2014 during catalog scans, so the platform knows what to optimize.<\/li>\n<li><strong>Product catalog<\/strong> (<code>POST \/api\/v1\/cms\/agent\/catalog\/*<\/code>): WooCommerce product names, prices, attributes and image URLs \u2014 during catalog sync, when enabled.<\/li>\n<li><strong>Error log<\/strong> (<code>POST \/api\/v1\/cms\/system\/log<\/code>): plugin error messages and context \u2014 only when something fails, for remote diagnostics.<\/li>\n<li><strong>PageSpeed metrics<\/strong> (<code>POST \/api\/v1\/cms\/metrics\/pagespeed<\/code>): Core Web Vitals scores collected during scheduled health checks.<\/li>\n<li><strong>Admin actions you trigger<\/strong> (only when you click them in wp-admin): content recommendations, llms.txt and FAQ content are fetched; campaign creation\/publication\/citation checks, geotargeting and managed-GEO requests post the values you entered (campaign name, target URLs, country\/city).<\/li>\n<\/ul>\n\n<p><strong>Data read FROM GEO Engine (admin dashboard only):<\/strong><\/p>\n\n<ul>\n<li>Command Center overview and action queue (<code>\/command-center\/{project}\/overview<\/code>, <code>\/actions<\/code>), industry content recommendations\/llms.txt\/FAQ (<code>\/industry\/content\/{project}\/*<\/code>), content plans, SERP positions, competitor lists, managed-GEO status. These GET requests send only the agent token and project ID \u2014 no site content leaves your server through them.<\/li>\n<\/ul>\n\n<p>No personal data of your visitors is collected. Content leaves your server only to be processed by the GEO Engine account you explicitly connected with your own API key.<\/p>\n\n<p>Terms of service: https:\/\/geoengine.pro\/legal\/oferta \u2014 Privacy policy: https:\/\/geoengine.pro\/legal\/privacy<\/p>\n\n<p><strong>Google PageSpeed Insights API<\/strong> (https:\/\/www.googleapis.com\/pagespeedonline) \u2014 optional, used only for the on-demand page speed check in the plugin admin. When you run a check, the plugin sends the URL of the page being tested plus your API key (if configured) to Google; nothing is sent in the background. Terms: https:\/\/developers.google.com\/terms\/ \u2014 Privacy: https:\/\/policies.google.com\/privacy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Download the plugin ZIP archive<\/li>\n<li>In WordPress admin: Plugins \u2192 Add New \u2192 Upload Plugin<\/li>\n<li>Choose the ZIP file and click \"Install\"<\/li>\n<li>Activate the plugin<\/li>\n<li>Open the \"GEO Engine\" admin menu<\/li>\n<li>Enter your project API key from GEO Engine<\/li>\n<li>Click \"Register\"<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20yoast%20seo%20or%20rank%20math%3F\"><h3>Do I need Yoast SEO or Rank Math?<\/h3><\/dt>\n<dd><p>No, the plugin works standalone. If Yoast SEO, Rank Math or All in One SEO is installed, their meta fields are updated directly.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%3F\"><h3>Does it work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes \u2014 product and category SEO, catalog sync and AI product content are supported.<\/p><\/dd>\n<dt id=\"how%20often%20does%20the%20plugin%20check%20for%20new%20tasks%3F\"><h3>How often does the plugin check for new tasks?<\/h3><\/dt>\n<dd><p>Every 5 minutes (300 seconds) by default; the interval is configurable in settings. Webhook push delivers tasks instantly.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.9.23<\/h4>\n\n<ul>\n<li>Full gettext internationalization: all admin UI strings are now\ntranslatable (English source strings, Russian shipped translation).\nPlugin UI follows the site language \u2014 Russian sites see the same\nRussian interface as before, other locales can be translated via\ntranslate.wordpress.org or a languages\/ folder<\/li>\n<\/ul>\n\n<h4>1.9.22<\/h4>\n\n<ul>\n<li>SEO rollback writes are now scoped to the exact task\/batch that\nproduced them \u2014 no cross-task clobbering on shared pages, and\nbatch-id resolution is hardened<\/li>\n<\/ul>\n\n<h4>1.9.21<\/h4>\n\n<ul>\n<li>wordpress.org review fixes: text domain now matches the plugin slug\n(geoenginepro-seo-automation), webhook no longer applies a blanket\nPHP time limit to lightweight task batches (limits are raised only\nfor batches containing heavy tasks), readme External Services section\nnow documents every endpoint group including admin dashboard reads<\/li>\n<\/ul>\n\n<h4>1.9.20<\/h4>\n\n<ul>\n<li>Renamed to GEOEnginePro SEO Automation \u2014 distinctive name required by\nthe wordpress.org review (previous name was too similar to an existing plugin)<\/li>\n<li>Runtime identifiers unchanged: directory slug geoengine-agent, text\ndomain geo-engine-agent, option names and API contract \u2014 existing\ninstalls keep working and self-update path is unaffected<\/li>\n<\/ul>\n\n<h4>1.9.19<\/h4>\n\n<ul>\n<li>wordpress.org review fixes: PHP requirement raised to 8.0 (union types\nbroke activation on 7.4), input sanitization in llms.txt settings,\nstored-XSS hardening in schema output<\/li>\n<\/ul>\n\n<h4>1.9.18<\/h4>\n\n<ul>\n<li>AI referral traffic tracking, 404 log, redirect manager, auto-IndexNow<\/li>\n<\/ul>\n\n<h4>1.9.17<\/h4>\n\n<ul>\n<li>wordpress.org build now ships without any remote-install code \u2014 the\nself-updater file is excluded from the package entirely<\/li>\n<li>ABSPATH direct-access guards added to every included PHP file<\/li>\n<li>Plugin header description switched to English<\/li>\n<li>Removed a non-dismissible admin notice<\/li>\n<\/ul>\n\n<h4>1.9.16<\/h4>\n\n<ul>\n<li>Minor internal updates<\/li>\n<\/ul>\n\n<h4>1.9.15<\/h4>\n\n<ul>\n<li>Product names are accounting data \u2014 update_product writes the title only\nwhen the platform marks it (<code>_allow_name<\/code> opt-in \/ <code>_restore_name<\/code> rollback)<\/li>\n<li>update_category: term names require the <code>_restore_name<\/code> marker<\/li>\n<\/ul>\n\n<h4>1.9.14<\/h4>\n\n<ul>\n<li>Distribution channel gate: wordpress.org builds disable in-plugin self-update<\/li>\n<li>readme.txt: English rewrite, External Services disclosure<\/li>\n<\/ul>\n\n<h4>1.9.x<\/h4>\n\n<ul>\n<li>Catalog content loop: sync_catalog \u2192 AI generation \u2192 approval \u2192 publish \u2192 rollback<\/li>\n<li>AI product photos and videos via update_product<\/li>\n<li>Push task delivery (webhook) on top of WP-Cron polling<\/li>\n<li>Self-update, ai_export, update_post\/update_price, publish_content_plan<\/li>\n<li>Queue deduplication and task self-healing<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Local LLMS file generation: llms.txt, llms-full.txt<\/li>\n<li>Dynamic Markdown (.md) pages for posts, terms and static files<\/li>\n<li>LLMS auto-regeneration on content changes<\/li>\n<li>Health check \/ self-diagnostics<\/li>\n<li>New task type: generate_llms<\/li>\n<li>PHPUnit tests and GitHub Actions CI<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release<\/li>\n<li>Agent registration via API key<\/li>\n<li>Meta tags, JSON-LD, OG markup updates<\/li>\n<li>Yoast SEO, Rank Math, All in One SEO support<\/li>\n<li>WooCommerce support<\/li>\n<li>Site structure scanning<\/li>\n<li>Task journal and file log<\/li>\n<li>WP-Cron integration<\/li>\n<\/ul>","raw_excerpt":"Connects WordPress to GEO Engine: SEO meta, JSON-LD, llms.txt, WooCommerce catalog sync and AI product content.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/399206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=399206"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/lyalikdenis"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=399206"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=399206"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=399206"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=399206"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=399206"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=399206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}