WordPress integration
GEOHATS for WordPress: auto-publishing and an AI SEO plugin
Connect WordPress with an Application Password
Application Passwords are built into WordPress. They let a tool use the REST API as one user without knowing that user’s login password, and you can revoke them one by one.
- In WordPress, go to Users → Profile. Use an Administrator account for the best results (see roles below).
- Under Application Passwords, name it GEOHATS and click Add.
- Copy the password WordPress shows. The spaces in it do not matter.
- In GEOHATS, open the website, go to Integrations, pick WordPress and enter the site URL, the WordPress username and the Application Password. The IndexNow key is optional (see below).
What GEOHATS checks before it saves the connection:
- https only. The password travels as HTTP Basic auth, so a plain http address is refused.
- The REST API address. GEOHATS reads it from your site’s
Linkheader instead of assuming/wp-json/, so subdirectory installs work. It will only send your credentials to that address if it is on the same domain you typed and uses https. - The login works and can publish. It calls
wp/v2/users/meand refuses a user that WordPress says cannot publish posts.
Connection settings are stored encrypted. The Test connection button in Integrations runs the same check again at any time.
Which WordPress role to connect
WordPress filters post content through kses. For any user without the unfiltered_html capability it removes <script> (which includes the JSON-LD block), <style> and SVG from the post. The article text, headings, tables and links survive, but the structured data does not.
| Role | Can GEOHATS publish? | JSON-LD and styling kept? |
|---|---|---|
| Administrator | Yes, live or draft | Yes on a single site. On multisite only Super Admins have unfiltered_html. |
| Editor | Yes, live or draft | Yes on a standard single site; no on multisite or on hosts that remove unfiltered_html |
| Author | Yes, live or draft | No |
| Contributor | No. Refused at connect when WordPress reports capabilities; otherwise posts land as Pending review | No |
GEOHATS shows this warning when you connect. If schema matters to you, and for AI search it does, connect an Administrator.
How publishing works
What gets posted
GEOHATS posts the article body, not the whole standalone HTML document, so the page renders inside your theme. It removes the document head, executable scripts, style blocks, HTML comments and any leftover placeholder markers, and keeps the JSON-LD block. Root-relative internal links such as /pricingare rewritten to full URLs on your site’s domain. Only pages that passed the quality gate can be published.
Draft or live
Clicking Publish on a page in the dashboard publishes it live. For new pages, the website’s auto-publish mode decides: Off, Send as draft or Publish live (details on the integrations page). GEOHATS trusts what WordPress reports back: if WordPress saves the post as a draft or as pending review, GEOHATS records it that way and does not claim it is live. The MCP server’s publish_page tool reports the same real status to your coding agent.
Republishing updates the same post
- GEOHATS stores the WordPress post id after the first publish and updates that post next time.
- The first publish sets title, slug and excerpt. Later publishes send only the content and status, so a title or permalink you edited in WordPress is not overwritten.
- Before creating a post, GEOHATS looks for an existing post with the same slug in any status. A retry after a timeout updates that post instead of creating a duplicate.
- If you deleted the post in WordPress, the next publish creates a new one.
The optional IndexNow key
IndexNow is a protocol that tells participating search engines, including Bing, that a URL is new or changed. If you enter a key when connecting, GEOHATS sends the live URL to IndexNow each time a post goes live, using your key. The protocol requires you to host a text file named after the key, containing the key, at your site root (https://yoursite.com/<key>.txt). Without a key, nothing is sent and search engines find the post through your sitemap as usual.
The GEOHATS Connector plugin
The site optimizer crawls your site the way AI crawlers do and suggests fixes. Core WordPress cannot write SEO plugin fields, alt text inside content or JSON-LD over its REST API, so applying those fixes needs a small companion plugin. It is free and open source (GPLv2).
- Download geohats-connector.zip.
- In WordPress: Plugins → Add New → Upload Plugin, choose the zip, Install, Activate.
- Connect WordPress in GEOHATS (above) if you have not yet.
- In the site optimizer, open Fixes, select the fixes you want and click Apply.
| Fix | With Yoast SEO or Rank Math | With no SEO plugin |
|---|---|---|
| Page title | Written into the SEO plugin's own title field | The plugin sets the document title |
| Meta description | Written into the SEO plugin's description field | The plugin prints the meta description tag |
| Canonical URL | Written into the SEO plugin's canonical field | The plugin sets the canonical URL |
| FAQ and Article schema | Printed as JSON-LD in the page head | Same |
| Organization schema | Printed as JSON-LD on the front page | Same |
| Image alt text | Updated in the Media Library and in the page content | Same |
| Internal link | Wraps the first plain-text match of the anchor phrase in a link, skipping existing links, headings and code | Same |
- Rank Math: the plugin hands fields to Rank Math only once Rank Math actually prints them (after its account step is connected or skipped in the setup wizard). Before that, the plugin prints them itself, so a fix never disappears into a field nothing renders.
- Schema survives kses. JSON-LD added as a fix is stored in post meta and printed in the page head by the plugin, not saved into post content, so it is not stripped for lower roles.
- Server-side only. Everything is in the HTML WordPress sends. GPTBot, ClaudeBot and PerplexityBot do not run JavaScript, so a script-injected fix would be invisible to them.
- Undo. GEOHATS records the previous value of every change and can put it back from the Applied tab. Edits to post content save a WordPress revision first.
- Permissions. The plugin adds two REST endpoints,
geohats/v1/statusandgeohats/v1/seo. Both require a logged-in user who can edit posts, and each change also checks that the user can edit that specific page. - Requirements: WordPress 6.2 or later, PHP 7.4 or later.
Limits: if your homepage shows your latest posts and you use an SEO plugin, set the homepage title and description in that plugin’s settings. Images that come from your theme rather than the content or Media Library cannot be changed. The plugin was tested against a real WordPress install with no SEO plugin, with Yoast SEO, and with Rank Math both configured and not yet configured.
Common errors and what they mean
| What GEOHATS says | Usual cause |
|---|---|
| WordPress didn't accept the username + application password | Wrong username, or the Application Password was revoked. Create a new one. |
| The WordPress REST API isn't reachable | A security plugin (for example Wordfence) or a Disable REST API setting is blocking it, or the URL is wrong. |
| That URL responded but didn't return WordPress data | A cache, firewall challenge or coming-soon page is answering instead of WordPress. |
| This WordPress user can't publish posts | The account is a Contributor. Use an Editor or Administrator. |
| WordPress is temporarily unavailable | The site returned 429, 502, 503 or 504: rate limiting or maintenance. Try again later. |
| Install the GEOHATS Connector plugin | A fix was applied before the plugin was installed and activated. |
Related
- All publishing integrations, including Webflow, Shopify, Ghost and HubSpot
- Webhook for Zapier, Make and n8n, if you prefer to route posts through an automation
- The AI content writer that produces the pages
- You rank #1 on Google but ChatGPT ignores you: why, and the fix
- The page structure AI assistants actually cite
FAQ
Is there an AI SEO plugin for WordPress that works with Yoast or Rank Math?
The free GEOHATS Connector plugin writes titles, meta descriptions and canonicals into Yoast SEO or Rank Math when either is active, and prints them itself when neither is. It also adds FAQ, Article and Organization JSON-LD, image alt text and internal links. Every change can be undone from GEOHATS.
Do I need the plugin to publish posts?
No. Publishing posts only needs an Application Password, because it uses the standard WordPress REST API. The plugin is only for applying site optimizer fixes to existing pages, which core WordPress cannot do over REST.
Why is the JSON-LD missing from my published post?
WordPress removes script tags, style tags and SVG from post content saved by a user without the unfiltered_html capability. On a standard single-site install that is anyone below Editor; on multisite, everyone except Super Admins. Connect an Administrator account to keep the schema.
Will republishing overwrite the title or slug I changed in WordPress?
No. The first publish sets the title, slug and excerpt. Later publishes update only the content and status, so edits you make to the title or permalink in WordPress stay.
Can GEOHATS publish to WordPress automatically?
Yes. Set the website's auto-publish mode to Send as draft or Publish live. Each page GEOHATS generates is sent to WordPress as soon as it passes the quality gate. New connections start in Send as draft.
Does the plugin load JavaScript on my site?
No. It adds two REST endpoints and prints its tags in the page head on the server. AI crawlers such as GPTBot and ClaudeBot do not run JavaScript, so fixes have to be in the HTML the server sends.
Publish to WordPress from GEOHATS
WordPress publishing and the Connector plugin are included in every plan. You pay once and use your own AI keys.
See pricingLast updated