AI Content Engine
WordPress + OpenAI plugin that auto-generates SEO product descriptions
by Saad Sohail · github.com/saadsk-tech/wp-ai-content-engine · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/saadsk-tech/wp-ai-content-engine/archive/refs/heads/main.zipReadme
AI Content Engine
Generate unique, SEO-optimized, schema-aware product and post descriptions inside WordPress using the OpenAI API — straight from the editor, in your brand voice.
This is a clean, public reference implementation of the content pipeline I built in production for ZippyPixels.com, a marketplace of 14,000+ products where it cut manual content time by roughly 70% with zero editor rewrites. The production version includes batch processing, queueing, and WooCommerce-attribute mapping; this repository focuses on the core architecture, kept readable and dependency-free.
Why it exists
A large catalogue is a content bottleneck: every product needs a unique, well-structured, search-friendly description, and writing thousands by hand does not scale. AI Content Engine generates them on demand, constrained by a tight prompt design so the model uses only the facts already on the post and never invents specifications.
How it works (in plain English)
You open any product in WordPress, click one button, and a few seconds later a finished, polished description appears. You read it, keep it if you like it, and nothing publishes on its own. Behind that single click, the plugin runs four steps:
- Gathers the facts already on the page — the title, summary, and categories. It only uses real information that's there; it never makes things up.
- Writes a careful brief for the AI: keep it short, lead with the benefit, sound like this brand, and stick to the facts provided. This prompt design is where most of the quality comes from.
- Sends the brief to OpenAI (the company behind ChatGPT) and waits for the reply.
- Shows you the result in the editor with a copy button, so you stay in control.
Think of it as a copywriter sitting beside you who already read the product details, knows your brand's tone, and hands you a clean draft the instant you ask — for every product, without tiring. The AI does the writing; the plugin is the engineering around it that makes that reliable thousands of times: pulling the right facts, enforcing brand rules, keeping the API key secure, and putting the button exactly where an editor needs it.
Requirements
| Requirement | Details |
|---|---|
| WordPress | 6.2 or newer |
| PHP | 7.4 or newer (8.x recommended) |
| OpenAI API key | Your own key from platform.openai.com — the plugin does not include one |
| OpenAI account with billing | API usage is pay-as-you-go and billed by OpenAI, separate from any ChatGPT subscription |
| Outbound HTTPS | The server must be able to reach api.openai.com (most hosts allow this by default) |
| A user who can edit posts | Generation requires the edit_post capability on the target post |
No other plugins are required. WooCommerce is optional — the plugin works on standard posts and products alike, and integrates with WooCommerce attributes if present.
Costs
The plugin itself is free and open-source. The only cost is your own OpenAI API usage, and there are two things worth knowing:
- A ChatGPT subscription is not the same as API access. ChatGPT Plus (the monthly web subscription) does not include API usage. The API is a separate, pay-as-you-go service billed by OpenAI based on how much you generate.
- It's inexpensive at this scale. With the default
gpt-4o-minimodel, a typical product description costs a fraction of a US cent. Generating descriptions for a few thousand products usually lands in the range of a few dollars total, though exact costs depend on the model and length you choose.
You stay in full control: you use your own OpenAI key, so you own your spend and there is no monthly fee to the plugin author. Current pricing is always on OpenAI's pricing page.
Features
- One-click generation from a meta box on any post or product
- Brand voice injected into every prompt for consistent tone
- Fact-constrained prompts — uses the post's own title, excerpt, and categories; no hallucinated specs
- Secure by construction — REST nonce + per-post capability checks; the API key is write-only and never echoed to the browser
- Core HTTP layer — uses
wp_remote_post, inheriting your site's proxy, filters, and timeouts - Extensible —
aice_post_context_partsfilter lets you feed in WooCommerce attributes or ACF fields - Translation-ready — fully internationalized,
languages/included
Architecture
ai-content-engine.php Bootstrap: constants, autoloader, activation guard
includes/
class-aice-plugin.php Orchestrator (singleton) — wires admin + REST
class-aice-settings.php Options storage, defaults, write-only API key
class-aice-openai-client.php OpenAI Chat Completions wrapper (wp_remote_post)
class-aice-generator.php Prompt design — the part that mattered most
class-aice-rest-controller.php POST /wp-json/aice/v1/generate (secured)
admin/
class-aice-admin-settings-page.php Settings API screen
class-aice-admin-meta-box.php Editor button + script enqueue
editor.js Vanilla JS, uses wp.apiFetch
Each layer has a single responsibility, so the OpenAI call, the prompt logic, the REST surface, and the admin UI can each be read, tested, or swapped independently.
Install
- Copy
ai-content-engineintowp-content/plugins/ - Activate AI Content Engine in the WordPress admin
- Go to Settings → AI Content Engine and paste your OpenAI API key
- Open any post or product; use the AI Content Engine box in the sidebar
Requires WordPress 6.2+ and PHP 7.4+. You supply your own OpenAI API key; the plugin stores it in your database and never transmits it anywhere except OpenAI.
Extending
// Feed WooCommerce attributes into the prompt context.
add_filter( 'aice_post_context_parts', function ( $parts, $post ) {
if ( function_exists( 'wc_get_product' ) ) {
$product = wc_get_product( $post->ID );
if ( $product ) {
$parts[] = 'Price: ' . $product->get_price();
}
}
return $parts;
}, 10, 2 );
Security notes
- The REST endpoint requires the
edit_postcapability for the specific target post, not a blanket login check. - The API key field is write-only: once saved, the form shows a masked placeholder and the value is never sent back to the browser.
- API error messages are surfaced without ever including the key.
Roadmap
- [ ] Batch generation across a filtered product list
- [ ] WP-CLI command (
wp aice generate --post_type=product) - [ ] Per-post generation history with one-click revert
License
GPL-2.0-or-later. Built by Saad Sohail · saad@devify.digital
Read the full README on GitHub →
Releases
| Tag | Published |
|---|---|
| v1.0.0 | Jun 14, 2026 |
These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.