{"id":338529,"date":"2026-09-02T09:42:48","date_gmt":"2026-09-02T09:42:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/structura\/"},"modified":"2026-09-14T10:49:11","modified_gmt":"2026-09-14T10:49:11","slug":"structura","status":"publish","type":"plugin","link":"https:\/\/am.wordpress.org\/plugins\/structura\/","author":23561037,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.25.0","stable_tag":"2.25.0","tested":"7.1.1","requires":"6.8","requires_php":"7.4","requires_plugins":null,"header_name":"StructuraWP \u2013 AI Autoblogging & Auto Blog Post Scheduler","header_author":"Xerx","header_description":"Autonomous AI content architect for WordPress.","assets_banners_color":"363a50","last_updated":"2026-09-14 10:49:11","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.structurawp.com\/","header_author_uri":"https:\/\/www.xerx.io","rating":5,"author_block_rating":0,"active_installs":0,"downloads":413,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.22.0":{"tag":"2.22.0","author":"yuriy.vasilyev","date":"2026-09-02 16:33:51","revision":3678364},"2.23.0":{"tag":"2.23.0","author":"xerxio","date":"2026-09-03 14:52:13","revision":3679933},"2.24.0":{"tag":"2.24.0","author":"xerxio","date":"2026-09-03 16:00:00","revision":3680029},"2.25.0":{"tag":"2.25.0","author":"xerxio","date":"2026-09-14 10:49:11","revision":3695013}},"upgrade_notice":{"2.24.0":"<p>Nicer Plugins-screen row with quick links. Safe upgrade \u2014 no database\nmigrations.<\/p>","2.23.0":"<p>Plan upgrades now sync to wp-admin instantly, one-off posts honor the\nPublish status, and weekly allowances are visible up front. Safe\nupgrade \u2014 no database migrations.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3677632,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3677632,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3677632,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3677632,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3677632,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.22.0","2.23.0","2.24.0","2.25.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3677737,"resolution":"1","location":"assets","locale":"","width":1228,"height":917},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3677737,"resolution":"2","location":"assets","locale":"","width":2000,"height":1050},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3677737,"resolution":"3","location":"assets","locale":"","width":1978,"height":883},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3677737,"resolution":"4","location":"assets","locale":"","width":1222,"height":562},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3677737,"resolution":"5","location":"assets","locale":"","width":2000,"height":1090}},"screenshots":{"1":"A real campaign run \u2014 the full process timeline from research and\ncompetitor analysis through writing, link validation, image\ngeneration, and publishing, with per-step durations.","2":"The generated post in the Gutenberg editor \u2014 List View shows\nindividually selectable blocks, not pasted HTML.","3":"A generated post in Yoast SEO \u2014 focus keyphrase set, SEO and\nreadability analysis both green.","4":"The persona library \u2014 multiple writing voices with their own\ndirectives and reading-level targets.","5":"Account &amp; License \u2014 your tier, workspace, and license activation\nmanaged inside wp-admin."}},"plugin_section":[262246],"plugin_tags":[210511,9487,10726,181641,186],"plugin_category":[55],"plugin_contributors":[279040],"plugin_business_model":[],"class_list":["post-338529","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-ai-writer","plugin_tags-auto-blog","plugin_tags-autoblogging","plugin_tags-content-automation","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-xerxio","plugin_committers-xerxio"],"banners":{"banner":"https:\/\/ps.w.org\/structura\/assets\/banner-772x250.png?rev=3677632","banner_2x":"https:\/\/ps.w.org\/structura\/assets\/banner-1544x500.png?rev=3677632","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/structura\/assets\/icon.svg?rev=3677632","icon":"https:\/\/ps.w.org\/structura\/assets\/icon.svg?rev=3677632","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/structura\/assets\/screenshot-1.png?rev=3677737","caption":"A real campaign run \u2014 the full process timeline from research and\ncompetitor analysis through writing, link validation, image\ngeneration, and publishing, with per-step durations."},{"src":"https:\/\/ps.w.org\/structura\/assets\/screenshot-2.png?rev=3677737","caption":"The generated post in the Gutenberg editor \u2014 List View shows\nindividually selectable blocks, not pasted HTML."},{"src":"https:\/\/ps.w.org\/structura\/assets\/screenshot-3.png?rev=3677737","caption":"A generated post in Yoast SEO \u2014 focus keyphrase set, SEO and\nreadability analysis both green."},{"src":"https:\/\/ps.w.org\/structura\/assets\/screenshot-4.png?rev=3677737","caption":"The persona library \u2014 multiple writing voices with their own\ndirectives and reading-level targets."},{"src":"https:\/\/ps.w.org\/structura\/assets\/screenshot-5.png?rev=3677737","caption":"Account &amp; License \u2014 your tier, workspace, and license activation\nmanaged inside wp-admin."}],"raw_content":"<!--section=description-->\n<p>Structura is autoblogging done right. Instead of scraping RSS feeds and\nspinning the results, it researches a keyword against live search\nresults, writes an original article, formats it as native Gutenberg\nblocks, runs it through a 20+ point SEO protocol, and auto-publishes it\non your schedule. You keep editorial control; Structura handles the\nrepetitive work.<\/p>\n\n<p><strong>Highlights<\/strong><\/p>\n\n<ul>\n<li><strong>Real Gutenberg blocks.<\/strong> Output is serialized WordPress blocks,\nnot Markdown or pasted HTML \u2014 clean in the editor, theme-agnostic,\nand portable if you ever switch tools.<\/li>\n<li><strong>Persona engine.<\/strong> Author multiple writing voices and assign one\nper campaign so different post types sound like different writers.<\/li>\n<li><strong>20+ point SEO protocol.<\/strong> Every post passes a structured technical\nSEO checklist (title, slug, meta description, internal linking,\nkeyphrase placement, readability, E-E-A-T writing signals, SERP\nentity coverage) before it publishes. Compatible with Yoast and\nRankMath.<\/li>\n<li><strong>Channel fan-out.<\/strong> When a post publishes, Structura can notify\nyour team chat (Slack, Discord, Telegram, generic webhooks) or\ncross-post to social platforms with channel-specific copy.<\/li>\n<li><strong>Multi-language.<\/strong> Generate content in any language. Language\nchoice is not gated by tier \u2014 pick whichever language you want\nper campaign or per post.<\/li>\n<li><strong>Translation-ready UI.<\/strong> The plugin admin ships in English, German,\nSpanish, and French.<\/li>\n<\/ul>\n\n<p><strong>You can use Structura without creating an account.<\/strong> A freshly\ninstalled Structura starts in <strong>Anonymous Mode<\/strong> \u2014 connect your own\nOpenAI key (BYOK) and you can manually generate posts inside\nwp-admin. The plugin sends nothing anywhere until you choose\n<strong>Connect to Structura Cloud<\/strong> on its first screen; see <em>External\nservices<\/em> below for exactly what is shared after that. Anonymous Mode\nis intentionally limited:<\/p>\n\n<ul>\n<li>Paragraph blocks only (no headings, lists, callouts, or images).<\/li>\n<li>Posts capped at 500 words (all non-paid tiers share this cap).<\/li>\n<li>A subset of the SEO protocol.<\/li>\n<li>Manual generation only \u2014 no campaigns, no schedules.<\/li>\n<li>OpenAI is the only provider available at this level.<\/li>\n<\/ul>\n\n<p>To unlock more, sign in (free) at <strong><a href=\"https:\/\/app.structurawp.com\/\">app.structurawp.com<\/a><\/strong> and\nget a free license:<\/p>\n\n<ul>\n<li><strong>Free license<\/strong> \u2014 adds heading blocks, the persona engine, more SEO\nrules, featured-image generation, and Google Gemini as a second BYOK\nprovider option.<\/li>\n<li><strong>BYOK<\/strong> (paid) \u2014 full Gutenberg block library, body-image\ngeneration, the full 20+ point SEO protocol, Anthropic Claude as an\nadditional provider, scheduled campaigns, channel fan-out, and\nauthority-link verification.<\/li>\n<li><strong>Cloud \/ Cloud Pro<\/strong> (paid) \u2014 Structura provisions the AI provider\nfor you, with one bill from Structura instead of separate provider\ncharges. Cloud Pro adds frontier AI models, photorealistic\nimagery, and AI video generation (Shorts\/TikTok\/Reels). See\n<a href=\"https:\/\/www.structurawp.com\/pricing\">structurawp.com\/pricing<\/a> for\ndetails.<\/li>\n<\/ul>\n\n<p>The plugin's compiled JavaScript at <code>assets\/structura.js<\/code> is built\nfrom TypeScript sources hosted publicly at\n<a href=\"https:\/\/github.com\/yuriy-vasilyev\/structura-plugin\">github.com\/yuriy-vasilyev\/structura-plugin<\/a>\n\u2014 see that\nrepository's README for reproducible build instructions.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to several external services to function. The\nplugin runs in Anonymous Mode without any of them, but most useful\nfeatures (campaigns, personas, channels, image generation) require\nStructura Cloud.<\/p>\n\n<p><strong>Structura Cloud<\/strong> \u2014 <code>us-central1-structura-8d158.cloudfunctions.net<\/code><\/p>\n\n<p>What it does: runs all AI content generation, persona matching,\ncampaign scheduling, channel dispatch, and license verification.\nHosted on Google Cloud Firebase Functions and operated by Xerx (the\nplugin author).<\/p>\n\n<p>When it is first contacted: never on install or activation. The first\ntime you open the Structura admin page, the plugin shows a consent\nscreen that lists the data below and asks you to click <strong>Connect to\nStructura Cloud<\/strong>. Until you do, no request of any kind leaves your\nsite. Entering a license key under <em>Account &amp; License<\/em> counts as the\nsame opt-in. You can disconnect at any time from <em>Account &amp; License<\/em>.<\/p>\n\n<p>What is sent and when (all of it only after you opt in):<\/p>\n\n<ul>\n<li><strong>Anonymous workspace bootstrap (once, right after you opt in):<\/strong> a\nrandom install ID generated locally by WordPress, your site's host\nname, site title, WordPress version, plugin version, and the site\nidentity bundle (site title, tagline, language, logo URL, active\ntheme name). This creates the workspace that Anonymous Mode\ngeneration runs in.<\/li>\n<li><strong>License activation:<\/strong> license key, site URL, site name, WordPress\nversion, plugin version, surface identifier (<code>wp<\/code>), site identity\nbundle.<\/li>\n<li><strong>Daily license health check:<\/strong> license key, site URL, plugin\nversion, WordPress version. Used to detect lapsed subscriptions.<\/li>\n<li><strong>Site identity sync:<\/strong> the site identity bundle is re-sent when you\nchange your site title, tagline, language, or logo, so generated\ncontent keeps referring to your brand correctly. Licensed installs\nonly.<\/li>\n<li><strong>Campaign run trigger:<\/strong> campaign settings (persona reference,\ntopic \/ keyword inputs, schedule), plugin trace ID. The cloud\nservice generates the post body and pushes it back to the plugin\nvia a signed webhook.<\/li>\n<li><strong>Post publish event:<\/strong> post ID, campaign ID, post URL, post title,\npublish state, edit URL, locale. Used by the Channels feature to\nfan out notifications to connected channels (Slack, Discord, etc.).<\/li>\n<li><strong>Run acknowledgement and uploads:<\/strong> generated post artefacts and\nper-step diagnostic metadata, so the post is associated with the\ncloud-side run history.<\/li>\n<li><strong>Generated images:<\/strong> downloaded from Structura Cloud's storage\n(<code>storage.googleapis.com<\/code>, time-limited signed URLs) into your Media\nLibrary.<\/li>\n<li><strong>Every request<\/strong> carries the plugin version and, once one exists,\nyour activation's bearer token so the cloud can attribute the call to\nyour workspace.<\/li>\n<\/ul>\n\n<p>This service is provided by Xerx, the plugin author.<\/p>\n\n<ul>\n<li>Customer portal: <a href=\"https:\/\/app.structurawp.com\/\">app.structurawp.com\/<\/a><\/li>\n<li>Terms of service: <a href=\"https:\/\/www.structurawp.com\/terms\">www.structurawp.com\/terms<\/a><\/li>\n<li>Privacy policy: <a href=\"https:\/\/www.structurawp.com\/privacy\">www.structurawp.com\/privacy<\/a><\/li>\n<\/ul>\n\n<p><strong>Channel destinations<\/strong> \u2014 Slack, Discord, Telegram, LinkedIn, IndexNow,\ngeneric webhooks<\/p>\n\n<p>What it does: when you connect a channel under <em>Structura \u2192 Channels<\/em>,\nthe webhook URL or OAuth grant you provide is sent to Structura Cloud,\nwhich stores it encrypted and delivers your post announcements to that\ndestination on your behalf. The plugin itself never calls these\nthird-party APIs directly; it only forwards what you typed into the\nconnection form. No channel is connected by default.<\/p>\n\n<p>What is sent to the destination, and when: a short announcement of\neach post (title, link, channel-specific summary text and, where the\ndestination supports it, the featured image) every time a post\npublishes through a campaign or manual run that has that channel\nenabled.<\/p>\n\n<ul>\n<li>Slack \u2014 terms: <a href=\"https:\/\/slack.com\/terms-of-service\">slack.com\/terms-of-service<\/a>, privacy:\n<a href=\"https:\/\/slack.com\/privacy-policy\">slack.com\/privacy-policy<\/a><\/li>\n<li>Discord \u2014 terms: <a href=\"https:\/\/discord.com\/terms\">discord.com\/terms<\/a>, privacy:\n<a href=\"https:\/\/discord.com\/privacy\">discord.com\/privacy<\/a><\/li>\n<li>Telegram \u2014 terms: <a href=\"https:\/\/telegram.org\/tos\">telegram.org\/tos<\/a>, privacy:\n<a href=\"https:\/\/telegram.org\/privacy\">telegram.org\/privacy<\/a><\/li>\n<li>LinkedIn \u2014 terms: <a href=\"https:\/\/www.linkedin.com\/legal\/user-agreement\">www.linkedin.com\/legal\/user-agreement<\/a>,\nprivacy: <a href=\"https:\/\/www.linkedin.com\/legal\/privacy-policy\">www.linkedin.com\/legal\/privacy-policy<\/a><\/li>\n<li>IndexNow (operated by Microsoft Bing) \u2014 FAQ \/ terms:\n<a href=\"https:\/\/www.indexnow.org\/faq\">www.indexnow.org\/faq<\/a>, privacy:\n<a href=\"https:\/\/www.microsoft.com\/privacy\/privacystatement\">www.microsoft.com\/privacy\/privacystatement<\/a><\/li>\n<li>Generic webhooks \u2014 a URL you own; its terms are yours.<\/li>\n<\/ul>\n\n<p><strong>Structura customer portal<\/strong> \u2014 <code>app.structurawp.com<\/code><\/p>\n\n<p>What it does: hosts your account, billing, license keys, invoices,\nsubscription management, and the per-workspace dashboards. The plugin\nopens this URL in a browser tab when you click <em>Connect Account<\/em> \/\n<em>Activate License<\/em> so you can sign in and create or pick a license.<\/p>\n\n<p>What is sent: standard browser navigation. The plugin itself does not\npost data to the portal \u2014 it links you there for the OAuth-style\nsign-in.<\/p>\n\n<ul>\n<li>Terms of service: <a href=\"https:\/\/www.structurawp.com\/terms\">www.structurawp.com\/terms<\/a><\/li>\n<li>Privacy policy: <a href=\"https:\/\/www.structurawp.com\/privacy\">www.structurawp.com\/privacy<\/a><\/li>\n<\/ul>\n\n<p><strong>Structura marketing site<\/strong> \u2014 <code>www.structurawp.com<\/code><\/p>\n\n<p>What it does: optional cache-revalidation pings sent from the plugin\nto the marketing site so the public Structura blog can mirror selected\nposts. Only fires if the marketing-site integration is connected from\nthe plugin's Settings page.<\/p>\n\n<p>What is sent: post URL, revalidation tag identifiers. No content body.<\/p>\n\n<ul>\n<li>Terms of service: <a href=\"https:\/\/www.structurawp.com\/terms\">www.structurawp.com\/terms<\/a><\/li>\n<li>Privacy policy: <a href=\"https:\/\/www.structurawp.com\/privacy\">www.structurawp.com\/privacy<\/a><\/li>\n<\/ul>\n\n<p><strong>WordPress.org plugin directory API<\/strong> \u2014 <code>api.wordpress.org<\/code><\/p>\n\n<p>What it does: the plugin queries <code>api.wordpress.org\/plugins\/info<\/code> to\ndetect whether the running build came from the WordPress.org directory\n(so the plugin's auto-update path can step aside cleanly when WP.org\nis the source of truth).<\/p>\n\n<p>What is sent: the plugin slug (<code>structura<\/code>). No site or user data.<\/p>\n\n<ul>\n<li>WordPress.org terms: <a href=\"https:\/\/wordpress.org\/about\/license\/\">wordpress.org\/about\/license\/<\/a><\/li>\n<li>WordPress.org privacy: <a href=\"https:\/\/wordpress.org\/about\/privacy\/\">wordpress.org\/about\/privacy\/<\/a><\/li>\n<\/ul>\n\n<p><strong>Google Cloud Storage release manifest<\/strong> \u2014 <code>storage.googleapis.com<\/code><\/p>\n\n<p>What it does: when the plugin is distributed outside the WordPress.org\ndirectory (direct download, agency-internal use), the auto-update\ncomponent checks a JSON manifest hosted on Google Cloud Storage to\ndiscover available updates. On WordPress.org-distributed builds this\ncode path is disabled and no request is made.<\/p>\n\n<p>What is sent: a static GET to a public JSON file. No site or user\ndata is transmitted.<\/p>\n\n<ul>\n<li>Google Cloud Storage terms: <a href=\"https:\/\/cloud.google.com\/terms\">cloud.google.com\/terms<\/a><\/li>\n<li>Google privacy policy: <a href=\"https:\/\/policies.google.com\/privacy\">policies.google.com\/privacy<\/a><\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<p>Nothing leaves your site until you accept the one-time <strong>Connect to\nStructura Cloud<\/strong> screen in wp-admin (or enter a license key). If you\nwould rather not, deactivate the plugin \u2014 at that point it has sent\nnothing.<\/p>\n\n<p>The plugin defaults to <strong>telemetry off<\/strong>. Plugin behaviour analytics\n(if any) only fire after explicit opt-in from the <em>Settings \u2192 Privacy<\/em>\nscreen.<\/p>\n\n<p>License credentials are stored in WordPress options. The plugin's log\ntable records operational metadata (run IDs, error codes, durations) \u2014\nnot post bodies, prompts, or personally identifiable content.<\/p>\n\n<p>The <em>Wipe all data on uninstall<\/em> setting (under <em>Settings<\/em>) is <strong>off\nby default<\/strong>; uninstalling Structura keeps your campaigns, personas,\nlogs, and settings unless you explicitly turn the toggle on first.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP via <em>Plugins \u2192 Add New \u2192 Upload Plugin<\/em>, or\ninstall directly from the WordPress.org plugin directory.<\/li>\n<li>Activate <em>Structura<\/em> through the <em>Plugins<\/em> menu.<\/li>\n<li>Open <em>Structura<\/em> in the admin sidebar. The first screen explains\nwhat the plugin shares with Structura Cloud and asks for your OK \u2014\nclick <strong>Connect to Structura Cloud<\/strong> to continue (nothing is sent\nbefore that). The plugin then starts in <strong>Anonymous Mode<\/strong>, which\nlets you connect an OpenAI key and manually generate posts right\naway.<\/li>\n<li>(Optional, recommended) To unlock the persona engine, more block\ntypes, image generation, and scheduled campaigns, click <em>Account &amp;\nLicense<\/em> and connect to\n<a href=\"https:\/\/app.structurawp.com\/\">app.structurawp.com<\/a>. A free\nlicense takes a minute to claim and gates several features.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20structura%20account%20to%20use%20the%20plugin%3F\"><h3>Do I need a Structura account to use the plugin?<\/h3><\/dt>\n<dd><p>No. The plugin runs in <strong>Anonymous Mode<\/strong> out of the box: connect your\nown OpenAI key and manually generate posts. The trade-off is that\nAnonymous Mode is intentionally minimal (paragraph blocks only, no\nimages, no campaigns). A free license unlocks meaningfully more.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20send%20data%20to%20external%20services%3F\"><h3>Does this plugin send data to external services?<\/h3><\/dt>\n<dd><p>Yes \u2014 but only after you opt in. The plugin is a client for\n<strong>Structura Cloud<\/strong> (the AI service that runs every generation). The\nfirst time you open the Structura admin page it shows a consent screen\nlisting what will be shared; until you click <strong>Connect to Structura\nCloud<\/strong> (or enter a license key) no request leaves your site. After\nthat it also makes a small number of auxiliary calls (license\nverification, optional cache pings to the marketing site). Full\ndisclosure of every endpoint and what is sent is in <em>External\nservices<\/em> below.<\/p><\/dd>\n<dt id=\"what%20languages%20can%20i%20generate%20content%20in%3F\"><h3>What languages can I generate content in?<\/h3><\/dt>\n<dd><p>Any language. Language choice is per-campaign (or per-post in manual\ngeneration) and is not gated by your plan tier.<\/p><\/dd>\n<dt id=\"how%20do%20i%20disconnect%20the%20plugin%20from%20structura%20cloud%3F\"><h3>How do I disconnect the plugin from Structura Cloud?<\/h3><\/dt>\n<dd><p><em>Structura \u2192 Account &amp; License \u2192 Deactivate<\/em>. The plugin clears its\nlocally-stored credentials and the cloud marks the activation slot as\ndisconnected. The site can be reactivated later, or the activation\nslot can be re-used on a different site.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20when%20i%20uninstall%3F\"><h3>What happens to my data when I uninstall?<\/h3><\/dt>\n<dd><p>By default, <strong>the plugin keeps your data<\/strong> (campaigns, personas, logs,\nsettings) when you delete it from WordPress, so you can reinstall and\npick up where you left off.<\/p>\n\n<p>If you want WordPress to wipe everything on uninstall, turn on\n<em>Structura \u2192 Settings \u2192 Wipe all data on uninstall<\/em> before deleting\nthe plugin. The toggle is <strong>off by default<\/strong> for safety. Cloud-side\ndata (your account on <a href=\"https:\/\/app.structurawp.com\/\">app.structurawp.com<\/a>) is owned by your\nportal account and is not touched by the plugin uninstall \u2014 manage it\nfrom the portal.<\/p>\n\n<p>Posts the plugin generated are regular WordPress posts and stay in\nyour database regardless of which uninstall mode you choose.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20work%20on%20wordpress%20multisite%3F\"><h3>Does the plugin work on WordPress multisite?<\/h3><\/dt>\n<dd><p>Single-site only. The plugin is not network-aware.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.24.0<\/h4>\n\n<ul>\n<li>Improved: the plugin's row on the Plugins screen \u2014 clearer\ndescription plus quick links to the dashboard, settings,\ndocumentation, and support.<\/li>\n<\/ul>\n\n<h4>2.23.0<\/h4>\n\n<ul>\n<li>New: your weekly one-off post allowance is visible right on the\nGenerate page (\"X of N used this week\"), and reaching it raises a\nclear notice in the Notification Center instead of a silent stop.<\/li>\n<li>New: Send Test Notification verifies your site's error-notification\npipeline end to end \u2014 licensed sites get a real test notice.<\/li>\n<li>Fixed: upgrading your plan on the customer portal now reaches\nwp-admin immediately \u2014 no more stale \"Free\" badges after paying.<\/li>\n<li>Fixed: one-off generated posts honor your Post Status choice \u2014\n\"Publish\" actually publishes (they always saved as drafts before).<\/li>\n<li>Fixed: gated buttons explain themselves everywhere \u2014 tooltips and\nupgrade prompts instead of dead clicks.<\/li>\n<li>Fixed: honest progress copy while a run waits for your site's cron,\nand no stray cron warnings after deactivating the plugin.<\/li>\n<li>Improved: Account &amp; License offers \"Create Free Account\" directly,\nand the AI Engine no longer flashes \"connect a provider\" at sites\nwhose provider is already connected.<\/li>\n<\/ul>\n\n<h4>2.22.0<\/h4>\n\n<ul>\n<li>New: explicit opt-in screen before the plugin contacts Structura\nCloud \u2014 nothing is sent until you consent.<\/li>\n<li>New: ranked keyword bank on the campaign wizard's Keywords step,\nwith per-keyword search volume and difficulty.<\/li>\n<li>Improved: keyword discovery prefers informational blog topics,\ncollapses reworded duplicates, and auto-refreshes the bank when it\nruns low.<\/li>\n<li>Improved: a two-stage duplicate-topic gate and more varied title\nshapes across a campaign's posts.<\/li>\n<li>Improved: tags now follow the same reuse-first governance as\ncategories \u2014 no more tag sprawl.<\/li>\n<li>Fixed: the Structura admin menu sits right after Settings, admin\nnotices load their assets properly, and JSON-LD output is hardened\nagainst markup injection.<\/li>\n<\/ul>\n\n<h4>2.21.0<\/h4>\n\n<ul>\n<li>New: attach research documents (PDF, DOCX, TXT, MD, HTML) to a\npost generation \u2014 the article is grounded on them.<\/li>\n<li>New: model tier picker (Top \/ Standard) for every\nbring-your-own-key plan.<\/li>\n<li>New: Austrian and Swiss German campaign languages with\nvariant-aware wording.<\/li>\n<li>Fixed: campaigns with an empty keyword bank warn instead of\nsilently running off-topic.<\/li>\n<\/ul>\n\n<h4>2.20.0<\/h4>\n\n<ul>\n<li>New: Top \/ Standard model tier picker on campaigns, single posts,\nand image regeneration.<\/li>\n<li>New: \"Run again\" asks for confirmation with a summary of what the\nrun will do.<\/li>\n<li>Improved: the Search Console connect prompt moved to a dismissable\ndashboard banner.<\/li>\n<li>Fixed: the Personas page shows only this site's bound voices, and\nanonymous installs recover automatically from a revoked cloud\nconnection.<\/li>\n<\/ul>\n\n<h4>2.19.0<\/h4>\n\n<ul>\n<li>Improved: the weekly Search Console digest email only sends when\nthere's a real story to tell, and stays short for agencies.<\/li>\n<\/ul>\n\n<h4>2.18.0<\/h4>\n\n<ul>\n<li>New: Search performance page \u2014 trends, an opportunity queue, and a\nper-post table from your Search Console data.<\/li>\n<li>New: redesigned Search Console connect flow and a dashboard glance\ncard.<\/li>\n<\/ul>\n\n<h4>2.17.0<\/h4>\n\n<ul>\n<li>New: Google Search Console integration \u2014 connect your property and\nsee how generated posts perform inside wp-admin.<\/li>\n<li>Fixed: notices render translated copy instead of raw message keys,\nand API key fields reject URL-shaped input before the live test.<\/li>\n<\/ul>\n\n<h4>2.16.0<\/h4>\n\n<ul>\n<li>New: share preview links and post export (Markdown, HTML, DOCX).<\/li>\n<li>Fixed: free-tier weekly and monthly post caps are enforced\ncorrectly.<\/li>\n<li>Fixed: generated articles anchor to the current date and no longer\ncite your competitors as sources.<\/li>\n<li>Fixed: the campaign Posts tab includes draft posts.<\/li>\n<\/ul>\n\n<h4>2.15.0<\/h4>\n\n<ul>\n<li>New: rebuilt video rendering with six polished templates and more\nnatural narration voices.<\/li>\n<li>Improved: image generation falls back to a generic style instead\nof blocking when no visual preset is bound.<\/li>\n<li>Changed: generated posts default to draft \u2014 the \"pending\" status\nis retired.<\/li>\n<\/ul>\n\n<h4>2.14.0<\/h4>\n\n<ul>\n<li>Campaign view now shows posts created vs posts published at a\nglance.<\/li>\n<\/ul>\n\n<h4>2.13.0<\/h4>\n\n<ul>\n<li>Channels are now included with every paid plan \u2014 no separate\nadd-on.<\/li>\n<li>Draft posts published after a manual review now count toward the\ncampaign's published total.<\/li>\n<li>LinkedIn: connect multiple Pages, wait for uploaded images to\nfinish processing before posting, and show clearer Page names.<\/li>\n<\/ul>\n\n<h4>2.12.0<\/h4>\n\n<ul>\n<li>Weave your own referral or affiliate links into relevant posts\n(paid plans).<\/li>\n<li>AI-powered \"Suggest competitors\" on the site profile.<\/li>\n<\/ul>\n\n<h4>2.11.0<\/h4>\n\n<ul>\n<li>Video channel (early access): store card, configuration, and\nper-platform caption packages in wp-admin.<\/li>\n<li>Visual presets now carry video styling alongside image styling.<\/li>\n<\/ul>\n\n<h4>2.10.0<\/h4>\n\n<ul>\n<li>Keyword discovery tuned for realistic blog reach.<\/li>\n<li>Cleaner article headings (no keyword stuffing) and authority links\nare verified before they are inserted.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Keywords, authority sources, and competitors now live on each\ncampaign instead of the site, so every campaign can target its own\nniche.<\/li>\n<li>Channels can also be managed from the Structura customer portal.<\/li>\n<\/ul>\n\n<p>For older entries, see the full changelog in the public source\nrepository:\n<a href=\"https:\/\/github.com\/yuriy-vasilyev\/structura-plugin\/blob\/main\/CHANGELOG.md\">github.com\/yuriy-vasilyev\/structura-plugin\/blob\/main\/CHANGELOG.md<\/a><\/p>","raw_excerpt":"AI autoblogging for WordPress: researches, writes and auto-publishes SEO blog posts on a schedule. Gutenberg-native, no RSS scraping.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/338529","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=338529"}],"author":[{"embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/xerxio"}],"wp:attachment":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=338529"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=338529"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=338529"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=338529"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=338529"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=338529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}