GEO-094·Issue 08·Technical Foundation·94 / 132
Citation Monitoring: Who Links to You and Who Mentions You
Backlinks, brand mentions, and AI citations are three monitors, three units. How to collapse them onto one brand ID, dedupe, and report a number you can defend.
Issue focusOff-Site Authority: Digital PR, Communities, and the Knowledge Graph
Consider a composite case. A US bike-computer brand puts three slides side by side at its quarterly review: the backlink index says referring domains are up, the mention monitor says mentions rise faster, the AI tracker says citations are up too. Every line rises; no two totals reconcile. One German review page is one row in the backlink export, three in the mention export — list page, body, cache — and two hits in the AI tracker, one prompt sampled twice. Six signals, one article, one growth curve that does not exist.
A link is another site spending its domain on you, a mention is your name in their text, an AI citation is a model using you in an answer — three monitors, three units, and they add only once every record resolves to one brand ID.
Three monitors, three questions
Folding all three into “off-site buzz” is the usual first mistake: different signals, different clocks, different failure modes.
| Layer | Raw signal | Question | Most common false signal |
|---|---|---|---|
| Backlinks | Source and target URL, anchor, rel, first-seen date | Who can send retrieval | Wire copies, directory listings, paid placements |
| Mentions | Brand, product, founder names, aliases | How much of the corpus names me | Own accounts and site, a same-named brand |
| AI citations | Source URLs or brand names in an answer | Did a model use me | One sampled answer counted twice, a name in a source list |
Cadence alone makes one chart useless: link indexes update weekly, mentions daily, citations per sampling batch, so the steadiest layer hides the noisiest. Direction matters more. Links and mentions are inputs; citations are outputs. Watch only inputs and you cannot tell whether any of it worked; watch only outputs and, when a line drops, you cannot tell which paragraph to fix. Naming the node type is what makes the measurement land; see AI’s off-site trust network.
Add the three together and the curve is fiction
Four arithmetic failures do most of the damage.
- Double counting. A source can link, name you, and get cited, and is still one source. By layer, one German review becomes six rows.
- Denominator drift. Mentions double because a forum was added to the source list. Freeze the list, or report share of corpus.
- Context loss. A correction, a warning thread, a “do not buy” post counts like praise; rows turn a crisis into reach.
- Syndication. One announcement republished across outlets gives distinct URLs and no new information. The report improves; the answers do not.
Before merging two rows, ask: same target entity, same source URL, same time window? One “no” and they do not add — the base table a third-party corpus audit also runs on.
Deduplicate against an entity table, not a hunch
Deduplication needs an identity. Hang all three feeds off one brand_id.
| Field | What goes in it | Where it is used |
|---|---|---|
| brand_id | Internal unique key | Primary key in all three exports |
| canonical_name | One official spelling | Display and matching |
| aliases | Abbreviations, hyphenation, former names, product-line prefixes | Mention matching |
| domains | Storefronts, market sites, help center | Backlink target collapsing |
| handles | Social and marketplace accounts | Official vs user posts |
| qid | Knowledge graph entry, blank if none | Entity disambiguation |
Then four normalizations: strip tracking parameters and anchors, fixing protocol, slash, and case; collapse subdomains to the registrable domain, but give an independent store its own row so shop. and www. stay one source; cover hyphens, diacritics, full-width characters, and local aliases in one name set; record a first sighting once per source per window, counting repeats as recurrence, not new sources.
Fuzzy matches should not auto-merge: anything past a threshold goes to a human queue with a reason logged — the only answer to “why wasn’t this counted?”
Five steps from three exports to one report
| Step | Action | Owner | Passes when |
|---|---|---|---|
| 1 Entity table | Brand, aliases, domains, handles, QID | Engineering, brand | Every alias resolves to one brand_id |
| 2 Connect feeds | Backlinks, mentions, sampled answers, one window | Engineering | Every record has brand_id and a discovery date |
| 3 Normalize | Four rules as a pipeline; fuzzy matches queued | Engineering | A hundred-row manual sample has no unexplained errors |
| 4 Tag layers | Earned, owned, syndicated; linked; cited in body or source list | Content, growth | One bucket per record |
| 5 Alert and report | Alerts only for action-worthy changes | Growth | The report says who was added and who was lost |
Keep alerts to four classes: a new high-relevance source, your name misspelled, negative context, a competitor substituted in an answer you held. Everything else goes to the monthly report: new sources after deduplication, citation change with numerator and denominator written separately, and the review queue. That middle line is usually written badly — “citations are up” with no note that the corpus grew cannot be read as growth.
Example: one review, six records
Figures here are invented to show the arithmetic.
A German review site publishes one article at one URL. The backlink export logs one dofollow link; the mention export, three rows — list page, body, cache; the AI tracker, two citations from two rounds. Six signals.
Collapsed, one record remains: source, article, first-seen date, earned, linked, cited in both rounds. The deck changes from “six new off-site signals this month” to “one new German review source, cited in both rounds.” Only the second yields an action — send a sample unit or not. The first yields a feeling.
A comparison table cited repeatedly shows as few sources with high citation frequency; see citable assets.
Where this breaks
First, coverage is partial. Deep forum pages, private communities, voice assistants, and word of mouth stay invisible; a tool reporting zero means zero inside its index.
Second, mentions and citations are not impact. Links are inputs, citations outputs, conversion a third layer with its own definition — see share of citation.
Third, answers fluctuate. One difference is not a trend; fix the prompt set and sampling rate first.
Fourth, do not monitor your way into volume. Manufacturing mentions turns the corpus into noise, and models route around noise.
Fifth, scraping public pages has rules: respect robots directives, and under GDPR do not store personal author data without a basis.
Monitoring is a starting point, not a verdict. Its only job is to make next month less of a guess: who is talking, which sentence got used, which gap to fill. This month, build the entity table — ten aliases, three to five domains, one QID — then rerun last month’s three exports against brand_id. The duplicates you delete were noise, not growth; only the remainder needs explaining. Entry points and node priorities belong to the technical foundation; this issue opens with the trust network these monitors chart.