Description
Geo Widget creates structured, citable answer blocks (Answer Cards) directly in the WordPress Gutenberg Editor. This optimizes your content specifically for AI-powered search engines like Google AI Overviews, Bing Copilot, or Perplexity.
Each block consists of a question, answer, bullet points, and sources — including copy buttons so readers and AI systems can correctly cite your content.
Who is this plugin for?
- Content creators who want to be cited in AI answers
- SEO teams focusing on Generative Engine Optimization
- Editorial teams needing structured fact blocks in articles
- Developers integrating Answer Cards into external systems via REST API
Features
Gutenberg Block “Answer Card”
- Question Field — Input field with character limit (max. 140 characters) and live counter
- Answer Field — Multi-line text field for the citable answer
- Word Counter with Traffic Light Indicator — Real-time color-coded assessment of answer length:
- Gray: Too short (under 40 words)
- Green: Ideal length (40-80 words)
- Yellow: Getting long (81-120 words)
- Red: Too long (over 120 words)
- Bullet Points (Key Points) — Up to 6 key statements with add/remove buttons
- Source Management — Up to 6 sources with label, URL, publisher, and date
- Anchor ID — Automatically generated from the question, with umlaut support. Manually overridable with reset option
- Server-Side Rendering — Output is fully rendered server-side (no frontend JavaScript required)
Copy Buttons
- Copy Link — Copies the permalink including anchor fragment to clipboard
- Copy Citation — Copies a formatted citation: “Question” — Post Title (Site Name, Date) URL
- Visual Feedback — Button shows “Copied!” and is briefly disabled
- Fallback for Older Browsers — Automatic fallback when Clipboard API is unavailable
- Configurable Display — Controllable via sidebar: link only, citation only, or both
REST API
- Public Endpoint —
GET /wp-json/provimedia-geo-widget/v1/answersreturns all Answer Cards as JSON - Filter by Post — Parameter
post_idto retrieve blocks from a specific post - Pagination — Parameters
per_pageandpagewith response headersX-WP-TotalandX-WP-TotalPages - Read-only — GET requests only, no write operations
- Disableable — Can be completely disabled in settings
Settings Page
- Enable/Disable REST API — Toggles the public API endpoint on or off
- Include Answer in Citation — Adds the answer text to the citation
- Default Copy Mode — Global default: Link & Citation, Link only, or Citation only
- Strict Word Limit — Enforces the 120-word limit when saving
Security
- Input sanitization of all attributes
- Consistent late-escaping against XSS
- Protocol whitelist for URLs (http/https only)
- No innerHTML or eval in frontend JavaScript
- Drafts and password-protected posts excluded from API
- SQL injection protection via parameterized queries
- Whitelist validation of all setting values
- Nonce protection (CSRF) on settings page
- External links with
rel="noopener noreferrer"
Clean Uninstallation
- On uninstall, all plugin options and transients are completely removed from the database
Compatibility
- WordPress 6.0 or higher
- PHP 7.4 or higher
- Gutenberg Block API v3
- RTL support (automatically generated stylesheets)
- Translation-ready (Text Domain: provimedia-geo-widget)
Development
The compiled JavaScript and CSS files in the /build directory are generated from source files in the /src directory using WordPress build tools.
Source Code
All source code is included in the plugin:
/src/index.js– Editor block component (React/JSX)/src/frontend.js– Copy button functionality (Vanilla JS)/src/editor.scss– Editor-only styles (SCSS)/src/style.scss– Frontend styles (SCSS)
Build Instructions
- Install Node.js (v18 or higher recommended)
- Navigate to the plugin directory
- Run
npm installto install dependencies - Run
npm run buildto compile assets
Build Commands
npm run build– Compile production assetsnpm run start– Watch mode for developmentnpm run lint– Run code lintingnpm run test– Run unit tests
Dependencies
- @wordpress/scripts – WordPress build toolchain
- @wordpress/blocks – Block registration API
- @wordpress/block-editor – Block editor components
- @wordpress/components – UI components
- @wordpress/i18n – Internationalization utilities
- @wordpress/element – React abstraction layer
- @wordpress/url – URL validation utilities
Screenshots
Blocks
This plugin provides 1 block.
- Answer Card Citable answer block for GEO.
Installation
- Upload the ZIP file via Plugins Add New Upload Plugin
- Activate the plugin under Plugins Installed Plugins
- Add the “Answer Card” block via the Gutenberg Editor to a post
- Configure global settings under Settings Geo Widget
FAQ
-
What is Generative Engine Optimization (GEO)?
-
GEO refers to optimizing web content for AI-powered search engines. Unlike traditional SEO, it focuses on having content correctly cited and referenced as a source by AI systems.
-
Which AI search engines benefit from this?
-
Structured answer blocks improve citability in Google AI Overviews, Bing Copilot, Perplexity, ChatGPT Search, and similar systems.
-
How long should an answer be?
-
The ideal length is 40-80 words. The integrated word counter with traffic light indicator helps maintain the optimal length.
-
Can I disable the REST API?
-
Yes, under Settings Geo Widget you can completely disable the API endpoint.
-
What happens on uninstallation?
-
All plugin data (options and transients) are completely removed from the database. Block content in your posts remains as HTML.
-
Does the plugin work with page builders?
-
The plugin uses the native Gutenberg Block Editor. Page builders that support Gutenberg blocks are compatible.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Provimedia GEO Widget” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Provimedia GEO Widget” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0
- Initial release
- Gutenberg Block “Answer Card” with question, answer, bullet points, and sources
- Copy buttons (Link and Citation) with Clipboard API and fallback
- REST API endpoint with filtering and pagination
- Settings page with 4 configurable options
- Full security hardening (escaping, sanitization, whitelist validation)
- Clean uninstallation




