From bloggers. For bloggers.
No Schmarrn.
Just SEO.
Installation
Getting started
Start right away — no API key needed
You can install this today and it will quietly start doing things for your blog — without you creating any account or entering any code anywhere. These features kick in the moment you activate it:
- Fallback meta description (reads the opening of your post and trims it to 150–160 characters)
- Schema.org structured data (tells search engines and AI who you are)
- llms.txt (your content index for AI systems)
- robots.txt manager (block individual AI training bots)
- Crawler log (see which AI bots visit your site)
- Install the plugin.In your WordPress admin:
- Find it in the sidebar. You will see BreznGEO in your left admin menu.
- Fill in your site info. Go to BreznGEO → Settings. Set your organisation name, site type (blog, news site, company, etc.), and add social profile links if you have them. This powers the Schema.org data.
- Check your llms.txt. Open
yourdomain.com/llms.txtin a browser. You should see a list of your posts. That means it is working. - You are done. The plugin now adds structured data and a machine-readable content index to every page, automatically.
Add an API key for AI features
An API key is what unlocks the AI magic: the plugin calls an AI model when you publish, gets a description back, and saves it. That's the whole mechanism. Here's how to set it up:
- Get an API key from one of the four supported providers (see the section below). You only need one.
- Go to AI Provider settings: BreznGEO → AI Provider. Select your provider, paste the key, choose a model, and save.
- Pick a model. For meta descriptions, a cheap and fast model is perfect.
gpt-4o-mini,gemini-2.0-flash, orclaude-3-haikuall work great and cost fractions of a cent per post. - Publish a test post. Check the Meta Description (BreznGEO) box below the editor. You should see a freshly generated description. Done.
Configuration
API keys — demystified
An API key is a personal password for an AI service — a long string of letters and numbers you copy from their website and paste here. The plugin sends your post text to the AI, gets a description back, done. The bill goes directly to them, not through us.
You only need one key from one provider. Pick the one you already use, or go with Google Gemini if you want to start completely free.
OpenAI
gpt-4.1 · gpt-4o · gpt-4o-mini
The most well-known provider. GPT-4o mini is extremely cheap (~$0.001 per meta description) and writes solid descriptions. GPT-4.1 gives the highest quality for longer GEO blocks.
Anthropic Claude
claude-3-5-sonnet · claude-3-haiku
Excellent at following structured instructions — which makes it very reliable for the JSON-based GEO block generation. Claude Haiku is fast and economical.
Google Gemini
gemini-2.0-flash · gemini-1.5-pro
Gemini 2.0 Flash has a generous free tier and very fast responses. A great option if you want to start generating at zero cost while you decide whether to commit.
xAI Grok
grok-3 · grok-3-mini
A capable and competitively priced alternative from Elon Musk's AI company. Grok 3 mini works well for meta descriptions. Good option if you are already in the X ecosystem.
wp-config.php, you can define it there instead: define('BRE_OPENAI_KEY', 'sk-...');. The plugin picks it up automatically and nothing touches the database. Most bloggers don't need to bother with this.
Why it works
SEO & GEO — what does that actually mean?
You are already set up and running. Here is why any of this matters — and why the plugin does what it does every time you hit Publish.
Classic
SEO
Search Engine Optimisation. The art of convincing Google (and Bing, and friends) that your article is worth showing to people who search for a topic you cover.
The most visible piece is the meta description — that two-line summary Google shows beneath your link in search results. You have probably written dozens of them without realising they have a name. Most bloggers skip them and leave Google to guess. That guess is usually not great.
New kid on the block
GEO
Generative Engine Optimisation. When someone asks ChatGPT, Perplexity, or Google's AI Overview a question, the AI reads websites and generates an answer — often citing specific sources.
GEO is about making your content easy for AI to read, understand, and quote. Structured summaries, clear key points, a machine-readable content index — these increase the chance an AI says "according to your site" instead of your competitor's.
The big picture
What this plugin actually does for you
You write the posts. The plugin handles the discoverability stuff — automatically, on every publish, without charging you a cent. Here's the full list of what it does quietly in the background.
-
✏
Writes your meta descriptions for you That two-line snippet in Google search results — the one most bloggers leave empty or half-finished. The plugin reads your post and writes a tight, 150-character description the moment you hit publish. No more staring at a blank field.
-
📋
Tells AI systems what your site is about Generates structured data (Schema.org) that helps ChatGPT, Perplexity, and Google's AI understand who you are, what you write about, and why you are a credible source. This is the "invisible layer" of your site that most bloggers never set up.
-
📚
Creates a machine-readable index of your content Serves a special file called
llms.txt— basically a structured table of contents for AI systems. When an AI crawler visits your site, it can get an overview of everything you have written without having to crawl every single page. -
👁
Shows you which AI bots are visiting Logs every visit from known AI crawlers (GPTBot, ClaudeBot, Perplexity, etc.) and shows you a summary on the dashboard. You can also block specific bots that are just scraping your content to train their models — individually, with one checkbox.
-
🆕
Adds a "Quick Overview" block to your posts Generates a summary, key bullet points, and FAQ for each post — collapsed at the top of your content. Readers love it. AI systems love it even more: it gives them a pre-structured answer to extract and cite. Optional, fully editable.
-
🔗
Suggests internal links while you write Analyses your post and finds which of your other posts would make a good link — with the exact phrase to link and the target post. You review, tick what you want, confirm. Links go in automatically at the right spot. Nothing without your approval. Most SEO tools charge extra for this. BreznGEO includes it free.
What's in the box
Every feature, explained without the jargon
AI Meta Descriptions BreznGEO → Meta Generator
What it does for you: Every time you publish, the plugin calls an AI model with your post title and content and gets back a tight 150–160 character description. That becomes the snippet Google shows under your link in search results. A good snippet = more people click. More clicks = Google likes you more. You probably haven't written a single meta description in years. Now you don't have to.
{title}, {content}, {excerpt}, {language} placeholders. Language detection is automatic (Polylang and WPML supported). If you use Rank Math, Yoast, AIOSEO, or SEOPress, the description is written directly into that plugin's field — not a separate one. Works with your existing SEO setup, not against it. If no API key is configured, it falls back to a smart sentence-boundary extraction from your post content.
Bulk Generator BreznGEO → Bulk Generator
What it does for you: Got 80 old posts with no meta descriptions? Don't open them one by one. Hit Start, go make coffee, come back to a fully processed archive. Every post that was missing a description now has one. The ones that already had one are skipped. It's as boring to run as it sounds — which is exactly the point.
Schema.org Structured Data BreznGEO → Settings → Schema
What it does for you: Adds invisible structured data to every page — who wrote it, what it's about, when it was published, what kind of site this is. You never see it. Search engines and AI systems do. They use it to decide if you're a credible source worth showing to people. Think of it as leaving a clear business card for robots.
sameAs references. Schema output is automatically suppressed for sections that Rank Math or Yoast already handle, so you never get duplicate structured data.
GEO Quick Overview Block BreznGEO → GEO Block
What it does for you: Adds a collapsible box at the top of each post with a short summary, key bullet points, and (for longer posts) a FAQ. Human readers love it — they can scan the gist before committing to the full read. AI systems love it even more: it's pre-structured content they can extract directly and quote. If you want ChatGPT to cite your blog, this box is your best shot.
llms.txt BreznGEO → llms.txt
What it does for you: Creates a file at yourdomain.com/llms.txt — basically a structured table of contents for AI systems. Instead of making a crawler visit every page on your site, you hand it a clean list of everything you've written and where to find it. It's a new standard that AI companies have started to support, and it costs you nothing to have one. The plugin generates and maintains it automatically.
robots.txt Manager BreznGEO → robots.txt
What it does for you: Some AI companies send bots to harvest your content for model training — no traffic back to you, just a free lunch at your expense. This feature lets you block them one by one. One checkbox per bot, done. No editing files, no FTP, no touching your server. Block the ones that take, allow the ones that send you visitors.
Internal Link Suggestions BreznGEO → Link Suggestions
What it does for you: Internal links — links from one of your posts to another — are one of the strongest on-page SEO signals and one of the most tedious things to do manually. BreznGEO analyses your post content, finds phrases that match your existing posts, scores them by relevance, and presents a short list in the editor sidebar. You tick the ones you want and confirm. That's it. Links are inserted at the first unlinked occurrence of each phrase. Nothing is inserted automatically — you stay in control at every step. Most SEO tools lock this behind a paid tier. BreznGEO includes it for free.
Crawler Log BreznGEO → Dashboard
What it does for you: Shows you which AI bots visit your site, how often, and when. (Yes, GPTBot is probably already on your site. Don't panic — that's a good thing.) If Perplexity visits frequently, your content is likely showing up in Perplexity answers. If a bot you've blocked keeps appearing, you know something's off. It's a window into the AI traffic most bloggers don't even know they have.
Common questions
FAQ
Does this replace Yoast / Rank Math / AIOSEO?
Not necessarily — and it does not have to. BreznGEO is designed to work alongside existing SEO plugins. If Rank Math or Yoast is active, BreznGEO writes the AI-generated description directly into their meta field and suppresses duplicate Schema.org output. You keep your existing setup; BreznGEO adds the AI layer on top.
Will this get my site to #1 on Google?
No tool can promise that — and any plugin that does is lying. What this plugin does is handle the technical basics correctly and automatically: meta descriptions that are the right length, structured data that is correctly formatted, a content index that AI systems can read. These are table stakes, not magic. Rankings still depend on your content quality and backlinks.
How much does the AI usage actually cost?
Very little. A single meta description is around 1,500 tokens. With GPT-4o mini that is roughly $0.001 per post. For 1,000 posts: about $1. The GEO Quick Overview block uses more tokens (~800 per post) but is still well under $0.01 each with a budget model. Real-world data from Donau2Space.de: 175 AI operations in one day — total cost $0.49 with GPT-4.1.
What happens if the AI returns a bad description?
You have full control. Every post has a Meta Description editor box. Open the post, read what was generated, edit it if needed, save. You can also regenerate with one click. The AI description is a starting point — not a locked-in result.
I write in German. Will the descriptions be in German?
Yes. The plugin automatically detects your WordPress site language and tells the AI to generate in that language. It also supports Polylang and WPML, so multilingual sites get descriptions in the correct language per post. The detection covers 30+ locales out of the box.
Is my API key safe?
API keys entered via the admin UI are obfuscated using XOR encryption with a key derived from your WordPress authentication salts before being stored in the database. They are never stored or transmitted in plain text. The admin UI always shows keys masked — only the last 5 characters visible. For maximum security, define your key in wp-config.php instead — it is then never stored in the database at all.
How do Internal Link Suggestions work without an AI key?
BreznGEO tokenises your post content and all candidate posts, then scores matches using four weighted signals: title keyword overlap (×3), tag overlap (×2), post excerpt overlap (×1.5), and category overlap (×1) — no AI needed. The anchor phrase is picked from the candidate's full topic (title + tags + excerpt + categories), so a post about the Danube can link to a Deggendorf post via a shared tag, even if "Deggendorf" never appears in your article. If you connect an API key and enable "Link Suggestions" in the Dashboard AI Features card, the top-scoring candidates are optionally re-ranked by the AI for semantic relevance. AI re-ranking is an optional upgrade; the keyword-only mode is already effective for most blogs.
The GEO Quick Overview block shows strange characters (like u00e4 instead of ä). What do I do?
This was a bug in versions before 1.1.1. Update the plugin to v1.1.1 or later — the encoding issue is fixed. If you already have the latest version and still see it, regenerate the affected block by opening the post and clicking Regenerate in the GEO editor box.
For theme developers
GEO Block — CSS classes & custom properties
You're a blogger. Skip this section. Seriously. The built-in settings (accent colour, theme picker) cover most needs. Everything below is for developers who want additional control or want to style the GEO block from scratch in their theme.
The GEO block renders a single <details> element. All styling is scoped to .bre-geo and driven by CSS custom properties. You can override any token globally in your theme stylesheet.
HTML structure
<!-- Rendered by renderBlock() — attributes vary by settings --> <details class="bre-geo" data-bre="geo" data-bre-theme="light" <!-- "light" | "dark" | "minimal" | "bavarian" --> style="--bre-accent:#e67e22;" <!-- only when accent color is set --> open> <!-- only when output_style = open_always --> <summary> <span class="bre-geo__title">Quick Overview</span> </summary> <div class="bre-geo__section bre-geo__summary"> <h3>Summary</h3> <p>...</p> </div> <div class="bre-geo__section bre-geo__bullets"> <h3>Key Points</h3> <ul><li>...</li></ul> </div> <div class="bre-geo__section bre-geo__faq"> <h3>FAQ</h3> <dl> <dt>Question?</dt> <dd>Answer.</dd> </dl> </div> </details>
CSS classes
| Class | Element | Notes |
|---|---|---|
| .bre-geo | <details> |
Root element. All custom properties live here. Carries data-bre-theme attribute set to the active theme name. |
| .bre-geo__title | <span> |
Block title inside the summary bar. Configurable in settings ("Quick Overview" by default). |
| .bre-geo__section | <div> |
Wrapper for each content section. Has top border and padding. |
| .bre-geo__summary | <div> |
The summary text section. Contains <h3> + <p>. |
| .bre-geo__bullets | <div> |
Key points section. Contains <h3> + <ul>. |
| .bre-geo__faq | <div> |
FAQ section. Contains <h3> + <dl> with <dt>/<dd> pairs. |
Built-in themes
| data-bre-theme value | Description |
|---|---|
light | Default. Light gray card, WordPress blue accent. |
dark | Dark background for dark-mode sites. |
minimal | No outer box. Left border stripe only. No accent colour. |
bavarian | Bavarian blue. Summary bar with CSS diamond (Rauten) pattern. |
CSS custom properties
| Property | Light default | Dark default | Controls |
|---|---|---|---|
| --bre-accent | #0073aa | #4ea8d8 | Summary bar left border stripe + expand arrow |
| --bre-bg | #fafafa | #1e1e1e | Block background |
| --bre-border | #e0e0e0 | #3d3d3d | Outer block border |
| --bre-sec-border | #e0e0e0 | #3d3d3d | Section separator borders |
| --bre-label | #666 | #999 | Section heading text (SUMMARY, KEY POINTS, FAQ) |
| --bre-faq-ans | #444 | #bbb | FAQ answer text |
Customisation examples
/* ① Override a token in your theme stylesheet — affects all GEO blocks */ .bre-geo { --bre-accent: #e67e22; } /* ② Target a specific theme variant */ .bre-geo[data-bre-theme="minimal"] { border-left-color: #e67e22; } /* ③ Target a specific page or post type */ .single-review .bre-geo__faq { display: none; } /* ④ Opt out of all plugin CSS — style .bre-geo from scratch in your theme */ Add to your theme's functions.php: wp_dequeue_style( 'brezngeo-geo-frontend' );