=== GEO Booster ===
Contributors: geobooster
Tags: ai, seo, geo, blog sync, ai search, content sync
Requires at least: 6.0
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 1.2.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Sync AI-generated blog posts from GEO Booster to your WordPress site. Get found by AI search engines like ChatGPT, Perplexity, and Google Gemini.

== Description ==

GEO Booster helps businesses get recommended by AI search engines. This plugin connects your WordPress site to your GEO Booster account and automatically imports AI-generated blog posts as drafts.

**Features:**

* Automatically sync blog posts from GEO Booster to WordPress as drafts
* Review and publish imported posts at your own pace
* Configurable auto-sync interval (hourly, twice daily, or daily)
* Manual "Sync Now" button for on-demand imports
* Markdown to HTML conversion for imported content
* Deduplication: posts are never imported twice
* Optional API key for two-way sync: when you publish a post in WordPress, the URL is automatically sent back to GEO Booster as a redirect URL
* Posts deleted in WordPress are not re-imported
* Clean admin interface under its own top-level menu
* Show your FAQ on any page with the [geo_booster_faq] shortcode, including FAQPage structured data
* Or place it with the FAQ block and set it up from the editor sidebar

**How it works:**

1. Enter your GEO Booster API base URL (found in your dashboard under Developer > API)
2. Click "Sync Now" or wait for the automatic sync to import blog posts as drafts
3. Review and publish the imported drafts from your Posts page
4. (Optional) Add an API key to automatically send the WordPress URL back to GEO Booster when you publish a post

**Two-way sync (optional):**

When an API key with `blogs:write` scope is configured:

* Publishing a synced post sends the WordPress permalink back to GEO Booster
* GEO Booster sets this as a redirect URL, so visitors on the companion site are redirected to your WordPress version
* Trashing or unpublishing a post automatically clears the redirect URL
* Permanently deleting a post clears the redirect URL and prevents re-import

== Installation ==

1. Upload the `geo-booster` folder to the `/wp-content/plugins/` directory, or install the plugin through the WordPress plugins screen
2. Activate the plugin through the 'Plugins' screen in WordPress
3. Go to the GEO Booster menu item in the admin sidebar to configure the plugin
4. Enter your API base URL from the GEO Booster dashboard (Developer > API page)
5. (Optional) Enter an API key with `blogs:write` scope for two-way sync

== Frequently Asked Questions ==

= Where do I find my API base URL? =

Log in to your GEO Booster dashboard and go to Developer > API. Your base URL is displayed at the top of the page.

= Do I need an API key? =

An API key is optional. Without it, the plugin imports blog posts as drafts. With an API key (blogs:write scope), the plugin also sends the WordPress URL back to GEO Booster when you publish a post.

= How do I create an API key? =

In your GEO Booster dashboard, go to Developer > API and click "Create key". Select the `blogs:write` scope and copy the generated key.

= What happens when I delete a post in WordPress? =

If you trash a published post, the redirect URL in GEO Booster is automatically cleared. If you permanently delete a post, it will not be re-imported on future syncs.

= Are imported posts published automatically? =

No. All imported posts are created as drafts. You review and publish them manually.

= How often does the plugin sync? =

You can choose between hourly, twice daily, or daily automatic syncs. You can also trigger a manual sync at any time.

== Screenshots ==

1. GEO Booster settings page with sync status, connection settings, and quick guide

== Changelog ==

= 1.2.0 =
* Fixed: images in synced blog posts rendered as a stray exclamation mark and a link instead of a picture
* Fixed: a table cell containing 0 disappeared and shifted every column after it one to the left
* The settings page now says the plugin does two things, blog posts and FAQ, and explains how they differ: posts are copied into WordPress, the FAQ is fetched when a page is shown
* The FAQ section documents every shortcode option -- heading, limit, lang and schema -- with what each does and what happens if you leave it out
* Settings page reordered so Connection comes first, and widened so the reference table fits

= 1.1.0 =
* New: [geo_booster_faq] shortcode renders your GEO Booster FAQ on any page
* New: a GEO Booster FAQ block, for sites on the block editor, with fields for the same settings and a live preview
* Rendered server-side, so AI crawlers and search engines can read it in the page source
* FAQPage schema.org JSON-LD alongside the list; turn it off with schema="no" if your SEO plugin already emits one
* Answers use <details> markup, so the accordion needs no JavaScript and inherits your theme's typography
* Attributes: lang, limit, schema, heading
* Responses cached for an hour; filter geo_booster_faq_cache_ttl to change it
* Settings page shows how many questions are available and in which language, with a Refresh FAQ button
* Optional FAQ language setting, for sites whose admin language differs from what visitors read

= 1.0.0 =
* Initial release
* Blog post sync from GEO Booster API
* Automatic and manual sync triggers
* Markdown to HTML conversion
* Deduplication based on GEO Booster blog ID
* Redirect URL callback on publish/trash/delete
* Configurable sync interval
* Modern admin settings page

== Upgrade Notice ==

= 1.0.0 =
Initial release of the GEO Booster WordPress plugin.
