{"id":284258,"date":"2026-03-23T17:02:16","date_gmt":"2026-03-23T17:02:16","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sparkplus\/"},"modified":"2026-05-12T18:49:37","modified_gmt":"2026-05-12T18:49:37","slug":"sparkplus","status":"publish","type":"plugin","link":"https:\/\/ssw.wordpress.org\/plugins\/sparkplus\/","author":23454974,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.1.4","stable_tag":"1.1.4","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"SparkPlus","header_author":"olympagency","header_description":"Creates and populates custom post types with AI-generated content based on user keywords.","assets_banners_color":"1a212f","last_updated":"2026-05-12 18:49:37","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/olympagency.com\/","rating":0,"author_block_rating":0,"active_installs":30,"downloads":675,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"olympagency","date":"2026-03-23 17:07:19"},"1.0.1":{"tag":"1.0.1","author":"olympagency","date":"2026-03-23 17:09:56"},"1.0.2":{"tag":"1.0.2","author":"olympagency","date":"2026-03-29 14:56:15"},"1.0.3":{"tag":"1.0.3","author":"olympagency","date":"2026-04-15 09:14:52"},"1.0.4":{"tag":"1.0.4","author":"olympagency","date":"2026-04-21 14:15:18"},"1.0.5":{"tag":"1.0.5","author":"olympagency","date":"2026-04-22 14:40:56"},"1.0.6":{"tag":"1.0.6","author":"olympagency","date":"2026-04-22 14:42:57"},"1.0.7":{"tag":"1.0.7","author":"olympagency","date":"2026-04-29 12:41:02"},"1.0.8":{"tag":"1.0.8","author":"olympagency","date":"2026-05-04 11:52:20"},"1.0.9":{"tag":"1.0.9","author":"olympagency","date":"2026-05-07 16:00:50"},"1.1.0":{"tag":"1.1.0","author":"olympagency","date":"2026-05-07 16:41:14"},"1.1.1":{"tag":"1.1.1","author":"olympagency","date":"2026-05-11 13:43:29"},"1.1.2":{"tag":"1.1.2","author":"olympagency","date":"2026-05-11 15:10:57"},"1.1.3":{"tag":"1.1.3","author":"olympagency","date":"2026-05-11 17:25:50"},"1.1.4":{"tag":"1.1.4","author":"olympagency","date":"2026-05-12 18:49:37"}},"upgrade_notice":{"1.1.3":"<p>Fixes generation not starting on hosting environments (including SiteGround) that block server-to-itself HTTP requests. No configuration required.<\/p>","1.1.1 = into WP-Cron background jobs to resolve server timeout errors on slow API calls. No configuration required.":"","1.0.9":"<p>Generation requests are now asynchronous. The browser receives a job ID immediately and polls for the result. No configuration required, but custom integrations that rely on synchronous AJAX responses will need to be updated.<\/p>","1.0.7":"<p>Major update: multi-provider AI support added (Google Gemini, Anthropic Claude). The API Settings tab has been redesigned. Your existing OpenAI key is preserved. New API keys for Gemini or Anthropic can be added optionally.<\/p>","1.0.4":"<p>New SEO tab added to settings with optional RankMath integration for AI-generated meta titles and descriptions.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3502418,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3502418,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3502418,"resolution":"1544x500","location":"assets","locale":"","width":772,"height":250},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3502418,"resolution":"772x250","location":"assets","locale":"","width":1544,"height":500}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.8","1.0.9","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Load Keywords \u2014 Bulk-create posts from a list of keywords.","2":"Generation \u2014 Queue and generate AI content with real-time progress.","3":"Settings: CPT \u2014 Configure fields, word counts, and image settings per post type.","4":"Settings: General Context \u2014 Define your brand identity and content guidelines.","5":"Settings: API \u2014 Configure your OpenAI API key and model preferences."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[195933,8494,1487,194533,186],"plugin_category":[55],"plugin_contributors":[258454],"plugin_business_model":[],"class_list":["post-284258","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-content","plugin_tags-content-generation","plugin_tags-custom-post-types","plugin_tags-openai","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-olympagency","plugin_committers-olympagency"],"banners":{"banner":"https:\/\/ps.w.org\/sparkplus\/assets\/banner-772x250.png?rev=3502418","banner_2x":"https:\/\/ps.w.org\/sparkplus\/assets\/banner-1544x500.png?rev=3502418","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sparkplus\/assets\/icon-128x128.png?rev=3502418","icon_2x":"https:\/\/ps.w.org\/sparkplus\/assets\/icon-256x256.png?rev=3502418","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>SparkPlus lets you generate AI-powered content for any WordPress post type \u2014 including custom post types and Advanced Custom Fields (ACF). Simply provide keywords and context, and SparkPlus creates professionally written, SEO-optimized content with matching images in seconds.<\/p>\n\n<p><strong>Key Features:<\/strong><\/p>\n\n<ul>\n<li><strong>Bulk keyword loading<\/strong> \u2014 Enter one keyword per line to batch-create posts instantly. Duplicate detection prevents accidental duplicates.<\/li>\n<li><strong>AI text generation<\/strong> \u2014 Generate post titles, content, excerpts, and any ACF text\/textarea\/WYSIWYG field using OpenAI's latest models.<\/li>\n<li><strong>AI image generation<\/strong> \u2014 Automatically generate featured images and ACF image fields. Images are converted to WebP for optimal performance.<\/li>\n<li><strong>Custom post type support<\/strong> \u2014 Works with all public post types including built-in posts, pages, and any registered CPTs.<\/li>\n<li><strong>ACF integration<\/strong> \u2014 Automatically discovers ACF field groups and generates content for text and image fields.<\/li>\n<li><strong>Three-tier context system<\/strong> \u2014 Provide site-wide brand context, per-post-type instructions, and per-post specific context for highly targeted content.<\/li>\n<li><strong>Configurable formatting<\/strong> \u2014 Control which HTML elements (headings, lists, bold, italic, links) the AI may use in rich text fields.<\/li>\n<li><strong>Queue-based generation<\/strong> \u2014 Queue individual posts or batch-queue all posts, then generate sequentially with real-time progress.<\/li>\n<li><strong>Debug mode<\/strong> \u2014 Inspect the exact prompts sent to OpenAI and the raw API responses for full transparency.<\/li>\n<li><strong>Auto-publish<\/strong> \u2014 Optionally publish posts immediately upon keyword loading instead of saving as drafts.<\/li>\n<li><strong>Post editor integration<\/strong> \u2014 Edit keywords and additional context directly from the WordPress post editor via a sidebar meta box.<\/li>\n<li><strong>Multi-language support<\/strong> \u2014 Content is generated in your site's WordPress locale language. 50+ languages supported.<\/li>\n<\/ul>\n\n<p><strong>Settings &amp; Configuration:<\/strong><\/p>\n\n<ul>\n<li><strong>API Settings<\/strong> \u2014 Enter your OpenAI API key and choose from multiple text and image generation models.<\/li>\n<li><strong>General Context<\/strong> \u2014 Define your company name, industry, target audience, USP, product advantages, and buying reasons to shape all generated content.<\/li>\n<li><strong>CPT Configuration<\/strong> \u2014 Per-post-type field mapping with individual enable\/disable toggles, custom descriptions\/prompts, word counts, and image size\/quality settings.<\/li>\n<li><strong>Reset<\/strong> \u2014 Easily reset all plugin settings or clear post meta data when needed.<\/li>\n<\/ul>\n\n<p><strong>Supported OpenAI Models:<\/strong><\/p>\n\n<ul>\n<li>Text: gpt-5.2, gpt-5.2-pro, gpt-5.1, gpt-5, gpt-4.1, gpt-5-mini, gpt-5-nano, gpt-3.5-turbo<\/li>\n<li>Image: gpt-image-1.5, gpt-image-1, gpt-image-1-mini<\/li>\n<\/ul>\n\n<h4>Third-Party Services<\/h4>\n\n<p>This plugin connects to the <strong>OpenAI API<\/strong> to generate text and image content. When you trigger content generation, data including your keywords, configured context (company name, industry, target audience, etc.), and field descriptions are sent to OpenAI's servers for processing.<\/p>\n\n<ul>\n<li><strong>Service provider:<\/strong> OpenAI, L.L.C.<\/li>\n<li><strong>API endpoint (text):<\/strong> <a href=\"https:\/\/api.openai.com\/v1\/chat\/completions\">https:\/\/api.openai.com\/v1\/chat\/completions<\/a><\/li>\n<li><strong>API endpoint (images):<\/strong> <a href=\"https:\/\/api.openai.com\/v1\/images\/generations\">https:\/\/api.openai.com\/v1\/images\/generations<\/a><\/li>\n<li><strong>Terms of use:<\/strong> <a href=\"https:\/\/openai.com\/policies\/terms-of-use\">https:\/\/openai.com\/policies\/terms-of-use<\/a><\/li>\n<li><strong>Privacy policy:<\/strong> <a href=\"https:\/\/openai.com\/policies\/privacy-policy\">https:\/\/openai.com\/policies\/privacy-policy<\/a><\/li>\n<\/ul>\n\n<p>An OpenAI API key is required. You can obtain one at <a href=\"https:\/\/platform.openai.com\/api-keys\">https:\/\/platform.openai.com\/api-keys<\/a>. API usage is billed by OpenAI according to their pricing.<\/p>\n\n<p>No data is sent to any third party other than OpenAI, and only when you explicitly trigger content generation.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>sparkplus<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install directly through the WordPress plugin screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Navigate to <strong>SparkPlus &gt; Settings &gt; API Settings<\/strong> and enter your OpenAI API key.<\/li>\n<li>Configure your brand context under <strong>SparkPlus &gt; Settings &gt; General Context<\/strong>.<\/li>\n<li>Select your desired post type and configure fields under <strong>SparkPlus &gt; Settings &gt; CPT<\/strong>.<\/li>\n<li>Go to <strong>SparkPlus &gt; Load Keywords<\/strong> to create posts from keywords, then use <strong>SparkPlus &gt; Generation<\/strong> to generate AI content.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20openai%20api%20key%3F\"><h3>Do I need an OpenAI API key?<\/h3><\/dt>\n<dd><p>Yes. SparkPlus requires your own OpenAI API key to generate content. You can get one at <a href=\"https:\/\/platform.openai.com\/api-keys\">https:\/\/platform.openai.com\/api-keys<\/a>. OpenAI charges for API usage based on the model and volume.<\/p><\/dd>\n<dt id=\"which%20post%20types%20are%20supported%3F\"><h3>Which post types are supported?<\/h3><\/dt>\n<dd><p>All public post types are supported, including the built-in \"Post\" and \"Page\" types as well as any custom post types registered by your theme or other plugins.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20advanced%20custom%20fields%20%28acf%29%3F\"><h3>Does it work with Advanced Custom Fields (ACF)?<\/h3><\/dt>\n<dd><p>Yes. SparkPlus automatically detects ACF field groups assigned to your selected post type and lets you enable AI generation for individual text, textarea, WYSIWYG, and image fields.<\/p><\/dd>\n<dt id=\"what%20image%20format%20is%20used%20for%20generated%20images%3F\"><h3>What image format is used for generated images?<\/h3><\/dt>\n<dd><p>All AI-generated images are automatically converted to WebP format (quality 90) for optimal file size and performance, then added to your WordPress Media Library.<\/p><\/dd>\n<dt id=\"can%20i%20control%20the%20writing%20style%20and%20tone%3F\"><h3>Can I control the writing style and tone?<\/h3><\/dt>\n<dd><p>Yes. You can configure formal or informal addressing, provide brand context (company name, USP, target audience, etc.), add per-post-type instructions, and even provide per-post specific context. The AI uses all of this to tailor the content.<\/p><\/dd>\n<dt id=\"what%20languages%20are%20supported%3F\"><h3>What languages are supported?<\/h3><\/dt>\n<dd><p>Content is generated in the language matching your WordPress site locale. Over 50 languages are supported, including English, German, Spanish, French, and many more.<\/p><\/dd>\n<dt id=\"can%20i%20review%20what%20the%20ai%20generates%20before%20publishing%3F\"><h3>Can I review what the AI generates before publishing?<\/h3><\/dt>\n<dd><p>Yes. Posts created via keyword loading are saved as drafts by default. You can review and edit them before publishing. There is also an auto-publish option if you prefer immediate publishing.<\/p><\/dd>\n<dt id=\"how%20do%20i%20reset%20the%20plugin%3F\"><h3>How do I reset the plugin?<\/h3><\/dt>\n<dd><p>Go to <strong>SparkPlus &gt; Settings &gt; Reset<\/strong>. You can reset all plugin settings (API key, context, CPT configurations) or reset post meta data (keywords, context, generation timestamps) independently.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.4<\/h4>\n\n<ul>\n<li><strong>Architecture: full client-side AI orchestration.<\/strong> All AI API calls (text and image, for all providers) are now made directly from the browser. PHP no longer proxies any AI request. The server is a pure data layer: it supplies settings, field configs, existing content, and the linking pool on demand, then receives and saves the results the browser sends back.<\/li>\n<li>Removed the server-side generation pipeline entirely: <code>SparkPlus_Generation_Runner<\/code> (formerly <code>Generation_Cron<\/code>), <code>SparkPlus_Prompt_Builder<\/code>, <code>SparkPlus_OpenAI_API_Caller<\/code>, <code>SparkPlus_API_Manager<\/code>, and all three provider classes (<code>SparkPlusOpenAIProvider<\/code>, <code>SparkPlusAnthropicProvider<\/code>, <code>SparkPlusGeminiProvider<\/code>) have been deleted from PHP. None of the flush-early, transient polling, cron, or loopback-request infrastructure they relied on exists any longer.<\/li>\n<li>The <code>flush_early<\/code> \/ <code>fastcgi_finish_request()<\/code> approach introduced in 1.1.3 and the WP-Cron background dispatch introduced in 1.1.1 are gone. There is nothing left to time out on the server side.<\/li>\n<li><code>content-generator.php<\/code> \/ <code>SparkPlus_Content_Generator<\/code> split into three focused files: <code>generation-helpers-trait.php<\/code> (shared field-map and settings helpers), <code>generation-meta.php<\/code> \/ <code>SparkPlus_Generation_Meta<\/code> (data provider: supplies all generation inputs to the client), and <code>generation-saver.php<\/code> \/ <code>SparkPlus_Generation_Saver<\/code> (result saver: persists AI output to the database).<\/li>\n<li>New JS module <code>sparkplus-providers.js<\/code>: browser-side provider classes (<code>SparkPlusOpenAIProvider<\/code>, <code>SparkPlusAnthropicProvider<\/code>, <code>SparkPlusGeminiProvider<\/code>) and <code>SparkPlusProviderFactory<\/code> mirror the deleted PHP provider layer.<\/li>\n<li>New JS module <code>sparkplus-prompt-builder.js<\/code>: browser-side <code>SparkPlusPromptBuilder<\/code> mirrors the deleted PHP prompt builder, constructing text and image prompts entirely in the browser.<\/li>\n<li>OpenAI model quirks handled client-side: <code>gpt-5.5<\/code> omits the <code>temperature<\/code> parameter (API only accepts the default); <code>gpt-5.5-pro<\/code> routes to the <code>\/v1\/responses<\/code> endpoint with the correct <code>input<\/code> \/ <code>text.format<\/code> shape and its response is parsed from <code>output[].content[].text<\/code>.<\/li>\n<li>Debug panel tabs (Last Text Prompt, Last Image Prompt, Last Text API Response, Last Image API Response) now populate correctly: <code>generation.js<\/code> emits <code>build_text_prompt<\/code>, <code>build_image_prompt<\/code>, and <code>full_api_response<\/code> entries at the right points in the client-side flow.<\/li>\n<li>Last Image API Response tab displays the saved WordPress media URL as a visual image preview above the raw JSON, using <code>wp_get_attachment_url()<\/code> returned by the save endpoint.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Replaced WP-Cron background dispatch with a direct <code>flush_early<\/code> approach: the AJAX handler sends the job ID to the browser immediately via <code>fastcgi_finish_request()<\/code>, then runs the API call inline. This eliminates the server-to-itself loopback HTTP request that WP-Cron required, which was blocked on some hosting environments (including SiteGround).<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Added changelog entries for all previous versions.<\/li>\n<li>Fixed js\/css caching problem by increasing the SPARKPLUS_VERSION constant.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Moved AI generation work into WP-Cron background jobs to eliminate server-side timeout errors on long API calls.<\/li>\n<li>Generation cron callbacks are now registered on every request type (including wp-cron.php) via a dedicated <code>generation-cron.php<\/code> class.<\/li>\n<li>AJAX handlers for text and image generation now return a job ID immediately and trigger cron asynchronously.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Debug log entries are now streamed to the client continuously during generation rather than delivered all at once at the end.<\/li>\n<li>The server writes each debug entry to the transient in real time; the polling client reads and displays new entries incrementally on every poll.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Generation requests (<code>generate_text<\/code>, <code>generate_image<\/code>) now return a job ID immediately and close the HTTP connection early.<\/li>\n<li>The actual API work runs after the response is flushed, with the result stored in a WordPress transient.<\/li>\n<li>The JavaScript client polls a new <code>check_job_status<\/code> endpoint every 2 seconds until the job completes.<\/li>\n<li>This eliminates 504 gateway timeout errors caused by long-running API calls holding open HTTP connections.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Added URL slug generation: a new \"URL Slug\" field can be enabled in the SEO settings tab and will appear in the CPT field list.<\/li>\n<li>The AI generates a keyword-rich URL slug and applies it as the post permalink (<code>post_name<\/code>).<\/li>\n<li>Added reference image support for image fields: a media picker allows attaching a reference image per image field (used by Gemini as inline image data in the prompt).<\/li>\n<li>Image settings layout in CPT tab reorganised into two rows (Aspect Ratio + WebP % on row 1; Generation Quality + Resolution on row 2).<\/li>\n<li>Resolution dropdown labels simplified (Low \/ Medium \/ High).<\/li>\n<li>Tooltip icons added to all four image settings.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Added multi-AI-provider support: Google Gemini and Anthropic Claude can now be used alongside OpenAI.<\/li>\n<li>New abstract provider base class with concrete implementations for OpenAI, Gemini, and Anthropic.<\/li>\n<li>API Settings tab redesigned to show separate API key fields per provider, grouped by provider section.<\/li>\n<li>Deprecated model detection: a warning is shown in settings if a previously saved model is no longer supported.<\/li>\n<li>Added <code>util.php<\/code> with shared helper functions including <code>sparkplus_get_supported_models()<\/code> and <code>sparkplus_get_model_provider()<\/code>.<\/li>\n<li>Content generator refactored to route all API calls through the new <code>SparkPlus_API_Manager<\/code> factory.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Version bump \/ compatibility update (no functional changes).<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Added optional parent post selection to the keyword loader: when a published post of the selected post type exists, a dropdown allows setting all newly created posts as children of a selected parent.<\/li>\n<li>Draft parents are shown in the parent post dropdown.<\/li>\n<li>Prompt builder updated with minor SEO title instruction improvements.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Added SEO tab in settings with RankMath integration: enables AI generation for RankMath title and description meta fields.<\/li>\n<li>Added Taxonomies tab in settings (foundation for taxonomy term generation).<\/li>\n<li>Added <code>post_object<\/code> ACF field type support in the CPT field list, with a \"Nr. of Posts\" option instead of word count.<\/li>\n<li>Warning shown in CPT settings when a <code>post_object<\/code> field is enabled but the linking pool is not active.<\/li>\n<li><code>true_false<\/code> ACF fields now correctly hide the options column in the CPT field table.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Added <code>post_object<\/code> ACF field type detection inside group sub-fields in the CPT settings UI.<\/li>\n<li><code>true_false<\/code> sub-fields inside groups now correctly hide the options column.<\/li>\n<li>Linking pool enabled state is checked and shown as a warning for <code>post_object<\/code> sub-fields when the pool is disabled.<\/li>\n<li>Prompt builder improvements for field instruction generation.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Improved debug panel: added <code>source<\/code> parameter (<code>client<\/code> \/ <code>server<\/code>) to all debug entries and debug UI.<\/li>\n<li>Centralised error handling: all generation errors now show a WordPress admin notice with the post keyword\/ID in addition to logging to the debug panel.<\/li>\n<li>Error notices from previous runs are cleared when a new generation starts.<\/li>\n<li>Debug panel CSS improvements.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Internal test release \/ version bump (no functional changes).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Bulk keyword loading with duplicate detection.<\/li>\n<li>AI text generation for post titles, content, excerpts, and ACF fields.<\/li>\n<li>AI image generation with automatic WebP conversion.<\/li>\n<li>Support for all public post types and ACF field groups.<\/li>\n<li>Three-tier context system (site-wide, per-CPT, per-post).<\/li>\n<li>Configurable WYSIWYG formatting rules.<\/li>\n<li>Queue-based generation with debug mode.<\/li>\n<li>Post editor meta box for keyword and context editing.<\/li>\n<li>Full settings management with reset capability.<\/li>\n<\/ul>","raw_excerpt":"AI-powered content generation for WordPress. Create posts and populate custom post types with high-quality text and images using OpenAI.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/284258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=284258"}],"author":[{"embeddable":true,"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/olympagency"}],"wp:attachment":[{"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=284258"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=284258"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=284258"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=284258"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=284258"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=284258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}