{"id":307469,"date":"2026-05-15T07:34:06","date_gmt":"2026-05-15T07:34:06","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/seo-agent-helper\/"},"modified":"2026-05-15T15:31:32","modified_gmt":"2026-05-15T15:31:32","slug":"seoagentio-helper","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/seoagentio-helper\/","author":23491403,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"4.88","stable_tag":"4.88","tested":"6.9.4","requires":"5.6","requires_php":"7.2","requires_plugins":null,"header_name":"SEO Agent IO - Auto Publisher","header_author":"SEO Agent","header_description":"Connect your WordPress site to SEO Agent (seo-agent.io) - an AI-powered SEO platform that automatically researches keywords, writes optimized articles, and publishes them to your blog. Requires an active SEO Agent account.","assets_banners_color":"19232c","last_updated":"2026-05-15 15:31:32","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/seo-agent.io\/wordpress-plugin","header_author_uri":"https:\/\/seo-agent.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":92,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"4.84":{"tag":"4.84","author":"seoagentio","date":"2026-05-15 07:43:44"},"4.85":{"tag":"4.85","author":"seoagentio","date":"2026-05-15 14:51:29"},"4.86":{"tag":"4.86","author":"seoagentio","date":"2026-05-15 15:07:21"},"4.87":{"tag":"4.87","author":"seoagentio","date":"2026-05-15 15:19:48"},"4.88":{"tag":"4.88","author":"seoagentio","date":"2026-05-15 15:31:32"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3532753,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3532753,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3532794,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3532786,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3532794,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["4.84","4.85","4.86","4.87","4.88"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Admin status page - connected, showing articles used this month","2":"Admin status page - new install, account setup prompt","3":"Article published automatically by SEO Agent in WordPress admin"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[5936,5739,529,468,186],"plugin_category":[55],"plugin_contributors":[263018],"plugin_business_model":[],"class_list":["post-307469","plugin","type-plugin","status-publish","hentry","plugin_tags-articles","plugin_tags-artificial-intelligence","plugin_tags-content","plugin_tags-keyword-research","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-seoagentio","plugin_committers-seoagentio"],"banners":{"banner":"https:\/\/ps.w.org\/seoagentio-helper\/assets\/banner-772x250.jpg?rev=3532794","banner_2x":"https:\/\/ps.w.org\/seoagentio-helper\/assets\/banner-1544x500.png?rev=3532786","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/seoagentio-helper\/assets\/icon-128x128.png?rev=3532753","icon_2x":"https:\/\/ps.w.org\/seoagentio-helper\/assets\/icon-256x256.png?rev=3532753","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>SEO Agent IO - Auto Publisher connects your WordPress site to SEO Agent (seo-agent.io),\nan AI-powered content platform that helps you plan, write, and publish\nSEO-optimized articles based on real keyword research for your niche.<\/p>\n\n<p>An active SEO Agent subscription is required. See seo-agent.io for plans and pricing.<\/p>\n\n<h4>What this plugin does<\/h4>\n\n<ul>\n<li>Receives and publishes articles prepared by SEO Agent - content you have reviewed and\napproved through the SEO Agent dashboard before it reaches your site<\/li>\n<li>Applies SEO metadata to each published post (Yoast, Rank Math, AIOSEO, SEOPress)<\/li>\n<li>Fills missing image alt text using AI to improve accessibility and search coverage<\/li>\n<li>Injects Organization schema markup for structured data<\/li>\n<li>Syncs published post URLs back to SEO Agent so the service can update its internal links<\/li>\n<li>Removes duplicate-content query parameters (?nocache=, ?elementor_popup=) from canonical URLs<\/li>\n<\/ul>\n\n<h4>External Service Notice<\/h4>\n\n<p>This plugin connects to seo-agent.io to publish articles and generate alt text.\nYour site URL, published post URLs, and image URLs are transmitted to this service.\nSee: https:\/\/seo-agent.io\/privacy and https:\/\/seo-agent.io\/terms<\/p>\n\n<h4>Requirements<\/h4>\n\n<p>An active SEO Agent account is required. Sign up at seo-agent.io.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin communicates with seo-agent.io for all core functionality:<\/p>\n\n<ul>\n<li><strong>What is sent:<\/strong> Site URL (on first page load after installation, with automatic retry backoff), published post URLs and titles\n(on publish\/update\/delete), page URLs (site audit), image URLs (for alt text\ngeneration), plugin version (on each poll), crash reports (on fatal errors).\nIf WooCommerce is installed: product titles, URLs, and status changes are synced\nautomatically via webhooks to power internal linking.<\/li>\n<li><strong>When:<\/strong> On activation, every 5 minutes via WP-Cron, on post publish\/update\/delete,\nand on WooCommerce product changes (if WooCommerce is installed).<\/li>\n<li><strong>Privacy policy:<\/strong> https:\/\/seo-agent.io\/privacy<\/li>\n<li><strong>Terms of service:<\/strong> https:\/\/seo-agent.io\/terms<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin<\/li>\n<li>The plugin connects automatically on activation<\/li>\n<li>Visit SEO Agent in your WordPress admin to complete setup<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20the%20plugin%20free%3F\"><h3>Is the plugin free?<\/h3><\/dt>\n<dd><p>The plugin itself is free to install. Using it requires an active SEO Agent subscription.\nVisit seo-agent.io for current plans and pricing.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20work%20without%20an%20account%3F\"><h3>Does the plugin work without an account?<\/h3><\/dt>\n<dd><p>No. You need to register at seo-agent.io and complete the onboarding process first.\nOnce your site is connected through the SEO Agent dashboard, the plugin will automatically\nreceive and publish articles prepared for your site.<\/p><\/dd>\n<dt id=\"what%20data%20is%20sent%20to%20seo-agent.io%3F\"><h3>What data is sent to seo-agent.io?<\/h3><\/dt>\n<dd><p>Your site URL, published post URLs, image URLs for alt text generation, and crash reports on fatal errors.\nSee the External Services section below.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.88<\/h4>\n\n<ul>\n<li>Fix auto-update for existing installations - revert ZIP directory name to seo-agent-helper<\/li>\n<\/ul>\n\n<h4>4.87<\/h4>\n\n<ul>\n<li>Fix ZIP directory name to match WordPress.org plugin slug (seoagentio-helper) - prevents broken auto-updates for WP.org installs<\/li>\n<\/ul>\n\n<h4>4.86<\/h4>\n\n<ul>\n<li>Fix preg_match fatal on publish-post when slug is empty - WordPress passes WP_REST_Request as fallback to sanitize_title<\/li>\n<\/ul>\n\n<h4>4.85<\/h4>\n\n<ul>\n<li>Fix WooCommerce compatibility: detach WC session hooks before wp_set_current_user to prevent PHP fatal on WooCommerce sites<\/li>\n<\/ul>\n\n<h4>4.84<\/h4>\n\n<ul>\n<li>Image sideload: set alt text from pre-generated value when AI API times out (fallback)<\/li>\n<li>Async image sideload retry with extended 20-second timeout<\/li>\n<\/ul>\n\n<h4>4.83<\/h4>\n\n<ul>\n<li>Image sideload: set _wp_attachment_image_alt from pre-generated alt as fallback<\/li>\n<\/ul>\n\n<h4>4.82<\/h4>\n\n<ul>\n<li>Strip wpautop paragraph wrapper from JSON-LD schema in post_content via the_content filter<\/li>\n<\/ul>\n\n<h4>4.81<\/h4>\n\n<ul>\n<li>Fix unused variable in inject-schema handler<\/li>\n<li>Refactor ob_start helper so each caller has explicit ob_end_flush() for static analysis<\/li>\n<\/ul>\n\n<h4>4.80<\/h4>\n\n<ul>\n<li>inject-schema endpoint now stores schema in post meta instead of post_content<\/li>\n<li>Add comment clarifying base64_decode usage (HTTP Basic Auth header decoding)<\/li>\n<\/ul>\n\n<h4>4.79<\/h4>\n\n<ul>\n<li>Refactor output buffer handling: shared helper eliminates duplicate flush logic<\/li>\n<li>Shutdown hook priority -1 ensures buffer closes before WordPress core cleanup<\/li>\n<li>Skip unnecessary ob_get_status() calls on AJAX and cron requests<\/li>\n<\/ul>\n\n<h4>4.78<\/h4>\n\n<ul>\n<li>Explicit shutdown handler to close output buffer opened at template_redirect<\/li>\n<li>Remove load_plugin_textdomain() - WordPress 4.6+ loads translations automatically<\/li>\n<li>Fix code comment that triggered WP.org automated scanner<\/li>\n<\/ul>\n\n<h4>4.77<\/h4>\n\n<ul>\n<li>Fix featured image sideload: preserve original alt text set by fill_alt_texts<\/li>\n<li>Decode HTML entities from media library title on sideload<\/li>\n<\/ul>\n\n<h4>4.76<\/h4>\n\n<ul>\n<li>Fix image alt text: use payload alt_text field, decode HTML entities from post title<\/li>\n<li>Support caption and description fields in set_featured_image task<\/li>\n<\/ul>\n\n<h4>4.75<\/h4>\n\n<ul>\n<li>Add _yoast_wpseo_canonical to SEO meta keys allowlist for canonical URL override<\/li>\n<\/ul>\n\n<h4>4.74<\/h4>\n\n<ul>\n<li>WP-native auto-update via pre_set_site_transient_update_plugins filter<\/li>\n<li>Noindex WooCommerce add-to-cart and added-to-cart URL parameters<\/li>\n<\/ul>\n\n<h4>4.73<\/h4>\n\n<ul>\n<li>Add activate_plugin task type to re-activate deactivated plugins after reinstall<\/li>\n<\/ul>\n\n<h4>4.72<\/h4>\n\n<ul>\n<li>Replace sanitize_url() with esc_url_raw() for WordPress 5.6 compatibility<\/li>\n<li>Fix double-encoded &amp; in admin page free plan label<\/li>\n<li>Wrap cron schedule display strings in __() for i18n<\/li>\n<li>Fix uninstall.php multisite: clear cron hooks and transients per-site<\/li>\n<\/ul>\n\n<h4>4.71<\/h4>\n\n<ul>\n<li>Redesigned admin status page with SEO Agent visual identity (all 4 connection states)<\/li>\n<\/ul>\n\n<h4>4.70<\/h4>\n\n<ul>\n<li>WP_Filesystem API for all filesystem writes (WP.org scanner compliance)<\/li>\n<li>Pre-computed SVG icon constant (no base64_encode at runtime)<\/li>\n<li>sanitize_key on WooCommerce attribute query params<\/li>\n<\/ul>\n\n<h4>4.69<\/h4>\n\n<ul>\n<li>WP_Filesystem API for llms.txt writes (WP.org compliance)<\/li>\n<li>is_wp_error guard on org-schema homepage fetch<\/li>\n<li>Remove sslverify=false from direct-URL fallback (security)<\/li>\n<\/ul>\n\n<h4>4.68<\/h4>\n\n<ul>\n<li>Deactivation clears all cron hooks via wp_clear_scheduled_hook<\/li>\n<li>Added uninstall.php for full cleanup on plugin deletion<\/li>\n<\/ul>\n\n<h4>4.67<\/h4>\n\n<ul>\n<li>Added WooCommerce HPOS compatibility declaration<\/li>\n<li>Renamed cron intervals to plugin-prefixed names (seo_agent_twicehourly)<\/li>\n<li>i18n support and textdomain loading<\/li>\n<li>Converted all anonymous closures to named functions<\/li>\n<\/ul>\n\n<h4>4.66<\/h4>\n\n<ul>\n<li>Available on WordPress.org<\/li>\n<li>Added free tier: 3 articles\/month, 20 alt texts\/month<\/li>\n<li>Removed self-update mechanism (updates now via WordPress.org)<\/li>\n<\/ul>","raw_excerpt":"Connect WordPress to SEO Agent - AI-powered keyword research and article publishing.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/307469","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=307469"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/seoagentio"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=307469"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=307469"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=307469"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=307469"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=307469"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=307469"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}