=== Dennis GEO – AI Visibility ===
Contributors: uppereight
Tags: seo, geo, ai, schema, llms.txt
Requires at least: 6.4
Tested up to: 6.9
Requires PHP: 8.0
Stable tag: 1.4.3
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

AI visibility plugin. Schema, llms.txt, and structured SEO fields for ChatGPT, Perplexity, and Google AI Overviews.

== Description ==

Dennis GEO is a free WordPress plugin for **Generative Engine Optimization (GEO)** — the practice of structuring your site so AI search engines can read, understand, and cite it.

When someone asks ChatGPT, Perplexity, or Google's AI Overviews a question, the AI composes an answer from whichever web pages it can parse clearly. If your site lacks the structural signals these models rely on, it gets skipped. Dennis GEO adds those signals — without touching your theme.

= What it does =

* **Organization / LocalBusiness schema** — Full JSON-LD with address, phone, hours, geo coordinates, and social profiles
* **FAQ schema** — Auto-detected from WordPress Details blocks, output as FAQPage structured data
* **llms.txt & llms-full.txt** — The emerging standard for AI crawler guidance, generated automatically from your sitemap
* **Per-page SEO fields** — Title, meta description, focus keyphrase, OG tags, canonical URL, robots directives
* **Schema type per page** — Service, ContactPage, AboutPage, FAQPage, Article, WebPage, CollectionPage, BlogPosting
* **Smart sitemap.xml** — Respects noindex, pings search engines on update
* **Breadcrumb schema** — BreadcrumbList on every page
* **GEO audit dashboard** — Scores your site 0–100% across global settings, per-page fields, and llms.txt coverage
* **Service offer markup** — Offer and priceRange schema on service pages
* **Archive descriptions** — Templated meta descriptions for category, tag, and post type archives
* **AI crawler management** — Control access for GPTBot, ClaudeBot, PerplexityBot and others via robots.txt
* **WooCommerce compatible** — Respects WooCommerce product schema

= AI Populate (optional, $19) =

Don't want to type meta descriptions for 40 pages? Dennis can do it. The AI Populate service reads your site, drafts every field in your site's language, and populates them directly — live immediately. One-time charge per site, no subscription. Fields you've already filled are left as they are.

= Works alongside Yoast =

Dennis GEO detects Yoast and takes over field by field — if a Dennis field is filled, Dennis handles the output; if it's empty, Yoast keeps control. You can also migrate Yoast data into Dennis GEO with one click.

= Who is Dennis? =

The guy in the logo. Reads your entire website in about two minutes, then fills in every meta description without complaining. Never says no, always happy to help. We don't know how he does it, but we like him.

== Installation ==

1. Upload the plugin files to `/wp-content/plugins/dennis-geo/` or install through the WordPress plugin directory.
2. Activate the plugin through the 'Plugins' screen in WordPress.
3. Go to **Dennis GEO → Settings** and fill in your business information.
4. Run the **GEO Audit** to see your baseline score and get recommendations.

== Frequently Asked Questions ==

= Is the plugin free? =

Yes. The plugin and every feature in it are free. The optional AI Populate service costs $19 one-time per site but is never required.

= What is Generative Engine Optimization (GEO)? =

GEO is the practice of structuring a website so AI search engines can accurately read, understand, and cite it. It overlaps with classic SEO but emphasizes structured data, entity clarity, and content that's easy for language models to quote.

= Can I use it if I already have Yoast installed? =

Yes. Dennis GEO works alongside Yoast without conflicts. You don't need to uninstall anything first.

= Does it slow down my site? =

No. All structuring happens at edit-time and output is cached markup. No extra PHP work is added to visitor pageloads.

= Do I need WooCommerce? =

No. Dennis GEO works on any WordPress site — service businesses, blogs, portfolios, shops. WooCommerce gets some bonus product schema but isn't required.

= What does the AI Populate service do? =

It reads your existing content and drafts every SEO and GEO field — titles, descriptions, keyphrases, llms.txt entries, schema types. Fields are populated directly and go live immediately. You can review and edit them anytime in the WordPress editor.

== Screenshots ==

1. GEO Audit dashboard — scores your site 0–100% with detailed breakdown of global settings, page SEO, and llms.txt coverage
2. Per-page SEO meta box — SEO title with character counter, meta description, focus keyphrase, canonical URL, and robots directives
3. Settings page — site identity, schema configuration, social profiles, llms.txt, and AI crawler management
4. AI Populate modal — let Dennis fill every SEO and GEO field automatically for $19 one-time

== Changelog ==

= 1.4.3 =
* Inline CSS/JS extracted to separate enqueued files (WP.org compliance)
* Added privacy policy suggestion via wp_add_privacy_policy_content()
* Added post-audit recommendations with context-aware tips
* Added Google Maps coordinate extraction helper
* Added "Clear Dennis GEO Fields" tool with per-page and global options
* AI Populate now skips non-empty fields (preserves hand-written content)
* Updated button text from "Pay & Populate" to "Checkout"
* Added Dennis logo to admin menu and AI Populate modal
* Full translations: Swedish, Spanish, German, French
* Fixed Yoast compatibility FAQ to reflect actual behavior

= 1.4.0 =
* Initial public release
* Organization/LocalBusiness schema with full address, geo, hours
* FAQ schema auto-detection from core/details blocks
* llms.txt and llms-full.txt generation
* Per-page SEO fields (12 fields)
* GEO audit dashboard (0–100% scoring)
* AI Populate service ($19 one-time)
* Yoast SEO compatibility layer
* Import/export SEO data
* AI crawler management via robots.txt
* WooCommerce compatibility

== Upgrade Notice ==

= 1.4.3 =
WP.org compliance update. Translations added. AI Populate now preserves existing fields.
