One search keeps finding my site: a founder "running a small SaaS startup on a tight budget" who needs "a tool to monitor our AI search visibility."
Google showed my page to that search 215 times in three months. Nobody clicked. The page it showed them is my list of AI visibility tools, where entry plans run from $29 to $399 a month, for 15 to 350 tracked questions.
So here's the answer I should have given them. This is my AI visibility tracking setup: three scheduled routines that watch my own site. The paid part costs 9 cents a week at list price.

What AI visibility tracking actually means
It's four questions, asked on a schedule:
- Do AI answers name me when a buyer asks who to hire or what to use?
- Can AI crawlers read my pages, or does something block them?
- Has Google indexed my pages? ChatGPT search, Gemini and Google's AI Overviews all lean on search indexes. A page that isn't indexed rarely gets cited.
- Which buyer questions already find me, and which page answers them?
Paid tools mostly do number 1 on a dashboard. The other three are free if you ask the right APIs.
The 3 routines, on one page
| Routine | When | What it runs | APIs | Cost | What it unlocks |
|---|---|---|---|---|---|
| Weekly | Monday 6:00 | AI answer round on 10 fixed buyer questions, Search Console refresh report, index check, site crawl, AI crawler access | Bright Data LLM scrapers, Search Console, URL Inspection | About $0.09 a round at list price, capped at $1 | Whether ChatGPT and Gemini name you, week over week, plus the pages worth fixing this week |
| Daily | 9:00 | Finds pages that changed since yesterday and tells Bing about them | IndexNow | Free | Bing hears about new and edited pages the day they change, instead of waiting for its next crawl. Bing feeds ChatGPT search and Copilot |
| Monthly | 1st, 8:00 | Sorts every Search Console query by intent and finds pages competing for the same search | Search Console, Bright Data SERP (optional) | Free without the SERP step | The buyer questions you already show up for, and the page that should own each one |
Everything writes a short report to a folder. Nothing publishes on its own. I read the reports, and only reviewed numbers go on my public dashboard.
Routine 1: the weekly AI answer round
Every Monday, the same 10 buyer questions go to the ChatGPT and Gemini apps a buyer actually uses, logged out, three times each. That's 60 answers.
I use Bright Data's LLM scrapers for this instead of the OpenAI or Gemini APIs. API answers come from a different setup than the app a buyer types into, so I keep the two apart. Perplexity is the third app on my list, but Bright Data's Perplexity scraper has been failing, so the routine retries it with one question each week and records it as "not collected" until it works.
Step by step:
- Pick your questions once and freeze them. Mine are 4 "who should I hire" questions, 2 comparisons, 3 problem questions and 1 about my own brand. Here's how I chose them.
- Write your predictions down before the first round, with a date. Mine are public.
- Set a dollar cap. My runner reserves money for every answer before it asks, and stops before it can pass $1 a round or $10 total.
- Run it, then read the answers yourself before you count anything.
python3 research/prompt-tracker/runner/guarded_run.py run --env .env \
--round-date 2026-10-27 --accept-estimated-prices --skip-unimplemented

What it showed in week one: across 54 answers to my 9 buying questions, ChatGPT and Gemini named SuperMarketers 0 times. Asked about my brand directly, they described it in 6 of 6 answers. That's an automatic text match, not a review yet. It's also the baseline I predicted: being known when someone asks for you by name, and invisible when they ask who to hire.
I expected that number, and it still stings to see it in a table. Who-to-hire answers lean on other people mentioning you, so the next eight weeks go into pages for the questions buyers actually ask, and into getting mentioned where AI already looks.
Routine 1, continued: the free half of Monday
The same Monday run checks four things that cost nothing:
- Search Console refresh report. Pages at position 8 to 20, or with lots of impressions and few clicks, ranked by the clicks they could gain.
- Index check. The URL Inspection API asks Google about every page in my sitemap (2,000 checks a day are free) and lists what changed since last week.
- Site crawl. Broken links, redirect chains and canonical tags on every page.
- AI crawler access. Fetches 12 key pages as GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot and Google-Extended, and checks robots.txt for each.

Two things stood out in the first report. Google indexed my predictions page within a day of publishing. And 14 of my 90 pages sit at "discovered, not indexed": Google knows they exist and hasn't bothered to read them. Most are thin pages in one section, so that's my next fix.
Routine 2: the daily changed-page check
My site deploys whenever I push a change. Instead of wiring a hook into the deploy, a daily job fetches every page in the sitemap, compares it with yesterday's copy, and sends anything new or changed to IndexNow.
IndexNow is a free protocol run by Bing and others. It's worth caring about because ChatGPT search draws on Bing's index.
Step by step:
- Generate a key (any 32-character hex string).
- Put a text file named after the key at your site root, containing only the key. Mine lives at
supermarketers.ai/<key>.txt. - Save the key in your
.envasINDEXNOW_KEY. - POST the changed URLs to
api.indexnow.org/indexnowwith your host, key and key location. A 202 means accepted.

Routine 3: the monthly buyer-question pass
Once a month the routine pulls 90 days of Search Console queries and sorts each one by intent:
- Buyers: hire, agency, consultant, cost, alternatives, "who offers."
- Tool shoppers: tool, software, platform, free.
- Educational: everything else.

The split was humbling. Tool shoppers brought 3,253 impressions. Buyers brought 485. Most of my AI search traffic comes from people shopping for software I don't sell.
The useful part is the buyer list. "Who offers AI search audits for B2B companies?" reaches my site at position 3.3, and lands on the tools list. I don't have an audit page. Now there's a task to build one.
The SERP step is optional. With a Bright Data SERP API zone, the routine also fetches the live Google result for the top buyer questions: who ranks, the People Also Ask questions, and whether an AI Overview shows. Bright Data doesn't sell search volume, so for volume I use Search Console impressions for the searches I already appear in, and a keyword data API for the rest.
How I scheduled them on a Mac
All three run from launchd, the Mac's built-in scheduler. Unlike cron, it runs a missed job when the laptop wakes up, so a Monday spent asleep in a bag doesn't skip the week.

Step by step:
- Put each routine behind one script with a mode:
lab-routines.sh weekly|daily|monthly. - Give every run a lock, so two runs never overlap, and a dated output folder.
- Have each run end by writing a
summary.mdthat compares against the previous run. - Register the jobs with
StartCalendarInterval(Monday 6:00, daily 9:00, the 1st at 8:00) and load them withlaunchctl bootstrap. - Run each one once by hand with
launchctl kickstartand read the log.
What this costs, next to a tool
| Paid AI visibility tool | These 3 routines | |
|---|---|---|
| Monthly cost | $29 to $399 for an entry plan | About $0.40 at Bright Data list price (4 rounds) |
| Which AI answers | The vendor's setup, often API models | The logged-out ChatGPT and Gemini apps |
| Index and crawler checks | Sometimes | Every week |
| Who reads the result | A dashboard | You, in one file, before anything is published |
| Setup time | Minutes | An afternoon, if you're comfortable in a terminal |
The trade is honest: a tool is faster to start and has a nicer chart. The routines are cheaper, check more, and keep you reading the actual answers. That last part matters most, because the count is only as good as the person who checked it.
If you need a client-ready chart next week, or nobody on your team wants to touch a terminal, buy the tool. Otterly's $29 plan is a fine place to start.
FAQ
Can I track whether ChatGPT recommends my company for free?
Almost. Asking the ChatGPT app 30 questions a week through Bright Data costs about 5 cents at its list price of $1.50 per 1,000 answers. Asking by hand is free and works fine for 10 questions, but you lose the three-runs-per-question view that shows how much answers swing.
How many questions should I track?
I track 10. Fewer than that and one odd answer moves the whole number. More than that and you stop reading the answers.
Do I need Bright Data?
Only for the AI answer round, and only if you want the consumer apps. The index check, crawl, crawler access, IndexNow and Search Console routines need no paid service.
Does IndexNow help with Google?
No. Google doesn't use IndexNow. It helps Bing and the engines that share its index. For Google, use the URL Inspection API to see what's indexed, and fix the pages it skips.
What I'm doing next
The routines run every week from here on. The first reviewed AI numbers go on the Lab after the two-week baseline, next to the predictions I made before I saw them.
I'll post each week's numbers on the Lab, including the weeks nothing moves. If you'd rather have these routines running for your team, book a call.
What are you checking on your own site every week?