AEO & GEO

How to Optimize for AI Overviews: A Practical Guide

Check Google access, improve one service page and measure progress. A practical AI Overviews guide with terminal commands, Search Console checks and a buyer answer template.

9 min read
A blue racing car and an AI assistant beside a useful answer document and source links.

To improve your chances of appearing in Google AI Overviews, make your pages accessible to Google and give buyers useful answers drawn from your own work. Start with one service page, check whether Google can use it, improve the answer, and measure what happens. Google’s AI features guidance connects eligibility to indexed pages that can show a Search snippet. A place in an AI Overview is never guaranteed.

The walkthrough below uses a drain cleaning business as an example. Apply the same process to a product, professional service or local business. You will need access to your website and its verified Search Console property. The commands use Bash or Zsh, curl and Python 3. Run them in Terminal on macOS or Linux, or in WSL on Windows.

1. Choose one page that helps a buyer make a decision. For the drain cleaning business, that might be the service page that should answer “How much does drain cleaning cost in my area?” Use recent enquiries, quote requests and Search Console queries to choose the question. Write down what the page currently explains and what buyers still have to ask you.

Create a folder for the checks, then replace both example addresses below with your real website and page. Keep the quotation marks. The .example addresses are placeholders.

mkdir -p ai-overview-check
cd ai-overview-check
SITE='https://yourbusiness.example'
PAGE='https://yourbusiness.example/drain-cleaning/'

Keep this terminal open while you run the remaining commands so the variables stay available. These commands download public pages and save local inspection files.

2. Check that the page returns usable HTML. Download its response headers and source with this command:

curl --fail --show-error --silent --location \
  --dump-header headers.txt \
  --output page.html \
  --write-out 'Final URL: %{url_effective}\nHTTP: %{http_code}\n' \
  "$PAGE"

grep -Ei '^(HTTP/|content-type:|x-robots-tag:)' headers.txt

A final 200 response and an HTML content type are a useful starting point. Check that the final URL is the page you intended. A 403 can indicate an access restriction; a 404 means the page was not found. Stop and resolve a failed download before inspecting page.html. With redirects, headers.txt contains several responses, so read the final response separately from earlier ones.

Look for an X-Robots-Tag header. Then inspect the HTML title, canonical URL and robots directives with Python’s built-in HTML parser:

python3 - <<'PY'
from html.parser import HTMLParser
from pathlib import Path

class Inspect(HTMLParser):
    in_title = False
    title = []
    def handle_starttag(self, tag, attrs):
        a = dict(attrs)
        if tag == 'title':
            self.in_title = True
        name = a.get('name', '').lower()
        if tag == 'meta' and name in ('robots', 'googlebot'):
            print(name + ':', a.get('content', ''))
        if tag == 'link' and 'canonical' in a.get('rel', '').lower().split():
            print('canonical:', a.get('href', ''))
    def handle_endtag(self, tag):
        if tag == 'title':
            self.in_title = False
    def handle_data(self, data):
        if self.in_title:
            self.title.append(data)

parser = Inspect()
parser.feed(Path('page.html').read_text(encoding='utf-8', errors='replace'))
print('title:', ''.join(parser.title).strip())
PY

An unintended noindex can prevent indexing. Google says nosnippet also prevents the page’s content being used as direct input for AI Overviews and AI Mode. max-snippet limits that input, and max-snippet:0 is equivalent to nosnippet. Review restrictions on the public page with the person who manages your site. Google explains these controls in its robots meta tag documentation.

If the parser prints no robots directive, that only means it found none of those tags in the downloaded source. JavaScript can alter a page after download. A canonical pointing elsewhere also needs investigation because Google may consolidate signals under another URL.

3. Confirm access and indexing in Search Console. First, download your website’s robots file so you can inspect rules that apply to the chosen path:

curl --show-error --silent --location \
  --output robots.txt \
  --write-out 'Robots HTTP: %{http_code}\n' \
  "$SITE/robots.txt"
cat robots.txt

Use the same protocol and hostname as the final page URL, including www if present. A 404 for robots.txt means no file was found; Google normally treats that as no crawl restrictions. A server error or network failure needs investigation because it can temporarily interrupt crawling. Google documents these responses in its robots.txt specification.

Check the applicable User-agent group and its Allow and Disallow rules. Ask your developer to investigate a rule that blocks the service page. This download alone does not establish Googlebot access: a CDN or firewall may handle Google’s requests differently.

Paste the exact page URL into Search Console’s URL Inspection tool. Check the indexed status, Google’s selected canonical and the recorded crawl information. Run “Test live URL” to inspect current access, then view the tested page’s HTML or screenshot. Confirm that the service description, prices and answer text appear. Google’s URL Inspection documentation explains the difference between indexed information and the live test. Passing a live test does not guarantee indexing.

In the same property, open Settings → Search generative AI and check that the site is included. Google’s control documentation says inclusion is the default, but properties can inherit a parent’s setting. Check the effective setting for your property. If the page has access or indexing problems, fix those before assessing its visibility in AI answers.

4. Rewrite the opening answer using information your business can support. A drain cleaning page should explain your usual price range, what that price includes, what can increase it, the area you cover and how a customer gets a quote. Use actual job records or approved pricing. Add the date when prices were checked and explain whether tax, callout fees or emergency work are included.

Use this as a drafting template, replacing every bracket with a fact you have checked:

For [service] in [area], our usual price is [verified range], including [included work]. The final quote depends on [main cost factors]. We confirm [inspection or quote process] before work begins.

If a reliable range is unavailable, explain how you calculate the quote and what information the buyer must provide.

Develop that answer with a real example, a useful photograph you have permission to publish, and the conditions that change the job. For a blocked drain, those might include access, blockage location and whether an inspection is needed. Explain when you can attend and what happens if the problem needs another specialist. Google’s helpful content guidance emphasizes original information, experience and clear sourcing. Specific operating details give buyers something they can use.

5. Make the answer easy to find and act on. Link to the service page from your services menu and other relevant pages. Put the important information in readable page text, including any explanation that currently appears only inside an image. Keep your business name, service area and contact details consistent with your Business Profile. Place the quote or booking action where a reader can use it after understanding the offer.

If you use structured data, check it with Google’s Rich Results Test and make sure it describes information visible on the page. A valid result checks supported markup; it does not establish eligibility for an AI Overview citation. Google’s AI optimization guide says special schema and llms.txt are unnecessary for its generative Search features. It also warns against creating pages for every query variation primarily to manipulate responses. Spend the editing time on the page’s useful evidence and explanations.

6. Publish the corrected page and record a baseline. Repeat the download and inspection commands against the public URL to confirm that the changes reached the live page. Use URL Inspection to check the current version. If the page is eligible, you can request indexing there; Google decides whether and when to process it.

Create a small observation sheet with this command:

python3 - <<'PY'
import csv
from pathlib import Path

path = Path('observations.csv')
with path.open('x', newline='', encoding='utf-8') as f:
    csv.writer(f).writerow([
        'date', 'question', 'country', 'language', 'device',
        'ai_overview_shown', 'our_url_linked', 'other_sources', 'notes'
    ])
print('Created', path)
PY

The script creates a new file and refuses to overwrite an existing one. Open it in a spreadsheet and add 20 to 30 questions from real buyer conversations. Search them manually, record whether an AI Overview appears, and save the linked sources. If none appears, record that explicitly. Repeat monthly using comparable country, language and device settings. This is WhatBuyersAsk’s suggested sampling process; results can vary with time, location and account context.

7. Review visibility alongside business results. In Search Console, open the Generative AI performance report, select the page and compare equivalent date ranges. Google’s report documentation describes impressions across AI Overviews and AI Mode, grouped by page, country, date and device. It lists no query dimension or click metric. An absent report can mean there are too few impressions. Use your observation sheet to retain the questions and sources you checked manually.

Record enquiries, qualified leads and bookings separately in your normal analytics or sales records. An impression shows exposure; an enquiry tells you whether the page helped someone take the next step. Give changes time to be crawled and observed, and keep the dates of your edits so you can interpret later movement without assuming every change came from AI Overviews.

Use the free website checker for a quick check in your browser. Open WhatBuyersAsk’s free AI bot reachability test, enter your public website address in Your website, then click Test AI bot reachability. Read the findings for bot responses, robots.txt rules and readable HTML. Follow any suggested access checks with the person who manages your hosting or firewall, then test again after a fix. The form states that WhatBuyersAsk saves check activity and findings.

The free tool checks one homepage and needs no account or research credits. Use the commands and Search Console steps above for your chosen service URL. The tool uses simulated bot requests, so confirm actual Googlebot access in server logs and Search Console. Its findings help you investigate access; they do not establish indexing or an AI Overview citation.

Install WBA CLI to run the same public check from Terminal. The official installer supports macOS, Linux and compatible WSL environments. You can read the installer before running the command from the WBA CLI setup guide:

curl -fsSL https://whatbuyersask.com/install.sh | bash

Open a new terminal after installation so your shell can find wba. Check the installed version and read the included walkthrough:

wba --version
wba guide

Replace the placeholder domain with your real website, then run your first public check:

wba https://yourbusiness.example

For a Google check saved as JSON, use this command instead:

wba https://yourbusiness.example --platforms google --json --out google-access-check.json

Read the returned access, robots and HTML findings before choosing a fix. Each fresh check creates a new result. The CLI checks the homepage even when you supply a deeper page URL. If your terminal cannot find wba, reopen it or try ~/.local/bin/wba --version. Run wba doctor for installation diagnostics; a missing login is expected when you are only using the public checker.

Connect your workspace when you want to inspect saved research. Run wba login, complete browser sign-in, match the pairing code and approve Connect this terminal. Then use these commands to check the connection and find work you can access:

wba status
wba clients list
wba research list
wba reports list

Use an actual report ID from that list to download its saved findings:

wba reports download REPORT_ID --format md --out report.md

The public access check is free. Starting new workspace research uses the terms of your plan and selected scope; review the current pricing before starting a run. Choose the service page behind the most repeated question in your inbox, resolve any access problem, and add one verified answer that helps the next buyer decide.

WhatBuyersAsk

Practical research for agencies and B2B teams. Understand what buyers ask, find answer gaps and build more useful content.

Put better answers to work.

See what your buyers ask, find the answer gaps and plan your next move.

Get started