release: BreznGEO v1.0.0 — complete rebrand, no Bavarian Rank Engine remnants
- All BRE/bavrank/bavarian-rank-engine identifiers removed - geo-frontend.css: .bre-geo → .brezngeo-geo, data-bre-theme → data-brezngeo-theme, bavarian theme → brezn - link-suggest.js + LinkSuggest.php: bavrankLinkSuggest → brezngeoLinkSuggest - Language files: all BRE abbreviations and Bavarian Rank Engine strings replaced - readme.txt: changelog cleaned to single v1.0.0 entry, Stable tag 1.0.0 - release.yml: build paths updated to brezngeo - README.md + README.de.md: all BRE abbreviations and old GitHub URLs replaced Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
90d4979b5d
commit
124504e11e
13 changed files with 137 additions and 216 deletions
6
.github/workflows/release.yml
vendored
6
.github/workflows/release.yml
vendored
|
|
@ -22,11 +22,11 @@ jobs:
|
|||
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Create ZIP
|
||||
run: zip -r bavarian-rank-engine.zip bavarian-rank-engine/
|
||||
run: zip -r brezngeo.zip brezngeo/
|
||||
|
||||
- name: Create GitHub Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
name: "Bavarian Rank Engine v${{ steps.version.outputs.version }}"
|
||||
files: bavarian-rank-engine.zip
|
||||
name: "BreznGEO v${{ steps.version.outputs.version }}"
|
||||
files: brezngeo.zip
|
||||
generate_release_notes: true
|
||||
|
|
|
|||
34
README.de.md
34
README.de.md
|
|
@ -1,4 +1,4 @@
|
|||
# Bavarian Rank Engine
|
||||
# BreznGEO
|
||||
|
||||

|
||||

|
||||
|
|
@ -8,11 +8,11 @@
|
|||
|
||||
🇬🇧 [English version → README.md](README.md)
|
||||
|
||||
**Website:** [bavarianrankengine.com](https://bavarianrankengine.com) · [How To](https://bavarianrankengine.com/howto.html) · [FAQ](https://bavarianrankengine.com/faq.html) · [Changelog](https://bavarianrankengine.com/changelog.html)
|
||||
**Website:** [brezngeo.com](https://brezngeo.com) · [How To](https://brezngeo.com/howto.html) · [FAQ](https://brezngeo.com/faq.html) · [Changelog](https://brezngeo.com/changelog.html)
|
||||
|
||||
---
|
||||
|
||||
Bavarian Rank Engine ist ein schlankes SEO- & GEO-Plugin für WordPress. Es generiert KI-Metabeschreibungen, gibt Schema.org-Strukturdaten aus, erstellt GEO-Inhaltsblöcke für KI-Engines und verwaltet den Crawler-Zugriff über robots.txt und llms.txt — alles in einem Plugin, ohne dass etwas hinter einer Paywall versteckt wird.
|
||||
BreznGEO ist ein schlankes SEO- & GEO-Plugin für WordPress. Es generiert KI-Metabeschreibungen, gibt Schema.org-Strukturdaten aus, erstellt GEO-Inhaltsblöcke für KI-Engines und verwaltet den Crawler-Zugriff über robots.txt und llms.txt — alles in einem Plugin, ohne dass etwas hinter einer Paywall versteckt wird.
|
||||
|
||||
Es funktioniert mit oder ohne KI-Key. Es integriert sich ohne Konflikte in Rank Math, Yoast, AIOSEO und SEOPress. Kein SaaS. Keine Telemetrie. Keine Upsells.
|
||||
|
||||
|
|
@ -24,12 +24,12 @@ Die meisten WordPress-SEO-Plugins haben sich in die gleiche Richtung entwickelt:
|
|||
|
||||
Die KI-Welle hat es schlimmer gemacht. Plugins fingen an, „KI-gestützte" Features anzubieten — aber als Proxy-Dienst. Man zahlt eine monatliche Gebühr, die Inhalte werden über deren Server geleitet, sie rufen die KI-API im eigenen Namen auf und schlagen eine Marge drauf.
|
||||
|
||||
BRE verfolgt einen anderen Ansatz:
|
||||
BreznGEO verfolgt einen anderen Ansatz:
|
||||
|
||||
- **Direkter API-Zugriff.** Du hinterlegst deinen eigenen Key von OpenAI, Anthropic, Google oder xAI. BRE ruft die API direkt auf. Kein Mittelsmann, keine Marge, keine Daten über Server Dritter.
|
||||
- **Direkter API-Zugriff.** Du hinterlegst deinen eigenen Key von OpenAI, Anthropic, Google oder xAI. BreznGEO ruft die API direkt auf. Kein Mittelsmann, keine Marge, keine Daten über Server Dritter.
|
||||
- **Klarer Output, kein Lärm.** Metabeschreibungen, Strukturdaten, KI-Inhaltsblöcke für GEO, Bot-Steuerung. Keine Lesbarkeits-Scores, keine Keyword-Dichte-Meter, keine Upsell-Banner.
|
||||
- **Keine Subscription.** GPL-2.0. Kostenlos auf beliebig vielen Sites nutzbar. Die einzigen Kosten sind die API-Nutzung — typischerweise Bruchteile eines Cents pro Beitrag.
|
||||
- **Keine Telemetrie.** BRE sendet keine Daten nach Hause. Kein Usage-Tracking, kein Remote-Logging, keine Analytics, die den eigenen Server verlassen.
|
||||
- **Keine Telemetrie.** BreznGEO sendet keine Daten nach Hause. Kein Usage-Tracking, kein Remote-Logging, keine Analytics, die den eigenen Server verlassen.
|
||||
- **Funktioniert ohne KI.** Kein API-Key? Der Fallback-Extraktor erzeugt eine brauchbare Metabeschreibung aus dem Artikelinhalt per Satzgrenzenerkennung. Jeder Beitrag bekommt eine Beschreibung.
|
||||
|
||||
Entwickelt in Passau, Bayern — für [Donau2Space](https://donau2space.de), einen persönlichen KI-Blog, für den ich genau das gebraucht habe — und nichts mehr.
|
||||
|
|
@ -55,8 +55,8 @@ Entwickelt in Passau, Bayern — für [Donau2Space](https://donau2space.de), ein
|
|||
## Verzeichnisstruktur
|
||||
|
||||
```
|
||||
bavarian-rank-engine/
|
||||
├── bavarian-rank-engine.php # Plugin-Header, Konstanten (BRE_VERSION, BRE_DIR, BRE_URL)
|
||||
brezngeo/
|
||||
├── brezngeo.php # Plugin-Header, Konstanten (BRE_VERSION, BRE_DIR, BRE_URL)
|
||||
├── uninstall.php # Aufräumen bei Plugin-Löschung
|
||||
├── assets/
|
||||
│ ├── admin.css # Gemeinsames Admin-Stylesheet
|
||||
|
|
@ -126,7 +126,7 @@ Generiert SEO-optimierte Meta-Beschreibungen (150–160 Zeichen) automatisch bei
|
|||
| Yoast SEO | `_yoast_wpseo_metadesc` |
|
||||
| AIOSEO | `_aioseo_description` |
|
||||
| SEOPress | `_seopress_titles_desc` |
|
||||
| (keins aktiv) | BRE gibt `<meta name="description">` selbst aus |
|
||||
| (keins aktiv) | BreznGEO gibt `<meta name="description">` selbst aus |
|
||||
|
||||
**Token-Modus:** Wahlweise wird der gesamte Artikelinhalt gesendet (`full`) oder auf eine konfigurierbare Token-Anzahl (100–8000) gekürzt (`limit`). Das Kürzen erfolgt über `TokenEstimator` — eine wortbasierte Schätzung ohne externe Bibliothek.
|
||||
|
||||
|
|
@ -158,7 +158,7 @@ Alle Labels, Akzentfarbe, Farbschema (Auto/Hell/Dunkel) und Custom CSS sind übe
|
|||
|
||||
### Schema.org Enhancer
|
||||
|
||||
Gibt JSON-LD-Strukturdaten und Meta-Tags in `<head>` aus. Einstellungen unter **Bavarian Rank → Schema.org**. Jeder Typ ist einzeln aktivierbar:
|
||||
Gibt JSON-LD-Strukturdaten und Meta-Tags in `<head>` aus. Einstellungen unter **BreznGEO → Schema.org**. Jeder Typ ist einzeln aktivierbar:
|
||||
|
||||
| Typ | Schema.org-Type | Hinweis |
|
||||
|---|---|---|
|
||||
|
|
@ -185,7 +185,7 @@ Bedient `/llms.txt` und paginierte Folgedateien über einen `parse_request`-Hook
|
|||
|
||||
**HTTP-Caching:** ETag, Last-Modified, Cache-Control. Transient-Cache wird bei jeder Einstellungsänderung automatisch invalidiert.
|
||||
|
||||
**Rank Math Konfliktwarnung:** Falls Rank Math ebenfalls eine llms.txt ausliefern will, zeigt BRE einen Admin-Hinweis an — BRE hat wegen Priorität 1 automatisch Vorrang.
|
||||
**Rank Math Konfliktwarnung:** Falls Rank Math ebenfalls eine llms.txt ausliefern will, zeigt BreznGEO einen Admin-Hinweis an — BreznGEO hat wegen Priorität 1 automatisch Vorrang.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -349,18 +349,18 @@ Alle Endpunkte erfordern `manage_options` (kein `nopriv`).
|
|||
## Installation
|
||||
|
||||
**Via GitHub Release (empfohlen):**
|
||||
1. `bavarian-rank-engine.zip` vom [neuesten Release](https://github.com/noschmarrn/bavarianrankengine/releases/latest) herunterladen
|
||||
1. `brezngeo.zip` vom [neuesten Release](https://github.com/noschmarrn/brezngeo/releases/latest) herunterladen
|
||||
2. In WordPress unter *Plugins → Installieren → Plugin hochladen* einspielen
|
||||
|
||||
**Manuell (clone):**
|
||||
```bash
|
||||
cd /path/to/wordpress/wp-content/plugins/
|
||||
git clone https://github.com/noschmarrn/bavarianrankengine.git bavarian-rank-engine
|
||||
wp plugin activate bavarian-rank-engine
|
||||
git clone https://github.com/noschmarrn/brezngeo.git brezngeo
|
||||
wp plugin activate brezngeo
|
||||
```
|
||||
|
||||
**Nach der Aktivierung:**
|
||||
1. *Bavarian Rank → AI Provider* — Provider wählen, API-Key hinterlegen, Verbindungstest
|
||||
1. *BreznGEO → AI Provider* — Provider wählen, API-Key hinterlegen, Verbindungstest
|
||||
2. *Meta Generator* — Auto-Modus aktivieren, Post-Types auswählen
|
||||
|
||||
Kein JavaScript-Build-Step. Alle Assets unter `assets/` sind direkte JS/CSS-Dateien.
|
||||
|
|
@ -372,12 +372,12 @@ Kein JavaScript-Build-Step. Alle Assets unter `assets/` sind direkte JS/CSS-Date
|
|||
| Komponente | Technologie |
|
||||
|---|---|
|
||||
| Backend | PHP 8.0+, WordPress Plugin API |
|
||||
| Namespace | `BavarianRankEngine\` |
|
||||
| Namespace | `BreznGEO\` |
|
||||
| Architektur | Singleton-Core, Registry-Pattern (Provider), Feature-Klassen mit `register()` |
|
||||
| Datenbank | WordPress Options API, `wpdb` (eigene Tabelle für CrawlerLog) |
|
||||
| Caching | WordPress Transients |
|
||||
| Frontend | Vanilla JS + jQuery (WordPress-integriert), kein Build-Step |
|
||||
| I18n | `.pot`-File, Text-Domain `bavarian-rank-engine` |
|
||||
| I18n | `.pot`-File, Text-Domain `brezngeo` |
|
||||
| Tests | PHPUnit (102 Tests, 216 Assertions) |
|
||||
| Coding Standard | WordPress PHPCS |
|
||||
| Lizenz | GPL-2.0-or-later |
|
||||
|
|
|
|||
42
README.md
42
README.md
|
|
@ -1,4 +1,4 @@
|
|||
# Bavarian Rank Engine
|
||||
# BreznGEO
|
||||
|
||||

|
||||

|
||||
|
|
@ -8,11 +8,11 @@
|
|||
|
||||
🇩🇪 [Deutsche Version → README.de.md](README.de.md)
|
||||
|
||||
**Website:** [bavarianrankengine.com](https://bavarianrankengine.com) · [How To](https://bavarianrankengine.com/howto.html) · [FAQ](https://bavarianrankengine.com/faq.html) · [Changelog](https://bavarianrankengine.com/changelog.html)
|
||||
**Website:** [brezngeo.com](https://brezngeo.com) · [How To](https://brezngeo.com/howto.html) · [FAQ](https://brezngeo.com/faq.html) · [Changelog](https://brezngeo.com/changelog.html)
|
||||
|
||||
---
|
||||
|
||||
Bavarian Rank Engine is a lightweight SEO & GEO plugin for WordPress. It generates AI-powered meta descriptions, outputs Schema.org structured data, creates GEO content blocks for AI engines, and manages crawler access via robots.txt and llms.txt — all in one plugin, nothing hidden behind a paywall.
|
||||
BreznGEO is a lightweight SEO & GEO plugin for WordPress. It generates AI-powered meta descriptions, outputs Schema.org structured data, creates GEO content blocks for AI engines, and manages crawler access via robots.txt and llms.txt — all in one plugin, nothing hidden behind a paywall.
|
||||
|
||||
It works with or without an AI key. It integrates without conflicts into Rank Math, Yoast, AIOSEO, and SEOPress. No SaaS. No telemetry. No upsells.
|
||||
|
||||
|
|
@ -24,12 +24,12 @@ Most WordPress SEO plugins have evolved in the same direction: bloated feature s
|
|||
|
||||
The AI wave made it worse. Plugins started offering "AI-powered" features — but as a proxy service. You pay a monthly fee, your content goes through their servers, they call the AI API on your behalf and add a margin on top.
|
||||
|
||||
BRE takes a different approach:
|
||||
BreznGEO takes a different approach:
|
||||
|
||||
- **Direct API access.** You store your own key from OpenAI, Anthropic, Google, or xAI. BRE calls the API directly. No middleman, no margin, no data passing through third-party servers.
|
||||
- **Direct API access.** You store your own key from OpenAI, Anthropic, Google, or xAI. BreznGEO calls the API directly. No middleman, no margin, no data passing through third-party servers.
|
||||
- **Clear output, not noise.** Meta descriptions, structured data, GEO content blocks, bot management. No readability scores, no keyword density meters, no upsell banners.
|
||||
- **No subscription.** GPL-2.0. Free to use on any number of sites. The only costs are API usage — typically fractions of a cent per post.
|
||||
- **No telemetry.** BRE sends no data home. No usage tracking, no remote logging, no analytics leaving your server.
|
||||
- **No telemetry.** BreznGEO sends no data home. No usage tracking, no remote logging, no analytics leaving your server.
|
||||
- **Works without AI.** No API key? The fallback extractor generates a usable meta description from post content using sentence boundary detection. Every post gets a description.
|
||||
|
||||
Built in Passau, Bavaria — for [Donau2Space](https://donau2space.de), a personal AI blog, where exactly this was needed — and nothing more.
|
||||
|
|
@ -55,8 +55,8 @@ Built in Passau, Bavaria — for [Donau2Space](https://donau2space.de), a person
|
|||
## Directory Structure
|
||||
|
||||
```
|
||||
bavarian-rank-engine/
|
||||
├── bavarian-rank-engine.php # Plugin header, constants (BRE_VERSION, BRE_DIR, BRE_URL)
|
||||
brezngeo/
|
||||
├── brezngeo.php # Plugin header, constants (BRE_VERSION, BRE_DIR, BRE_URL)
|
||||
├── uninstall.php # Cleanup on plugin deletion
|
||||
├── assets/
|
||||
│ ├── admin.css # Shared admin stylesheet
|
||||
|
|
@ -126,7 +126,7 @@ Generates SEO-optimized meta descriptions (150–160 characters) automatically w
|
|||
| Yoast SEO | `_yoast_wpseo_metadesc` |
|
||||
| AIOSEO | `_aioseo_description` |
|
||||
| SEOPress | `_seopress_titles_desc` |
|
||||
| (none active) | BRE outputs `<meta name="description">` itself |
|
||||
| (none active) | BreznGEO outputs `<meta name="description">` itself |
|
||||
|
||||
**Token mode:** Either the full post content is sent (`full`) or it is trimmed to a configurable token count (100–8000) (`limit`). Trimming is handled by `TokenEstimator` — a word-based estimate without external libraries, using a ratio of ~0.75 words per token.
|
||||
|
||||
|
|
@ -160,7 +160,7 @@ All labels (title, summary, key points, FAQ), the accent color, color scheme (au
|
|||
|
||||
### Schema.org Enhancer
|
||||
|
||||
Outputs JSON-LD structured data and meta tags in `<head>`. Settings under **Bavarian Rank → Schema.org**. Each type is individually toggleable:
|
||||
Outputs JSON-LD structured data and meta tags in `<head>`. Settings under **BreznGEO → Schema.org**. Each type is individually toggleable:
|
||||
|
||||
| Type | Schema.org Type | Notes |
|
||||
|---|---|---|
|
||||
|
|
@ -207,13 +207,13 @@ Serves `/llms.txt` and paginated follow-up files (`/llms-2.txt`, `/llms-3.txt`
|
|||
- `Cache-Control: public, max-age=3600`
|
||||
- Transient cache is automatically invalidated on every settings change
|
||||
|
||||
**Rank Math conflict notice:** If Rank Math also wants to serve an llms.txt, BRE shows an admin notice — BRE takes precedence automatically due to priority 1.
|
||||
**Rank Math conflict notice:** If Rank Math also wants to serve an llms.txt, BreznGEO shows an admin notice — BreznGEO takes precedence automatically due to priority 1.
|
||||
|
||||
---
|
||||
|
||||
### robots.txt Manager
|
||||
|
||||
Appends `Disallow` blocks via the WordPress filter `robots_txt` — WordPress's own robots.txt is preserved; BRE only extends it.
|
||||
Appends `Disallow` blocks via the WordPress filter `robots_txt` — WordPress's own robots.txt is preserved; BreznGEO only extends it.
|
||||
|
||||
Supported AI bots (all individually toggleable):
|
||||
|
||||
|
|
@ -358,7 +358,7 @@ Results are cached for 1 hour in the transient cache (`bre_link_analysis`).
|
|||
Plaintext key → XOR(key, sha256(AUTH_KEY . SECURE_AUTH_KEY)) → base64 → "bre1:<base64>"
|
||||
```
|
||||
|
||||
`BavarianRankEngine\Helpers\KeyVault` obfuscates API keys before writing to `wp_options`:
|
||||
`BreznGEO\Helpers\KeyVault` obfuscates API keys before writing to `wp_options`:
|
||||
|
||||
1. A 64-byte salt is derived from the WordPress constants `AUTH_KEY` and `SECURE_AUTH_KEY` via `hash('sha256', ...)`.
|
||||
2. The plaintext is XOR'd byte-by-byte (salt is repeated as needed).
|
||||
|
|
@ -405,7 +405,7 @@ The crawler log stores IP addresses exclusively as SHA-256 hashes. The original
|
|||
|
||||
## AI Providers
|
||||
|
||||
BRE supports four providers, all implementing the same `ProviderInterface`:
|
||||
BreznGEO supports four providers, all implementing the same `ProviderInterface`:
|
||||
|
||||
| Provider | Class | API Base URL |
|
||||
|---|---|---|
|
||||
|
|
@ -418,7 +418,7 @@ BRE supports four providers, all implementing the same `ProviderInterface`:
|
|||
|
||||
```php
|
||||
// includes/Providers/YourProvider.php
|
||||
namespace BavarianRankEngine\Providers;
|
||||
namespace BreznGEO\Providers;
|
||||
|
||||
class YourProvider implements ProviderInterface {
|
||||
public function getId(): string { return 'yourprovider'; }
|
||||
|
|
@ -503,18 +503,18 @@ All endpoints are exclusively accessible to logged-in users with `manage_options
|
|||
## Installation
|
||||
|
||||
**Via GitHub Release (recommended):**
|
||||
1. Download `bavarian-rank-engine.zip` from the [latest release](https://github.com/noschmarrn/bavarianrankengine/releases/latest)
|
||||
1. Download `brezngeo.zip` from the [latest release](https://github.com/noschmarrn/brezngeo/releases/latest)
|
||||
2. In WordPress go to *Plugins → Add New → Upload Plugin*
|
||||
|
||||
**Manual (clone):**
|
||||
```bash
|
||||
cd /path/to/wordpress/wp-content/plugins/
|
||||
git clone https://github.com/noschmarrn/bavarianrankengine.git bavarian-rank-engine
|
||||
wp plugin activate bavarian-rank-engine
|
||||
git clone https://github.com/noschmarrn/brezngeo.git brezngeo
|
||||
wp plugin activate brezngeo
|
||||
```
|
||||
|
||||
**After activation:**
|
||||
1. Go to *Bavarian Rank → AI Provider*, select your provider and enter your API key
|
||||
1. Go to *BreznGEO → AI Provider*, select your provider and enter your API key
|
||||
2. Run the connection test
|
||||
3. Go to *Meta Generator*, enable auto mode and select post types
|
||||
|
||||
|
|
@ -527,12 +527,12 @@ The plugin has no JavaScript build step. All assets under `assets/` are direct J
|
|||
| Component | Technology |
|
||||
|---|---|
|
||||
| Backend | PHP 8.0+, WordPress Plugin API |
|
||||
| Namespace | `BavarianRankEngine\` |
|
||||
| Namespace | `BreznGEO\` |
|
||||
| Architecture | Singleton core, registry pattern (providers), feature classes with `register()` |
|
||||
| Database | WordPress Options API, `wpdb` (custom table for CrawlerLog) |
|
||||
| Caching | WordPress transients (llms.txt, link analysis, bulk lock) |
|
||||
| Frontend | Vanilla JS + jQuery (WordPress-bundled), no build step |
|
||||
| i18n | `.pot` file, text domain `bavarian-rank-engine` |
|
||||
| i18n | `.pot` file, text domain `brezngeo` |
|
||||
| Tests | PHPUnit (102 tests, 216 assertions) |
|
||||
| Coding standard | WordPress PHPCS |
|
||||
| License | GPL-2.0-or-later |
|
||||
|
|
|
|||
|
|
@ -46,8 +46,8 @@
|
|||
padding: 0 0 0 0.75em;
|
||||
}
|
||||
|
||||
/* ── Bavarian theme ───────────────────────────────────── */
|
||||
.brezngeo-geo[data-brezngeo-theme="bavarian"] {
|
||||
/* ── Brezn theme ───────────────────────────────────── */
|
||||
.brezngeo-geo[data-brezngeo-theme="brezn"] {
|
||||
--brezngeo-border: #0052a0;
|
||||
--brezngeo-bg: #f0f5fc;
|
||||
--brezngeo-sec-border:#c5d8f5;
|
||||
|
|
@ -99,8 +99,8 @@
|
|||
color: #aaa;
|
||||
}
|
||||
|
||||
/* ── Bavarian summary: Rauten (diamond) pattern ───────── */
|
||||
.brezngeo-geo[data-brezngeo-theme="bavarian"] summary {
|
||||
/* ── Brezn summary: Rauten (diamond) pattern ───────── */
|
||||
.brezngeo-geo[data-brezngeo-theme="brezn"] summary {
|
||||
background-color: #0066b3;
|
||||
background-image:
|
||||
linear-gradient(45deg, rgba(255,255,255,0.18) 25%, transparent 25%),
|
||||
|
|
@ -114,11 +114,11 @@
|
|||
border-radius: 5px 5px 0 0;
|
||||
}
|
||||
|
||||
.brezngeo-geo[data-brezngeo-theme="bavarian"] summary .brezngeo-geo__title {
|
||||
.brezngeo-geo[data-brezngeo-theme="brezn"] summary .brezngeo-geo__title {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.brezngeo-geo[data-brezngeo-theme="bavarian"] summary::before {
|
||||
.brezngeo-geo[data-brezngeo-theme="brezn"] summary::before {
|
||||
color: rgba(255,255,255,0.85);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
/* global jQuery, wp, bavrankLinkSuggest, tinyMCE */
|
||||
/* global jQuery, wp, brezngeoLinkSuggest, tinyMCE */
|
||||
( function ( $ ) {
|
||||
'use strict';
|
||||
|
||||
if ( typeof bavrankLinkSuggest === 'undefined' ) { return; }
|
||||
if ( typeof brezngeoLinkSuggest === 'undefined' ) { return; }
|
||||
|
||||
var cfg = bavrankLinkSuggest;
|
||||
var cfg = brezngeoLinkSuggest;
|
||||
var i18n = cfg.i18n;
|
||||
var suggestions = [];
|
||||
var isRunning = false;
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ class GeoPage {
|
|||
$clean['output_style'] = in_array( $input['output_style'] ?? '', $allowed_styles, true )
|
||||
? $input['output_style'] : 'details_collapsible';
|
||||
|
||||
$allowed_themes = array( 'light', 'dark', 'minimal', 'bavarian' );
|
||||
$allowed_themes = array( 'light', 'dark', 'minimal', 'brezn' );
|
||||
$clean['theme'] = in_array( $input['theme'] ?? '', $allowed_themes, true )
|
||||
? $input['theme'] : 'light';
|
||||
|
||||
|
|
|
|||
|
|
@ -38,11 +38,11 @@ class LinkSuggestPage {
|
|||
);
|
||||
|
||||
// link-suggest.js enthält den Post-Such-Code für Exclude/Boost.
|
||||
// Minimales bavrankLinkSuggest-Objekt — reicht damit der Such-Block läuft.
|
||||
// Minimales brezngeoLinkSuggest-Objekt — reicht damit der Such-Block läuft.
|
||||
wp_enqueue_script( 'brezngeo-link-suggest', BREZNGEO_URL . 'assets/link-suggest.js', array( 'jquery' ), BREZNGEO_VERSION, true );
|
||||
wp_localize_script(
|
||||
'brezngeo-link-suggest',
|
||||
'bavrankLinkSuggest',
|
||||
'brezngeoLinkSuggest',
|
||||
array(
|
||||
'ajaxUrl' => admin_url( 'admin-ajax.php' ),
|
||||
'restUrl' => get_rest_url( null, 'wp/v2/search' ),
|
||||
|
|
|
|||
|
|
@ -176,12 +176,12 @@
|
|||
<option value="minimal" <?php selected( $settings['theme'] ?? 'light', 'minimal' ); ?>>
|
||||
<?php esc_html_e( 'Minimal', 'brezngeo' ); ?>
|
||||
</option>
|
||||
<option value="bavarian" <?php selected( $settings['theme'] ?? 'light', 'bavarian' ); ?>>
|
||||
<?php esc_html_e( 'Bavarian', 'brezngeo' ); ?>
|
||||
<option value="brezn" <?php selected( $settings['theme'] ?? 'light', 'brezn' ); ?>>
|
||||
<?php esc_html_e( 'Brezn', 'brezngeo' ); ?>
|
||||
</option>
|
||||
</select>
|
||||
<p class="description">
|
||||
<?php esc_html_e( 'Light — clean card with a blue accent. Dark — same for dark-mode sites. Minimal — borderless, left stripe only. Bavarian — Bavarian blue with diamond header pattern.', 'brezngeo' ); ?>
|
||||
<?php esc_html_e( 'Light — clean card with a blue accent. Dark — same for dark-mode sites. Minimal — borderless, left stripe only. Brezn — Brezn blue with diamond header pattern.', 'brezngeo' ); ?>
|
||||
<br>
|
||||
<?php
|
||||
printf(
|
||||
|
|
|
|||
|
|
@ -392,7 +392,7 @@ class LinkSuggest {
|
|||
global $post;
|
||||
wp_localize_script(
|
||||
'brezngeo-link-suggest',
|
||||
'bavrankLinkSuggest',
|
||||
'brezngeoLinkSuggest',
|
||||
array(
|
||||
'nonce' => wp_create_nonce( 'brezngeo_admin' ),
|
||||
'ajaxUrl' => admin_url( 'admin-ajax.php' ),
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
# German (de_DE) translation for Bavarian Rank Engine
|
||||
# German (de_DE) translation for BreznGEO
|
||||
# Copyright (C) 2025 Donau2Space
|
||||
# This file is distributed under the GPL-2.0-or-later license.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Bavarian Rank Engine 1.0.0\n"
|
||||
"Project-Id-Version: BreznGEO 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://donau2space.de\n"
|
||||
"POT-Creation-Date: 2026-02-21T00:00:00+00:00\n"
|
||||
"PO-Revision-Date: 2026-02-25T00:00:00+00:00\n"
|
||||
|
|
@ -15,15 +15,15 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Manual\n"
|
||||
"X-Domain: bavarian-rank-engine\n"
|
||||
"X-Domain: brezngeo\n"
|
||||
|
||||
#: includes/Admin/AdminMenu.php:11
|
||||
msgid "Bavarian Rank Engine"
|
||||
msgstr "Bavarian Rank Engine"
|
||||
msgid "BreznGEO"
|
||||
msgstr "BreznGEO"
|
||||
|
||||
#: includes/Admin/AdminMenu.php:12
|
||||
msgid "Bavarian Rank"
|
||||
msgstr "Bavarian Rank"
|
||||
msgid "BreznGEO"
|
||||
msgstr "BreznGEO"
|
||||
|
||||
#: includes/Admin/AdminMenu.php:23
|
||||
#: includes/Admin/AdminMenu.php:24
|
||||
|
|
@ -56,8 +56,8 @@ msgid "TXT Files"
|
|||
msgstr "TXT Dateien"
|
||||
|
||||
#: includes/Admin/views/dashboard.php:3
|
||||
msgid "Bavarian Rank Engine \xe2\x80\x94 Dashboard"
|
||||
msgstr "Bavarian Rank Engine — Dashboard"
|
||||
msgid "BreznGEO \xe2\x80\x94 Dashboard"
|
||||
msgstr "BreznGEO — Dashboard"
|
||||
|
||||
#: includes/Admin/views/dashboard.php:8
|
||||
msgid "Meta Coverage"
|
||||
|
|
@ -458,8 +458,8 @@ msgid "Save robots.txt Settings"
|
|||
msgstr "robots.txt-Einstellungen speichern"
|
||||
|
||||
#: includes/Admin/MetaEditorBox.php:20
|
||||
msgid "Meta Description (BRE)"
|
||||
msgstr "Meta-Beschreibung (BRE)"
|
||||
msgid "Meta Description (BreznGEO)"
|
||||
msgstr "Meta-Beschreibung (BreznGEO)"
|
||||
|
||||
#: includes/Admin/MetaEditorBox.php
|
||||
msgid "AI generated"
|
||||
|
|
@ -482,8 +482,8 @@ msgid "Regenerate with AI"
|
|||
msgstr "Mit KI neu generieren"
|
||||
|
||||
#: includes/Admin/SeoWidget.php
|
||||
msgid "SEO Analysis (BRE)"
|
||||
msgstr "SEO Analyse (BRE)"
|
||||
msgid "SEO Analysis (BreznGEO)"
|
||||
msgstr "SEO Analyse (BreznGEO)"
|
||||
|
||||
#: includes/Admin/SeoWidget.php
|
||||
msgid "Title:"
|
||||
|
|
@ -552,16 +552,16 @@ msgid "A bulk process is already running."
|
|||
msgstr "Ein Bulk-Prozess läuft bereits."
|
||||
|
||||
#: includes/Features/LlmsTxt.php
|
||||
msgid "Bavarian Rank Engine serves llms.txt with priority \xe2\x80\x94 no action needed in Rank Math."
|
||||
msgstr "Bavarian Rank Engine bedient llms.txt mit Priorität — kein Handlungsbedarf bei Rank Math."
|
||||
msgid "BreznGEO serves llms.txt with priority \xe2\x80\x94 no action needed in Rank Math."
|
||||
msgstr "BreznGEO bedient llms.txt mit Priorität — kein Handlungsbedarf bei Rank Math."
|
||||
|
||||
#: includes/Admin/AdminMenu.php
|
||||
msgid "GEO Quick Overview"
|
||||
msgstr "GEO Schnellüberblick"
|
||||
|
||||
#: includes/Admin/GeoEditorBox.php
|
||||
msgid "GEO Quick Overview (BRE)"
|
||||
msgstr "GEO Schnellüberblick (BRE)"
|
||||
msgid "GEO Quick Overview (BreznGEO)"
|
||||
msgstr "GEO Schnellüberblick (BreznGEO)"
|
||||
|
||||
#: includes/Admin/GeoEditorBox.php
|
||||
msgid "Enable GEO block for this post"
|
||||
|
|
@ -737,32 +737,32 @@ msgid "Plugin Compatibility"
|
|||
msgstr "Plugin-Kompatibilität"
|
||||
|
||||
#: includes/Admin/views/dashboard.php
|
||||
msgid "The following SEO plugins were detected. BRE adapts automatically."
|
||||
msgstr "Folgende SEO-Plugins wurden erkannt. BRE passt sich automatisch an."
|
||||
msgid "The following SEO plugins were detected. BreznGEO adapts automatically."
|
||||
msgstr "Folgende SEO-Plugins wurden erkannt. BreznGEO passt sich automatisch an."
|
||||
|
||||
#: includes/Admin/views/dashboard.php
|
||||
msgid "llms.txt: BRE serves the file with priority — Rank Math is bypassed."
|
||||
msgstr "llms.txt: BRE liefert die Datei mit Priorität — Rank Math wird umgangen."
|
||||
msgid "llms.txt: BreznGEO serves the file with priority — Rank Math is bypassed."
|
||||
msgstr "llms.txt: BreznGEO liefert die Datei mit Priorität — Rank Math wird umgangen."
|
||||
|
||||
#: includes/Admin/views/dashboard.php
|
||||
msgid "Schema.org: BRE suppresses its own JSON-LD to avoid duplicates."
|
||||
msgstr "Schema.org: BRE unterdrückt sein eigenes JSON-LD, um Duplikate zu vermeiden."
|
||||
msgid "Schema.org: BreznGEO suppresses its own JSON-LD to avoid duplicates."
|
||||
msgstr "Schema.org: BreznGEO unterdrückt sein eigenes JSON-LD, um Duplikate zu vermeiden."
|
||||
|
||||
#: includes/Admin/views/dashboard.php
|
||||
msgid "Meta descriptions: BRE writes to the Rank Math meta field."
|
||||
msgstr "Meta-Beschreibungen: BRE schreibt in das Rank-Math-Metafeld."
|
||||
msgid "Meta descriptions: BreznGEO writes to the Rank Math meta field."
|
||||
msgstr "Meta-Beschreibungen: BreznGEO schreibt in das Rank-Math-Metafeld."
|
||||
|
||||
#: includes/Admin/views/dashboard.php
|
||||
msgid "Meta descriptions: BRE writes to the Yoast meta field."
|
||||
msgstr "Meta-Beschreibungen: BRE schreibt in das Yoast-Metafeld."
|
||||
msgid "Meta descriptions: BreznGEO writes to the Yoast meta field."
|
||||
msgstr "Meta-Beschreibungen: BreznGEO schreibt in das Yoast-Metafeld."
|
||||
|
||||
#: includes/Admin/views/dashboard.php
|
||||
msgid "Meta descriptions: BRE writes to the AIOSEO meta field."
|
||||
msgstr "Meta-Beschreibungen: BRE schreibt in das AIOSEO-Metafeld."
|
||||
msgid "Meta descriptions: BreznGEO writes to the AIOSEO meta field."
|
||||
msgstr "Meta-Beschreibungen: BreznGEO schreibt in das AIOSEO-Metafeld."
|
||||
|
||||
#: includes/Admin/views/dashboard.php
|
||||
msgid "Meta descriptions: BRE writes to the SEOPress meta field."
|
||||
msgstr "Meta-Beschreibungen: BRE schreibt in das SEOPress-Metafeld."
|
||||
msgid "Meta descriptions: BreznGEO writes to the SEOPress meta field."
|
||||
msgstr "Meta-Beschreibungen: BreznGEO schreibt in das SEOPress-Metafeld."
|
||||
|
||||
#: includes/Admin/views/geo.php
|
||||
msgid "Color scheme"
|
||||
|
|
@ -897,8 +897,8 @@ msgid "Really reset the prompt?"
|
|||
msgstr "Prompt wirklich zurücksetzen?"
|
||||
|
||||
#: includes/Admin/views/dashboard.php
|
||||
msgid "Servus! Welcome to Bavarian Rank Engine."
|
||||
msgstr "Servus! Willkommen bei Bavarian Rank Engine."
|
||||
msgid "Servus! Welcome to BreznGEO."
|
||||
msgstr "Servus! Willkommen bei BreznGEO."
|
||||
|
||||
#: includes/Admin/views/dashboard.php
|
||||
msgid "No Lederhosen required — your SEO is already in good hands."
|
||||
|
|
@ -1026,8 +1026,8 @@ msgid "Apply (0 links)"
|
|||
msgstr "Anwenden (0 Links)"
|
||||
|
||||
#: includes/Features/LinkSuggest.php
|
||||
msgid "Internal Link Suggestions (BRE)"
|
||||
msgstr "Interne Link-Vorschläge (BRE)"
|
||||
msgid "Internal Link Suggestions (BreznGEO)"
|
||||
msgstr "Interne Link-Vorschläge (BreznGEO)"
|
||||
|
||||
msgid "Analysing…"
|
||||
msgstr "Analysiere…"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
# English (en_US) translation for Bavarian Rank Engine
|
||||
# English (en_US) translation for BreznGEO
|
||||
# Copyright (C) 2025 Donau2Space
|
||||
# This file is distributed under the GPL-2.0-or-later license.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Bavarian Rank Engine 1.0.0\n"
|
||||
"Project-Id-Version: BreznGEO 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://donau2space.de\n"
|
||||
"POT-Creation-Date: 2026-02-21T00:00:00+00:00\n"
|
||||
"PO-Revision-Date: 2026-02-21T00:00:00+00:00\n"
|
||||
|
|
@ -15,15 +15,15 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Manual\n"
|
||||
"X-Domain: bavarian-rank-engine\n"
|
||||
"X-Domain: brezngeo\n"
|
||||
|
||||
#: includes/Admin/AdminMenu.php:11
|
||||
msgid "Bavarian Rank Engine"
|
||||
msgstr "Bavarian Rank Engine"
|
||||
msgid "BreznGEO"
|
||||
msgstr "BreznGEO"
|
||||
|
||||
#: includes/Admin/AdminMenu.php:12
|
||||
msgid "Bavarian Rank"
|
||||
msgstr "Bavarian Rank"
|
||||
msgid "BreznGEO"
|
||||
msgstr "BreznGEO"
|
||||
|
||||
#: includes/Admin/AdminMenu.php:23
|
||||
#: includes/Admin/AdminMenu.php:24
|
||||
|
|
@ -55,8 +55,8 @@ msgid "TXT Files"
|
|||
msgstr "TXT Files"
|
||||
|
||||
#: includes/Admin/views/dashboard.php:3
|
||||
msgid "Bavarian Rank Engine \xe2\x80\x94 Dashboard"
|
||||
msgstr "Bavarian Rank Engine \xe2\x80\x94 Dashboard"
|
||||
msgid "BreznGEO \xe2\x80\x94 Dashboard"
|
||||
msgstr "BreznGEO \xe2\x80\x94 Dashboard"
|
||||
|
||||
#: includes/Admin/views/dashboard.php:8
|
||||
msgid "Meta Coverage"
|
||||
|
|
@ -406,8 +406,8 @@ msgid "Save robots.txt Settings"
|
|||
msgstr "Save robots.txt Settings"
|
||||
|
||||
#: includes/Admin/MetaEditorBox.php:20
|
||||
msgid "Meta Description (BRE)"
|
||||
msgstr "Meta Description (BRE)"
|
||||
msgid "Meta Description (BreznGEO)"
|
||||
msgstr "Meta Description (BreznGEO)"
|
||||
|
||||
#: includes/Admin/MetaEditorBox.php:34
|
||||
msgid "KI generiert"
|
||||
|
|
@ -430,8 +430,8 @@ msgid "Mit KI neu generieren"
|
|||
msgstr "Regenerate with AI"
|
||||
|
||||
#: includes/Admin/SeoWidget.php:16
|
||||
msgid "SEO Analyse (BRE)"
|
||||
msgstr "SEO Analysis (BRE)"
|
||||
msgid "SEO Analyse (BreznGEO)"
|
||||
msgstr "SEO Analysis (BreznGEO)"
|
||||
|
||||
#: includes/Admin/SeoWidget.php:31
|
||||
msgid "Titel:"
|
||||
|
|
@ -500,8 +500,8 @@ msgid "Ein Bulk-Prozess l\xc3\xa4uft bereits."
|
|||
msgstr "A bulk process is already running."
|
||||
|
||||
#: includes/Features/LlmsTxt.php:31
|
||||
msgid "Bavarian Rank Engine bedient llms.txt mit Priorit\xc3\xa4t \xe2\x80\x94 kein Handlungsbedarf bei Rank Math."
|
||||
msgstr "Bavarian Rank Engine serves llms.txt with priority \xe2\x80\x94 no action needed for Rank Math."
|
||||
msgid "BreznGEO bedient llms.txt mit Priorit\xc3\xa4t \xe2\x80\x94 kein Handlungsbedarf bei Rank Math."
|
||||
msgstr "BreznGEO serves llms.txt with priority \xe2\x80\x94 no action needed for Rank Math."
|
||||
|
||||
#: includes/Admin/AdminMenu.php
|
||||
msgid "Link Suggestions"
|
||||
|
|
@ -585,8 +585,8 @@ msgid "Apply (0 links)"
|
|||
msgstr "Apply (0 links)"
|
||||
|
||||
#: includes/Features/LinkSuggest.php
|
||||
msgid "Internal Link Suggestions (BRE)"
|
||||
msgstr "Internal Link Suggestions (BRE)"
|
||||
msgid "Internal Link Suggestions (BreznGEO)"
|
||||
msgstr "Internal Link Suggestions (BreznGEO)"
|
||||
|
||||
msgid "Analysing…"
|
||||
msgstr "Analysing…"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
# This file is distributed under the GPL-2.0-or-later license.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Bavarian Rank Engine 1.0.0\n"
|
||||
"Project-Id-Version: BreznGEO 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://donau2space.de\n"
|
||||
"POT-Creation-Date: 2026-02-21T00:00:00+00:00\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
|
@ -12,14 +12,14 @@ msgstr ""
|
|||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"X-Generator: Manual\n"
|
||||
"X-Domain: bavarian-rank-engine\n"
|
||||
"X-Domain: brezngeo\n"
|
||||
|
||||
#: includes/Admin/AdminMenu.php:11
|
||||
msgid "Bavarian Rank Engine"
|
||||
msgid "BreznGEO"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Admin/AdminMenu.php:12
|
||||
msgid "Bavarian Rank"
|
||||
msgid "BreznGEO"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Admin/AdminMenu.php:23
|
||||
|
|
@ -56,7 +56,7 @@ msgid "robots.txt"
|
|||
msgstr ""
|
||||
|
||||
#: includes/Admin/views/dashboard.php:3
|
||||
msgid "Bavarian Rank Engine \xe2\x80\x94 Dashboard"
|
||||
msgid "BreznGEO \xe2\x80\x94 Dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Admin/views/dashboard.php:8
|
||||
|
|
@ -397,7 +397,7 @@ msgid "Aktuelle robots.txt ansehen \xe2\x86\x92"
|
|||
msgstr ""
|
||||
|
||||
#: includes/Admin/MetaEditorBox.php:20
|
||||
msgid "Meta Description (BRE)"
|
||||
msgid "Meta Description (BreznGEO)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Admin/MetaEditorBox.php:34
|
||||
|
|
@ -421,7 +421,7 @@ msgid "Mit KI neu generieren"
|
|||
msgstr ""
|
||||
|
||||
#: includes/Admin/SeoWidget.php:16
|
||||
msgid "SEO Analyse (BRE)"
|
||||
msgid "SEO Analyse (BreznGEO)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Admin/SeoWidget.php:31
|
||||
|
|
@ -491,7 +491,7 @@ msgid "Ein Bulk-Prozess l\xc3\xa4uft bereits."
|
|||
msgstr ""
|
||||
|
||||
#: includes/Features/LlmsTxt.php:31
|
||||
msgid "Bavarian Rank Engine bedient llms.txt mit Priorit\xc3\xa4t \xe2\x80\x94 kein Handlungsbedarf bei Rank Math."
|
||||
msgid "BreznGEO bedient llms.txt mit Priorit\xc3\xa4t \xe2\x80\x94 kein Handlungsbedarf bei Rank Math."
|
||||
msgstr ""
|
||||
|
||||
#: includes/Admin/AdminMenu.php
|
||||
|
|
@ -579,7 +579,7 @@ msgid "Apply (0 links)"
|
|||
msgstr ""
|
||||
|
||||
#: includes/Features/LinkSuggest.php
|
||||
msgid "Internal Link Suggestions (BRE)"
|
||||
msgid "Internal Link Suggestions (BreznGEO)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Analysing…"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
=== Bavarian Rank Engine ===
|
||||
=== BreznGEO ===
|
||||
Contributors: mifupadev
|
||||
Tags: seo, ai, meta description, schema, llms.txt
|
||||
Requires at least: 6.0
|
||||
Tested up to: 6.9
|
||||
Stable tag: 1.3.5
|
||||
Stable tag: 1.0.0
|
||||
Requires PHP: 8.0
|
||||
License: GPL-2.0-or-later
|
||||
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
||||
|
|
@ -12,7 +12,7 @@ AI meta descriptions, GEO blocks, internal link suggestions, Schema.org structur
|
|||
|
||||
== Description ==
|
||||
|
||||
Bavarian Rank Engine is a WordPress SEO plugin that automates AI meta descriptions, adds Schema.org structured data, and helps your content get discovered by AI-driven search. It covers GEO — Generative Engine Optimization — preparing your pages for AI overviews, answer engines, and retrieval-augmented search alongside traditional search engine optimization. No subscription required.
|
||||
BreznGEO is a WordPress SEO plugin that automates AI meta descriptions, adds Schema.org structured data, and helps your content get discovered by AI-driven search. It covers GEO — Generative Engine Optimization — preparing your pages for AI overviews, answer engines, and retrieval-augmented search alongside traditional search engine optimization. No subscription required.
|
||||
|
||||
The plugin was originally built for Donau2Space.de and has run on the developer's own production sites since version 1.0. Stability is the priority: when something breaks, it affects the developer first. There are no upsells, no subscription tiers, and no features added just to expand the feature list. It works as a focused complement to your existing SEO setup — not a replacement.
|
||||
|
||||
|
|
@ -20,9 +20,9 @@ All AI features are optional. Without an API key, the plugin falls back to local
|
|||
|
||||
= Learn more =
|
||||
|
||||
* Website: https://bavarianrankengine.com/
|
||||
* FAQ: https://bavarianrankengine.com/faq.html
|
||||
* Live demo: https://bavarianrankengine.com/demo.html
|
||||
* Website: https://brezngeo.com/
|
||||
* FAQ: https://brezngeo.com/faq.html
|
||||
* Live demo: https://brezngeo.com/demo.html
|
||||
|
||||
= At a glance =
|
||||
|
||||
|
|
@ -36,7 +36,7 @@ All AI features are optional. Without an API key, the plugin falls back to local
|
|||
* Logs AI bot visits with hashed IPs — no plain text stored
|
||||
* Free. No subscription. API costs go directly to your provider.
|
||||
|
||||
= What makes Bavarian Rank Engine different =
|
||||
= What makes BreznGEO different =
|
||||
|
||||
* **AI is optional.** No API key means no AI and no costs. All non-AI features — Schema.org, llms.txt, internal link suggestions, and fallback meta extraction — continue to work normally.
|
||||
* **No subscription.** The plugin is free. If you use AI generation, costs go directly to your chosen provider. There is no service fee or middle layer.
|
||||
|
|
@ -54,7 +54,7 @@ If no API key is configured or the AI request fails, a clean fallback excerpt is
|
|||
|
||||
Adds an AI-generated Quick Overview block to each post: a short summary, key bullet points, and an optional FAQ. Rendered as a native `<details>` element — configurable as collapsible (default), always open, or stored without frontend output.
|
||||
|
||||
Supports three generation modes: automatic on publish, hybrid (auto only when fields are empty), or manual. Insertion position is configurable: after the first paragraph (default), top, or bottom. A quality gate suppresses FAQ generation on posts below a configurable word-count threshold. The post editor meta box includes live generate and clear buttons, a per-post enable toggle, and an optional prompt add-on field for author-level customization. Four built-in themes: Light, Dark, Minimal, Bavarian.
|
||||
Supports three generation modes: automatic on publish, hybrid (auto only when fields are empty), or manual. Insertion position is configurable: after the first paragraph (default), top, or bottom. A quality gate suppresses FAQ generation on posts below a configurable word-count threshold. The post editor meta box includes live generate and clear buttons, a per-post enable toggle, and an optional prompt add-on field for author-level customization. Four built-in themes: Light, Dark, Minimal, Brezn.
|
||||
|
||||
= Internal Link Suggestions =
|
||||
|
||||
|
|
@ -118,12 +118,12 @@ Works standalone or alongside any major SEO plugin. When Rank Math, Yoast SEO, A
|
|||
|
||||
1. Download the plugin zip and go to **Plugins → Add New → Upload Plugin** in your WordPress admin.
|
||||
2. Upload the zip file and click **Install Now**, then **Activate**.
|
||||
3. Go to **Bavarian Rank → AI Provider**.
|
||||
3. Go to **BreznGEO → AI Provider**.
|
||||
4. Select your preferred AI provider, paste your API key, and click **Test connection**.
|
||||
5. Choose a model and optionally enter token costs for cost estimation.
|
||||
6. Go to **Bavarian Rank → Meta Generator** to select post types and configure Schema.org types.
|
||||
7. To serve a content index, go to **Bavarian Rank → llms.txt**, enable it, and save.
|
||||
8. To manage AI crawler access, go to **Bavarian Rank → robots.txt** and select the bots to block.
|
||||
6. Go to **BreznGEO → Meta Generator** to select post types and configure Schema.org types.
|
||||
7. To serve a content index, go to **BreznGEO → llms.txt**, enable it, and save.
|
||||
8. To manage AI crawler access, go to **BreznGEO → robots.txt** and select the bots to block.
|
||||
|
||||
The plugin works without an API key — fallback meta extraction runs automatically on publish.
|
||||
|
||||
|
|
@ -147,7 +147,7 @@ Keys are obfuscated using XOR encryption with a key derived from your WordPress
|
|||
|
||||
= Is this compatible with Rank Math / Yoast SEO / AIOSEO / SEOPress? =
|
||||
|
||||
Yes. When one of these plugins is active, Bavarian Rank Engine writes generated descriptions directly into that plugin's meta field. It also checks for existing descriptions from all four plugins before generating, and skips posts that already have one. Breadcrumb and standalone meta description output is suppressed automatically to avoid conflicts.
|
||||
Yes. When one of these plugins is active, BreznGEO writes generated descriptions directly into that plugin's meta field. It also checks for existing descriptions from all four plugins before generating, and skips posts that already have one. Breadcrumb and standalone meta description output is suppressed automatically to avoid conflicts.
|
||||
|
||||
= Does it work with Polylang or WPML? =
|
||||
|
||||
|
|
@ -218,86 +218,8 @@ No data is transmitted during normal page loads or to visitors.
|
|||
|
||||
== Changelog ==
|
||||
|
||||
= 1.3.5 =
|
||||
* Changed: Admin footer updated across all plugin pages — "developed by 🍺 noschmarrn.dev for Donau2Space.de" with links to both sites
|
||||
* Fix: German translations added for the AI Features dashboard section — heading, intro text, feature descriptions, and submit button were displayed in English on German WordPress installations
|
||||
* Docs: readme.txt restructured for WordPress.org — paragraph order corrected, "At a glance" promoted to proper section heading, tag list trimmed to five
|
||||
|
||||
= 1.3.4 =
|
||||
* New: Four built-in GEO block themes — Light, Dark, Minimal, Bavarian
|
||||
* Changed: Replaced Color Scheme / Load Minimal CSS controls with a single Theme selector
|
||||
* Removed: Custom CSS field (use your theme's stylesheet for custom styling)
|
||||
* Removed: Auto OS dark/light detection (select Dark theme explicitly for dark-mode sites)
|
||||
|
||||
= 1.3.3 =
|
||||
* Security: GeoBlock custom CSS is now sanitised through a dedicated parser — strips comments, blocks at-rules (@import, @media etc.), expression(), javascript: and url() to prevent CSS injection
|
||||
* Fix: GeoBlock inline style previously used esc_attr() on CSS content (corrupts quotes/ampersands); replaced with wp_strip_all_tags()-based sanitiser
|
||||
* Fix: Uniform brezngeo_ prefix applied throughout — JS localized objects, test bootstrap constants, and a KeyVault doc comment updated
|
||||
* Fix: SchemaEnhancer JSON-LD output no longer passes JSON_UNESCAPED_SLASHES to wp_json_encode()
|
||||
* Fix: GeoBlock settings help text now explicitly describes the CSS input policy (declarations only, url() blocked)
|
||||
|
||||
= 1.3.2 =
|
||||
* Fix: Schema.org structured data now correctly reads the AI-generated meta description — it was silently falling back to the post excerpt due to a renamed post meta key
|
||||
* Fix: Dashboard usage-stats transient key typo corrected (no functional impact for most users)
|
||||
* Internal: All plugin identifiers (option keys, AJAX actions, post meta, transients) renamed to brezngeo_ prefix for WordPress.org compliance
|
||||
|
||||
= 1.3.1 =
|
||||
* Improved: Internal Link Suggestions now match by topic (title + tags + categories + excerpt) — anchor phrases are found even when the target post title does not appear verbatim in the content
|
||||
* New: Post excerpt included in candidate scoring (weight ×1.5) for better semantic relevance
|
||||
* New: Dashboard "AI Features" card — opt-in AI toggle per feature (Meta Descriptions, Link Suggestions, GEO Block); only visible when an AI provider is connected; all options disabled by default
|
||||
* Fix: Post search in Link Suggestions settings (Exclude / Boost) was broken — wrong REST API URL and missing script on settings page
|
||||
* Fix: Plugin Check — translators comment position in bulk.php, NonPrefixedVariable warnings in link-suggest-settings.php and txt.php
|
||||
|
||||
= 1.3.0 =
|
||||
* New: Internal Link Suggestions — editor meta box suggests "phrase → target post" links while writing; manual review + multi-select apply with preview modal
|
||||
* New: Suggestions use text-based matching (title/tag/category overlap) — works without AI
|
||||
* New: Optional AI upgrade: top-20 candidates sent to connected AI provider for semantic analysis
|
||||
* New: Configurable trigger: manual button, on-save, or timed interval
|
||||
* New: Link Suggestions settings page: exclude posts (Impressum, Kontakt, AGB), boost/prioritise specific posts
|
||||
* New: Gutenberg and Classic Editor both supported for content reading and link insertion
|
||||
* New: Full localization (de_DE, en_US)
|
||||
|
||||
= 1.2.4 =
|
||||
* Fix: AI generation is now disabled by default — users must explicitly enable it on the AI Provider page
|
||||
* Fix: Dashboard "Active Provider" now correctly shows "AI disabled" or "Not configured" when no API key is set
|
||||
* Fix: German strings removed from Schema.org admin page, Schema Metabox in Post Editor, and SEO Widget
|
||||
* New: Meta Generator and GEO Block pages show an info notice when no AI provider is active
|
||||
* New: Meta Generator prompt is now locale-aware — German WordPress installs get the German prompt, all others get English
|
||||
* New: "Theme outputs post title as H1" setting in Meta Generator — suppresses false H1 warning in the SEO Widget
|
||||
* Improved: SEO Widget strings (headings, warnings, links) are now fully translatable via WordPress i18n
|
||||
|
||||
= 1.2.3 =
|
||||
* Improved: llms.txt and robots.txt admin pages merged into a single "TXT Files" page with native WordPress tab navigation
|
||||
|
||||
= 1.2.2 =
|
||||
* New: Dismissible welcome notice with 24 h auto-expiry and Bavarian flavour
|
||||
* New: AI enable toggle with cost warning on AI Provider page
|
||||
* New: Estimated token usage and cost in Status widget
|
||||
* Improved: Dashboard UI — progress bars for meta coverage, styled quick links, crawler dot indicators
|
||||
* Fix: Plugin Check warnings (variable definitions in template moved to controller)
|
||||
* Fix: Hardcoded German strings in admin.js replaced with localized equivalents
|
||||
* Perf: 5-minute transient caching for dashboard DB queries
|
||||
|
||||
= 1.2.1 =
|
||||
* New: Dedicated "Schema.org" admin menu item under Bavarian Rank — schema settings moved out of Meta Generator into their own page with a separate option key
|
||||
|
||||
= 1.2.0 =
|
||||
* New: Schema Suite v2 — FAQPage (auto-generated from GEO Quick Overview data), BlogPosting/Article (with embedded author and featured image), ImageObject, and VideoObject (YouTube/Vimeo auto-detected from post content)
|
||||
* New: Post editor meta box for HowTo, Review (star rating 1–5), Recipe, and Event schema types — per-post data entry, saved as post meta, output as JSON-LD automatically
|
||||
|
||||
= 1.1.0 =
|
||||
* New: GEO Schnellüberblick block — AI-generated per-post summary with short summary, key bullet points, and optional FAQ.
|
||||
* New: Rendered as a native `<details>` element; configurable as collapsible (default), always open, or store-only (no frontend output).
|
||||
* New: Three generation modes — auto on publish, hybrid (auto only when fields are empty), manual only.
|
||||
* New: Configurable insertion position: after first paragraph (default), top, or bottom of content.
|
||||
* New: Quality gate suppresses FAQ generation on posts below a configurable word-count threshold (default: 350).
|
||||
* New: Post editor meta box with live AJAX generate/clear buttons, per-post enable toggle, and auto-lock on manual edit.
|
||||
* New: Optional per-post prompt add-on field for author-level customization.
|
||||
* New: Dedicated admin settings page under Bavarian Rank → GEO Block.
|
||||
* New: Bundled minimal CSS scoped to `.bre-geo`; custom CSS field for theme-level overrides.
|
||||
|
||||
= 1.0.0 =
|
||||
* Initial release.
|
||||
* Initial release as BreznGEO.
|
||||
* AI Meta Generator with auto-publish trigger, customizable prompt, and Polylang/WPML language detection.
|
||||
* Fallback meta extraction (sentence-boundary-aware, 150–160 characters) for use without an API key or on API failure.
|
||||
* Bulk Generator with batched AJAX processing, rate limiting, transient lock, per-post retry logic, and cost estimation.
|
||||
|
|
@ -307,17 +229,16 @@ No data is transmitted during normal page loads or to visitors.
|
|||
* llms.txt with pagination, ETag/Last-Modified HTTP caching, custom sections, and manual cache clear.
|
||||
* robots.txt manager for 13 known AI and data-harvesting crawlers.
|
||||
* Crawler Log database table with SHA-256 IP hashing and weekly auto-purge.
|
||||
* GEO Quick Overview block — AI-generated per-post summary, key bullet points, optional FAQ; four built-in themes (Light, Dark, Minimal, Brezn).
|
||||
* Internal Link Suggestions — editor meta box with text-based and optional AI-powered matching.
|
||||
* Meta Description meta box with source badge, character counter, and inline AI regeneration.
|
||||
* SEO Analysis sidebar widget with live content statistics and warnings.
|
||||
* Link Analysis dashboard panel: no-internal-links report, external-link outliers, pillar page ranking.
|
||||
* KeyVault API key obfuscation using XOR with WP salts (no OpenSSL dependency).
|
||||
* KeyVault API key obfuscation using XOR with WP salts.
|
||||
* Multi-provider support: OpenAI, Anthropic, Google Gemini, xAI Grok.
|
||||
* `bre_prompt` filter and `bre_meta_saved` action hooks for developers.
|
||||
* `brezngeo_prompt` filter and `brezngeo_meta_saved` action hooks for developers.
|
||||
|
||||
== Upgrade Notice ==
|
||||
|
||||
= 1.1.0 =
|
||||
No database changes. Deactivate and reactivate the plugin after updating to register the new GEO Block rewrite rules.
|
||||
|
||||
= 1.0.0 =
|
||||
Initial release. No upgrade steps required.
|
||||
Initial release.
|
||||
|
|
|
|||
Loading…
Reference in a new issue