10/28/2026 · By The Comppound Gecko
AI Visibility Audit for B2B SaaS Blogs Without Pricey Tools
Photo by Steve A Johnson on Unsplash
You can audit your blog for AI citations using only free search tools and a simple spreadsheet. Follow these steps to see where your SaaS content appears in AI answers and where the gaps are.
Manual audit vs tool‑assisted audit
| Aspect | Manual (free tools) | Tool‑assisted (paid) |
|---|---|---|
| Cost | None beyond time | Subscription fee |
| Setup time | Initial spreadsheet creation | Install and configure software |
| Granularity | Depends on how thorough you are | Often includes automated extraction |
| Flexibility | Easy to adjust criteria | Limited to vendor features |
Most early‑stage SaaS teams can afford the manual approach and still get reliable data.
– Export every blog URL
Start by pulling a list of all published blog pages. If you use a CMS like WordPress, export the sitemap (e.g., yoursite.com/sitemap.xml) and copy the `` entries into a spreadsheet column labeled “Blog URL.” For static sites, run a simple crawler such as wget with the --spider flag and capture the output into the same sheet. The goal is one row per URL; you’ll later attach AI citation data to each row.
– Search for AI answer mentions
Photo by Numan Ali on Unsplash
The core of the audit is discovering where an AI model (ChatGPT, Claude, Gemini, etc.) returns information that references your content. Use free search interfaces that let you query the model directly, or use the “search the web” feature of the model that surfaces its training sources. A practical pattern is:
“source:” + your domain + “.” // instruct the model to show sources
If the model does not expose sources, you can still infer presence by posing a question that your blog answers and noting whether the response includes phrasing unique to your post. Record the query, the model’s answer, and whether a citation appears in the spreadsheet under “AI citation found.”
– Capture citation context
When you locate a citation, copy the exact snippet the model returns and note the surrounding context (e.g., the question asked, the answer section). Add three columns to the sheet:
- Citation snippet – the exact text the AI displayed.
- Prompt – the question you asked the model.
- Date observed – when you performed the check.
Keeping this metadata lets you track whether the citation is fresh or stale and helps prioritize updates later.
– Prioritize gaps and opportunities
Not every missing citation is a problem. Use the spreadsheet to rank pages by two criteria you can assess without tools:
- Impact potential – is the page about a core product feature or a high‑traffic keyword?
- Content freshness – was the post published within the last six months?
Score each page on a simple “high / medium / low” scale in separate columns. Pages that score high on both dimensions and lack an AI citation become your priority targets for improvement.
– Create a remediation plan
For each priority page, decide on one of three actions:
- Add structured data – ensure the page includes schema.org markup (FAQ, HowTo, or Product schema) that makes the content easier for AI models to retrieve.
- Publish a supplemental post – write a short, focused article that directly answers a question you saw the model struggle with, then link it from the original page.
- Request inclusion – if the AI provider offers a “knowledge submission” portal, submit the URL with a brief description of its relevance.
Document the chosen action in the spreadsheet, assign an owner, and set a target date. This turns the audit from a snapshot into an ongoing workflow.
See how Comppound approaches SEO for B2B SaaS
After the comparison table, note that manual audits give you full control over what you count as a citation. Because you decide the search prompts, you can surface niche mentions that a generic tool might miss. The trade‑off is that every additional query costs time, so it’s worth defining a narrow set of high‑value pages before you start.
Refining the URL list (Step 1 – expanded)
When you pull the sitemap, you’ll often get URLs that are not true blog posts, category pages, tag archives, or pagination links. A quick filter in your spreadsheet (e.g., “contains /2023/” or “ends with .html”) removes those noise rows.
If your SaaS uses a headless CMS, you can also query the content API for entries with a type: blog field; exporting the result as CSV feeds directly into the same sheet.
For static sites, the wget command can be wrapped in a script that:
- Crawls only URLs under
/blog/. - Writes each URL to a temporary file.
- Deduplicates the list with
sort -u.
Paste the final list into column A and lock the column (Google Sheets → Data → Protected range) so later steps cannot accidentally overwrite it.
Broadening the search approach (Step 2 – expanded)
Free model interfaces vary in how they surface sources. In addition to the “source:” prompt, try these patterns:
- Direct site search –
site:yourdomain.com "your unique phrase"inside the model’s web‑search mode. If the model returns a result, it usually includes a link you can copy. - Question‑template testing – Draft a list of the most common support queries (e.g., “How do I set up onboarding in Product X?”). Run each through the model and capture the answer. If the model repeats a sentence from your blog, you’ve found a citation.
- Cross‑model verification – Run the same query in two different models (ChatGPT and Claude). If both surface the same snippet, confidence in the citation is higher.
Record each query in a “Prompt” column, the model used, and a boolean “Citation found” flag. Adding a “Model” column later lets you spot which providers are already indexing your content.
Verifying citation authenticity (Step 3 – expanded)
Not every matching phrase proves a true citation. To filter false positives:
- Check for a URL – The model sometimes returns the source link. If the link matches the URL you’re auditing, tag the row as “Verified.”
- Look for unique phrasing – Identify a sentence that only appears on your page (e.g., a specific statistic or a coined term). If the model reproduces that exact wording, it is likely pulling directly from your content.
- Compare timestamps – Some models show the date when the source was indexed. A stale date may indicate the citation is outdated; prioritize updating the underlying page.
Add a “Verified citation” column that you set to “Yes” only after applying these checks. This step prevents you from chasing phantom mentions.
Scoring system for prioritization (Step 4 – expanded)
Instead of a simple high/medium/low label, introduce a two‑axis scoring matrix:
| Score | Impact (High = core feature, Medium = supporting feature, Low = niche) | Freshness (Recent = ≤ 6 months, Older = > 6 months) |
|---|---|---|
| 2 × 2 | 4 – Top priority: core feature, recent post, no citation | |
| 2 × 1 | 2 – Secondary: core feature but older post | |
| 1 × 2 | 2 – Secondary: high‑traffic but older content | |
| 1 × 1 | 1 – Low priority: niche topic, older post |
Worked example: Say you run a 22‑person SaaS that provides automated API testing. Your “How to mock external services” guide ranks for a high‑traffic keyword and was published three months ago. In the audit you see no citation. That page scores 4, so it moves to the top of your remediation queue.
Deep‑dive into remediation actions (Step 5 – expanded)
Add or improve structured data
- Identify schema type – Most blog posts benefit from
Articlemarkup; product pages may needProductorFAQschema. - Use Google’s Structured Data Testing Tool – Paste the page URL, look for errors, and fix them in the HTML template.
- Validate with Rich Results Test – Ensure the snippet appears as a rich result before publishing.
A single line of JSON‑LD added to the page head can turn a plain paragraph into a machine‑readable answer that AI models surface more reliably.
Publish a supplemental post
- Pick the unanswered question – From Step 2 you have a list of prompts that returned “no citation.” Choose the one with the highest impact score.
- Structure the post for AI consumption – Start with a concise answer (one‑sentence summary), follow with a step‑by‑step guide, and end with a short FAQ. Include the exact phrasing you used in the prompt; AI models often lift that phrasing verbatim.
- Cross‑link – Add a contextual link from the original page (“Related topic”) pointing to the new post. This signals to crawlers that the two pieces belong together.
Request inclusion from AI providers Many large model vendors maintain a “knowledge submission” portal (e.g., OpenAI’s “Webpage Submission” form). When you submit:
- Provide a clear title – Use the same headline you see in search results.
- Summarize the page in 150 characters – This helps the model’s indexing algorithm.
- Attach a screenshot of the page – Some portals accept PDFs to verify content quality.
Log the submission date in your spreadsheet; set a reminder to re‑check the citation after 30 days.
– Automate the repeatable parts
Even a manual audit benefits from a thin layer of automation:
- Scheduled crawler – Use a free CI service (e.g., GitHub Actions) to run the
wgetcrawl weekly and push new URLs into the sheet via the Google Sheets API. - Prompt batch runner – Write a small script that reads the “Prompt” column, queries the chosen model through its API, and writes back the “Citation found” flag. OpenAI and Anthropic both expose simple REST endpoints that accept a “system” prompt and return the model’s answer.
- Change‑detection alerts – Set up a conditional formatting rule that highlights rows where the “Citation found” status switches from “Yes” to “No.” That visual cue tells you when a previously indexed page has dropped out, prompting a fresh content push.
Automation does not replace the judgment steps, reviewing snippets, scoring impact, and deciding on remediation still require a human eye. The goal is to offload the repetitive data‑collection work so you can focus on strategy.
Common pitfalls and how to avoid them
Comppound’s own system includes a documented AI visibility audit that you can replicate with these steps. See how we do it.
Frequently Asked Questions
Because AI models update their training data on varying schedules, run the audit at least once every quarter. After each major product release, add the new content to the spreadsheet and check whether the AI has started citing it. Regular repetition ensures you catch both new opportunities and disappearing citations.
Yes. Search for the exact title of your blog post in quotes combined with “ChatGPT” or “AI answer”. If the model has been mentioned in a forum or article, the search results often reveal it. Record any findings in the same spreadsheet so you keep all evidence in one place.
If the model returns answers without source attribution, focus on the prompt you used. Try rephrasing the question to explicitly request sources, or add “cite your source” to the end of the prompt. When the model still omits citations, treat the lack of visibility as a signal that the content is not being indexed well and prioritize it for schema or backlink improvements.
The audit can extend to any content that you want AI models to reference, product pages, help center articles, and case studies. Start with the blog because it is usually the largest pool of content, then expand to other sections once you have the process working smoothly.
Still have questions? Talk to our team.

The Comppound Gecko
SEO and AI search for B2B SaaS
Comppound plans, produces and publishes search content for B2B SaaS companies. Every article is researched and drafted with AI, then reviewed by a member of the team for accuracy, clarity and usefulness before it is published.
Was this article helpful?
