Features

Everything the plugin does, in one page.

No marketing fluff. A straight list of what Dennis GEO writes into your site's markup, what it generates on the edge, and what it exposes in the WordPress admin.

§ 01 — Structured data

Schema.org JSON-LD, emitted automatically.

All structured data is output as valid JSON-LD in the document head, tested against Google's Rich Results Test and Schema.org validator.

Schema types supported

  • Organization / LocalBusiness — site-wide, with address, phone, geo, hours, sameAs
  • WebSite — with SearchAction for site-search
  • WebPage, AboutPage, ContactPage, FAQPage, CollectionPage
  • Article / BlogPosting — with author, datePublished, wordCount
  • Service — with provider, areaServed, offers, priceRange
  • BreadcrumbList — on every page
  • FAQPage — auto-generated from core/details blocks

§ 02 — AI crawler files

llms.txt and llms-full.txt — built in.

Dennis GEO generates and serves both files automatically. llms.txt is a short manifest listing your most important pages. llms-full.txt is the full readable content of your site, stripped of navigation and rendered as clean Markdown — a format that's cheap for language models to consume. The convention is still early — many well-known companies already publish one, and crawler-side adoption is growing. It costs almost nothing to serve and gives your site a head start. Read our longer write-up for the full picture.

What's included

  • Auto-regenerated on publish / update
  • Per-page include/exclude toggles
  • Per-page llms.txt descriptions in your site's language
  • Served at /llms.txt and /llms-full.txt
  • Linked from the document <head> via <link rel="llms">

§ 03 — Per-page controls

The meta box every content editor actually uses.

A single unified meta box appears on every post, page, and custom post type. Twelve fields, grouped logically, with live character counting and preview.

Fields

  • SEO title — 60-char limit, live preview
  • Meta description — 155-char limit, live preview
  • Focus keyphrase — single target term
  • Canonical URL — override default permalink
  • Robots — noindex, nofollow toggles
  • OG title & description — separate from SEO
  • OG image — per-page social share image
  • Schema type — 8 options including Service and FAQPage
  • llms.txt include — yes / no / default
  • llms.txt description — 1–2 factual sentences for AI

§ 04 — GEO audit

A score, a breakdown, and a fix list.

The audit dashboard scores your site 0–100% across three dimensions and tells you exactly what's missing.

  • Global (30%): business data, schema settings, social profiles, llms.txt configuration
  • Per-page (60%): title, description, keyphrase, schema, OG, llms.txt coverage across all published posts
  • llms-full.txt (10%): content quality and length of the generated manifest

Run it any time. Re-run it after changes. The score moves immediately. If it's low, Dennis can help — but he won't judge.

§ 05 — Technical

Built for production WordPress sites.

  • PHP 8.0+
  • WordPress 6.0+
  • Works with every major theme, including block themes
  • Compatible with WooCommerce 8.0+
  • Settings and fields manageable via standard WP-CLI commands
  • No external dependencies at runtime
  • GPL-2.0 licensed, source available

See it in action.

GEO Audit dashboard showing 93% AI visibility score with global settings and per-page checks
GEO Audit — see your AI visibility score and exactly what to fix.
Dennis GEO meta box in the WordPress editor with SEO title, meta description, focus keyphrase, and character counters
Per-page SEO fields — title, description, keyphrase, canonical, and robots.
Dennis GEO settings page with site identity, business info, schema, and llms.txt configuration
Global settings — business info, schema, llms.txt, social profiles, and more.
AI populate modal showing automatic field generation for $19 one-time payment
AI populate — fill all fields automatically with one click ($19, one-time).

Ready to structure your site?

Install the free plugin and run your first GEO audit in under five minutes.