GEO Optimizer
for WordPress
Optimize your content for the AI era — get cited by ChatGPT, Claude, Perplexity, and Google AI Overviews. The only WordPress plugin built for Generative Engine Optimization.
- 1. Introduction
- 2. Installation
- 3. Settings
- 4. Auto AI-Ready Writer
- 5. Create New Post
- 6. AutoPilot
- 7. Schema Markup
- 8. FAQ Schema
- 9. Answer Capsule
- 10. Breadcrumb Schema
- 11. AI Crawlers
- 12. llms.txt Generator
- 13. GEO Audit
- 14. Shortcode Reference
- 15. AI Providers
- 16. Database Options
- 17. Changelog
- 18. Credits & Licences
- 18. FAQ
What is GEO Optimizer?
GEO Optimizer is a WordPress plugin built for the new era of AI-driven search. Where traditional SEO targets Google's algorithm, Generative Engine Optimization (GEO) targets the large language models that power ChatGPT, Claude, Perplexity, and Google AI Overviews.
Installation & Activation
GEO Optimizer is a standard WordPress plugin. Installation takes under 2 minutes and requires no coding.
geo-optimizer.zip file and click Install Now.llms.txt yourself from the llms.txt screen.System Requirements
| Requirement | Minimum | Recommended |
|---|---|---|
| WordPress | 5.8+ | 6.0+ |
| PHP | 7.4+ | 8.1+ |
| MySQL | 5.6+ | 8.0+ |
| HTTPS | Required for API calls | — |
| WP Cron | Required for AutoPilot | Real server cron preferred |
Settings
All plugin settings live under GEO Optimizer → Settings. The page is divided into three sections.
Section 1 — AI Writer API Key
sk-ant-…sk-…Section 2 — Brand & Author Identity
Person JSON-LD schema and as an E-E-A-T trust signal.description field.Section 3 — Technical GEO Features
[geo_answer] shortcode for AI-extractable answer summaries.robots.txt for GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Applebot-Extended, and cohere-ai./llms.txt in the WordPress root listing your most important URLs for AI indexing.Auto AI-Ready Writer
The AI Writer enhances your existing WordPress posts to be fully optimised for AI citation. It uses your selected AI provider to rewrite content, add structured elements, and score the result — all without leaving the WordPress admin.
How to Use
Enhancement Options
| Option | What it adds | Prompt instruction when OFF |
|---|---|---|
| 💡 Answer Capsule | A [geo_answer] shortcode at the top with a 2-3 sentence direct answer | Explicitly forbidden from output |
| ❓ FAQ Section (5-7 Qs) | H3 questions ending in "?" with paragraph answers at the bottom | Explicitly forbidden from output |
| 🏗️ Better Headings | Rewrites H2/H3 headings for AI clarity | Existing headings preserved |
| 📝 Strong Intro | Opening paragraph that states the post's topic and audience | Existing intro preserved |
| 📅 Freshness Note | "Last Updated: [today's date]" inserted at the top | No date note added |
| 🏆 Authority Signals | Statistics, expert references, or study citations | No new statistics added |
GEO Score Calculation
| Criterion | Points |
|---|---|
| Post content is over 800 words | +30 |
| Post contains more than 2 FAQ-style questions ("?") | +30 |
Post contains a [geo_answer] shortcode | +40 |
| Maximum score | 100 |
Revert to Original
Before overwriting a post, the plugin automatically backs up the original content to the post meta key _geo_opt_original_content. The Revert button restores this backup and removes all AI enhancement markers.
Create New Post
The Create New Post button on the Auto AI-Ready Writer page lets you generate a brand-new, fully AI-optimised blog post from scratch — just provide a keyword and the AI writes everything.
Workflow
_geo_enhanced = 1 meta and appears in Enhancement History.Preview Mode
The preview panel has two tabs:
[geo_answer] capsule displayed as a styled purple box.AutoPilot
AutoPilot automatically re-optimises your existing posts on a configurable schedule (daily, weekly, or monthly) so your content stays AI-ready without any manual effort.
How AutoPilot Works
geo_opt_autopilot_run hook on your configured interval (daily / weekly / monthly).AutoPilot Settings
| Setting | Description | Default |
|---|---|---|
| Enable AutoPilot | Master on/off toggle. Enabling schedules the cron; disabling clears it. | OFF |
| Run Schedule | How often AutoPilot runs: Daily, Weekly, or Monthly. | Weekly |
| Posts Per Run | Maximum posts to enhance per run (1–50). | 5 |
| Re-optimise Posts Older Than | Only posts not modified in at least this many days are selected. | 30 days |
| Re-optimise Manually Enhanced Posts | When OFF, posts already enhanced via the AI Writer are skipped to protect manual edits. When ON, all posts are eligible. | OFF |
| Auto-refresh llms.txt on Save | Regenerates llms.txt automatically whenever a post is published or updated. | ON |
| Send Weekly Report Email | Sends a digest email every week summarising AutoPilot activity. | ON |
| Report Email Address | Where the weekly digest is sent. | Admin email |
Run Now Button
The sticky Run Now button at the top of the AutoPilot page triggers an immediate manual run. It bypasses:
- The age threshold — all published posts qualify regardless of modification date
- The manual-exclusion filter — manually enhanced posts are included too
The configured Posts Per Run limit is still respected.
Run History Log
Every run (scheduled or manual) is logged in the Run History table showing: timestamp, status (Success / Partial / Error), number of posts processed, post titles, and any error messages. The log retains the last 30 entries. Use the Clear Log button to reset it.
Schema Markup (JSON-LD)
GEO Optimizer automatically injects structured data in JSON-LD format into every page. This helps AI engines understand who you are, what your content is about, and how to attribute it.
Schema Types Injected
Conflict Avoidance
The meta description injection automatically detects and skips if Yoast SEO or Rank Math are active, preventing duplicate meta tags.
FAQ Schema Auto-Detection
The plugin automatically detects FAQ content in your posts and wraps it in valid FAQPage JSON-LD schema — no manual tagging required.
How Detection Works
The plugin scans your post content using this pattern:
// Finds: H2/H3/H4 headings ending with "?" followed by paragraph text /<h[2-4][^>]*>(.*?\?)<\/h[2-4]>(.*?)(?=<h[2-4]|$)/si
It finds up to 10 FAQ pairs per post. Answers are trimmed to 500 characters for the schema output.
How to Write FAQ-Compatible Content
<h3>What is Generative Engine Optimization?</h3> <p>GEO is the practice of optimizing content to be cited and referenced by AI-powered search engines like ChatGPT and Perplexity.</p>
Answer Capsule Shortcode
The [geo_answer] shortcode renders a highlighted summary box that AI engines can easily extract as a direct, citable answer to a query.
[geo_answer label="Quick Answer"]Your 2-3 sentence direct answer here.[/geo_answer]
[geo_answer label="Key Takeaway"]This plugin increases AI citation rates by structuring content for LLMs.[/geo_answer]
Attributes
| Attribute | Type | Default | Description |
|---|---|---|---|
label | String | "Quick Answer" | The heading text displayed at the top of the capsule box. |
Output
The shortcode renders a purple-accented styled box with a 💡 icon and the label as a heading. The content inside is sanitized via wp_kses_post().
Breadcrumb Schema
Automatically injects a BreadcrumbList JSON-LD schema on single post pages, signalling content hierarchy to AI engines.
Schema Structure
{
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://yoursite.com" },
{ "@type": "ListItem", "position": 2, "name": "Post Title", "item": "https://yoursite.com/post-slug" }
]
}
AI Crawler Access
GEO Optimizer modifies your robots.txt to explicitly allow the crawlers used by major AI platforms to index your content.
Bots Allowed
robots.txt Output
User-agent: GPTBot Allow: / User-agent: ClaudeBot Allow: / User-agent: PerplexityBot Allow: / # … and so on for all 12 bots listed above
llms.txt Generator
llms.txt is an emerging standard — a markdown file placed in your site root that lists your most important URLs in a format designed for LLMs to consume during training and indexing.
What the Generated File Contains
| Section | Content |
|---|---|
| Header | Site name, domain, and generation timestamp |
| Homepage | Your site's homepage URL |
| Pages | 10 most recent published WordPress pages |
| Posts | 20 most recent published WordPress posts |
| Sitemap | Link to your XML sitemap |
Auto-refresh with AutoPilot
When Auto-refresh llms.txt on Save is enabled in AutoPilot settings, the file is regenerated automatically whenever any post or page is published or updated — keeping it always current.
Manual Refresh
Go to GEO Optimizer → llms.txt and click Generate / Refresh. The page also shows live stats: pages count, posts count, total URLs, and the current file contents.
{ABSPATH}/llms.txt using the WordPress Filesystem API. It is publicly accessible at https://yoursite.com/llms.txt.GEO Audit
The GEO Audit page provides a detailed health check of your entire site's AI readiness — both technical configuration and per-post content scoring.
Technical Checks (7 checks)
| Check | What it verifies |
|---|---|
| AI Bot Crawl Access | geo_enable_robots_bots option is enabled |
| llms.txt Present | {ABSPATH}/llms.txt file exists on disk |
| JSON-LD Schema Active | geo_enable_schema option is enabled |
| FAQ Schema Enabled | geo_enable_faq_schema option is enabled |
| Author Credentials | Author name is set in Settings |
| Anthropic API Key | An Anthropic or OpenAI API key is configured |
| Bing Pinged Recently | geo_bing_pinged option timestamp is recent |
Post AI Readiness Score
Shows the GEO Score (0–100) for the 15 most recent posts based on word count, FAQ presence, and Answer Capsule usage.
Shortcode Reference
[geo_answer]
| Parameter | Value | Description |
|---|---|---|
label | Any string | Box heading. Default: "Quick Answer" |
| Content | HTML allowed | The answer text. Sanitized with wp_kses_post() |
[geo_answer label="Quick Answer"]WordPress is a free, open-source CMS powering over 43% of all websites globally. It offers themes, plugins, and a block editor for building any type of site.[/geo_answer]
Bing Sitemap Ping
On every post publish, the plugin automatically pings Bing's indexing endpoint with your sitemap URL. This is throttled to once per hour using a WordPress transient. Since ChatGPT uses Bing's web index, this helps ensure new content reaches AI search engines faster.
AI Providers
GEO Optimizer supports two AI providers. You can switch between them in Settings at any time. All features — AI Writer, Create New Post, and AutoPilot — use the active provider.
- High-quality long-form writing
- Strong instruction following
- Excellent at structured content
- API:
api.anthropic.com/v1/messages - Key format:
sk-ant-…
- Fast and widely supported
- Strong factual accuracy
- Consistent formatting
- API:
api.openai.com/v1/chat/completions - Key format:
sk-…
wp_options. All AI requests are made server-side via wp_remote_post() with a 90-second timeout. Keys are never exposed to the browser.Database Options
Plugin Options (wp_options)
| Option Key | Type | Description |
|---|---|---|
geo_anthropic_key | String | Anthropic API key |
geo_openai_key | String | OpenAI API key |
geo_ai_provider | String | "anthropic" or "openai" |
geo_author_name | String | Author full name |
geo_author_credentials | String | Author credential string |
geo_author_bio | String | Author bio (textarea) |
geo_site_description | String | Site/brand description |
geo_brand_keywords | String | Comma-separated brand keywords |
geo_enable_schema | 0/1 | Schema markup toggle |
geo_enable_faq_schema | 0/1 | FAQ schema toggle |
geo_enable_robots_bots | 0/1 | AI crawler access toggle |
geo_enable_answer_capsules | 0/1 | Answer Capsule shortcode toggle |
geo_enable_breadcrumbs | 0/1 | Breadcrumb schema toggle |
geo_enable_llms_txt | 0/1 | llms.txt generation toggle |
geo_bing_pinged | Timestamp | Last Bing sitemap ping time |
geo_autopilot_enabled | 0/1 | AutoPilot master toggle |
geo_autopilot_schedule | String | "daily" / "weekly" / "monthly" |
geo_autopilot_post_limit | Integer | Max posts per AutoPilot run |
geo_autopilot_age_days | Integer | Age threshold in days |
geo_autopilot_email | String | Weekly digest recipient |
geo_autopilot_email_enabled | 0/1 | Weekly digest toggle |
geo_autopilot_llms_refresh | 0/1 | Auto llms.txt refresh toggle |
geo_autopilot_options | JSON | Enhancement options for AutoPilot runs |
geo_autopilot_reoptimize_manual | 0/1 | Re-optimise manually enhanced posts |
geo_autopilot_run_log | Array | Last 30 AutoPilot run log entries |
Post Meta Keys (wp_postmeta)
| Meta Key | Value | Description |
|---|---|---|
_geo_enhanced | 1 | Post has been AI enhanced |
_geo_enhanced_date | MySQL datetime | When the post was last enhanced |
_geo_opt_original_content | HTML string | Original post content backup (first enhance only) |
_geo_autopilot | 1 | Post was enhanced by AutoPilot (not manually) |
Transients
| Transient Key | TTL | Description |
|---|---|---|
geo_opt_bing_pinged | 1 hour | Throttles Bing sitemap ping to once per hour |
Changelog
date_i18n()) is now passed in the prompt, eliminating AI-generated placeholders.Frequently Asked Questions
Does this conflict with Yoast SEO or Rank Math?
No. GEO Optimizer detects both plugins and skips meta description injection to avoid conflicts. Schema markup is additive and does not override Yoast or Rank Math schemas.
Will AutoPilot overwrite my manually edited posts?
No, by default. The Re-optimise Manually Enhanced Posts toggle is OFF, which means AutoPilot skips any post enhanced via the AI Writer. Enable it if you want all posts refreshed on schedule.
Can I restore a post after AI enhancement?
Yes. The original content is backed up in the _geo_opt_original_content post meta before the first enhancement. Click the Revert button on the AI Writer page to restore it at any time.
Why does Run Now process 0 posts?
Run Now bypasses the age threshold and manual-exclusion filters, so this should not normally happen. If it does, check that you have published posts and that your Posts Per Run limit is greater than 0.
Do I need both an Anthropic and OpenAI key?
No. You only need the key for whichever provider you select in Settings. The other field can be left blank.
Where is my API key stored?
API keys are stored in wp_options in your WordPress database. They are never logged, sent to external services (other than the AI API itself), or exposed to browser JavaScript.
What happens when I uninstall the plugin?
By default, only the plugin’s settings are removed — options, transients, scheduled cron jobs and the generated llms.txt file.
Your data is kept: the pre-AI backup of every enhanced post (_geo_opt_original_content), the enhancement metadata, and the citation-tracking table all survive. That means you can reinstall and still revert any post the AI rewrote.
If you genuinely want everything erased, switch on Settings → Data Retention → “Delete all data when the plugin is uninstalled” before deleting the plugin. That action is permanent and cannot be undone.
Credits & Third Party Licences
Chart.js 4.4.0
Used to render the activity graph on the Citation Tracker screen. The library is bundled with the plugin and served from your own site — no external requests are made to load it.
- File:
admin/js/vendor/chart.umd.min.js - Project: chartjs.org
- Source: github.com/chartjs/Chart.js
- Licence: MIT — view licence
- Copyright: © 2023 Chart.js Contributors
The MIT licence notice is retained in the distributed file.
GEO Optimizer
GEO Optimizer itself is released under the GNU General Public License v2.0 or later.