{"id":311499,"date":"2026-05-18T06:42:50","date_gmt":"2026-05-18T06:42:50","guid":{"rendered":"https:\/\/en-au.wordpress.org\/plugins\/the-seo-agent\/"},"modified":"2026-05-18T06:42:29","modified_gmt":"2026-05-18T06:42:29","slug":"seobot-publisher-for-the-seo-agent","status":"publish","type":"plugin","link":"https:\/\/cn.wordpress.org\/plugins\/seobot-publisher-for-the-seo-agent\/","author":23497534,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.0","stable_tag":"1.3.0","tested":"6.9.4","requires":"5.6","requires_php":"7.4","requires_plugins":null,"header_name":"Seobot Publisher for The SEO Agent","header_author":"The SEO Agent","header_description":"Auto-publish articles from The SEO Agent to your WordPress site. Paste your integration token in The SEO Agent menu.","assets_banners_color":"3a58ff","last_updated":"2026-05-18 06:42:29","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/theseoagent.ai\/integrations\/wordpress","header_author_uri":"https:\/\/theseoagent.ai","rating":0,"author_block_rating":0,"active_installs":0,"downloads":91,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.0":{"tag":"1.3.0","author":"seoagent1232","date":"2026-05-18 06:42:29"}},"upgrade_notice":{"1.3.0":"<p>Editing an article in the dashboard and re-sending now updates the existing WordPress post instead of creating a duplicate. Safe in-place upgrade, no settings to change.<\/p>","1.2.0":"<p>Plugin renamed to &quot;Seobot Publisher for The SEO Agent&quot; and admin menu moved further down the sidebar (under Settings\/Tools). No functional change, no API change, existing token + post-mode preferences carry over.<\/p>","1.1.1":"<p>Fixes a wrong dashboard URL in the plugin settings page (was pointing to a non-existent <code>app.<\/code> subdomain).<\/p>","1.1.0":"<p>Adds top-level admin menu, branded setup page, draft-mode toggle, and a &quot;last received article&quot; card for proof-of-life from inside WordPress. No breaking changes.<\/p>","1.0.0":"<p>First public release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3535142,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3535142,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3535142,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3535142,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The SEO Agent setup page in WP admin: branded header, status, token field, post-mode toggle, last-received article card.","2":"The SEO Agent dashboard: create a WordPress integration, install the plugin in one click, paste the token."}},"plugin_section":[],"plugin_tags":[2353,569,529,7143,186],"plugin_category":[55],"plugin_contributors":[263328],"plugin_business_model":[],"class_list":["post-311499","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-automation","plugin_tags-content","plugin_tags-publishing","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-seoagent1232","plugin_committers-seoagent1232"],"banners":{"banner":"https:\/\/ps.w.org\/seobot-publisher-for-the-seo-agent\/assets\/banner-772x250.png?rev=3535142","banner_2x":"https:\/\/ps.w.org\/seobot-publisher-for-the-seo-agent\/assets\/banner-1544x500.png?rev=3535142","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/seobot-publisher-for-the-seo-agent\/assets\/icon-128x128.png?rev=3535142","icon_2x":"https:\/\/ps.w.org\/seobot-publisher-for-the-seo-agent\/assets\/icon-256x256.png?rev=3535142","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>The SEO Agent is an AI SEO content automation platform. It does keyword research with real DataForSEO data (not estimates), drafts fact-checked articles with citations, runs them through a quality gate, and ships them to your CMS. This plugin is the WordPress receiver: every article you approve in the dashboard lands on your site as a published post.<\/p>\n\n<p><strong>What gets published<\/strong><\/p>\n\n<ul>\n<li>Article title<\/li>\n<li>Full HTML body<\/li>\n<li>Featured image (downloaded into your WordPress media library)<\/li>\n<li>SEO meta description (Yoast and Rank Math compatible)<\/li>\n<li>Tags (auto-created if they do not exist)<\/li>\n<li>Custom slug<\/li>\n<\/ul>\n\n<p><strong>How it works<\/strong><\/p>\n\n<ol>\n<li>Sign up at <a href=\"https:\/\/theseoagent.ai\">theseoagent.ai<\/a> and create a WordPress integration in your dashboard. The dashboard generates a 64-character integration token.<\/li>\n<li>Install and activate this plugin on your WordPress site.<\/li>\n<li>Paste the token at The SEO Agent in your admin sidebar (the plugin opens this page automatically after activation) and click Save.<\/li>\n<li>Approve an article in the dashboard. The SEO Agent posts it to your site over HTTPS using the token.<\/li>\n<\/ol>\n\n<p>The plugin exposes two REST routes under the <code>seobot\/v1<\/code> namespace:<\/p>\n\n<ul>\n<li><code>POST \/wp-json\/seobot\/v1\/ping<\/code> for the dashboard's \"Test Connection\" button<\/li>\n<li><code>POST \/wp-json\/seobot\/v1\/articles<\/code> for the publish payload<\/li>\n<\/ul>\n\n<p>Both routes require the bearer token. The plugin compares it to the saved token using a constant-time comparison so nothing leaks via timing.<\/p>\n\n<p><strong>No telemetry<\/strong>. The plugin does not phone home. It only responds to requests your dashboard initiates.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects WordPress to a third-party SaaS, <strong>The SEO Agent<\/strong> (<a href=\"https:\/\/theseoagent.ai\">theseoagent.ai<\/a>), which is required for the plugin to do anything useful.<\/p>\n\n<p><strong>What data is sent and when<\/strong><\/p>\n\n<ul>\n<li>The plugin receives <code>POST \/wp-json\/seobot\/v1\/articles<\/code> requests from <code>theseoagent.ai<\/code> only when you click \"Approve\" on an article in the dashboard. The payload contains the article body, title, tags, slug, meta description, and a featured-image URL.<\/li>\n<li>The plugin makes outbound HTTPS requests only to fetch the featured-image URL provided in the payload (via WordPress core's <code>media_sideload_image<\/code>). No tracking pixels, no analytics calls.<\/li>\n<li><code>POST \/wp-json\/seobot\/v1\/ping<\/code> requests come from the dashboard's \"Test Connection\" button. The response includes plugin version, WordPress version, site name, and site URL so the dashboard can confirm the integration is live.<\/li>\n<li>No data is sent to The SEO Agent on plugin activation, page loads, or any background WordPress event.<\/li>\n<\/ul>\n\n<p><strong>Account, billing, and policies<\/strong><\/p>\n\n<ul>\n<li>Using this plugin requires a paid account on The SEO Agent. Pricing: $1 trial for 3 days, then $99\/mo. See <a href=\"https:\/\/theseoagent.ai\/pricing\">theseoagent.ai\/pricing<\/a>.<\/li>\n<li>Terms of Service: <a href=\"https:\/\/theseoagent.ai\/terms\">theseoagent.ai\/terms<\/a><\/li>\n<li>Privacy Policy: <a href=\"https:\/\/theseoagent.ai\/privacy\">theseoagent.ai\/privacy<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>In WordPress Admin, go to <strong>Plugins &rarr; Add New &rarr; Upload Plugin<\/strong> and upload the <code>.zip<\/code>. Or copy the <code>seobot\/<\/code> folder into <code>wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate <strong>The SEO Agent<\/strong>. The plugin will open its setup page automatically.<\/li>\n<li>Paste the integration token from your dashboard at <a href=\"https:\/\/theseoagent.ai\/integrations\">theseoagent.ai\/integrations<\/a>.<\/li>\n<li>Choose your post mode: <strong>Publish immediately<\/strong> (default) or <strong>Save as draft<\/strong> if you want to review before publishing.<\/li>\n<li>Click <strong>Save settings<\/strong>.<\/li>\n<li>Back in the dashboard, click <strong>Test Connection &amp; Create Integration<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20do%20i%20get%20the%20integration%20token%3F\"><h3>Where do I get the integration token?<\/h3><\/dt>\n<dd><p>Sign up at <a href=\"https:\/\/theseoagent.ai\">theseoagent.ai<\/a>, then create a WordPress integration in your dashboard. The token is shown to you once at create time. Copy it before leaving the page. If you lose it, recreate the integration (we cannot recover it).<\/p><\/dd>\n<dt id=\"how%20does%20authentication%20work%3F\"><h3>How does authentication work?<\/h3><\/dt>\n<dd><p>Every request to the plugin's REST endpoints must include an <code>Authorization: Bearer &lt;token&gt;<\/code> header. The plugin compares the provided token to the saved one using <code>hash_equals<\/code> (constant-time comparison).<\/p><\/dd>\n<dt id=\"can%20i%20run%20articles%20in%20draft%20mode%3F\"><h3>Can I run articles in draft mode?<\/h3><\/dt>\n<dd><p>Yes. Open <strong>The SEO Agent<\/strong> in your WordPress admin sidebar, set <strong>Post mode<\/strong> to \"Save as draft (review before publishing)\", and click Save. From that point every approved article lands as a WordPress draft, ready for you to review in <strong>Posts &rarr; All Posts<\/strong> before publishing.<\/p><\/dd>\n<dt id=\"does%20it%20support%20custom%20post%20types%3F\"><h3>Does it support custom post types?<\/h3><\/dt>\n<dd><p>Version 1 publishes to the standard <code>post<\/code> type. Custom post type support is planned.<\/p><\/dd>\n<dt id=\"what%20if%20my%20site%20is%20behind%20cloudflare%20or%20a%20security%20plugin%3F\"><h3>What if my site is behind Cloudflare or a security plugin?<\/h3><\/dt>\n<dd><p>The dashboard's \"Test Connection\" gives your site 15 seconds to respond. If a security plugin (Wordfence, Sucuri, iThemes Security) or Cloudflare Bot Fight Mode is challenging POST requests to <code>\/wp-json\/seobot\/v1\/*<\/code>, whitelist that namespace.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20track%20me%20or%20send%20analytics%3F\"><h3>Does the plugin track me or send analytics?<\/h3><\/dt>\n<dd><p>No. The plugin does not collect telemetry. The only outbound HTTP it makes is fetching the featured-image URL we send in the publish payload (so the image lands in your media library).<\/p><\/dd>\n<dt id=\"where%20can%20i%20see%20what%20is%20being%20sent%3F\"><h3>Where can I see what is being sent?<\/h3><\/dt>\n<dd><p>The dashboard shows every publish attempt with the exact payload. The plugin's setup page also shows the most recently received article (title, timestamp, link to edit) so you can confirm the integration is alive without leaving WordPress. You can also tail your WordPress access log for <code>POST \/wp-json\/seobot\/v1\/articles<\/code>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Republish now updates the live WordPress post instead of creating a duplicate. When you edit an article in the dashboard and re-send, the plugin looks up the previously published post via the <code>_seobot_external_id<\/code> meta key and updates the title, content, slug, tags, meta description, and featured image in place.<\/li>\n<li>Recreate fallback: if the linked WordPress post has been deleted, the plugin transparently creates a new post and the dashboard surfaces this as <code>action: recreated<\/code>.<\/li>\n<li>No breaking changes. The REST namespace <code>seobot\/v1<\/code>, the publish payload shape, and saved option keys are unchanged. Existing installs upgrade in place.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Rename plugin display name to \"Seobot Publisher for The SEO Agent\" and text domain to <code>seobot-publisher-for-the-seo-agent<\/code> per WordPress.org plugin directory review feedback.<\/li>\n<li>Move top-level admin menu position from 25 to 80 so it sits with Settings\/Tools rather than alongside core post-management items.<\/li>\n<li>Update Contributors metadata.<\/li>\n<li>No functional or API changes. The REST namespace <code>seobot\/v1<\/code> and saved-option keys are unchanged, so existing installs upgrade in place without reconfiguration.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fix dashboard URL shown in plugin settings page and readme. The link now correctly points to https:\/\/theseoagent.ai\/integrations (no <code>app.<\/code> subdomain).<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Top-level admin menu item \"The SEO Agent\" with custom icon, replacing the old Settings sub-menu.<\/li>\n<li>Auto-redirect to the setup page on activation. No more hunting through admin menus after install.<\/li>\n<li>Branded setup page with cobalt header, status card, settings card, last-received-article card, and REST endpoints reference.<\/li>\n<li>Post mode toggle: choose Publish Immediately (default) or Save As Draft. Draft mode lets you review approved articles in WP before they go live.<\/li>\n<li>Last received article card shows the most recent successful publish (title, timestamp, edit + view links) so you can confirm the integration is alive from the WordPress side.<\/li>\n<li>Ping endpoint now also returns the configured post mode.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release. Settings page with token field. Two REST routes: <code>ping<\/code> (health check) and <code>articles<\/code> (publish). Featured-image download via <code>media_sideload_image<\/code>. Tag creation via <code>wp_set_post_tags<\/code>. Meta description compatible with Yoast (<code>_yoast_wpseo_metadesc<\/code>) and Rank Math (<code>rank_math_description<\/code>). Custom slug support. Constant-time token comparison.<\/li>\n<\/ul>","raw_excerpt":"Auto-publish AI-researched, fact-checked articles from The SEO Agent dashboard to your WordPress site. Paste a token, done.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/311499","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=311499"}],"author":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/seoagent1232"}],"wp:attachment":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=311499"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=311499"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=311499"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=311499"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=311499"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=311499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}