The GEO (generative engine optimisation) audit checks whether AI assistants such as ChatGPT, Claude, Perplexity and Google’s AI features can read, understand, trust and quote a page. This guide fixes the checks in the answers, trust and AI crawlers sections. Schema checks are in Fix: structured data and social tags.
Find the affected checks in the app
- In Audits, open a GEO audit report (to start one, see Run an audit). The sections are structured data, answers, trust and AI crawlers.
- Issues to fix lists every failing check with Critical or Warning, Why it matters and How to fix.
- The AI crawlers section shows each AI bot (GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot) and whether robots.txt allows it. Fixes: AI crawlers allowed in robots.txt.
- To track whether the brand actually appears in AI answers, use AI visibility (see AI visibility).
Clear answer near the top
How we detect it
The audit takes the first paragraph of the main content that has at least 12 words. It passes when that paragraph is 20 to 120 words long and does not start with a greeting (“Welcome”, “Hello”, “Thanks”, “We are”). Critical.
Why it matters
AI search quotes short, direct answers. Pages that open with a welcome message or a wall of text get skipped.
Common causes
- The page opens with “Welcome to our website” → greeting detected.
- The first paragraph is a one-line tagline (under 20 words).
- The intro is one long block (over 120 words).
- The main content is in a slider or tabs, so the first real paragraph is far down.
Fix: basic
- Decide the main question the page answers (for example “How much does a roof repair cost in Springfield?”).
- Write a 40 to 60 word paragraph that answers it directly in the first sentence.
- Place it straight after the H1, before images, sliders or service boxes.
- Move welcome or company text further down.
Fix: expert
<main>
<h1>Roof repair in Springfield</h1>
<p>We repair leaking, storm-damaged and worn roofs across Springfield, usually within 3 working days.
Most repairs are finished in one visit, and every job comes with a written 5-year workmanship guarantee
and before-and-after photos.</p>
<!-- details, services, gallery below -->
</main>
Wrap the content in a main (or article) element so the audit and AI tools find the main text, not the menu.
Platform steps
WordPress
- In Elementor, add a Text Editor widget directly under the heading widget in the first section. In the block editor, add a Paragraph block under the H1.
Shopify
- In the Shopify admin › Online Store › Themes › Customize, add a Rich text section directly below the banner and write the answer there.
Verify the fix
- In Audits, open the GEO audit and click Run again. Clear answer near the top should show the word count of the first paragraph.
Automation
Assisted: an answer paragraph can be drafted automatically, but it needs the business’s real facts and approval.
Question-style headings
How we detect it
Counts H2 and H3 headings that end with ”?” or start with a question word (what, how, why, when, where, who, which, can, does, do, is, are, should, will and similar). Passes with 2 or more. Warning.
Why it matters
People ask AI assistants questions. Headings phrased the same way match those questions and make the answer below easy to extract.
Common causes
- Headings are labels (“Our services”, “Pricing”) instead of questions.
Fix: basic
- Rewrite 3 to 5 H2 headings as the questions customers ask, for example “How much does a roof repair cost?”, “How long does it take?”, “Do you offer a guarantee?”.
- Answer each one in the first sentence below it.
Fix: expert
<h2>How much does a roof repair cost?</h2>
<p>Small repairs such as replacing a few tiles usually take under two hours …</p>
Platform steps
WordPress
- Edit the heading text in the editor; keep the heading level (H2) unchanged.
Verify the fix
- Run again: the check shows how many question headings were found.
Automation
Assisted: rewrites can be suggested automatically; content approval is needed.
FAQ section
How we detect it
Passes when the page has FAQPage schema, a heading containing “FAQ”, “Frequently asked”, “Common questions” or “Questions & answers”, or 3 or more details (accordion) elements. Warning.
Why it matters
FAQs are one of the formats AI answers quote most often.
Common causes
- No FAQ on the page, or FAQs only on a separate FAQ page.
- An accordion widget without a heading and without
detailselements.
Fix: basic
- Add an H2 called “Frequently asked questions” near the end of the page.
- Add 4 to 8 real customer questions with 2 to 4 sentence answers.
- Use the Yoast FAQ block (Yoast SEO) or FAQ by Rank Math block (Rank Math) in WordPress; they add FAQPage schema too.
Fix: expert
<h2>Frequently asked questions</h2>
<details><summary>Do you work at weekends?</summary><p>Yes, Saturday mornings for inspections and urgent repairs.</p></details>
<details><summary>Are you insured?</summary><p>Yes, we carry full public liability insurance.</p></details>
<details><summary>Do you remove the old materials?</summary><p>Yes, all waste is removed and recycled where possible.</p></details>
Add FAQPage JSON-LD as shown in Fix: structured data and social tags.
Platform steps
Shopify
- In the Shopify admin › Online Store › Themes › Customize: many themes have a Collapsible content section; add it with a heading “Frequently asked questions”.
Wix
- In your Wix dashboard, open the editor and add the Wix FAQ app or a Collapsible text element with an FAQ heading.
Verify the fix
- Run again: the check shows how many questions were found.
Automation
Assisted: questions can be drafted from the page and Search Console queries; answers need approval.
Lists and tables
How we detect it
Passes when the main content has 2 or more lists with at least 3 items each, or at least one table. Warning.
Why it matters
Lists and tables are easy for AI to extract and cite (steps, prices, comparisons, features).
Common causes
- All content is in paragraphs.
- Lists are built from styled divs or images rather than real list elements.
Fix: basic
- Turn steps, features, service areas and “what’s included” into bulleted or numbered lists.
- Put comparisons or price ranges in a table (Table block in WordPress).
Fix: expert
<h2>What's included</h2>
<ul>
<li>Full roof inspection with photos</li>
<li>Written quote within 24 hours</li>
<li>5-year workmanship guarantee</li>
</ul>
Platform steps
WordPress
- Elementor’s Icon List widget outputs a real
ullist; prefer it over separate text widgets.
Verify the fix
- Run again: the check shows the number of lists and tables.
Automation
Assisted: content restructuring needs approval.
Author name and bio
How we detect it
Looks for an author in Article or Person schema, then a meta name="author" tag, then elements such as .author, .byline or rel="author", then “Written by / Posted by Name” in the text. Also notes whether there’s a bio or author page link. Critical.
Why it matters
Experience and expertise signals (E-E-A-T) help Google and AI decide whom to trust (Google: creating helpful, reliable content).
Common causes
- Author boxes are switched off in the theme.
- Service pages have no author at all.
- The author name is “admin”.
Fix: basic
- In your WordPress admin, open Users › Profile (
/wp-admin/profile.php), set a real name in Display name publicly as and fill Biographical Info. - Switch on the theme’s author box (often under Appearance › Customize › Blog / Single Post › Author box).
- On service pages, add a short “Reviewed by Jane Smith, head roofer” line with a link to a team page.
- Create a team or author page with photo, role, experience and qualifications.
Fix: expert
<p class="byline">By <a rel="author" href="/team/jane-smith/">Jane Smith</a>, head roofer with 15 years' experience</p>
<meta name="author" content="Jane Smith">
Add author to Article schema (see Fix: structured data and social tags).
Platform steps
Shopify
- Blog articles show the author when the theme setting Show author is on (Shopify admin › Online Store › Themes › Customize › Blog posts template). Set staff names under Shopify admin › Settings › Users and permissions.
Verify the fix
- Run again: the check shows the author name found and whether a bio was detected.
Automation
Assisted: settings are automatable with WordPress admin access; author details must come from the client.
Contact and about pages
How we detect it
Counts three trust signals: contact details on the page (a tel: or mailto: link, or a street address), a link to an About page (/about, /about-us, /team, /who-we-are, /company) and a link to a Contact page (/contact, /contact-us, /get-in-touch). Passes with 2 or more. Warning.
Why it matters
Clear contact details show a real business stands behind the content.
Common causes
- No About page, or it’s at an unusual URL (for example /our-story).
- Contact details only in an image.
Fix: basic
- Create About and Contact pages at standard URLs (/about/ and /contact/).
- Link both from the main menu or footer of every page.
- Show the phone (as a tap-to-call link), email or address as text in the footer.
Fix: expert
<footer>
<a href="/about/">About us</a> · <a href="/contact/">Contact</a>
<a href="mailto:[email protected]">[email protected]</a>
<address>12 Market Street, Springfield, IL 62701</address>
</footer>
Platform steps
WordPress
- In your WordPress admin, open Appearance › Menus (
/wp-admin/nav-menus.php) or Appearance › Editor › Navigation › add the pages to the footer menu.
Verify the fix
- Run again: the check lists which signals are still missing.
Automation
Automatable with WordPress admin access (menus and pages); the content needs the client’s details.
Freshness date
How we detect it
Looks for dates in schema (datePublished, dateModified), article:modified_time / article:published_time / og:updated_time meta tags, time elements and text like “Last updated October 10, 2026”. Passes when the newest date is within the last 365 days. Warning.
Why it matters
AI search prefers fresh, dated information.
Common causes
- No date shown or marked up.
- The page was never updated in over a year.
- The theme hides dates.
Fix: basic
- Review and update the page content (facts, prices, examples), then show “Last updated” with the date near the title.
- Yoast and Rank Math set dateModified automatically when you update the post.
- Turn on the theme’s “Show updated date” option if it has one.
Fix: expert
<p>Last updated <time datetime="2026-10-10">October 10, 2026</time></p>
<meta property="article:modified_time" content="2026-10-10T09:00:00+00:00">
Only change the date when the content really changed.
Platform steps
Webflow
- From the Webflow dashboard, open the site, add a CMS field “Updated” to the collection and bind a text element to it on the template.
Verify the fix
- Run again: the check shows the newest date found.
Automation
Assisted: the date markup is automatable; real content updates need a person.
Sources and citations
How we detect it
Counts links in the main content to other websites (social networks excluded). Passes with 2 or more different outside sources. Notes authoritative ones (.gov, .edu, Wikipedia, WHO, NIH and similar). Warning.
Why it matters
Cited facts are more likely to be repeated by AI assistants.
Common causes
- Statistics and claims with no links.
- Outside links only in the footer (social icons) rather than the content.
Fix: basic
- Find each statistic, regulation or claim on the page.
- Link it to the original source (official site, study, manufacturer documentation) with descriptive anchor text.
Fix: expert
<p>Building rules require a permit for full roof replacements
(<a href="https://www.example.gov/building-permits">city building permit guide</a>).</p>
Platform steps
WordPress
- Select the text in the editor, press Ctrl+K and paste the source URL.
Verify the fix
- Run again: the check shows how many outside sources are linked.
Automation
Assisted: sources must be chosen by a person.
Reviews and testimonials
How we detect it
Passes when the page has AggregateRating or Review schema, or text such as “testimonial”, “what our customers say”, “reviews”, or star characters. Warning.
Why it matters
Social proof is a trust signal for people and machines.
Common causes
- Reviews only on Google, not on the site.
- Reviews embedded in an iframe widget with no text on the page.
Fix: basic
- Add a “What our customers say” section with 2 to 3 recent reviews (name, short quote).
- Link to the Google reviews (copy the review link from your Google Business Profile).
- Add rating markup (see Fix: structured data and social tags).
Fix: expert
<section>
<h2>What our customers say</h2>
<blockquote><p>"Fixed our leak the same day."</p><cite>Sam P., Springfield</cite></blockquote>
</section>
Platform steps
Shopify
- Add a Testimonials section in Shopify admin › Online Store › Themes › Customize, or a reviews app block on product pages.
Verify the fix
- Run again.
Automation
Assisted: reviews must be real and approved by the client.
AI crawlers allowed in robots.txt
How we detect it
The audit reads robots.txt and tests the page URL for GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extended and CCBot. It fails (Critical) when any of the four key bots (GPTBot, ClaudeBot, PerplexityBot, Google-Extended) is blocked. No robots.txt means everything is allowed. Each bot is documented by its owner: OpenAI crawlers (GPTBot, OAI-SearchBot), Perplexity crawlers, Google crawlers (Google-Extended).
Why it matters
If AI crawlers can’t read the site, it can’t appear in AI answers based on that content.
Common causes
- robots.txt has
Disallow: /groups for AI bots (added by an SEO plugin option or a copied template). - Cloudflare’s managed robots.txt or “Block AI bots” setting adds blocks (Cloudflare can prepend AI blocking rules to robots.txt).
- A blanket
User-agent: */Disallow: /.
Fix: basic
- Open
/robots.txtand look for groups naming GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot or OAI-SearchBot withDisallow: /. - Remove those groups, or change them to
Allow: /, in your robots.txt editor (Yoast Tools › File editor,/wp-admin/admin.php?page=wpseo_tools&tool=file-editor; Rank Math General Settings › Edit robots.txt, Shopifyrobots.txt.liquid, Webflow Site settings › SEO, Wix Robots.txt Editor). - Cloudflare: in the Cloudflare dashboard, pick your site › Security › Bots (or AI Crawl Control in newer dashboards; Cloudflare bots docs) and switch off Block AI bots / Manage AI bots in robots.txt (named Instruct AI bot traffic with robots.txt in some versions) if you want AI crawlers to read the site. Also check Security › WAF › Custom rules (docs) for rules blocking these user agents. Full steps: Fix: Cloudflare blocking the crawler.
Fix: expert
A robots.txt that allows AI crawlers explicitly:
User-agent: GPTBot
Allow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Google-Extended
Allow: /
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://www.example.com/sitemap_index.xml
A bot follows only the most specific group that names it, so a bot with its own group ignores the * rules: repeat private Disallow lines in each group if needed. Syntax reference: Google’s robots.txt guide.
Platform steps
Cloudflare
- If robots.txt on the live site differs from the file on the server, Cloudflare’s managed robots.txt is active. Switch it off as above, then purge the cache (Cloudflare dashboard › your site › Caching › Configuration › Purge Everything).
nginx
- Check the server doesn’t block these user agents (search the config for
GPTBotorClaudeBotinif ($http_user_agent …)rules) and remove the rule.
Verify the fix
- Open
/robots.txtin a private window and check the new rules. Google also shows the file it fetched in Search Console › Settings › robots.txt. - In Audits, open the audit and click Run again. The AI crawlers section should show the key bots as allowed.
Automation
Automatable with WordPress admin access via the SEO plugin, a Cloudflare API token, or file access; the allow/block choice must be confirmed by the client.
llms.txt
How we detect it
The audit requests https://yourdomain/llms.txt (and /llms-full.txt). It passes when a plain-text file is returned (not an HTML error page). Warning.
Why it matters
llms.txt gives AI tools a short, clean summary of the site and its key pages. It’s a proposed convention (llmstxt.org), so treat it as a low-cost extra.
Common causes
- The file doesn’t exist.
- The CMS answers
/llms.txtwith an HTML 404 page.
Fix: basic
- Write the file using the template below.
- WordPress: upload it as
llms.txtto the web root with cPanel › File Manager › public_html (in hPanel: Files › File Manager; Plesk: Files, see Plesk docs), or use an llms.txt plugin (Yoast and Rank Math have llms.txt options in recent versions: check Yoast SEO › Settings › Site features › llms.txt or Rank Math › General Settings › LLMS Txt). - Shopify: you can’t upload to the root directly; create a page template that outputs plain text, or add a URL redirect from
/llms.txtto a file in Shopify admin › Content › Files (redirects work for missing paths). - Webflow and Wix: host the text in a file and add a 301 redirect from
/llms.txtto it, if the platform has no root upload.
Fix: expert
# Example Roofing Ltd
> Family-run roofing company in Springfield, IL. Roof repairs, replacements, inspections and gutter work for homes and small businesses since 2009.
## Key pages
- [Roof repair](https://www.example.com/roof-repair/): leaks, storm damage and tile replacement
- [Roof replacement](https://www.example.com/roof-replacement/): materials, process and guarantees
- [Service areas](https://www.example.com/areas/): towns we cover
- [Contact](https://www.example.com/contact/): address, opening hours and quote form
Serve it as text/plain or text/markdown with UTF-8.
Platform steps
nginx
location = /llms.txt {
default_type text/plain;
charset utf-8;
}
Verify the fix
- Open
/llms.txtin the browser: plain text, not an HTML page. - Run again. llms.txt should pass.
Automation
Automatable with WordPress admin access via the SEO plugin or file access (SFTP or hosting panel).
Content without JavaScript
How we detect it
The audit compares the words in the main content of the raw HTML (as the server sends it) with the rendered page in Chrome. When the rendered page has at least 80 words and the raw HTML has less than 60% of them, the check fails. Warning.
Why it matters
Many AI crawlers don’t run JavaScript, so they see an empty or half-empty page.
Common causes
- Single-page apps (React, Vue, Angular) that render everything in the browser.
- Page builders or widgets that load text by JavaScript (tabs, sliders, “load more”).
- Content fetched from an API after the page loads.
Fix: basic
- Check: open the page, press Ctrl+U and search for a sentence from the main text. If it’s missing, the content needs JavaScript.
- On WordPress, replace JavaScript-loaded widgets with normal blocks; turn off “lazy load content” / AJAX loading options for the main content.
- Website builders (Wix, Squarespace, Webflow, Shopify) render text on the server already; check third-party widgets embedding the main text.
Fix: expert
- Use server-side rendering or static generation: Next.js (App Router renders on the server by default), Nuxt (
ssr: true), Astro, SvelteKit, Angular SSR. - For an existing client-only app you can’t migrate yet, pre-render the main routes at build time (for example
vite-plugin-prerenderor a pre-rendering service) and serve the HTML to all visitors. - Keep important text in the initial HTML; load only enhancements with JavaScript.
<!-- Bad: empty shell -->
<div id="root"></div>
<script src="/app.js"></script>
<!-- Good: content in the HTML, JavaScript enhances it -->
<div id="root"><h1>Roof repair in Springfield</h1><p>We repair leaking …</p></div>
<script src="/app.js" defer></script>
Platform steps
WordPress
- Elementor tabs and accordions output their text in the HTML; “Load more” and AJAX filters don’t. Show key content without them.
Verify the fix
- View the source again and find the main text.
- Run again. Content without JavaScript should show most words in the HTML.
- For a site crawl, links that exist only after JavaScript need Render JavaScript (see Fix: Crawl finds few pages).
Automation
Manual: rendering changes are development work.
Common questions
Should my client allow AI crawlers?
If the goal is to be mentioned and linked in ChatGPT, Claude, Perplexity and Gemini answers, yes: blocked crawlers can't read the site. Some publishers block training crawlers on purpose. It's a business decision; the audit flags the block so the decision is deliberate.
Does blocking Google-Extended affect Google Search rankings?
No. Google-Extended only controls whether Google may use the content for Gemini and AI training. Googlebot, which crawls for Search (including AI Overviews), is a separate user agent.
Is llms.txt an official standard?
No, it is a proposed convention, and not all AI tools read it. It's cheap to add and harmless, which is why the audit treats a missing file as a Warning, not Critical.
Which checks matter most?
The Critical ones: Clear answer near the top, Author name and bio, AI crawlers allowed in robots.txt and Organization schema. Fix those first, then the Warnings.
Related articles
- Fix: structured data and social tags (schema, Open Graph)
- Check AI visibility in ChatGPT, Gemini and Perplexity
- Fix: content — word count, keyword placement and readability
- Fix: indexing — noindex, canonical tag, robots.txt and sitemap
- Run an SEO audit
Still need help?
Ask in the chat inside the app, or send us a message on the contact page. You can also browse all help topics.