AI Visibility

AI Visibility shows you where — and how often — AI engines cite your brand when people ask them questions. Instead of guessing whether ChatGPT or Perplexity mentions you, Terradium samples real prompts and reports the answer as a trend over time.

What prompt-sampling is

Search rank is a single number for a single query at a single moment. AI answers don't work that way: the same prompt can produce different sources on different runs, and small wording changes shift who gets quoted.

So Terradium uses prompt-sampling. For a set of prompts relevant to your brand and topics, it asks the AI engines those prompts repeatedly over time and records what comes back — whether you appeared, whether you were cited as a source, and who else showed up alongside you.

Why it's a trend, not a fixed rank

Because answers vary run to run, a single sample isn't meaningful — but the rate across many samples is. AI Visibility metrics are therefore directional trends, not guaranteed placements. You'll watch a line move up and to the right as your content gets picked up more often; you won't see a brittle "position #1" that flips every refresh.

The metrics

Across your sampled prompts, Terradium reports:

  • Appearance rate — the share of sampled prompts where your brand shows up at all (mentioned or cited).
  • Citation share — how often you're the named source the engine links or attributes its answer to.
  • Share of voice — your slice of the cited sources versus the competitors who appear for the same prompts.
  • Average position — where you tend to land among the cited sources when you do appear.

Each is shown as a current value plus its trend, so you can tell whether your GEO work is compounding.

The engines

Terradium supports the four AI surfaces that matter most:

  • ChatGPT
  • Perplexity
  • Google AI Overviews
  • Gemini

Your plan picks how many of them a single sampling run hits — three on the $29 plan. Choose them under AI Visibility → Sampling schedule. Metrics are available per engine and rolled up across the ones you sample, so you can spot where you're strong and where you have room to grow.

What your plan samples

The $29 plan tracks 15 questions, sampled weekly, across 3 engines, 1 run per question — roughly 45 samples a cycle and 250 a billing period.

Those limits are enforced, not suggested. Asking for a cadence, an engine count or a question count outside your plan is refused with a message naming the limit rather than quietly saved as something smaller — so the settings screen always shows what will actually run.

The Sampling schedule card shows the projection for your current setup (questions × engines × runs × cycles) next to how much of the period's allowance you have spent. Need more questions or daily sampling? Email company@kugie.app.

Which market gets sampled

Google AI Overviews are geographic: the same question returns different answers in different countries. Your project's brand profile carries a language and a country, and both are applied to AI Overview sampling — the country selects the Google market, the language selects the answer language.

The chat engines take no market. They answer in whatever language the question is asked in, and forcing one would stop the sample reflecting what a real user sees.

Sample-run quota

Sampling AI engines costs real compute, so each billing period includes a fixed quota of sample runs. A run is one question asked of one engine once. The quota resets at the start of each billing period, and you can see how much of it you have used on the AI Visibility screen and under Settings → Billing.

Getting cited more

To improve these numbers, publish content that's easy for engines to quote — clear, well-structured answers to real questions. The Terradium content pipeline is built to write exactly that, and Search Console tells you which questions to target.

Actions

Actions has its own item in the sidebar, just under Overview. It is the answer to "so now what?" once your first scan has landed: one list of this week's work, where every row is traceable to something we already measured.

Rows come from three sources, and each is labelled so you can tell them apart:

  • AI answers — a tracked question you lose. The row names the engines where no sampled answer cited you, says whether a tracked competitor was cited instead, and lists the competitor pages that were. Those URLs come straight from the citations we stored when we sampled the answer — Terradium never fetches or crawls a competitor's page.
  • Search Console — a query you already earn impressions for that isn't among your tracked questions, or one of your pages that earns impressions but that no sampled AI answer has cited. These only appear if you've connected Search Console for the project's domain; if you haven't, the page simply shows the AI-answer rows.

Each row has one button. Write it starts the same generate-for-gap run described below, against the same 30-generations-per-period quota. Track it adds a Search Console query to your tracked questions, so the next scan tells you whether an AI answer cites you for it. Check readiness sends you to GEO Readiness for a page that exists but isn't being quoted.

When Actions refreshes

Actions is recomputed when a scan completes — weekly on the $29 plan. There is no separate daily job and nothing stored: the list is derived from your latest samples every time you open it, so it can never disagree with the scan it came from. Search Console rows follow the existing daily Search Console sync.

If your site is failing a blocking GEO readiness check, Actions shows that one row and nothing else. Publishing more into a site an AI crawler can't read earns nothing, so fixing the origin comes first.

The two empty states

  • "We're scanning." — no answers have been sampled yet. Actions appear after the first run.
  • "You're good." — the scan ran and found nothing to close. The date of the next scan is on the page; we'll flag new gaps then.

Content gaps

Under your tracked prompts, Terradium ranks the ones you're weakest on — never appears, appears but isn't cited, or cited low down. Each one becomes a row on Actions, with a Generate button that writes an article aimed squarely at it. The generated article stays linked to the prompt, so you can see whether your citation rate actually moved afterwards.

Article formats

The shape of an answer matters as much as its topic. An engine answering "best X for Y" wants a ranked list; "X vs Y" wants a comparison; "how do I X" wants ordered steps. A generic blog post loses all three.

Each Action is suggested one of three formats, based on how the prompt is worded:

  • Listicle — a ranked list with explicit criteria. Best for "best X" and recommendation questions.
  • Comparison — head-to-head with a real comparison table and an explicit "choose X if… / choose Y if…". Best for "X vs Y".
  • How-to — numbered, genuinely ordered steps with prerequisites and troubleshooting. Best for "how do I…".

The suggestion is a default, not a decision — change it in the dropdown before you hit Generate. Editorial-calendar items use their own content type the same way.

Make your content AI-readable (GEO)

Measuring citations is only half of GEO — the other half is making sure AI crawlers can actually read your published content. This matters because most AI crawlers don't run JavaScript: if your blog renders client-side, a crawler sees an empty shell and there's nothing to cite.

Terradium does the hard part for you (it builds clean markdown and a JSON-LD entity graph for every post), but those signals have to be served on your site. Aim for:

  • Content in the raw HTML — server-render or pre-render your blog so the article text is in the initial response, not injected after load.
  • JSON-LD in the page <head> — render each post's seoMetadata.jsonLd (the Organization + author + Article graph) as a <script type="application/ld+json">. Fill your project's Brand & entity fields so that graph is rich.
  • llms.txt and llms-full.txt at your site root — a clean, link-first index and a full-markdown corpus for crawlers. Terradium serves ready-made versions you can mirror at build time.
  • A markdown alternate per post (your post path with a .md suffix, plus <link rel="alternate" type="text/markdown">) — the most token-efficient way for an engine to read you. It follows your Blog URL pattern, so a site on /artikel/{slug} serves /artikel/{slug}.md.
  • robots.txt that welcomes AI bots (GPTBot, ClaudeBot, PerplexityBot, Google-Extended) and references your sitemap.

The onboarding "install" step gives you a copy-paste prompt that sets all of this up; you can re-run it against your AI coding agent any time.

GEO readiness check

GEO Readiness has its own item in the sidebar, just under Overview. It opens on your most recent result; Run readiness check fetches your live site again and grades it across four groups:

  • Setup — website URL, brand/entity fields, Search Console, tracked prompts, sampling, and whether you have published content.
  • Published page — is a real post reachable, is its content in the raw HTML, is the JSON-LD present, are title/description/canonical set.
  • Discoverability filesrobots.txt, sitemap.xml, llms.txt, llms-full.txt.
  • Crawler access — can an AI bot (e.g. GPTBot) fetch the page, and does it see the same content a browser does (no cloaking).

Every failing check explains what's wrong, links here, and gives a copy-paste fix prompt you can hand to your AI coding agent. Run it after you deploy changes to confirm crawlers can read everything.

Some checks are marked blocks publishing: while one of those is failing, auto-publish holds your scheduled articles rather than pushing them into a site AI crawlers cannot read. Overview carries a one-line readiness summary that links here — the checklist itself lives on this page only.