# GEO Citation Lab: measuring how AI search picks and absorbs sources

> GEO Citation Lab is a public empirical workbench for generative search visibility, holding 214,119 Chinese AI citation records, a 602-prompt cross-platform experiment, 54 papers and a 30-question capability test. It is a data and report repository rather than a tool, split under two licences, and it is explicit about which of its numbers will not support a trend claim.

**yaojingang/geo-citation-lab** — GEO experiment data reports and a curated GEO/AEO/AI search paper library.

- Repository: https://github.com/yaojingang/geo-citation-lab
- Stars: 698 · Forks: 141
- Language: HTML
- License: NOASSERTION
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/yaojingang-geo-citation-lab

## Two research lines, one visibility chain

GEO Citation Lab is a public empirical research workbench aimed at the citation mechanism of AI search. Its stated purpose is to study, with data that can be re-checked, how generative search selects sources, absorbs content and surfaces entities. The framing line runs from a question, to a search trigger, to source selection, to content absorption, to entity exposure, to cross-platform and cross-device differences.

The repository is organised around that chain rather than around a tool. There are four working directories. The first, 01-geo-experiment-data-report/, studies how ChatGPT, Google AI Overview and Gemini, and Perplexity trigger searches, select sources and absorb page content. The second, 03-cn-geo-citation-dataset/, compiles domestic AI citation records and provides queryable data and reports from the angles of source ecosystem, page characteristics, entity exposure and web versus app differences. The third, 02-geo-aeo-ai-search-papers/, is a literature background covering GEO methods, measurement and evaluation, empirical AI search work, risk and manipulation, Agentic Search and RAG. The fourth, geo-assessment/, turns the key conclusions from the papers, the cross-platform experiment and the CN-GEO data into 30 scenario questions, aimed mostly at domestic applications and at readers new to the field, producing a six-dimension capability report.

That last directory is the odd one out and worth flagging. An assessment quiz inside a research repository is not a peer review instrument, and the documentation does not present it as one, but a reader who sees a scored test inside an academic repository may assume more than is there.

## The cross-platform experiment splits selection from absorption

The first research line covers 602 controlled prompts, 21,143 valid search-layer citations and 23,745 citation-level feature records, and it extracts 72 dimensions of features from 18,151 successfully crawled pages.

The methodological move is to split generative search into two observable outcomes. Citation selection is whether the platform triggers a search at all and which sources enter the citation list. Citation absorption is the degree to which the cited page participates in the final answer across language, evidence, structure and factual levels.

The distinction matters because a platform can be good at one and bad at the other, and a single visibility metric collapses them. The paper behind it is Zhang Kai, He Xinyue and Yao Jingang, From Citation Selection to Citation Absorption: A Measurement Framework for Generative Engine Optimization Across AI Search Platforms, arXiv:2604.25707, 2026.

Three findings are stated in the documentation. First, citation breadth and absorption depth have to be measured separately: in the cross-platform experiment Perplexity and Google cite more sources on average while ChatGPT cites fewer, but the successfully crawled pages ChatGPT does cite carry higher average citation influence. Second, content match, structure and evidence density correlate with absorption depth, and high-influence pages tend to be longer, more clearly segmented and more likely to contain definitions, numbers, comparisons and steps, while the Q and A format on its own showed no absorption advantage. Third, the same product's web and app surfaces need to be observed separately, because Chinese-language generative search research found systematic differences in source sets between terminals of the same platform, which affects any cross-platform comparison. That last point comes from the second paper, Tao Zhen, Yue Liu, Gege Zhang and Yixuan Niu, What Do Chinese-Language Generative Search Engines Cite and Surface? A Large-Scale Empirical Study, arXiv:2607.15771, 2026, which analysed eight web and app interfaces of four Chinese large model products, focusing on citation behaviour, entity exposure and cross-interface consistency.

The documentation is careful about the strength of the second finding, noting that those results come from descriptive statistics and correlation analysis on a static sample rather than from a causal test.

## The CN-GEO dataset and what it cannot answer

The CN-GEO release contains 214,119 raw citation records in 64 JSONL shards, covering 9,878 canonical sources and 107,659 canonical pages. Alongside the raw layer the repository ships standard Parquet tables, a self-contained DuckDB database, page features, an analysis mart, a quality report and visual reports. The source data is based on the WENDAOstudy/cn-geo-citation-dataset repository under CC BY 4.0, and this repository provides the cleaning, querying and visual analysis on top of it.

The limitation notes are the most valuable part of the documentation, and a reader should treat them as part of the interface. The cross-platform experiment comes from a single static research run, and there is currently no unified collection timestamp per record. The CN-GEO raw layer lacks complete answers, answer batches, model versions and collection times. The consequence is stated plainly: source coverage and cross-platform consensus can be studied directly, while trends, sentiment, strict citation ranking and brand recommendation rate need more answer-level data.

That is an unusual amount of candour for a data project, and it changes what you can legitimately publish. A citation-count comparison between platforms is supportable. A statement that one platform's brand mentions are rising is not.

A second boundary is about mixing sources. The different papers, the raw data and the cleaned repository each use their own sample scope and processing conventions, so when quoting a number, the documentation says to defer to the description of the corresponding paper or data version. The full data limitations and acceptance results are in the Chinese dataset description and in a quality report filed under a release date of 2026-07-14.

## Installing the lightweight Viewer with one sentence

The installation story is unusual and worth understanding before you try it. The intended route for a local AI client is a single sentence sent to the client, which downloads a version-pinned v0.1.0 Viewer, verifies its SHA-256, unpacks it and opens index.html. The Viewer contains self-contained research reports and a searchable paper catalogue, is capped at 15 MiB, and needs no Git, Python, Node or Docker. The paper PDFs and the full research data stay behind online entry points.

The maintainer side of the same contract is two scripts:

```bash
python3 scripts/build_viewer.py --package
python3 scripts/verify_distribution.py
```

The installation contract itself is data, not prose. The current release status in deploy/manifest.json is released, and the installer uses the fixed Release asset address for v0.1.0. The repository also ships an AGENTS.md, and the documentation says local AI clients should follow the contract in that file and in the manifest rather than improvising. There is a skills/ directory at the root, so the instructions are packaged for an agent to read.

There are three documented outcomes depending on what you ask for. Asking to install and open the lab gets you the lightweight Viewer opened in the default browser. Asking to deploy the Viewer to GitHub Pages preserves the licence and attribution files, confirms the target repository and its public visibility, and then runs the Pages publishing flow. Asking to download the full data and prepare an analysis environment gets a warning about the size, about 568 MiB, followed by a clone of the repository and a configuration of Python 3.11 with uv.

Web chat clients usually have no local file access, and the documentation says to use the online home page in that case. The three research assets also come with an explicit scale table: the CN-GEO raw citation records number 214,119, domestic AI platform and terminal codes number 12, cross-platform experiment prompts number 602, GEO, AEO and AI search paper PDFs number 54, and the online GEO capability test is 30 questions scored out of 100 across six dimensions.

## Two licences for one repository

The repository uses a scope-split licensing model, and the documentation is explicit that this matters for redistribution.

Code, installers, workflows and skills are MIT licensed under a separate licence file. The repository's own original reports, documentation, visualisations and catalogue metadata are CC BY 4.0 under a second file. Paper PDFs, source data and other third-party material keep their original terms, which for the CN-GEO source means the CC BY 4.0 of the upstream dataset.

The permission granted is to copy, modify and publicly deploy the Viewer, with the condition that the release keeps the licence file, both scope licence files and the third-party notices, and states the source and what was changed. That is a reasonable deal for a project whose main asset is visual reports, and it is a clearer deal than a single licence would be, because a downstream user can see at a glance which parts are MIT code they can vendor and which parts are content they must attribute.

A user who publishes a modified report therefore has two obligations rather than one, and a user who ships the Viewer to an internal wiki has to keep the notices. The third party notices file exists for exactly that, and the boundaries of the third-party material inside the release package are described there.

The release process is documented in enough detail to be reproducible, and the details are about version discipline rather than tooling. The maintainer builds and verifies the package locally with two scripts, and pushing main deploys the lightweight Viewer to GitHub Pages through publish.yml. Pushing a v* tag whose value matches distribution_version in deploy/manifest.json makes the same workflow publish the Viewer ZIP, the SHA-256, the manifest and the two installers.

Before the first deployment, the repository owner has to set the Pages source to GitHub Actions under Settings, then Pages, then Build and deployment. The sequence for a release is to set release_status to pending, update distribution_version, the pinned installer URLs and the version in the README, then set the status to released and tag a matching version after verification. The installers and the manifest both use version-pinned Release URLs specifically to avoid version drift between main and latest during the publishing window.

## Where this data cannot carry a conclusion

The first limitation is the one the documentation already states, and it is a data availability limit rather than a quality judgement. There is no unified collection timestamp per record in the cross-platform experiment, and the CN-GEO raw layer is missing complete answers, answer batches, model versions and collection times. Any conclusion that depends on when something happened, or on what the answer actually said, is out of reach with what is published.

The second limitation is scope. The CN-GEO data is about Chinese-language generative search and Chinese AI platforms, and the paper library is topical rather than a systematic review. The assessment quiz in geo-assessment/ is aimed mostly at domestic applications and at readers new to the field, so its 30 questions are not a validated instrument for measuring an organisation's readiness, whatever the six-dimension report looks like.

The third is that the cross-platform experiment covers three named families of product, ChatGPT, Google AI Overview and Gemini, and Perplexity, on a single static run. A single research run is a legitimate design and the documentation is candid that it is one, but a single run is not a trend, and the framework's own separation of selection from absorption is a reminder that visibility has more than one dimension.

The real alternative is to collect your own data. Running your own prompts against the platforms you care about, recording which sources are returned and how they are used, and storing that over time gives you the timestamps and answer-level detail this dataset lacks. The difference in approach is that GEO Citation Lab offers a curated, published, citable corpus with an analysis pipeline and a paper behind it, while a self-collected dataset gives you control of the collection and the ability to measure change, at the cost of running the collection yourself and defending your own methodology. For a study that has to be reproducible and cited, the published corpus is the stronger starting point. For a question about how visibility is changing right now, only your own collection answers it.

## Conclusion

Use GEO Citation Lab if you are researching generative search visibility and want a citable dataset with published papers behind it rather than a vendor dashboard, and if you are prepared to work inside its limits, since the Chinese layer lacks complete answers, answer batches, model versions and collection timestamps. Do not use it to support a claim about sentiment, strict citation ranking or brand recommendation rate, because the documentation says those need more answer-level data, and do not treat the cross-platform experiment as time series, since it comes from a single static research run. Before you build on it, read the data limitation notes in the dataset description, check the release date of the data version you pull, and keep the two licences apart, since the code is MIT while the original reports and visualisations are CC BY 4.0.

## FAQ

### What is GEO Citation Lab?

It is a public empirical research workbench for studying how generative search selects sources, absorbs content and surfaces entities. The repository holds cross-platform experiment data and reports, a Chinese AI citation dataset, a curated paper library and a 30-question GEO capability assessment, split under MIT for code and CC BY 4.0 for original content.

### How large is the CN-GEO citation dataset?

The published CN-GEO version contains 214,119 raw citation records in 64 JSONL shards, covering 9,878 canonical sources and 107,659 canonical pages. The repository also provides standard Parquet tables, a self-contained DuckDB database, page features, an analysis mart, a quality report and visual reports.

### What can I not conclude from the GEO Citation Lab data?

The documentation states that trends, sentiment, strict citation ranking and brand recommendation rate need more answer-level data, because the CN-GEO raw layer lacks complete answers, answer batches, model versions and collection times. The cross-platform experiment also comes from a single static research run with no unified collection timestamp per record.

### How do I install the GEO Citation Lab Viewer?

The documented route is a single sentence to a local AI client, which downloads the version-pinned v0.1.0 Viewer, verifies its SHA-256, unpacks it and opens index.html, with no Git, Python, Node or Docker needed and a 15 MiB cap. The installation contract lives in AGENTS.md and deploy/manifest.json, and web chat clients should use the online home page instead.

### What licence applies to GEO Citation Lab?

The repository splits its licence by scope. Code, installers, workflows and skills are MIT, while the repository's own original reports, documentation, visualisations and catalogue metadata are CC BY 4.0. Paper PDFs, source data and other third-party material keep their original terms, and a deployment must keep the licence files and the third party notices and state the source and any changes.

## Sources

- [Issues](https://github.com/yaojingang/geo-citation-lab/issues)
- [README](https://github.com/yaojingang/geo-citation-lab/blob/main/README.md)
- [Releases](https://github.com/yaojingang/geo-citation-lab/releases)
- [yaojingang/geo-citation-lab on GitHub](https://github.com/yaojingang/geo-citation-lab)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/yaojingang-geo-citation-lab
