{"id":337682,"date":"2026-07-15T15:41:48","date_gmt":"2026-07-15T15:41:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/geoa-ai-visibility\/"},"modified":"2026-09-18T08:38:55","modified_gmt":"2026-09-18T08:38:55","slug":"geoa-ai-visibility","status":"publish","type":"plugin","link":"https:\/\/ko.wordpress.org\/plugins\/geoa-ai-visibility\/","author":23529679,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.9.56","stable_tag":"0.9.56","tested":"7.1.1","requires":"6.6","requires_php":"8.0","requires_plugins":null,"header_name":"Geoa \u2013 AI SEO & AEO on Autopilot","header_author":"AddonNordic","header_description":"See and improve how AI answer engines (ChatGPT, Gemini, Perplexity, Claude) understand your site \u2014 with EU-hosted, GDPR-safe analysis and registry-verified business schema for Nordic sites.","assets_banners_color":"07161f","last_updated":"2026-09-18 08:38:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/geoa.app\/wordpress","header_author_uri":"https:\/\/addonnordic.dk","rating":0,"author_block_rating":0,"active_installs":0,"downloads":1697,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.0":{"tag":"0.2.0","author":"addonnordic","date":"2026-07-15 20:06:11","revision":3609384},"0.3.0":{"tag":"0.3.0","author":"addonnordic","date":"2026-07-16 18:03:34","revision":3610610},"0.3.1":{"tag":"0.3.1","author":"addonnordic","date":"2026-07-17 08:05:16","revision":3611160},"0.3.2":{"tag":"0.3.2","author":"addonnordic","date":"2026-07-17 08:20:13","revision":3611175},"0.3.3":{"tag":"0.3.3","author":"addonnordic","date":"2026-07-17 15:30:39","revision":3611733},"0.4.0":{"tag":"0.4.0","author":"addonnordic","date":"2026-07-18 14:19:14","revision":3612658},"0.5.0":{"tag":"0.5.0","author":"addonnordic","date":"2026-08-10 09:39:47","revision":3640290},"0.5.1":{"tag":"0.5.1","author":"addonnordic","date":"2026-08-10 09:56:10","revision":3640306},"0.6.0":{"tag":"0.6.0","author":"addonnordic","date":"2026-08-14 09:16:22","revision":3647016},"0.7.0":{"tag":"0.7.0","author":"addonnordic","date":"2026-08-14 11:02:33","revision":3647182},"0.7.1":{"tag":"0.7.1","author":"addonnordic","date":"2026-08-14 13:03:29","revision":3647395},"0.8.0":{"tag":"0.8.0","author":"addonnordic","date":"2026-08-16 18:27:03","revision":3650042},"0.8.1":{"tag":"0.8.1","author":"addonnordic","date":"2026-08-16 20:05:16","revision":3650149},"0.8.2":{"tag":"0.8.2","author":"addonnordic","date":"2026-08-19 14:10:39","revision":3654778},"0.9.0":{"tag":"0.9.0","author":"addonnordic","date":"2026-08-19 14:25:23","revision":3654809},"0.9.1":{"tag":"0.9.1","author":"addonnordic","date":"2026-08-19 14:40:47","revision":3654833},"0.9.10":{"tag":"0.9.10","author":"addonnordic","date":"2026-08-27 08:25:42","revision":3668345},"0.9.11":{"tag":"0.9.11","author":"addonnordic","date":"2026-08-27 08:29:29","revision":3668351},"0.9.12":{"tag":"0.9.12","author":"addonnordic","date":"2026-08-27 18:17:02","revision":3669355},"0.9.13":{"tag":"0.9.13","author":"addonnordic","date":"2026-08-27 18:32:00","revision":3669373},"0.9.14":{"tag":"0.9.14","author":"addonnordic","date":"2026-08-27 18:43:14","revision":3669398},"0.9.15":{"tag":"0.9.15","author":"addonnordic","date":"2026-08-27 19:14:09","revision":3669427},"0.9.16":{"tag":"0.9.16","author":"addonnordic","date":"2026-08-27 19:38:52","revision":3669448},"0.9.17":{"tag":"0.9.17","author":"addonnordic","date":"2026-08-28 08:01:12","revision":3669993},"0.9.18":{"tag":"0.9.18","author":"addonnordic","date":"2026-08-28 09:56:26","revision":3670115},"0.9.19":{"tag":"0.9.19","author":"addonnordic","date":"2026-08-28 10:30:17","revision":3670162},"0.9.2":{"tag":"0.9.2","author":"addonnordic","date":"2026-08-20 21:54:38","revision":3657833},"0.9.20":{"tag":"0.9.20","author":"addonnordic","date":"2026-08-28 10:43:54","revision":3670173},"0.9.21":{"tag":"0.9.21","author":"addonnordic","date":"2026-08-28 15:43:43","revision":3670635},"0.9.22":{"tag":"0.9.22","author":"addonnordic","date":"2026-08-28 16:23:39","revision":3670671},"0.9.23":{"tag":"0.9.23","author":"addonnordic","date":"2026-08-30 13:13:51","revision":3672557},"0.9.24":{"tag":"0.9.24","author":"addonnordic","date":"2026-08-30 13:54:22","revision":3672615},"0.9.25":{"tag":"0.9.25","author":"addonnordic","date":"2026-08-30 14:18:46","revision":3672661},"0.9.26":{"tag":"0.9.26","author":"addonnordic","date":"2026-08-30 15:05:50","revision":3672726},"0.9.28":{"tag":"0.9.28","author":"addonnordic","date":"2026-08-30 15:10:44","revision":3672742},"0.9.29":{"tag":"0.9.29","author":"addonnordic","date":"2026-08-30 15:36:53","revision":3672777},"0.9.3":{"tag":"0.9.3","author":"addonnordic","date":"2026-08-23 18:53:05","revision":3662216},"0.9.30":{"tag":"0.9.30","author":"addonnordic","date":"2026-08-30 16:12:06","revision":3672815},"0.9.31":{"tag":"0.9.31","author":"addonnordic","date":"2026-08-30 18:25:33","revision":3672987},"0.9.32":{"tag":"0.9.32","author":"addonnordic","date":"2026-08-30 19:57:50","revision":3673086},"0.9.33":{"tag":"0.9.33","author":"addonnordic","date":"2026-08-30 20:19:53","revision":3673101},"0.9.34":{"tag":"0.9.34","author":"addonnordic","date":"2026-08-31 09:46:23","revision":3673805},"0.9.35":{"tag":"0.9.35","author":"addonnordic","date":"2026-08-31 10:25:34","revision":3673874},"0.9.36":{"tag":"0.9.36","author":"addonnordic","date":"2026-09-04 22:07:38","revision":3681856},"0.9.37":{"tag":"0.9.37","author":"addonnordic","date":"2026-09-04 22:07:38","revision":3681856},"0.9.38":{"tag":"0.9.38","author":"addonnordic","date":"2026-09-04 22:07:38","revision":3681856},"0.9.39":{"tag":"0.9.39","author":"addonnordic","date":"2026-09-04 22:07:38","revision":3681856},"0.9.4":{"tag":"0.9.4","author":"addonnordic","date":"2026-08-24 09:30:26","revision":3663031},"0.9.40":{"tag":"0.9.40","author":"addonnordic","date":"2026-09-04 22:07:38","revision":3681856},"0.9.41":{"tag":"0.9.41","author":"addonnordic","date":"2026-09-05 09:29:21","revision":3682313},"0.9.42":{"tag":"0.9.42","author":"addonnordic","date":"2026-09-06 08:01:54","revision":3683129},"0.9.43":{"tag":"0.9.43","author":"addonnordic","date":"2026-09-07 10:38:36","revision":3684674},"0.9.44":{"tag":"0.9.44","author":"addonnordic","date":"2026-09-07 10:59:32","revision":3684701},"0.9.45":{"tag":"0.9.45","author":"addonnordic","date":"2026-09-07 15:23:15","revision":3685181},"0.9.46":{"tag":"0.9.46","author":"addonnordic","date":"2026-09-07 17:55:30","revision":3685365},"0.9.47":{"tag":"0.9.47","author":"addonnordic","date":"2026-09-07 18:54:07","revision":3685429},"0.9.48":{"tag":"0.9.48","author":"addonnordic","date":"2026-09-09 14:23:20","revision":3688468},"0.9.49":{"tag":"0.9.49","author":"addonnordic","date":"2026-09-15 11:06:10","revision":3696840},"0.9.5":{"tag":"0.9.5","author":"addonnordic","date":"2026-08-24 09:52:06","revision":3663077},"0.9.50":{"tag":"0.9.50","author":"addonnordic","date":"2026-09-15 19:55:20","revision":3697642},"0.9.51":{"tag":"0.9.51","author":"addonnordic","date":"2026-09-16 07:51:58","revision":3698129},"0.9.52":{"tag":"0.9.52","author":"addonnordic","date":"2026-09-16 09:29:39","revision":3698270},"0.9.53":{"tag":"0.9.53","author":"addonnordic","date":"2026-09-17 08:44:13","revision":3699831},"0.9.54":{"tag":"0.9.54","author":"addonnordic","date":"2026-09-17 08:59:59","revision":3699867},"0.9.55":{"tag":"0.9.55","author":"addonnordic","date":"2026-09-18 07:12:05","revision":3701454},"0.9.56":{"tag":"0.9.56","author":"addonnordic","date":"2026-09-18 08:38:55","revision":3701603},"0.9.6":{"tag":"0.9.6","author":"addonnordic","date":"2026-08-24 10:02:58","revision":3663101},"0.9.7":{"tag":"0.9.7","author":"addonnordic","date":"2026-08-24 10:22:19","revision":3663139},"0.9.8":{"tag":"0.9.8","author":"addonnordic","date":"2026-08-24 10:24:03","revision":3663144},"0.9.9":{"tag":"0.9.9","author":"addonnordic","date":"2026-08-24 10:35:51","revision":3663167}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3640305,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3640305,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3640305,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3640305,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"geoa\/badge":{"name":"geoa\/badge","title":"Geoa badge"}},"tagged_versions":["0.2.0","0.3.0","0.3.1","0.3.2","0.3.3","0.4.0","0.5.0","0.5.1","0.6.0","0.7.0","0.7.1","0.8.0","0.8.1","0.8.2","0.9.0","0.9.1","0.9.10","0.9.11","0.9.12","0.9.13","0.9.14","0.9.15","0.9.16","0.9.17","0.9.18","0.9.19","0.9.2","0.9.20","0.9.21","0.9.22","0.9.23","0.9.24","0.9.25","0.9.26","0.9.28","0.9.29","0.9.3","0.9.30","0.9.31","0.9.32","0.9.33","0.9.34","0.9.35","0.9.36","0.9.37","0.9.38","0.9.39","0.9.4","0.9.40","0.9.41","0.9.42","0.9.43","0.9.44","0.9.45","0.9.46","0.9.47","0.9.48","0.9.49","0.9.5","0.9.50","0.9.51","0.9.52","0.9.53","0.9.54","0.9.55","0.9.56","0.9.6","0.9.7","0.9.8","0.9.9"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3609384,"resolution":"1","location":"assets","locale":"","width":2880,"height":1800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3609384,"resolution":"2","location":"assets","locale":"","width":560,"height":728},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3609384,"resolution":"3","location":"assets","locale":"","width":2880,"height":1800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3609384,"resolution":"4","location":"assets","locale":"","width":1336,"height":1548},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3609384,"resolution":"5","location":"assets","locale":"","width":1336,"height":538}},"screenshots":{"1":"Verify your business against the official national registry and publish registry-verified schema \u2014 Geoa \u2192 Settings.","2":"Per-post answer-engine readiness, right in the block editor.","3":"Per-product AI readiness and enriched Product schema for WooCommerce.","4":"E-E-A-T trust signals and citation coverage.","5":"AI crawler activity \u2014 which answer engines fetched your pages."}},"plugin_section":[],"plugin_tags":[244526,236374,2591,244604,1117],"plugin_category":[45,55],"plugin_contributors":[271719],"plugin_business_model":[],"class_list":["post-337682","plugin","type-plugin","status-publish","hentry","plugin_tags-aeo","plugin_tags-ai-seo","plugin_tags-geo","plugin_tags-llms-txt","plugin_tags-schema","plugin_category-ecommerce","plugin_category-seo-and-marketing","plugin_contributors-addonnordic","plugin_committers-addonnordic"],"banners":{"banner":"https:\/\/ps.w.org\/geoa-ai-visibility\/assets\/banner-772x250.png?rev=3640305","banner_2x":"https:\/\/ps.w.org\/geoa-ai-visibility\/assets\/banner-1544x500.png?rev=3640305","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/geoa-ai-visibility\/assets\/icon-128x128.png?rev=3640305","icon_2x":"https:\/\/ps.w.org\/geoa-ai-visibility\/assets\/icon-256x256.png?rev=3640305","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/geoa-ai-visibility\/assets\/screenshot-1.png?rev=3609384","caption":"Verify your business against the official national registry and publish registry-verified schema \u2014 Geoa \u2192 Settings."},{"src":"https:\/\/ps.w.org\/geoa-ai-visibility\/assets\/screenshot-2.png?rev=3609384","caption":"Per-post answer-engine readiness, right in the block editor."},{"src":"https:\/\/ps.w.org\/geoa-ai-visibility\/assets\/screenshot-3.png?rev=3609384","caption":"Per-product AI readiness and enriched Product schema for WooCommerce."},{"src":"https:\/\/ps.w.org\/geoa-ai-visibility\/assets\/screenshot-4.png?rev=3609384","caption":"E-E-A-T trust signals and citation coverage."},{"src":"https:\/\/ps.w.org\/geoa-ai-visibility\/assets\/screenshot-5.png?rev=3609384","caption":"AI crawler activity \u2014 which answer engines fetched your pages."}],"raw_content":"<!--section=description-->\n<p><strong>Get found when your customers ask AI. On autopilot.<\/strong><\/p>\n\n<p>Your customers increasingly ask ChatGPT, Google's AI Overviews, Perplexity and Claude instead of searching. Geoa makes your WordPress site something those engines can read, trust and verify \u2014 then does the work for you: it fixes your site, you approve, and the before\/after proof comes with every fix. Built for the tradesman, the accountant and the clinic with no marketing department.<\/p>\n\n<p><strong>Three steps:<\/strong><\/p>\n\n<ol>\n<li><strong>Connect your site<\/strong> \u2014 pair the plugin with your Geoa account in about a minute.<\/li>\n<li><strong>Geoa makes you AI-ready \u2014 automatically.<\/strong> It builds the registry-verified schema, llms.txt and structured data answer engines look for, and (with your one-click approval) publishes it to your site and keeps it in sync. No copy-pasting code.<\/li>\n<li><strong>Watch it work.<\/strong> A per-engine AI Visibility Score, Share of Voice and a live \"is it published?\" status show your progress \u2014 and every published fix gets a public before\/after proof page.<\/li>\n<\/ol>\n\n<p>Geoa is built for the European market: analysis runs on an <strong>EU-hosted, GDPR-safe<\/strong> backend, and everything here \u2014 AI-visibility scoring, approved on-page fixes, llms.txt, E-E-A-T checks and AI-crawler tracking \u2014 works wherever your business is. On top of that, and uniquely, Geoa publishes <strong>registry-verified<\/strong> business schema looked up live in four official national registries: Danish CVR, Norwegian Br\u00f8nn\u00f8ysund, Swedish Bolagsverket\/Allabolag and Finnish PRH. Outside those four you use the rest of the plugin and skip that one step. Output is generated in your own language.<\/p>\n\n<h4>What it does<\/h4>\n\n<p><strong>Structured data for AI<\/strong><\/p>\n\n<ul>\n<li><strong>Registry-verified Organization schema<\/strong> \u2014 enter your registration number; Geoa fetches verified legal name, VAT status (VIES), address, founding date and industry, and publishes valid JSON-LD. Contact data is hidden automatically when a business has marketing protection (GDPR).<\/li>\n<li><strong>Entity verification (sameAs)<\/strong> \u2014 link your Trustpilot, LinkedIn and other profiles, plus the official registry page, so engines can corroborate your business. Nordic directories included (Krak, Finn.no, Hitta.se, Ratsit, Finder.fi and more).<\/li>\n<li><strong>FAQ schema in your language<\/strong> \u2014 turns the questions and answers already in your posts into FAQPage markup for AI extraction.<\/li>\n<li><strong>Article schema<\/strong> \u2014 author, dates and publisher for single posts.<\/li>\n<li><strong>WooCommerce Product schema<\/strong> \u2014 price, availability, brand, GTIN, ratings and an EU return policy (14-day right of withdrawal) so AI shopping agents can cite your products. Variable products emit a proper price range, and when your business is verified the Offer is linked to a <strong>registry-verified seller<\/strong> \u2014 a trust signal generic Product schema can't express. A per-product AI-readiness score sits in the product editor.<\/li>\n<li><strong>Optional llms.txt<\/strong> \u2014 a curated, opt-in file for AI crawlers.<\/li>\n<\/ul>\n\n<p><strong>Analysis<\/strong><\/p>\n\n<ul>\n<li><strong>In-editor AEO readiness<\/strong> \u2014 a per-post score right in the block editor. Connected sites are scored against Geoa's 23-signal GEO content standard (the same checklist Geoa Content uses), with a concrete hint for every missed signal; unconnected sites get a local estimate, labelled as such.<\/li>\n<li><strong>E-E-A-T trust signals<\/strong> \u2014 identity, contact, about, privacy and author signals.<\/li>\n<li><strong>Citation coverage<\/strong> \u2014 which third-party sources you have and which are missing. Connected sites get Geoa's tier-ranked source list (Wikidata, Crunchbase, Google Business Profile and more) with create-links and time estimates, and the profile URLs you enter sync to your Geoa account as sameAs.<\/li>\n<li><strong>AI crawler activity<\/strong> \u2014 see when GPTBot, ClaudeBot, PerplexityBot and others fetch your pages.<\/li>\n<\/ul>\n\n<p><strong>AI visibility &amp; automatic fixes (connect a Geoa account)<\/strong><\/p>\n\n<ul>\n<li><strong>AI Visibility Score<\/strong> per engine, <strong>Share of Voice<\/strong>, and an <strong>AI Command Center<\/strong> of prioritised actions.<\/li>\n<li><strong>Approved fixes, published for you<\/strong> \u2014 approve a fix in your Geoa dashboard (an llms.txt, a structured-data block, a meta title or description) and Geoa publishes it on your site and keeps it in sync \u2014 pulled hourly, and pulled again on the next visit whenever an hour has passed without one, so a quiet site does not drift out of date. An approved fix always takes precedence over the plugin's own output, so you never get a duplicate \u2014 and you can turn it off at any time.<\/li>\n<li><strong>Articles from Geoa Content, delivered as drafts<\/strong> \u2014 articles you mark \"ready\" in Geoa Content (content.geoa.app) appear as draft posts in WordPress, prepared with your business knowledge, an FAQ section and SEO metadata. You review and press Publish yourself \u2014 nothing goes live automatically \u2014 and once live, Geoa measures the article's actual effect.<\/li>\n<\/ul>\n\n<p>Geoa never emits duplicate structured data: when Yoast or Rank Math already provide a schema type, Geoa augments their graph instead of adding a second node.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin is a client for the Geoa service (https:\/\/geoa.app), operated by AddonNordic ApS. It sends requests to the Geoa API at https:\/\/api.geoa.app to verify your business against official national registries and to run AI-visibility analysis, and (only after you connect a Geoa account) to the Geoa connect service at https:\/\/connect.geoa.app to report AI-crawler activity on your site. It uses no other external service.<\/p>\n\n<p>What data is sent, and when:<\/p>\n\n<ul>\n<li>Registry verification \u2014 when you enter your country and registration number in Geoa \u2192 Settings (or open that screen with them saved), that registration number is sent so the service can verify your business and return your official company data (legal name, VAT status, address, industry, founding date).<\/li>\n<li>Structured-data and analysis features \u2014 when you use them, the URL and the public content of the page(s) you choose to analyse are sent.<\/li>\n<li>AI-visibility scoring \u2014 only after you connect a Geoa account: your per-site pairing key (obtained from the Geoa dashboard) is sent as an authentication header so the service knows which account to read. The free tier never triggers a paid backend call.<\/li>\n<li>Approved fixes \u2014 only after you connect a Geoa account and enable \"Apply approved fixes\": once an hour the plugin fetches the fixes you approved in your Geoa dashboard (llms.txt, structured data, meta) and reports back which are live. Only your pairing key is sent; you can turn this off at any time.<\/li>\n<li>Article import \u2014 only after you connect a Geoa account: once an hour the plugin fetches articles you marked \"ready\" in Geoa Content and creates them as draft posts for your review. When an article comes with a share image (a PNG card with the article's title and your business name, served from https:\/\/geoa.app), the plugin downloads it once into your media library and sets it as the draft's featured image, unless the draft already has one. It reports back which drafts were created and, when you publish one, its permalink \u2014 so Geoa can measure the article's effect. Only your pairing key, post IDs and permalinks are sent; drafts are never published automatically, and you can turn this off at any time.<\/li>\n<li>Plan and usage \u2014 only after you connect a Geoa account, and only inside wp-admin: when you open Geoa \u2192 Settings the plugin reads your own plan, limits and monitored-question count so it can show them. Only your pairing key is sent; the result is cached, and no request is made from your site's public pages.<\/li>\n<li>Monitored questions \u2014 only after you connect a Geoa account, and only inside wp-admin: when you open Geoa \u2192 Settings the plugin reads your monitored questions from your Geoa account so it can show them. Only your pairing key is sent; the questions themselves are edited in your Geoa dashboard, not in the plugin.<\/li>\n<li>Chosen name \u2014 only after you connect a Geoa account, and only when you set the name your business should be known as (setup or Geoa \u2192 Settings): that name and its spelling variants are sent so the schema on your site and the AI measurement in your dashboard describe the same entity.<\/li>\n<li>Profile URLs \u2014 only after you connect a Geoa account, and only when you save a profile URL (Trustpilot, LinkedIn, \u2026) in Geoa \u2192 Settings: that URL is sent so it can appear as sameAs in every schema Geoa publishes for you.<\/li>\n<li>In-editor scoring \u2014 only after you connect a Geoa account, and only when you open a post in the block editor: the post's title and content are sent so Geoa can score the draft against its GEO content standard. The result is cached until the content changes; nothing is stored server-side.<\/li>\n<li>Content opportunities and citation sources \u2014 only after you connect a Geoa account, and only inside wp-admin: when you open the Geoa dashboard the plugin reads your opportunity list and source checklist. Only your pairing key is sent; results are cached.<\/li>\n<li>Alt-text suggestions \u2014 only after you connect a Geoa account, and only when you click \"Write suggestions\" on the Alt text screen: the public URLs, filenames and parent-post titles of up to 10 images missing alt text are sent to https:\/\/api.geoa.app, where the alt texts are written from the images. The count of images missing alt text is included in the hourly status ping. Nothing is written back until you approve it on the review screen.<\/li>\n<li>Article links \u2014 only after you connect a Geoa account: on the hourly sync the plugin sends the outbound and internal link URLs (with anchor text and the article's title\/URL) from a rotating batch of your published posts to https:\/\/api.geoa.app, so Geoa can check for broken links server-side. No visitor data is involved.<\/li>\n<li>Content &amp; site overview \u2014 only after you connect a Geoa account: the hourly status ping includes a compact list of your published posts (post ID, title, public URL, an admin edit link and the last-modified date \u2014 never the post content) and your site's environment facts (theme and plugin names\/versions incl. whether each plugin is active, whether search engines are discouraged, the permalink structure, whether core sitemaps are enabled, a small whitelist of Yoast\/Rank Math settings \u2014 their sitemap toggle and organization\/knowledge-graph name \u2014 and taxonomy counts). This lets your Geoa employee suggest refreshing outdated posts and warn about SEO conflicts with other plugins. No visitor data, no user accounts and no post content are sent.<\/li>\n<li>AI bot choice \u2014 only after you connect a Geoa account, and only when you flip the \"Block AI training bots\" toggle: the plugin sends that single yes\/no choice to https:\/\/api.geoa.app, which returns the robots.txt rules to apply. No other data is sent.<\/li>\n<li>404 traffic \u2014 only after you connect a Geoa account: the plugin counts real front-end 404 hits (the path only \u2014 query strings are stripped; no IP address, no user-agent, no visitor data) and sends the per-path counters to https:\/\/api.geoa.app on the hourly sync, so Geoa can suggest redirects for lost traffic. Bot-probe paths (wp-login, .env, \u2026) are filtered out locally and never sent.<\/li>\n<li><p>AI-crawler activity \u2014 only after you connect a Geoa account: when a known AI crawler (e.g. GPTBot, ClaudeBot, PerplexityBot) fetches one of your pages, the plugin sends that crawler's user-agent, the page path (query string stripped), a timestamp and the status code to https:\/\/connect.geoa.app \u2014 batched and asynchronously (at most one background request every 5 minutes), so it never slows your site. This powers the \"AI crawlers on your site\" card in your Geoa dashboard. No visitor data and no IP addresses are ever sent \u2014 only requests already identifying themselves as known AI crawlers. Disconnect your Geoa account and nothing is sent.<\/p><\/li>\n<li><p>Geoa badge (optional, off by default) \u2014 if you switch the badge on and place it on your site, your visitors' browsers load the badge image from https:\/\/geoa.app. The image is an anonymous, unguessable address; the fetch is not logged per visitor, sets no cookie and assigns no identifier. Switch the badge off and no such request is made.<\/p><\/li>\n<\/ul>\n\n<p>This plugin does NOT track your site's visitors. It sets no cookies, adds no front-end tracking scripts, assigns no visitor identifiers, and never sends visitor or personal data to any external service. The AI crawler log records only the user-agent of known AI crawlers (e.g. GPTBot, ClaudeBot) that request your pages; it is stored locally in your own database, and is only transmitted (to https:\/\/connect.geoa.app, as described above) after you have connected a Geoa account \u2014 never IP addresses, never human visitors.<\/p>\n\n<p>Service: https:\/\/geoa.app\nTerms of Service: https:\/\/geoa.app\/terms\nPrivacy Policy: https:\/\/geoa.app\/privacy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>geoa-ai-visibility<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install it from the Plugins screen.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to <strong>Geoa \u2192 Settings<\/strong>, choose your country and enter your registration number, then publish your registry-verified schema.<\/li>\n<li>(Optional) Connect a Geoa account with a pairing code from your Geoa dashboard to see live AI-visibility scores.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20geoa%20work%20alongside%20yoast%20seo%20or%20rank%20math%3F\"><h3>Does Geoa work alongside Yoast SEO or Rank Math?<\/h3><\/dt>\n<dd><p>Yes \u2014 by design. Geoa never prints a second schema graph or a duplicate meta tag next to theirs: the registry-verified Organization data (company ID, legal name, VAT ID, profiles) is merged INTO Yoast's or Rank Math's own schema graph via their official filters, approved meta descriptions are rendered through their presenters, and Article\/FAQ\/canonical output defers to them. You keep your SEO plugin; Geoa adds the AI-visibility layer on top. All in One SEO and SEOPress are detected too, so Geoa defers its overlapping output to them as well.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20geoa%20account%3F\"><h3>Do I need a Geoa account?<\/h3><\/dt>\n<dd><p>No. Registry-verified schema, FAQ\/Article\/Product schema, the in-editor readiness check, E-E-A-T and the AI crawler log all work without an account. A Geoa account adds live per-engine AI-visibility scoring, Share of Voice, the AI Command Center and automatically published approved fixes.<\/p><\/dd>\n<dt id=\"can%20geoa%20publish%20fixes%20automatically%3F\"><h3>Can Geoa publish fixes automatically?<\/h3><\/dt>\n<dd><p>Yes, when you connect a Geoa account and enable \"Apply approved fixes\". Anything you approve in your Geoa dashboard \u2014 an llms.txt, a structured-data block, a meta title or description \u2014 is then published on your site and kept in sync, checked once an hour. Approved fixes always take precedence over the plugin's own output, so you never get a duplicate, and you can turn the whole thing off at any time. Nothing is published without your approval.<\/p><\/dd>\n<dt id=\"does%20it%20conflict%20with%20yoast%20or%20rank%20math%3F\"><h3>Does it conflict with Yoast or Rank Math?<\/h3><\/dt>\n<dd><p>No. When an SEO plugin already emits a schema type, Geoa merges its data into that plugin's graph instead of adding a duplicate node.<\/p><\/dd>\n<dt id=\"which%20countries%20are%20supported%20for%20registry%20verification%3F\"><h3>Which countries are supported for registry verification?<\/h3><\/dt>\n<dd><p>Denmark (CVR), Norway (Br\u00f8nn\u00f8ysund), Sweden (Bolagsverket\/Allabolag) and Finland (PRH).<\/p><\/dd>\n<dt id=\"is%20my%20data%20processed%20in%20the%20eu%3F\"><h3>Is my data processed in the EU?<\/h3><\/dt>\n<dd><p>Yes. The Geoa backend is EU-hosted, and contact data covered by marketing protection is never published.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%3F\"><h3>Does it work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. On product pages it publishes enriched Product schema \u2014 price, availability, brand, GTIN, ratings, an EU return policy and, when your business is verified, a registry-verified seller. Variable products emit a correct price range (AggregateOffer). If Yoast or Rank Math already emits Product schema, Geoa merges these fields into their graph instead of adding a duplicate. A per-product AI-readiness score appears in the product editor.<\/p><\/dd>\n<dt id=\"can%20ai%20agents%20use%20geoa%20directly%3F\"><h3>Can AI agents use Geoa directly?<\/h3><\/dt>\n<dd><p>Yes. Geoa ships an MCP server at https:\/\/geoa.app\/mcp \u2014 connect it as a custom connector in Claude (or any MCP-capable agent). Without a key the agent can run the free GEO score and mechanical claim verification; with your personal connector key (Integrations in the Geoa dashboard) it can also read your AI-visibility report and fix queue, draft source-verified articles into Content Studio, and run Radar prospecting. The connector is read-only on your site: fixes are only ever applied through the approval flows in the dashboard and this plugin.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.9.56<\/h4>\n\n<ul>\n<li>Retter du teksten i Geoa Content, n\u00e5r rettelsen nu ned i kladden p\u00e5 dit site \u2014 ogs\u00e5 n\u00e5r du har kigget p\u00e5 kladden f\u00f8rst. F\u00f8r talte det som en redigering bare at \u00e5bne eller forh\u00e5ndsvise den: WordPress gemmer en kladde, n\u00e5r du forh\u00e5ndsviser den, og pluginet l\u00e6ste det som \"hun er g\u00e5et i gang selv\" og r\u00f8rte den aldrig igen. S\u00e5 stoppede rettelser fra Geoa Content med at komme, uden at der stod noget nogen steder. Nu er det TEKSTEN, der afg\u00f8r det. Har du rettet i kladden, vinder dit arbejde stadig \u2014 men en forh\u00e5ndsvisning, en ny kategori eller et fremh\u00e6vet billede st\u00e5r ikke l\u00e6ngere i vejen. M\u00e5lt p\u00e5 checkbiz.eu 2026-09-18: artiklen rettet og gemt i Geoa Content, \"Sync now\" trykket to gange, kladdens \"Last Modified\" u\u00e6ndret p\u00e5 6:55.<\/li>\n<li>Og HAR du rettet i kladden, st\u00e5r det nu p\u00e5 indstillingssiden \u2014 med artiklens titel og en knap, der henter Geoas version, hvis det er den, du vil have. F\u00f8r stod der kun \"3 draft(s)\", og intet sted kunne du se, at Geoa l\u00e5 med en nyere tekst, dit site havde valgt fra.<\/li>\n<\/ul>\n\n<h4>0.9.55<\/h4>\n\n<ul>\n<li>Din FAQ bliver nu til FAQ-markup, uanset hvilket sprog overskriften st\u00e5r p\u00e5. St\u00e5r din FAQ-sektion under bare ordet \"Fr\u00e5gor\", \"Sp\u00f8rsm\u00e5l\", \"Questions\", \"Fragen\" eller \"Kysymykset\", blev den ikke genkendt som en FAQ \u2014 kun den danske \"Sp\u00f8rgsm\u00e5l\" var p\u00e5 listen. Siden gik derfor helt uden FAQ-markup, selv om indstillingen var sl\u00e5et til, og sp\u00f8rgsm\u00e5l skrevet med fed tekst under s\u00e5dan en overskrift kom heller aldrig med. Nu g\u00e6lder de samme etiketter p\u00e5 dansk, norsk, svensk, engelsk, tysk og finsk. En overskrift, der bruger ordet om noget andet (\"Sp\u00f8rgsm\u00e5l du b\u00f8r stille din revisor\"), er stadig en almindelig afsnitstitel.<\/li>\n<li>Og scoren i editoren d\u00f8mmer ikke l\u00e6ngere din side h\u00e5rdere, fordi den ikke er skrevet p\u00e5 dansk. To af de syv tjek \u2014 \"FAQ \/ Q&amp;A section\" og om siden har overskrifter, der er sp\u00f8rgsm\u00e5l \u2014 l\u00e6ste hver sin ordliste p\u00e5 dansk og engelsk. Den samme side kunne derfor score lavere p\u00e5 svensk eller norsk end p\u00e5 dansk, uden at der var noget i vejen med den; selv en engelsk \"Frequently asked questions\" blev ikke talt som en FAQ-sektion.<\/li>\n<\/ul>\n\n<h4>0.9.54<\/h4>\n\n<ul>\n<li>Dine ekspertise-emner kommer nu ud p\u00e5 forsiden, ogs\u00e5 n\u00e5r et godkendt schema-forslag fra Geoa-dashboardet ejer den. Forslaget bar sin egen liste fra det tidspunkt, du godkendte det, og pluginet udfyldte kun felter, forslaget manglede \u2014 s\u00e5 en rettelse i \"Expert in\" eller i Brand Brain n\u00e5ede aldrig siden. Nu er det altid din aktuelle liste, der udgives som knowsAbout, og et tomt felt udgiver ingen.<\/li>\n<\/ul>\n\n<h4>0.9.53<\/h4>\n\n<ul>\n<li>N\u00e5r du retter dine ekspertise-emner i Geoa-dashboardet (Brand Brain \u2192 Ekspertise), st\u00e5r rettelsen nu ogs\u00e5 p\u00e5 din hjemmeside. F\u00f8r skete det modsatte: listen i pluginets \"Expert in\"-felt blev skubbet tilbage til dashboardet hver time og overskrev din rettelse, s\u00e5 forsiden blev ved med at udgive de gamle emner som knowsAbout. Nu vinder den side, du sidst har rettet \u2014 dashboardet eller WordPress \u2014 og forsiden f\u00f8lger med inden for en time. Et tomt felt i WordPress sletter heller ikke l\u00e6ngere emnerne p\u00e5 din konto, n\u00e5r du forbinder sitet.<\/li>\n<\/ul>\n\n<h4>0.9.52<\/h4>\n\n<ul>\n<li>Din FAQ bliver igen til FAQ-markup, ogs\u00e5 n\u00e5r sp\u00f8rgsm\u00e5lene st\u00e5r med fed tekst. Har en artikel en FAQ-sektion, hvor hvert sp\u00f8rgsm\u00e5l er et afsnit i fed skrift med sp\u00f8rgsm\u00e5lstegn og svaret st\u00e5r lige under, bliver pr\u00e6cis de sp\u00f8rgsm\u00e5l til FAQPage. Det er den form, mange importerede artikler har. Svaret er afsnittet under sp\u00f8rgsm\u00e5let \u2014 en opfordring til handling efter den sidste FAQ kommer ikke med som svar. Fed tekst uden for FAQ-sektionen t\u00e6ller stadig aldrig. M\u00e5lt p\u00e5 checkbiz.eu 2026-09-16: fem synlige sp\u00f8rgsm\u00e5l, ingen FAQ-markup.<\/li>\n<li>Din virksomhedsbeskrivelse kommer nu ogs\u00e5 ud p\u00e5 forsiden, n\u00e5r du har godkendt et schema-forslag i Geoa-dashboardet. Den s\u00e6tning, du har skrevet i din virksomhedsprofil om, hvad I laver, st\u00e5r i Organization-markuppet \u2014 det er den, en AI-motor l\u00e6ner sig op ad, n\u00e5r nogen sp\u00f8rger, hvad I er. I 0.9.51 n\u00e5ede den kun sites uden et godkendt forslag. Profilen er eneste kilde: retter du s\u00e6tningen i dashboardet, f\u00f8lger sitet med, og sletter du den, forsvinder den ogs\u00e5 fra sitet. M\u00e5lt p\u00e5 checkbiz.eu 2026-09-16: 0.9.51 installeret, godkendt Organization p\u00e5 forsiden, ingen beskrivelse.<\/li>\n<\/ul>\n\n<h4>0.9.51<\/h4>\n\n<ul>\n<li>Dit site st\u00e5r nu aldrig med to artikel-noder eller to br\u00f8dkrummestier. L\u00e6gger dit TEMA \u2014 ikke et SEO-plugin, men temaet \u2014 allerede Article, FAQ eller BreadcrumbList p\u00e5 siden, springer Geoa sin egen over. F\u00f8r spurgte vi kun, om Yoast eller Rank Math var installeret, og det var det forkerte sp\u00f8rgsm\u00e5l: et tema er ikke et plugin, s\u00e5 vagten s\u00e5 ingenting, og l\u00f8ftet p\u00e5 indstillingen (\"kun n\u00e5r intet andet SEO-plugin leverer det\") holdt ikke p\u00e5 netop de sites, hvor temaet selv laver schema. Nu l\u00e6ses siden. M\u00e5lt p\u00e5 checkbiz.eu 2026-09-16: \u00e9n side bar b\u00e5de Article og BlogPosting og to BreadcrumbList, og en AI-motor m\u00e5tte g\u00e6tte, hvilken der gjaldt.<\/li>\n<li>Sl\u00e5r du vores artikel-schema fra, fordi temaet ejer det, siger scoren i editoren ikke l\u00e6ngere, at siden mangler schema. Den l\u00e6ser nu, hvad siden faktisk bar, sidst en bes\u00f8gende hentede den \u2014 i stedet for kun at kende sin egen checkbox.<\/li>\n<li>Til temaudviklere: <code>apply_filters( 'geoa_head_scan', true )<\/code> sl\u00e5r m\u00e5lingen fra for et site, der ikke \u00f8nsker, at Geoa l\u00e6ser sin egen <code>&lt;head&gt;<\/code>. Uden m\u00e5ling opf\u00f8rer alt sig pr\u00e6cis som f\u00f8r.<\/li>\n<li>Dine virksomhedsdata p\u00e5 forsiden siger nu ogs\u00e5, hvad I LAVER. Beskrivelsen fra din virksomhedsprofil i Geoa bliver udgivet som <code>description<\/code> p\u00e5 dit Organization-schema \u2014 f\u00f8r stod der navn, selskabsnavn, CVR, adresse og emner, men aldrig \u00e9n s\u00e6tning om, hvad virksomheden g\u00f8r, og en AI-motor m\u00e5tte derfor udlede det af siden. M\u00e5lt p\u00e5 checkbiz.eu 2026-09-16: ChatGPT beskrev et virksomhedstjek-v\u00e6rkt\u00f8j som \u00bbbusiness intelligence og markedsanalyse\u00ab og som \u00bbprim\u00e6rt rettet mod VAT-compliance\u00ab. Er dit site p\u00e5 engelsk, bruges din engelske beskrivelse. Har du ikke skrevet nogen, udgives der som hidtil ingen \u2014 vi finder aldrig p\u00e5 en.<\/li>\n<\/ul>\n\n<h4>0.9.50<\/h4>\n\n<ul>\n<li>Din FAQ-markup matcher nu den FAQ, dine l\u00e6sere ser. Har en artikel en FAQ-sektion (\"FAQ\", \"Ofte stillede sp\u00f8rgsm\u00e5l\", \"Vanliga fr\u00e5gor\" \u2026), bliver pr\u00e6cis sp\u00f8rgsm\u00e5lene i den sektion til FAQPage \u2014 intet andet. Uden en s\u00e5dan sektion t\u00e6ller kun overskrifter, der er sp\u00f8rgsm\u00e5l med sp\u00f8rgsm\u00e5lstegn. F\u00f8r kom almindelige afsnitsoverskrifter, der begyndte med \"What\" eller \"Hvad\", med som sp\u00f8rgsm\u00e5l, med hele afsnittet som svar; Google kr\u00e6ver, at FAQ-markup svarer til det synlige indhold. M\u00e5lt p\u00e5 entitywatch.app 2026-09-15: 6 sp\u00f8rgsm\u00e5l i markup, 4 i den synlige FAQ.<\/li>\n<li>Artiklens udgiver peger nu altid p\u00e5 en virksomhed, der faktisk st\u00e5r p\u00e5 siden. Nyt til temaer: <code>geoa_organization_id()<\/code> giver det @id, Geoa's Organization har p\u00e5 den aktuelle side \u2014 Geoa's egen, den Yoast eller Rank Math udskriver og Geoa beriger, eller et godkendt schema-fix. Et tema, der overlader virksomheden til Geoa, skal pege sin publisher dertil i stedet for p\u00e5 en fast adresse; ellers st\u00e5r grafen med en reference til en virksomhed, der ikke findes.<\/li>\n<\/ul>\n\n<h4>0.9.49<\/h4>\n\n<ul>\n<li>Dit schema bruger nu det navn, dine kunder kender dig under \u2014 ogs\u00e5 n\u00e5r dit brand er et produkt, som et anderledes navngivet selskab driver. Dit brand st\u00e5r i <code>name<\/code>, selskabets registrerede navn i <code>legalName<\/code>, dine stavem\u00e5der i <code>alternateName<\/code>, og Brand-noden bliver st\u00e5ende. Det er pr\u00e6cis det, Google beder om: samme <code>name<\/code> som sitets eget navn. Tidligere kom selskabsnavnet i <code>name<\/code> i den situation, ogs\u00e5 n\u00e5r du havde godkendt et schema-fix med dit brand i dashboardet. Et \u00e6ldre fix med selskabsnavnet f\u00e5r automatisk dit valgte navn.<\/li>\n<\/ul>\n\n<h4>0.9.48<\/h4>\n\n<ul>\n<li>Siderne i \/llms.txt st\u00e5r nu som rigtige links. Standarden bag filen (llmstxt.org) kr\u00e6ver, at hver side skrives som et markdown-link \u2014 <code>- [Titel](adresse): beskrivelse<\/code>. Vi skrev adressen bar, <code>- adresse: Titel \u2014 beskrivelse<\/code>, og en AI-motor, der l\u00e6ser filen efter bogen, fandt derfor ingen links overhovedet i afsnittet med dine vigtigste sider. Det var filens ene opgave. Titler med [kantede parenteser] og adresser med (runde) bevarer nu linket i stedet for at bryde det.<\/li>\n<li>\/llms.txt \u2014 filen, der fort\u00e6ller AI-motorer, hvad dit site handler om \u2014 henviser nu kun til et sitemap, der faktisk svarer. Bruger dit site Yoast, Rank Math, All in One SEO, SEOPress eller et andet SEO-plugin, sl\u00e5r det WordPress' eget sitemap fra og serverer sit eget i stedet; filen pegede alligevel p\u00e5 WordPress' adresse, og den svarer s\u00e5 \"siden findes ikke\". Nu findes sitets rigtige sitemap f\u00f8rst \u2014 og kan der ikke findes noget, n\u00e6vner filen ingen adresse frem for en d\u00f8d. M\u00e5lt p\u00e5 fleromdomen.se 2026-09-09: \/wp-sitemap.xml svarede 404, \/sitemap.xml svarede 200, og llms.txt navngav 404'eren.<\/li>\n<\/ul>\n\n<h4>0.9.47<\/h4>\n\n<ul>\n<li>Rapporten om t\u00f8mt sidecache er nu komplet. Sker der flere t\u00f8mninger i samme k\u00f8rsel \u2014 f\u00f8rst den ene gang efter en opdatering, derefter den for de sider, hvor en rettelse blev \u00e6ndret \u2014 n\u00e6vnes de nu alle sammen med hver deres \u00e5rsag. F\u00f8r overskrev den sidste t\u00f8mning den forrige, s\u00e5 dashboardet kun kendte den ene af dem, og det m\u00e5tte g\u00e6ttes ud fra hvilken side der havde \u00e6ndret sig, hvad der egentlig var sket.<\/li>\n<li>Og Geoa holder ikke l\u00e6ngere op med at efterpr\u00f8ve, om dine bes\u00f8gende faktisk ser rettelsen. Pluginet fortalte hjem om den seneste t\u00f8mning, hver eneste time \u2014 ogs\u00e5 timer efter den var sket \u2014 og efterpr\u00f8vningen springes med vilje over lige efter en t\u00f8mning, fordi cachen ikke er tom i samme sekund. Tilsammen bet\u00f8d det, at \u00e9n t\u00f8mning kunne udskyde kontrollen p\u00e5 ubestemt tid. Nu melder pluginet kun de t\u00f8mninger, dashboardet ikke allerede har f\u00e5et.<\/li>\n<\/ul>\n\n<h4>0.9.46<\/h4>\n\n<ul>\n<li>N\u00e5r pluginet opdateres, t\u00f8mmes sidecachen \u00e9n gang for alle de sider, dine godkendte rettelser st\u00e5r p\u00e5. 0.9.45 t\u00f8mte kun cachen, n\u00e5r en rettelse blev tilf\u00f8jet, \u00e6ndret eller trukket tilbage \u2014 s\u00e5 et site, der allerede havde sine rettelser godkendt, viste den gamle titel til bes\u00f8gende efter opdateringen, indtil cachen udl\u00f8b af sig selv. M\u00e5lt p\u00e5 entitywatch.app lige efter opdateringen til 0.9.45: pluginet s\u00e5 cachen, men havde ingen anledning til at t\u00f8mme den.<\/li>\n<\/ul>\n\n<h4>0.9.45<\/h4>\n\n<ul>\n<li>En godkendt rettelse n\u00e5r nu ogs\u00e5 dine bes\u00f8gende \u2014 ikke kun serveren. Sider, der ligger i sitets sidecache (LiteSpeed, WP Rocket, W3 Total Cache, WP Super Cache, WP Fastest Cache, Cache Enabler, SiteGround, Cloudflare), blev ved med at vise den gamle titel eller det gamle indhold, indtil cachen udl\u00f8b af sig selv \u2014 m\u00e5lt: en uge. Nu bedes cachen slippe pr\u00e6cis de sider, en rettelse har \u00e6ndret, i samme \u00f8jeblik rettelsen anvendes eller tr\u00e6kkes tilbage. Geoa fort\u00e6ller ogs\u00e5 dashboardet, om det skete, s\u00e5 \"live\" betyder live for dem, der bes\u00f8ger siden.<\/li>\n<li>Den godkendte titel g\u00e6lder nu ogs\u00e5 som og:title og twitter:title, n\u00e5r Rank Math, Yoast, All in One SEO eller SEOPress skriver sidens sociale titler. F\u00f8r stod den nye titel i fanen og den gamle i det, Facebook, LinkedIn og AI-l\u00e6sere ser \u2014 to titler p\u00e5 \u00e9n side.<\/li>\n<li>Kvitteringen p\u00e5 indstillingssiden n\u00e6vner nu alle slags godkendte rettelser. F\u00f8r talte den kun llms.txt, schema og meta, s\u00e5 en godkendt indholdsrettelse gav teksten \"No approved fixes yet\", selv om den l\u00e5 i feedet og blev anvendt. Og en indholdsrettelse, der ikke blev skrevet, efterlader nu et spor: pluginet melder hjem, om siden ikke fandtes, om rettelsen ikke kunne udf\u00f8res, eller om den ikke \u00e6ndrede noget.<\/li>\n<\/ul>\n\n<h4>0.9.44<\/h4>\n\n<ul>\n<li>Rettelse til de interne links, fundet f\u00f8r nogen fik dem: linket l\u00e6gges nu p\u00e5 ordet, pr\u00e6cis som det st\u00e5r p\u00e5 din side. F\u00f8r kunne et link p\u00e5 et ord i begyndelsen af en s\u00e6tning g\u00f8re det lille \u2014 \"H\u00e5rdttr\u00e6 holder i mange \u00e5r\" blev til \"h\u00e5rdttr\u00e6 holder i mange \u00e5r\". Vi l\u00e6gger et link p\u00e5 dit ord; vi retter ikke din tekst.<\/li>\n<li>Og links virker nu ogs\u00e5, n\u00e5r ordet p\u00e5 siden begynder med \u00c5, \u00c6, \u00d8 eller et andet s\u00e6rtegn med stort. F\u00f8r sprang de over i tavshed.<\/li>\n<\/ul>\n\n<h4>0.9.43<\/h4>\n\n<ul>\n<li>Geoa kan nu skrive selve k\u00f8bsguiden ind p\u00e5 din kategori- eller serviceside \u2014 ikke bare foresl\u00e5 den. Teksten, du har godkendt i Geoa, lander under produkterne og over footeren, d\u00e9r hvor de sider, der ligger nr. 1 p\u00e5 Google, selv har deres guide. P\u00e5 en WooCommerce-kategori vises afsnittet af pluginet, s\u00e5 du fjerner det igen ved at afvise rettelsen i Geoa; p\u00e5 en almindelig side skrives det ind i sidens eget indhold, hvor du kan redigere det bagefter.<\/li>\n<li>Produkttekster kan nu l\u00e6gges direkte p\u00e5 varen. Godkender du en serie unikke produktbeskrivelser i Geoa, skrives beskrivelsen (og den korte beskrivelse, hvis der er skrevet en) p\u00e5 selve varen i WooCommerce, i stedet for at du skal kopiere hver enkelt ind i h\u00e5nden. Som altid: intet skrives, f\u00f8r du har godkendt det, og WordPress' egen versionshistorik er fortrydelsesknappen.<\/li>\n<li>Manglende alt-tekster p\u00e5 billeder kan nu udfyldes for dig. Geoa foresl\u00e5r teksten ud fra billedets eget filnavn og sidens overskrift, og du godkender den. En alt-tekst, du selv har skrevet, bliver aldrig overskrevet \u2014 kun de tomme fyldes ud.<\/li>\n<li>Sidens overskrift kan nu rettes til det, kunderne faktisk s\u00f8ger p\u00e5 \u2014 ikke kun s\u00e6ttes p\u00e5 en side, der manglede en. Hidtil kunne Geoa kun tilf\u00f8je en overskrift til en side uden; en side med en forkert overskrift kunne kun rettes i h\u00e5nden.<\/li>\n<li>Interne links kan nu s\u00e6ttes ind midt i br\u00f8dteksten i stedet for som en \"l\u00e6s ogs\u00e5\"-liste til sidst. Linket l\u00e6gges p\u00e5 ord, der allerede st\u00e5r i teksten, \u00e9t pr. afsnit, og aldrig i et afsnit der allerede har et link.<\/li>\n<\/ul>\n\n<h4>0.9.42<\/h4>\n\n<ul>\n<li>Nyt (sl\u00e5et fra som standard): n\u00e5r en WooCommerce-ordre er gennemf\u00f8rt, kan din butik selv sende \u00e9n neutral mail, der beder k\u00f8beren anmelde netop det k\u00f8b \u2014 p\u00e5 Google eller Trustpilot. Geoa skriver ordlyden og n\u00e6vner de varer, der blev k\u00f8bt; k\u00f8berens navn og e-mail forlader aldrig dit site. Alle sp\u00f8rges, \u00e9n mail pr. ordre, aldrig til adresser du har sat p\u00e5 fravalgslisten, og du kan se en lille log over, hvad der er sendt. Det er s\u00e5dan, en anmeldelsesopfordring er lovlig uden samtykke: straks efter handlen, om netop den oplevelse, uden tilbud eller ros.<\/li>\n<\/ul>\n\n<h4>0.9.41<\/h4>\n\n<ul>\n<li>Artikler fra Geoa Content ankommer nu som rigtige blokke i WordPress' editor \u2014 afsnit, overskrifter, lister, tabeller, citater \u2014 i stedet for \u00e9n klump, du kun kunne redigere alt eller intet i. Gennemgangen f\u00f8r du trykker Publish er hele pointen med rail'en, og indtil nu havde du ikke en flade at gennemg\u00e5 i. Kladder, der allerede ligger i din editor, bliver lavet om til blokke ved n\u00e6ste tjek, uden at du skal g\u00f8re noget. EU AI Act-m\u00e6rkningen f\u00f8lger med som f\u00f8r: den menneskel\u00e6sbare oplysning st\u00e5r i teksten, og den maskinl\u00e6sbare markering l\u00e6gges om artiklen, n\u00e5r siden vises \u2014 den kan nu ikke l\u00e6ngere slettes ved et uheld, mens du redigerer.<\/li>\n<li>Artiklens titel bliver ikke l\u00e6ngere gentaget som overskrift \u00f8verst i br\u00f8dteksten. Temaet skriver allerede titlen som sidens ene store overskrift, s\u00e5 siden sagde det samme to gange lige efter hinanden. Det blev rettet i 0.9.38, men rettelsen virkede kun, n\u00e5r overskriften stod allerf\u00f8rst; siden er artiklerne begyndt at \u00e5bne med et kort svar p\u00e5 sp\u00f8rgsm\u00e5let, og s\u00e5 stod dubletten igen. Nu fjernes den, uanset hvad der st\u00e5r over den \u2014 og en overskrift l\u00e6ngere nede, du selv har skrevet, bliver st\u00e5ende.<\/li>\n<li>\"Sync now\" st\u00e5r nu ogs\u00e5 ved artiklerne. Knappen har hele tiden hentet artikler, men den l\u00e5 under de godkendte rettelser l\u00e6ngere nede p\u00e5 siden, s\u00e5 der ved artiklerne kun stod \"n\u00e6ste automatiske tjek om ca. 11 minutter\" og ingen m\u00e5de at g\u00f8re det nu.<\/li>\n<\/ul>\n\n<h4>0.9.40<\/h4>\n\n<ul>\n<li>The one sentence \/llms.txt gives an AI engine about each of your pages now says something. Every line read \u201cPage title \u2014 Page titleand then the page\u2019s own words\u201d: the title spent twice, and the last word of your heading welded onto the first word of the paragraph under it \u2014 \u201cyour businessReviews decide who customers choose\u201d. Two things caused it. Themes that do not print a post title make page builders write the heading into the body copy instead, so a page with no SEO description and no excerpt described itself with text that began with its own title; and taking the markup out closed the gap where the heading ended, inventing compound words that exist in no language and therefore match nothing anyone would ever ask. The description is now the page\u2019s own summary \u2014 your SEO plugin\u2019s description, your excerpt, or the opening of the page, with the title removed where it opened its own summary. Word boundaries are kept, and where a description is too long to print in full it is now cut between two words instead of inside one. Descriptions written before this update are rebuilt the first time the file is asked for.<\/li>\n<\/ul>\n\n<h4>0.9.39<\/h4>\n\n<ul>\n<li>Your published articles are only ever reported back to the Geoa account that wrote them. When a site was connected to a different Geoa account \u2014 a new owner, a new subscription, a different workspace \u2014 the first sync afterwards announced the previous account's articles to the new one as if they had just been published. The new account then began measuring, and counting against its allowance, pages it had never written, while the account that did write them never got its own confirmation that they had gone live. Nothing is removed or altered by this fix: the posts are your content on your site, and they stay exactly where they are, keep working and keep their place in your archive. The only thing that changes is that they are no longer reported under an account that did not write them. Articles imported before this update are treated as belonging to the account your site is connected to when you update \u2014 updating the plugin is not a change of ownership.<\/li>\n<li>Links to your own pages inside an imported article are real links again. When Geoa Content wrote a link to another page on your site, it arrived in the draft as its raw text \u2014 the link text and the path, brackets and all \u2014 sitting visibly in the middle of a paragraph, and it stayed that way on the published page. Geoa's writing service now produces those links correctly, and drafts already waiting in your editor are re-rendered once when you update, so articles written before this are repaired too instead of waiting for you to generate them again.<\/li>\n<li>The checklist in the post editor is now written in the language you read WordPress in, and it asks for things WordPress can actually do. Every signal name and every piece of advice came back in Danish no matter what language your site or your admin was in, so an English site edited in an English admin was told \u201cIngen pladsholdere i teksten\u201d. The advice was worse than the language: to add links to your own pages it asked you to type the link as markdown \u2014 anchor text in brackets, path in parentheses. WordPress does not turn that into a link, so anyone who followed the advice published the brackets, visibly, in the middle of their article \u2014 the same thing the fix above repairs in imported drafts. Three other pieces of advice had the same problem, asking for markdown tables and markdown headings. The panel now follows the language each editor reads the admin in, so two people working on the same site each get their own, and it points at the editor\u2019s own link and table buttons instead. Sites in a language Geoa does not yet write get English rather than a guess.<\/li>\n<li>When you publish an article Geoa wrote, Geoa is told \u2014 and if it is not, the screen says so. Publishing is what starts the measurement: until Geoa knows the article is live, it cannot show you what the article does for you. The plugin reports the publication on its hourly check, but it counted any reply from Geoa as a confirmation, including a reply that said nothing had been recorded. It then never mentioned that article again, so the measurement never began, on exactly the article you cared enough to publish, and nothing anywhere said a word. Geoa now has to confirm the article before the plugin stops asking, and it tries again on the following checks. Settings has a new line showing how many of your published articles have actually been reported home, and it tells you if any of them could not be. Two more things on that screen were misleading and are fixed: it said \"Imported here: 3 published\", which counts posts on your site and was easy to read as \"three reported to Geoa\", and it never said when the next check was due. Sync now also says if it fails to run the article check instead of reloading the page as though it had.<\/li>\n<li>Switching on \/llms.txt no longer replaces a file you already had, in silence. If your site already answered at that address \u2014 a file your theme serves, or one you wrote yourself \u2014 Geoa now reads it before it takes the address over, keeps it, and serves it exactly as it was. It adds only the two things it can honestly contribute that you cannot write for yourself: the registry-verified identity of your business, and any published page your own file did not already list. Everything you wrote stays \u2014 what your business is, what it explicitly is not, links to your other products, your own sentence about each page. Settings shows what Geoa found, when it looked, and the saved copy itself, and offers the other way \u2014 Geoa's generated file instead of yours \u2014 as a decision you make rather than something that happens to you. If Geoa could not reach your site to look, it says so instead of assuming there was nothing there. The setting's own wording now says what switching it on does; \"Optional \u2014 off by default\" was not a warning about anything. And the file Geoa generates itself now says more: every page is listed with a sentence describing it, taken from your SEO plugin's description, your excerpt, or the page's own opening lines. Repeating a page's title after its own address tells a language model nothing, and describing your pages is the only job this file has.<\/li>\n<li>The Geoa badge panel in Settings no longer vanishes on paid plans, leaving a \"Geoa badge\" checkbox in the form below with nothing anywhere on the screen to explain it. Paid plans now get a short panel of their own saying what is actually true for them: the badge is optional, because the monthly re-scan it earns free sites is already part of their plan, and Geoa does not check whether it is on their site. Free plans keep the panel they had, with one correction. Where it said Geoa would find the badge on your site automatically, it now says where the first check is started \u2014 in your Geoa dashboard. Geoa does look for the badge by itself, once a day, but only after it has been found there once; before that nothing was looking, and the screen said otherwise.<\/li>\n<\/ul>\n\n<h4>0.9.38<\/h4>\n\n<ul>\n<li>Your sitemap is no longer invisible to search engines. On a site built from pages with no blog posts, WordPress 7.1 answers its own sitemap \u2014 the file that tells Google and Bing which pages your site has \u2014 with \"not found\", while still sending the correct list of pages underneath it. Search engines read the answer, not the list, so the sitemap counted for nothing: it could not be submitted, and new or changed pages lost their fastest route to being found. A site with even one published blog post never sees this, which is why it goes unreported \u2014 and a site built entirely from pages, like most local businesses, is exactly the case that breaks. Geoa now keeps the sitemap answering correctly, and records the day it had to, so it is visible that it happened. Where another SEO plugin serves your sitemap, Geoa leaves it alone.<\/li>\n<li>The readiness score in the post editor now describes the article you are looking at. It used to describe the version last saved to WordPress, fetched once when the editor opened \u2014 so on a new post it answered about an empty page. Paste an article and open the panel, and you were told it had no headings, no depth, no FAQ and no lists, with a score to match, for an article that had all four. Reloading the page showed a completely different, correct answer, and nobody reloads a page they have just pasted an article into. The panel now scores what is in the editor and re-scores when you change it. While it is working it shows a spinner rather than the previous number: a score for text you have since rewritten is not a smaller truth than no score, it is a wrong answer you cannot tell apart from a right one.<\/li>\n<li>A connected site is no longer told to connect. When the full 23-signal score could not be fetched, the panel fell back to its own smaller estimate and explained it with \"connect Geoa for the full 23-signal score\" \u2014 on sites that were connected, paired, publishing schema and applying approved fixes. It sent people looking for a setup fault that did not exist. The panel now says which of the two it is: not connected yet, still connecting, or connected but the full score did not come back this time.<\/li>\n<li>Geoa no longer marks your article down for things your site already has. The editor panel did not tell Geoa what this WordPress site publishes, and a signal Geoa is not told about comes back as missing \u2014 so an article on a site that publishes Article schema was told to go and generate Article schema, and internal links in the text were counted as none. The plugin now reports both, so those checks are answered instead of failed.<\/li>\n<li>A fix Geoa has already published to your site does not disappear because you connect a different Geoa account. It used to, and the timing was the worst possible: reconnecting is exactly what the screen tells you to do when a connection is lost, and the first sync afterwards quietly took down the llms.txt file the previous account had approved \u2014 while that same screen promised that nothing had been removed from your site. Work already published now stays published. If it came from an account this site is no longer connected to, it keeps being served, and Settings asks you once whether to keep it or remove it \u2014 nothing but that answer removes it. And when a fix genuinely IS withdrawn, because you un-approved it in your Geoa dashboard, the sync now names what it took down instead of leaving you with a page that used to exist.<\/li>\n<\/ul>\n\n<h4>0.9.37<\/h4>\n\n<ul>\n<li>The answer to \"how does this name relate to your registered company?\" can be changed. It could be set, but not kept: the choice was gone on the next page load, and nothing on the screen said why. That answer is not decoration \u2014 it decides whether your registration number, legal form and registry entry describe your product or the company behind it, so being unable to change it meant being unable to correct a claim published in your name. It now has its own control with its own save, and it confirms the save by reading the value back out of storage and telling you, in a sentence, what your site publishes as a result. And if the answer ever fails to reach your site \u2014 a firewall or security layer in front of WordPress can quietly drop a single form field \u2014 you are told exactly that, instead of being shown a screen that looks like it saved.<\/li>\n<li>Nothing is assumed about your name any more. Until now, a site where nobody had answered the question above was treated as having answered \"it is another name for the company itself\" \u2014 and that assumption was sent on to Geoa as though you had chosen it. Geoa then built on it: on one site it produced an article stating that a PRODUCT was a Danish anpartsselskab, inside a block that cited the company register with a date and a source link. The register says that about the company. It says nothing about the product. \"Not answered\" is now a real state: neither option is preselected, the setup screen asks before it will publish, and nothing about the relationship is sent to Geoa until you have answered it. Your published schema does not change until you answer \u2014 answering is what changes it.<\/li>\n<li>An answer of \"it is another name for the company itself\" now actually arrives. This plugin and Geoa spelled that one answer differently, so it was discarded on the way: you answered, the screen said so, and Geoa carried on as though you never had \u2014 still asking, still holding back what it could say about your business. The other answer happened to be spelled the same on both sides, which is why only half of this was ever visible.<\/li>\n<\/ul>\n\n<h4>0.9.36<\/h4>\n\n<ul>\n<li>A priority is never shown with a blank where a name should be. Version 0.9.34 said this was fixed. Half of it was: the sentence no longer stops in the middle of a word. The other half was not, and it is worth saying plainly where it went. One card still read <em>We currently measure \"\" \u2014 the name your signup set<\/em> on a site whose name was set correctly, and it was the first of eight priorities. That half lives in Geoa's servers, not in this plugin, and it could not reach a row that was already sitting in the queue: the check runs over the cards Geoa decides to write that day, and the same change had taught Geoa to stay silent about this card when the name was missing \u2014 so the card is never looked at, and the old row stays. That is  &hellip;<\/li>\n<\/ul>","raw_excerpt":"AI SEO and AEO on autopilot \u2014 schema, llms.txt and GEO fixes that get you found and cited when customers ask ChatGPT, Gemini and AI Overviews.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/337682","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=337682"}],"author":[{"embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/addonnordic"}],"wp:attachment":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=337682"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=337682"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=337682"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=337682"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=337682"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=337682"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}