WordPress plugin for AI-assisted, daily SEO-optimized long-form posts — with images, links, schema, and quality guardrails.
Designed by Host Hobbit Ltd · Author: Mike Warburton
- Requirements
- Installation
- How to use
- Configuration overview
- How it works
- REST API
- Mode A: External agent
- Mode B: Direct LLM
- Development & testing
- Security
- Known limitations
- License
| Requirement | Details |
|---|---|
| PHP | 8.1+ |
| WordPress | 6.x |
| HTTPS | Strongly recommended for external REST access |
Optional
- Rank Math or Yoast SEO for deeper SEO integration
- JWT auth plugin for Mode A (JWT authentication)
-
Download
Go to github.com/hosthobbit/open-claw-engine → Code → Download ZIP (or clone and zip the folder). -
Prepare the ZIP
- Unzip on your computer.
- The inner folder must be named
jarvis-content-engine(WordPress expects this slug). - If you have
open-claw-engine-main, rename it tojarvis-content-engine. - Zip that single folder so the archive contains one top-level folder:
jarvis-content-engine, with all plugin files inside.
-
Install in WordPress
- Plugins → Add New → Upload Plugin → choose
jarvis-content-engine.zip→ Install Now → Activate Plugin.
- Plugins → Add New → Upload Plugin → choose
-
Post-install
Open Open Claw Engine in the admin menu to configure integration mode, auth, and content defaults.
Optionally enable Cleanup on uninstall in settings if you want data removed when the plugin is uninstalled.
Copy the jarvis-content-engine folder into wp-content/plugins, then Plugins → activate Open Claw Engine, and configure as above.
-
Open settings
In the admin sidebar, click Open Claw Engine. You’ll see Settings and Job Logs. -
Choose how content is generated
- Mode A (External agent) — Your service calls the plugin’s REST API. Configure Auth mode (Application Password, JWT, or HMAC).
- Mode B (Direct LLM) — The plugin calls an OpenAI-compatible API. Enable Use built-in OpenAI-compatible provider, set API Base URL, API Key, and Model (dropdown or custom). Use Refresh models after saving to load models from the API.
-
Connection & auth (Mode A)
- Application Password: Create a WordPress user for the agent → Users → edit user → Application Passwords → create a password; use username + password in your client.
- HMAC: Set HMAC Shared Secret in the plugin; your client signs requests with it (see
docs/API.md).
-
Content & SEO defaults
Set default subject, categories/tags, tone, voice, word count range, publish cadence, daily time, meta title template, slug strategy, keywords, link rules (min/max internal/external, allowlist/blocklist), image rules (featured, inline, alt, OG fallback, verify remote), and quality thresholds (Draft only recommended). -
Save the settings.
REST API (Mode A) — Your agent calls:
POST /wp-json/jarvis/v1/jobs— create a jobPOST /wp-json/jarvis/v1/jobs/{id}/run— run a jobPOST /wp-json/jarvis/v1/generate— one-shot generate + draftPOST /wp-json/jarvis/v1/publish— one-shot generate + publish
Use the Job Logs tab for status and errors.
Scheduled (WordPress) — With Publish cadence (e.g. daily at 03:00), WP-Cron runs the job automatically. Check Job Logs after the run.
- Draft-only (recommended): Posts are saved as drafts. Review in Posts, edit, then Publish.
- Approve via API:
POST /wp-json/jarvis/v1/jobs/{id}/approveto publish the draft (or publish manually in wp-admin). - Job Logs: Use for status, SEO/readability scores, image/link results, and errors.
GET /wp-json/jarvis/v1/health— Plugin status and config summary (no secrets). Suited for monitoring or uptime checks.
Full request/response formats: docs/API.md.
| Setting | Options |
|---|---|
| Integration mode | external (REST) or direct (plugin calls LLM) |
| Auth mode | Application Password (recommended), JWT, or HMAC |
Secrets are never shown in clear text in the admin UI.
- Target categories and tags
- Tone (professional, conversational, technical) and voice (1st/2nd/3rd person)
- Word count range (e.g. 1200–2500)
- Publish cadence and daily time
- Meta title template — placeholders:
{title},{site_name},{primary_keyword} - Slug strategy — kebab / simple
- Link rules — min/max internal and external links; allowlist/blocklist
- Image rules — featured required, inline count, alt text
- Quality thresholds — readability, SEO score; draft-only vs auto-publish
See docs/ARCHITECTURE.md and docs/API.md for details.
- Configure — Daily subject and defaults in the admin UI.
- Schedule — WP-Cron runs at your configured time (or trigger via API).
- Generate — Plugin asks a generation agent (external or LLM) via
jarvis_content_engine_generatefor title, body, FAQ, CTA, links, meta, OG, schema. - Store — Content saved as draft or published based on your thresholds.
- Score & guardrails — SEO/quality score; readability, links, length enforced.
- Images — URLs from the generator are downloaded into the Media Library and set as featured/inline with alt text.
- SEO — Meta and focus keyword saved in Rank Math / Yoast when available.
- Logs & health — Job records in a custom table and Job Logs view;
/healthendpoint for monitoring.
Base: https://yoursite.com/wp-json/jarvis/v1
| Method | Endpoint | Description |
|---|---|---|
POST |
/jobs |
Create a scheduled content job |
GET |
/jobs/{id} |
Job status and details |
POST |
/jobs/{id}/run |
Force run/generate a job |
POST |
/jobs/{id}/approve |
Publish the associated draft |
POST |
/generate |
One-shot generate + draft |
POST |
/publish |
One-shot generate + publish (publish_posts required) |
GET |
/health |
Plugin health and config summary |
Authentication: WordPress REST auth (cookies for admins), plus Application Passwords, JWT, or HMAC. See docs/API.md for schemas and examples.
- Authenticate with Application Password, JWT, or HMAC.
- Call
POST /generateorPOST /publishwithsubject,primary_keyword,secondary_keywords[],audience,intent. - Optionally poll
GET /jobs/{id}or use Job Logs for status.
Open Claw Engine handles: post creation, taxonomy, Media Library downloads, SEO scoring, thresholds, schema/meta, and SEO plugin compatibility.
Implement the filter in a mu-plugin or theme; return at least title, content, excerpt, internal_links, external_links (and optionally featured image, meta, OG, schema, FAQ, CTA):
add_filter( 'jarvis_content_engine_generate', function( $generation, $context ) {
// Call your OpenAI-compatible API using $context.
return array(
'title' => '...',
'content' => '<p>...</p>',
'excerpt' => '...',
'internal_links' => array( /* ... */ ),
'external_links' => array( /* allowlist/blocklist */ ),
'featured_image_url' => 'https://...',
'featured_image_alt' => '...',
'meta_title' => '...',
'meta_description' => '...',
'og_title' => '...',
'og_description' => '...',
'schema_jsonld' => array( /* Article + FAQ */ ),
'faq' => array( array( 'q' => '...', 'a' => '...' ) ),
'cta' => '<p>...</p>',
);
}, 10, 2 );LLM code and secrets stay in your codebase; the plugin handles WordPress-side behaviour.
- PHPUnit tests in
tests/(SEO scoring, pipeline). - Extend via filters and actions.
From the WordPress root (with phpunit.xml configured):
phpunit --testsuite jarvis-content-engine- Admin:
manage_optionsrequired. - REST: capabilities (
edit_posts,publish_posts) plus optional HMAC/JWT. - Inputs sanitized and escaped per WordPress standards.
- No hard-coded secrets; keys provided via settings or environment.
See docs/SECURITY.md for threat model and details.
- Images depend on the generator supplying real image URLs. For safety the plugin only imports direct image links from Unsplash, Pixabay or Wikimedia and checks each one before downloading it. Language models can't browse those sites, so in Mode B they rarely return links that pass these checks, and posts are created without images. An external agent (Mode A) that searches those sites can supply valid images today. Built-in Unsplash/Pixabay API lookup is planned.
GPL-2.0-or-later.
Built and maintained by Host Hobbit Ltd: managed WordPress hosting, WHM/cPanel and VPS administration, security hardening and AI automation for businesses in the UK.
Need help deploying this, or want something similar built for your business? Get in touch.