Title: DraftSEO.AI
Author: Kliment
Published: <strong>19, Avientu de 2025</strong>
Last modified: 5, Abril de 2026

---

Guetar plugins

![](https://ps.w.org/draftseo-ai/assets/banner-772x250.png?rev=3478994)

![](https://ps.w.org/draftseo-ai/assets/icon-256x256.png?rev=3478994)

# DraftSEO.AI

 By [Kliment](https://profiles.wordpress.org/klimentp/)

[Download](https://downloads.wordpress.org/plugin/draftseo-ai.1.2.4.zip)

 * [Details](https://ast.wordpress.org/plugins/draftseo-ai/#description)
 * [Reviews](https://ast.wordpress.org/plugins/draftseo-ai/#reviews)
 *  [Installation](https://ast.wordpress.org/plugins/draftseo-ai/#installation)
 * [Development](https://ast.wordpress.org/plugins/draftseo-ai/#developers)

 [Support](https://wordpress.org/support/plugin/draftseo-ai/)

## Description

Publish complete, AI-generated blog posts from DraftSEO.AI to your WordPress site
in one click. Images are automatically transferred to your Media Library, meta descriptions
and keywords are preserved, and categories and tags are applied — no copy-pasting,
no manual uploads.

#### Key Features

 * **One-Click Publishing** – Publish AI-generated blogs from DraftSEO.AI to WordPress
   instantly
 * **Automatic Image Import** – Images are automatically transferred from DraftSEO.
   AI to your WordPress Media Library
 * **SEO Optimization** – All SEO metadata, meta descriptions, and keywords are 
   transferred and applied
 * **Category & Tag Management** – Sync WordPress categories and automatically create
   tags from blog keywords
 * **Multiple Publishing Options** – Save as draft, publish immediately, or schedule
   for later
 * **Clean HTML Output** – Published posts use proper heading tags, responsive table
   markup, and `rel="noopener noreferrer"` on all external links
 * **Secure Connection** – Account credentials are encrypted at rest using AES-256-
   CBC and are never sent in plain text
 * **Signed Disconnect Notifications** – When you deactivate or remove the plugin,
   your DraftSEO.AI account is notified via an HMAC-SHA256 signed request — no ghost
   connections left behind

#### How It Works

 1. Install and activate the plugin on your WordPress site
 2. Click “Connect with DraftSEO.ai” in plugin settings while you are logged in to 
    your DraftSEO.ai account
 3. Connection completes automatically via OAuth — no API key needed
 4. Toggle WordPress Auto-publish ON when generating blogs, or click “Publish to WordPress”
    on any previously generated blog

#### Image Import

All images are downloaded directly from DraftSEO.AI to your WordPress Media Library—
giving you full ownership with no ongoing external dependencies.

Publishing is always instant. Images are imported in the background so your post
goes live immediately without waiting for any downloads. The plugin downloads all
images in parallel for speed, imports them into the Media Library, and notifies 
DraftSEO when the process is complete. A daily background check automatically catches
and repairs any imports that may have been interrupted.

**Requires an active DraftSEO.AI account.** Visit [draftseo.ai](https://draftseo.ai)
to sign up.

### External Services

This plugin connects to the DraftSEO.AI service to generate and publish AI-written
blog content.

Data sent:
 – Website URL – OAuth authentication token – Content publishing requests–
HMAC-SHA256 signed webhook notifications (API key is used as signing secret, never
transmitted)

Data received:
 – Generated blog content – Images and metadata

Service provider:
 DraftSEO.AI https://draftseo.ai Terms of Service: https://draftseo.
ai/terms Privacy Policy: https://draftseo.ai/privacy

## Screenshots

 * [[
 * Plugin settings page

## Installation

#### Automatic Installation

 1. Go to WordPress Plugins  Add New
 2. Search for “DraftSEO.ai”
 3. Click “Install Now” and then “Activate”
 4. Go to DraftSEO  Settings  “Connect with DraftSEO.ai” while logged in your DraftSEO.
    ai account in a separate tab

#### Manual Installation

 1. Download the plugin ZIP file
 2. Go to WordPress Admin  Plugins  Add New  Upload Plugin
 3. Choose the ZIP file and click “Install Now”
 4. Activate the plugin
 5. Go to DraftSEO  Settings to configure

#### Configuration

 1. Navigate to WordPress Admin  DraftSEO  Settings
 2. Click “Connect with DraftSEO.ai” while logged in your DraftSEO.ai account in a 
    separate tab
 3. Connection completes automatically

## FAQ

### How do I connect my WordPress site?

Simply click the “Connect with DraftSEO.AI” button and the connection completes 
automatically. You must be signed in DraftSEO.ai in another tab.

### What happens to the images?

Images are downloaded from DraftSEO.ai directly to your WordPress Media Library.
You have full ownership and they’re stored locally on your server.

### Can I publish to multiple WordPress sites?

Yes! You can connect multiple WordPress sites to your DraftSEO.AI account. Each 
site needs the plugin installed.

### Does this work with custom post types?

The plugin currently supports only standard WordPress posts and pages.

### How many images can be imported per blog?

The plugin can handle unlimited images per blog. All images are imported in the 
background — your post is available immediately and images are transferred to the
Media Library without blocking the publish. A daily background check automatically
catches and repairs any imports that may not have completed.

### Is there a limit on blog length?

No, there’s no limit on blog length or word count. The plugin handles content of
any size.

### Does this require a DraftSEO.AI subscription?

Yes, you need an active DraftSEO.AI account to use this plugin.

### Where can I get help?

For support and questions:
 * Visit https://draftseo.ai/contact for any questions

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“DraftSEO.AI” is open source software. The following people have contributed to 
this plugin.

Contributors

 *   [ Kliment ](https://profiles.wordpress.org/klimentp/)

[Translate “DraftSEO.AI” into your language.](https://translate.wordpress.org/projects/wp-plugins/draftseo-ai)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/draftseo-ai/), check
out the [SVN repository](https://plugins.svn.wordpress.org/draftseo-ai/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/draftseo-ai/) by
[RSS](https://plugins.trac.wordpress.org/log/draftseo-ai/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.2.4

Fixes stuck “images importing…” jobs, adds a Logs admin tab with CSV export and 
DB-backed structured logging, and improves error visibility across all image import
paths.

 * Fixed: Blog posts published before April 5 2025 could show “images importing…”
   in the DraftSEO UI indefinitely if the original callback failed (e.g. the 24-
   hour HMAC window expired before Action Scheduler ran). Running Sync now automatically
   detects and resolves these stuck jobs when WordPress confirms the post exists.
 * Fixed: The repair scan no longer silently discards its completion status. When
   it finishes importing all images for a post it now notifies DraftSEO via a new
   long-lived API-key endpoint, closing the loop on any syndication job whose HMAC
   callback URL had already expired.
 * New: Posts now store the DraftSEO syndication job ID (draftseo_syndication_job_id)
   in post meta at publish time. This enables the repair scan to notify DraftSEO
   without the original (expiring) callback URL.
 * New: Logs tab in the plugin settings page. Browse, filter by level/type, search,
   export to CSV, copy to clipboard, or clear all entries. Logs are kept for 30 
   days and cleaned up automatically by Action Scheduler.
 * New: Structured DB logger (wp_draftseo_logs table with level, type, message, 
   post_id columns). All image import paths — direct, async, background, repair 
   scan, health check, and callback delivery — now write structured log entries 
   visible in the Logs tab in addition to WordPress debug.log.
 * Improved: `process_images_background` (hybrid strategy, 6+ images) now logs per-
   URL download failures and a completion summary — previously completely silent.
 * Improved: `import_images_direct`, `process_images_with_callback`, `import_from_temp`,`
   sequential_download_images`, `import_images_async`, and `fire_callback` now each
   emit structured log entries with post ID, URL, and error detail on failure.

#### 1.2.3

Critical fix: background image health check and repair scan were silently never 
scheduled due to Action Scheduler initialisation timing.

 * Fixed: The daily image health check was never registered and the self-healing
   repair scan never ran after plugin install. Both background jobs silently failed
   to schedule because they were called before Action Scheduler’s data store was
   ready. Both are now hooked to the correct ‘action_scheduler_init’ event, which
   fires only when the data store is fully initialised and it is safe to call Action
   Scheduler APIs.

#### 1.2.2

Bug fixes, new SEO plugin support, and automatic sync reconciliation.

 * Fixed: Publishing the same blog twice — for example after a network timeout or
   a retry — no longer creates a duplicate WordPress post. The second request returns
   the existing post immediately.
 * Fixed: The SEO title (the per-post SERP title override, separate from the post
   title) was never written to the active SEO plugin. When DraftSEO sends a `seoTitle`,
   it is now written to Yoast (`_yoast_wpseo_title`), Rank Math (`rank_math_title`),
   All in One SEO (`_aioseo_title`), and SEOPress (`_seopress_titles_title`).
 * Fixed: Images imported with a `caption` field from DraftSEO now have their caption
   visible in the WordPress Media Library (Edit Media  Caption), in the block editor
   image block, and in default `[caption]` / `<figcaption>` output. Previously the
   caption was silently dropped.
 * Fixed: The self-healing image repair scan was silently skipped when a user updated
   the plugin by deactivating and reactivating it — the most common manual update
   flow. The fix ensures the repair scan fires correctly after every update, not
   just when using WordPress’s automatic update mechanism.
 * Fixed: A logic error in the duplicate-job guard could allow the repair scan to
   be queued more than once simultaneously. The guard now correctly detects any 
   pending repair job regardless of its internal batch number.
 * New: SEOPress is now a fully supported SEO plugin. The meta description (`_seopress_titles_desc`),
   SEO title (`_seopress_titles_title`), and canonical URL (`_seopress_robots_canonical`)
   are written at publish time.
 * New: Posts containing YouTube videos now have VideoObject structured data (JSON-
   LD) added to their page head automatically. This makes the videos eligible for
   video-rich results in Google Search.
 * New: When you click Sync for a WordPress connection, DraftSEO now automatically
   restores the WordPress post link for any blog whose mapping was lost (for example
   after a database restore). Affected blogs immediately show the correct “Published
   to WordPress” card in their detail view.
 * New: When you click Sync, DraftSEO also automatically recovers any published 
   posts that exist on WordPress but are missing from your DraftSEO account — for
   example after a data restore or account transfer. All affected blogs immediately
   show as Published on the Posts page.

#### 1.2.1

Internal code reorganisation. No behaviour changes.

 * Improved: Plugin PHP files split into smaller, single-responsibility classes 
   for easier maintenance and future development.

#### 1.2.0

Image reliability fixes, automatic self-repair for all previously affected posts,
and continuous background health monitoring.

 * Fixed: Images were sometimes missing from the WordPress Media Library after publishing
   from DraftSEO. This happened silently on certain hosting environments due to 
   differences in how the server handles external downloads. The plugin now tries
   an additional download method before giving up, significantly increasing import
   success rates across all hosting environments.
 * New: After updating, the plugin automatically scans your entire site in the background
   for any posts where images were never properly imported from DraftSEO. Affected
   posts are silently repaired without any action needed from you. You can monitor
   progress under Tools > Scheduled Actions in your WordPress admin.
 * New: A lightweight check now runs automatically every 24 hours. If any post is
   found with images that didn’t fully import — for example because a server timeout
   interrupted the process overnight — the plugin queues a repair automatically.
   No monitoring required: healthy sites see no activity and affected posts are 
   fixed without manual intervention.
 * Improved: The daily check permanently skips posts that have already been fully
   verified, so it stays fast regardless of how many posts are on your site. On 
   a fully audited site the check completes in a fraction of a second. Republishing
   a post automatically resets it so new images are always verified.
 * Improved: Image imports now run in controlled parallel batches, keeping resource
   usage predictable on any hosting environment. Designed and tested for sites publishing
   large numbers of blogs, each with many images.

#### 1.1.6

Faster republishing — only new or changed images are re-downloaded.

 * Improved: When republishing a post, images that were already imported in a previous
   publish are no longer downloaded again. Only new or replaced images are fetched.
   For a typical blog, republishing with no image changes now skips all image downloads
   entirely.

#### 1.1.5

Reliable image import confirmation for all publish paths.

 * Fixed: Republishing a post was blocked with “not in completed status” when a 
   previous publish had images still importing in the background. Republishing now
   self-heals stuck jobs and always proceeds.
 * Fixed: Manual publish and Republish now use the same async callback path as Auto-
   publish — DraftSEO is notified when all images finish importing instead of assuming
   completion immediately.
 * Improved: The background image callback is now confirmed (blocking HTTP request)
   so Action Scheduler can automatically retry delivery if DraftSEO’s server is 
   temporarily unreachable.
 * Improved: Republish is no longer blocked while images are still uploading — updating
   the post content always proceeds immediately, and image import completion is 
   tracked in the background.

#### 1.1.4

Cosmetic and connectivity improvements.

 * Improved: Settings page now displays “DraftSEO.ai” with the installed plugin 
   version shown next to the heading.
 * Improved: Connection status now shows a clear “Connection Issue” state (instead
   of “Connected”) when authentication with DraftSEO.ai fails — includes step-by-
   step instructions to reconnect.
 * Improved: “Go to DraftSEO.ai” button on the connected settings page is cleaner—
   icon removed, label updated.

#### 1.1.3

Reliability improvements, faster image loading, and cleaner background processing.

 * Fixed: Images on published posts were sometimes not appearing on low-traffic 
   websites — they were queued to download in the background but the background 
   job wasn’t starting until the next page visit. They now start immediately regardless
   of site traffic.
 * Fixed: Switching the plugin off while a publish was in progress could leave background
   tasks running after deactivation. The plugin now cleanly stops all background
   jobs when it is deactivated.
 * Fixed: Removing the plugin (uninstall) now properly disconnects your site from
   DraftSEO.AI — the connection is closed on the DraftSEO side before all plugin
   data is removed.
 * Fixed: Plugin text was not translating correctly on WordPress sites running in
   a language other than English. Translation files now load properly.
 * Improved: Background image jobs now use Action Scheduler instead of WP Cron. 
   Action Scheduler runs as a true background process without requiring a page visit,
   retries failed jobs automatically, and shows pending and completed jobs in the
   WordPress admin at Tools > Scheduled Actions.
 * Improved: Images in background jobs are now downloaded in parallel before being
   imported. For a blog with 20 images this reduces total download time from roughly
   60–100 seconds (sequential) to 5–15 seconds (parallel).
 * Fixed: Republishing a post was creating duplicate images in the Media Library
   for any image that had not changed. Only new or replaced images are now downloaded
   and imported — unchanged images are reused from the existing Media Library entry.

#### 1.1.2

Security update: fixes API token authentication on WordPress sites where the Application
Passwords feature or a security plugin was blocking server-to-server requests from
DraftSEO.AI before they could be validated.

#### 1.1.0

Automatic cleanup when republishing with a new image.

 * When you republish a post with a new AI-generated image, the new image is swapped
   in automatically and the previous image is removed from your WordPress Media 
   Library — keeps your media folder clean and saves storage space.

#### 1.0.5

YouTube video embeds now work on WordPress.

 * Fixed YouTube videos not appearing on published WordPress posts — videos are 
   now properly converted to native WordPress embed blocks before publishing, so
   they show up as responsive YouTube players on your site

#### 1.0.4

Content formatting and image fixes.

 * Fixed headings appearing as raw text after images instead of being properly formatted
 * Removed unwanted image captions — image descriptions were showing as visible 
   text below every image. They are now used for accessibility only and no longer
   display on the page

#### 1.0.3

Content formatting fixes.

 * Fixed headings sometimes appearing as plain text instead of proper headings
 * Fixed citation links being malformed in published posts

#### 1.0.2

Citation links, external link handling, and FAQ structured data for rich results.

 * In-text citations — `[1]`, `[2]` markers now render as clickable superscript 
   links that jump to the matching reference in the References section
 * References section — Converted to a numbered list with anchor IDs (`#ref-1`, `#
   ref-2`) for smooth in-page navigation
 * External links — All external links now open in a new tab with `rel="noopener
   noreferrer"`
 * FAQ structured data — FAQ question-answer pairs from blog content are injected
   as JSON-LD into the post `<head>` for Google FAQ rich results
 * Theme-consistent styling — CSS is injected for citations, references, and tables
   so they display correctly across all WordPress themes
 * Active sites filter — The WordPress site dropdown now shows only connected, active
   sites

#### 1.0.1

Hotfix for content rendering in published posts.

 * Fixed: YouTube embeds were being stripped during publishing — they now render
   as embedded players on your site
 * Fixed: Data tables were displaying as raw Markdown text instead of formatted 
   HTML tables

#### 1.0.0

Major release — security hardening, reliability improvements, and full tag management.

**Security**

 * Webhook signatures — Disconnect and deactivation notifications are signed with
   HMAC-SHA256 (`X-DraftSEO-Signature`, `X-DraftSEO-Timestamp` headers); the API
   key is the signing secret and is never transmitted in plain text
 * Replay protection — Signed requests include a Unix timestamp; requests older 
   than 5 minutes are rejected
 * API keys encrypted at rest — AES-256-CBC with a unique IV per key, derived from
   the WordPress site’s auth salt

**Publishing & REST API**

 * Tags endpoint — `GET /wp-json/draftseo/v1/tags` added for tag sync, matching 
   the existing `/users` and `/categories` endpoints
 * Server-side input validation — `/publish` and `/update` routes validate and sanitise
   all params before the handler runs
 * Structured error responses — All errors return specific codes (`rest_forbidden`,`
   rest_missing_param`, `rest_publish_error`, etc.) for better debugging
 * Bidirectional disconnect — Disconnecting from DraftSEO.AI calls `/remote-disconnect`
   to clear connection settings on the plugin side automatically

**Reliability**

 * Handles security plugin blocks and maintenance pages gracefully — no silent failures
   when a WAF or caching layer intercepts requests
 * Sync requests now have a timeout so connections never hang indefinitely
 * Multi-site view: individual site connection errors are isolated so one broken
   connection does not affect others

**Performance**

 * Users, categories, and tags are now fetched in parallel instead of sequentially
 * Retries only fire on server errors (5xx) — client errors (4xx) fail immediately
   without wasting retry attempts

**Tag Management**

 * Auto-create WordPress tags from AI-generated keywords at publish time (configurable,
   1–10 tags)
 * Select from existing WordPress tags, or create new ones on the fly during publishing

**Image Handling**

 * All images downloaded directly to your WordPress Media Library
 * Alt text from DraftSEO.AI preserved as WordPress image alt text
 * Featured image set automatically; all image URLs in post content updated from
   DraftSEO.AI CDN to your local Media Library URLs

**Usability**

 * “Settings” quick-link added to the Plugins page for faster access to plugin configuration

#### 0.2.0

Initial beta release.

 * One-click blog publishing from DraftSEO.AI
 * Automatic image import from DraftSEO.ai
 * SEO metadata transfer
 * WordPress category sync
 * Auto-create tags from keywords
 * Multiple post status options (draft, publish, schedule)
 * Content cleanup and formatting
 * Secure API key encryption
 * Background image processing for large blogs
 * Remote disconnect synchronization
 * OAuth-based connection flow

## Meta

 *  Version **1.2.4**
 *  Last updated **3 díes ago**
 *  Active installations **100+**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **6.9.4**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/draftseo-ai/)
 * Tags
 * [AI](https://ast.wordpress.org/plugins/tags/ai/)[blog](https://ast.wordpress.org/plugins/tags/blog/)
   [content](https://ast.wordpress.org/plugins/tags/content/)[publishing](https://ast.wordpress.org/plugins/tags/publishing/)
   [seo](https://ast.wordpress.org/plugins/tags/seo/)
 *  [Advanced View](https://ast.wordpress.org/plugins/draftseo-ai/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/draftseo-ai/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/draftseo-ai/reviews/)

## Contributors

 *   [ Kliment ](https://profiles.wordpress.org/klimentp/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/draftseo-ai/)