SEO/GEO measurement - 3 July 2026
SEO/GEO visibility metrics
The Visa Atlas SEO/GEO measurement contract: how we separate Google organic traffic, AI citation share, crawler access, freshness, index quality and technical trust gates.
This is a measurement contract, not a live analytics dashboard. It defines the evidence used to judge whether Visa Atlas is becoming easier to find through Google search, AI answers, public datasets and crawler-visible trust surfaces.
500,000
Monthly visit target
390,000-600,000
Planning range
9
Tracked metrics
9
Instrumented now
Measurement principles
- Separate Google organic traffic, AI referrals, AI answer citations and crawler access.
- Use server logs for crawler access because client-side analytics cannot see crawler fetches.
- Use a fixed benchmark basket for citation share so month-to-month movement is comparable.
- Use rendered audits, not only source checks, because crawlers consume built HTML and JSON.
- Keep private analytics private; publish the measurement contract and public evidence surfaces.
This is a planning model, not a current traffic claim. The target depends on earned authority, original datasets, citation share, and clean index quality.
Metrics
geo - instrumented
AI/search crawler access
crawler-accessGA4 cannot see crawler fetches. Server logs are the only honest way to separate crawler access from referral traffic.
- Target
- Known search and AI crawler user agents are allowed and visible in server logs when they crawl.
- Cadence
- Monthly and after robots, middleware, CDN or hosting changes.
Evidence surfaces
Commands
npm run audit:botlognpm run seo:botlog -- logs.txtnpm run seo:botlog -- logs.txt --jsonnpm run audit:visibility-metrics
Caveats
- Gemini training crawls can appear as Googlebot; Google-Extended is a robots token, not a user-agent.
- User-agent strings can be spoofed, so log classification is directional rather than forensic proof.
- The bot-log parser is regression-tested against the public crawler-access policy, but live counts require user-supplied server logs.
trust - instrumented
Source freshness
source-freshnessFreshness is the core wedge against stale immigration blogs and model training cutoffs.
- Target
- Zero stale or invalid dated source records in the public freshness report.
- Cadence
- Every build and before publishing major research or policy-change assets.
Evidence surfaces
Commands
npm run audit:stalenpm run audit:freshness
Caveats
- A stale record does not prove the government fact is wrong; it means the Visa Atlas review date exceeded the public SLA.
- High-risk legal and fee changes still require source verification before publication.
geo - instrumented
Open-data discoverability
open-data-discoverabilityThe site wins by being the reusable source layer that journalists, researchers and answer engines can cite.
- Target
- Every public data asset is listed in /data, /api/public, DataCatalog/Dataset JSON-LD, API Link headers and LLM discovery files.
- Cadence
- Every build and whenever a public endpoint is added.
Evidence surfaces
- /data
- /api/public
- /api
- /api/openapi.json
- /use-our-data
- /research/topical-authority-internal-link-map-2026
- /api/public/topical-authority-map
- /research/seo-geo-audit-evidence-pack-2026
- /api/public/seo-geo-audit-evidence
- /research/seo-geo-execution-readiness-scorecard-2026
- /api/public/execution-readiness
- /research/search-demand-action-map-2026
- /api/public/search-demand-actions
- /research/crawler-ai-retrieval-access-audit-2026
- /api/public/crawler-access
- /answer-capsules
- /api/public/answer-capsules
- /research/publisher-citation-kits-2026
- /api/public/publisher-citation-kits
- /research/authority-distribution-plan-2026
- /api/public/authority-distribution-plan
- /research/external-data-repository-mirrors-2026
- /api/public/external-repository-mirrors
- /research/knowledge-graph-entity-seeding-2026
- /api/public/knowledge-graph-entities
- /research/expert-reviewer-entity-program-2026
- /api/public/expert-reviewer-entities
- /research/reviewedby-schema-rollout-2026
- /api/public/reviewedby-schema-rollout
- /research/high-risk-page-review-acquisition-2026
- /api/public/high-risk-page-review-acquisition
- /research/p0-reviewed-page-refresh-2026
- /api/public/p0-reviewed-page-refresh
Commands
npm run audit:data-front-doornpm run audit:openapinpm run audit:topical-authority-mapnpm run audit:seo-geo-audit-evidencenpm run audit:execution-readinessnpm run audit:search-demand-actionsnpm run audit:data-citationnpm run audit:answer-capsulesnpm run audit:authority-distributionnpm run seo:authority-distribution -- authority-distribution-log.jsonl --jsonnpm run seo:publisher-citation-kits -- outreach-log.jsonl --jsonnpm run export:repository-mirrorsnpm run seo:repository-mirrors -- repository-mirror-log.jsonl --jsonnpm run seo:knowledge-graph -- kg-entity-log.jsonl --jsonnpm run export:knowledge-graph -- kg-entity-log.jsonlnpm run seo:expert-reviewers -- reviewer-evidence-log.jsonl --jsonnpm run export:reviewedby-schema -- reviewer-evidence-log.jsonlnpm run seo:review-acquisition -- reviewer-acquisition-log.jsonl --jsonnpm run seo:p0-page-refresh -- p0-reviewed-page-refresh-log.jsonl --json
Caveats
- Open data helps competitors only if they can match freshness and provenance; attribution turns reuse into entity signals.
- A dataset is included only when its source chain and reuse terms are visible.
technical - instrumented
Rendered SEO/GEO surface
rendered-seo-surfaceSource-template checks are not enough; crawlers and AI retrievers consume the static HTML and JSON produced by the build.
- Target
- Representative built pages expose canonical URLs, Article/Dataset schema, citations, source dates and no misleading ClaimReview.
- Cadence
- Every production build.
Evidence surfaces
- /api/public
- /data
- /research/technical-seo-control-plane-2026
- /api/public/technical-seo-controls
- /research/topical-authority-internal-link-map-2026
- /api/public/topical-authority-map
- /research/seo-geo-audit-evidence-pack-2026
- /api/public/seo-geo-audit-evidence
- /research/seo-geo-execution-readiness-scorecard-2026
- /api/public/execution-readiness
- /research/search-demand-action-map-2026
- /api/public/search-demand-actions
- /citation-packs
- /answer-capsules
- /freshness
- /widgets
Commands
npm run audit:seo-geonpm run audit:technical-seo-controlsnpm run audit:topical-authority-mapnpm run audit:seo-geo-audit-evidencenpm run audit:execution-readinessnpm run audit:search-demand-actionsNEXT_PUBLIC_SITE_URL=https://visaatlas.org npm run buildnpm run audit:rendered-seo
Caveats
- The release gate is local by default; run it with --include-liveness when network source checks are required.
- The rendered audit checks representative artifacts; broad source audits cover the rest of the templates.
- The audit is a regression gate, not a ranking guarantee.
seo - instrumented
Index quality and thin-page control
index-qualityThe 500k/month target depends on a clean index; thin permutations can suppress genuinely useful pages.
- Target
- No known thin page classes indexed without unique sourced value.
- Cadence
- Every build and before adding new programmatic page cohorts.
Evidence surfaces
Commands
npm run audit:thinnpm run audit:noindexnpm run audit:longtail-provenance
Caveats
- A noindex guard is a trust-preserving choice when unique sourced value is not available.
- Re-expansion should be earned by adding verified corridor, profession or comparison data.
trust - instrumented
Competitor wedge proof
competitor-wedge-proofA Big4-style review should be able to inspect the competitor/wedge claim without relying on private strategy notes.
- Target
- The public positioning claim is backed by a reusable sampled benchmark with explicit caveats.
- Cadence
- Quarterly, or whenever major competitor surfaces materially change.
Evidence surfaces
Commands
npm run audit:source-transparencynpm run audit:competitor-query-battlecardsnpm run audit:mcpnpm run audit:trust-surface
Caveats
- The benchmark is a public-surface sample, not a full forensic audit of competitors.
- Not-observed means the feature was not visible in sampled public pages.
seo - instrumented
GSC cohort reporting
gsc-cohort-reportingA site can grow impressions while losing CTR. Cohort reporting separates ranking, clickability and index-quality effects.
- Target
- Track clicks, impressions, CTR and average position by page cohort: calculators, data, research, core route reference pages, corridors, professions and comparisons.
- Cadence
- Monthly from a Search Console Pages export, and after major page-cohort launches.
Evidence surfaces
- /research
- /research/ai-retrieval-readiness-scorecard-2026
- /api/public/ai-retrieval-readiness
- /research/ai-retrieval-task-index-2026
- /api/public/ai-retrieval-task-index
- /research/seo-geo-page-action-map-2026
- /api/public/seo-geo-page-action-map
- /research/quarterly-market-share-evidence-summary-2026
- /api/public/quarterly-market-share-summary
- /research/battlecard-search-experiments-2026
- /api/public/battlecard-search-experiments
- /research/competitor-query-battlecards-2026
- /api/public/competitor-query-battlecards
- /research/publisher-citation-kits-2026
- /api/public/publisher-citation-kits
- /research/authority-distribution-plan-2026
- /api/public/authority-distribution-plan
- /research/external-data-repository-mirrors-2026
- /api/public/external-repository-mirrors
- /research/knowledge-graph-entity-seeding-2026
- /api/public/knowledge-graph-entities
- /research/expert-reviewer-entity-program-2026
- /api/public/expert-reviewer-entities
- /research/reviewedby-schema-rollout-2026
- /api/public/reviewedby-schema-rollout
- /research/high-risk-page-review-acquisition-2026
- /api/public/high-risk-page-review-acquisition
- /research/p0-reviewed-page-refresh-2026
- /api/public/p0-reviewed-page-refresh
- /data
- /calculators
- /compare
- /professions
- /visibility-metrics
Commands
npm run seo:gsc-cohorts -- gsc-pages.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=webnpm run audit:ai-retrieval-readinessnpm run audit:seo-geo-page-action-mapnpm run audit:gsc-opportunitiesnpm run seo:gsc-opportunities -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=webnpm run seo:gsc-battlecard-experiments -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=webnpm run seo:gsc-experiment-outcomes -- gsc-experiment-outcomes.jsonl --jsonnpm run seo:surface-snapshots -- snapshots.jsonl --jsonnpm run seo:market-share-summary -- surface-summary.json --jsonnpm run seo:market-share-proof -- market-share-proof.json --jsonnpm run seo:repository-mirrors -- repository-mirror-log.jsonl --jsonnpm run seo:knowledge-graph -- kg-entity-log.jsonl --jsonnpm run seo:expert-reviewers -- reviewer-evidence-log.jsonl --jsonnpm run export:reviewedby-schema -- reviewer-evidence-log.jsonlnpm run seo:review-acquisition -- reviewer-acquisition-log.jsonl --jsonnpm run seo:p0-page-refresh -- p0-reviewed-page-refresh-log.jsonl --json
Caveats
- Runs locally on a user-supplied Search Console export with a declared period, redacted property label and search type; no private analytics are exposed in this public contract.
- The public cohort taxonomy is now fully wired to the 48-prompt retrieval scorecard and 118-page SEO/GEO action map; live traffic proof still requires a reviewed private export.
- Battlecard outcome claims require reviewed aggregate rows with matched baseline/comparison scope, redacted query rows and local-only raw export storage.
- Stable-rank CTR should be analysed separately from rank movement.
- Query-level opportunity backlogs are local working files and should not be committed.
geo - instrumented
AI referral attribution
ai-referral-attributionAI visibility can improve before referral clicks arrive, and clicks can fall when answer engines cite the site directly. AI referral sessions are browser visits from AI products, not crawler hits.
- Target
- Separate AI crawler access, AI answer citations and AI referral sessions instead of treating them as one metric.
- Cadence
- Monthly.
Evidence surfaces
Commands
npm run seo:ai-referrals -- analytics-referrers.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=ga4-redacted --bot-filterednpm run kpi:citation-sharenpm run seo:botlog -- logs.txt --json
Caveats
- Runs locally on a user-supplied analytics/referrer export with a declared period, redacted property label and bot-filter confirmation; private sessions are not published in this public dataset.
- Crawler logs and citation-share logs are complementary, not interchangeable.
- Answer engines may cite Visa Atlas without sending a referral click.
Cohorts
| Cohort | Purpose | Representative paths | Primary KPIs |
|---|---|---|---|
| Calculators and tools | High-intent user tasks where a click remains valuable because the answer is profile-specific. | ||
| Data reference pages | Citable fee, salary, processing, cost and freshness surfaces that answer engines can lift safely. | ||
| Original research and benchmarks | Press, citation and backlink assets computed from the verified data layer. | ||
| Long-tail route, corridor, profession and comparison pages | Indexable long-tail demand only where each page carries unique source-backed value. | ||
| Core visa, country and policy reference pages | Primary evergreen immigration routes and policy pages where search demand is broad and source accuracy matters. |
Cite or reuse this dataset
This measurement contract is free to reuse under CC BY 4.0. It defines KPI methodology and public evidence surfaces; it does not expose private analytics or claim current traffic.
Suggested citation
Visa Atlas, "Visa Atlas SEO/GEO visibility measurement contract", https://visaatlas.org/visibility-metrics. Last verified 3 July 2026.
- JSON endpoint
- https://visaatlas.org/api/public/visibility-metrics