GEOInflow is a free, open source web & product analytics project written in TypeScript and released under MIT. It has 634 GitHub stars, 193 forks and 3 open issues, and was last pushed 18 hours ago. On this registry it ranks #21 of 27 tracked projects in Web & Product Analytics, with 5 head-to-head comparisons available.

What is GEOInflow?

GEOInflow is an MIT-licensed, self-hosted web and AI crawler analytics platform for Generative Engine Optimization, built for company websites, content sites, media publishers, developer documentation teams, and GEO teams that manage multiple sites.

What it is

GEOInflow is a self-hosted analytics application written in TypeScript and built around PostgreSQL, distributed under the MIT licence and jointly published by 猎看科技 and 北京日报社智源GEO. It combines browser tracking, account permissions, GEO reports, crawler evidence, log collection, and analytics acceleration in one system; the current product version is v1.2, build 1.2.0. Quick start and deployment guides are available in English and Simplified Chinese, while the other linked reference guides remain in Simplified Chinese only.

The concrete problem it addresses is the gap between ordinary traffic counting and what AI-era publishing actually asks. A page-view counter records that visits happened, and raw server logs record that requests arrived, but neither alone shows which AI crawlers visited, what they requested, which important pages were never fetched, where requests failed, or how AI search referrals became conversions. GEOInflow puts visitors, AI search referrals, crawl logs, and a content inventory into one shared website context so those questions are answered over the same data scope, with evidence gaps kept explicit rather than smoothed over.

Key capabilities

  • A built-in crawler catalog covering OpenAI, Anthropic, Perplexity, Google, Microsoft, ByteDance, Baidu, Kimi, Tencent Hunyuan, and other providers, which also retains traditional search crawlers and records platform, product, and request identity separately.
  • Request-purpose classification that separates training, AI search, and user-triggered access, alongside product types such as AI workbenches and personal agents.
  • Independently stored identity evidence, including declared User-Agent strings, matches against official IP ranges, and available DNS or trusted edge evidence, because a User-Agent claim alone is insufficient to confirm a source.
  • Content inventory import from sitemap, CSV, or JSON files, compared against observed logs to measure crawl coverage and AI blind spots across a known set of pages.
  • Request diagnostics covering HTTP status, GET and HEAD methods, caching, latency, errors, and risk signals.
  • AI referral reporting that tracks referral sessions, landing pages, goals, and conversions.
  • Identity, purpose, and product-type filters applied before aggregation and pagination, so cards, tables, comparisons, and exports all use the same conditions.

Who uses it and how

  • Company websites, content sites, media publishers, developer documentation projects, and GEO teams managing multiple sites, with analysis available at both website and page level.
  • Two-tier teams, where operators work at website and page level while maintainers inspect ingestion, queues, source quality, and calculation methods.
  • Content teams import a sitemap, CSV, or JSON inventory and compare it with observed logs to check entry points, internal links, robots rules, and responses for pages that show no crawl activity.
  • Operations staff investigate blocked requests, origin errors, coverage drops, and source interruptions using HTTP status, caching, latency, and risk signals.
  • Analysts follow AI referral sessions, landing pages, goals, and conversions to see how AI search contributes to real traffic and business outcomes.

Getting started

GEOInflow is self-hosted and runs against PostgreSQL; the README directs new users to docs/getting-started.en.md for the quick start and docs/deployment.en.md for deployment, both available in English and Simplified Chinese. The published product version is v1.2, build 1.2.0.

How it compares

No comparable tool is named anywhere in the supplied facts, so GEOInflow stands alone in this registry rather than being positioned against named alternatives. Readers weighing it against other analytics software have only the documented capabilities above to work from, since no competitor list, pricing, or feature comparison was provided.

When to use it — and when not to

Adopting GEOInflow means operating a PostgreSQL database and the application itself, and someone must own ingestion, queues, and source quality for the crawl evidence to stay trustworthy. Teams that want a hosted service with no infrastructure to run, or English-only teams that need every reference guide in English, should weigh that maintenance burden and the fact that the other linked guides are currently in Simplified Chinese. Crawler identity also stays at an unknown status wherever no official IP range, DNS, or trusted edge evidence exists, so conclusions about AI crawlers are only as strong as the evidence collected.

project readme (upstream, from github) — read inline

GEOInflow

English | 简体中文

Self-hosted web and AI crawler analytics for Generative Engine Optimization (GEO).

Jointly published by 猎看科技 · 北京日报社智源GEO

Quick start · Deployment · AI crawler analytics · Architecture · Documentation · Contributing

GEOInflow brings website visitors, AI search referrals, server crawl logs, and content inventories into a shared website context. It helps teams understand which AI crawlers visit their sites, which pages they request, which important pages have no observed crawl activity, where requests fail, and how AI search contributes visitors and conversions.

The system includes browser tracking, account permissions, GEO reports, crawler evidence, log collection, and analytics acceleration. The current product version is v1.2, with build version 1.2.0. Application source code is distributed under the MIT license.

Quick start and deployment guides are available in English and Simplified Chinese. Other linked reference guides are currently in Simplified Chinese.

Introduction video

https://github.com/user-attachments/assets/81e57cc4-3441-4e5f-b2fb-cd929c6c27bd

What you can use it for

Question Available data Actions it can inform
Which AI platforms visit the site? Crawler identity, purpose, provider, request volume, verification status, and trends Distinguish training, search, and user-triggered requests to understand how content is accessed
Which pages are crawled repeatedly? Page rankings, repeat requests, directory distribution, and recent activity Review frequently requested paths, invalid URLs, and content structure
Have important pages been crawled? Import sitemap / CSV / JSON inventories and compare them with observed logs Check entry points, internal links, robots rules, and responses
Are crawler requests succeeding? HTTP status, GET / HEAD, caching, latency, errors, and risk signals Investigate blocked requests, origin errors, coverage drops, and source interruptions
What does AI search bring to the site? AI referral sessions, landing pages, goals, and conversions Observe changes in real traffic and business outcomes
Is there enough evidence for a conclusion? Identity evidence, source coverage, gaps, missing inputs, and estimates Review results over the same data scope and keep evidence gaps explicit

GEOInflow is designed for company websites, content sites, media publishers, developer documentation, and GEO teams managing multiple sites. Operators can work at the website and page level, while maintainers can inspect ingestion, queues, source quality, and calculation methods.

AI crawler analytics

Crawler identity and purpose

The built-in catalog covers OpenAI, Anthropic, Perplexity, Google, Microsoft, ByteDance, Baidu, Kimi, Tencent Hunyuan, and other providers. It also retains observations of traditional search crawlers and other bots.

The catalog records platforms, products, and request identities separately. Training, AI search, and user-triggered access describe request purposes; AI workbenches and personal agents describe product types. These dimensions can overlap. Active entries depend on the administrator-published catalog and each website's configuration.

Declared User-Agent strings, matches against official IP ranges, and available DNS or trusted edge evidence are stored independently. A User-Agent claim alone is insufficient to confirm a source. Historical records without verification evidence retain an unknown status.

Crawl activity and content coverage

Review requested-page rankings, observed pages, repeated requests, directory distribution, leading crawlers, recent activity, and content freshness. Import a content inventory to measure observed crawl coverage and AI blind spots against a known set of pages.

Identity, purpose, and product-type filters apply before aggregation and pagination. Cards, tables, comparisons, and exports use the same conditions. Path observations and inferred results retain their estimate labels.

Investigate access problems with evidence

HTTP responses, caching, latency, response bytes, collection continuity, and risk findings are shown separately. Teams can record handling status, notes, deferrals, and resumptions, then review the relevant time windows and evidence.

Access policies support robots / Nginx configuration exports. Supported Cloudflare controls require separate Zone credentials, a preview, explicit confirmation, background execution, and a read-back of the remote state. Provider plans, permissions, and available fields must be checked in the deployed environment.

AI referrals and business outcomes

Browser tracking recognizes supported AI search referrals and combines them with landing pages, events, goals, and conversions. Crawler requests, referral sessions, and conversions are measured separately. Cross-source associations retain their comparability limits.

Crawl logs establish observed access. Indexing, model training, answer citations, recommendation rankings, and customer acquisition each require their own evidence.

See the AI crawler analytics guide for metrics, workflows, and limitations.

Website analytics

Capability Scope
Pageviews and visitors PV, UV, visits, referrals, geography, devices, browsers, and content performance
Events and conversions Custom events, goals, funnels, visitor paths, attribution, and revenue analysis
Extended analysis Search engines, referral keywords, UTM, performance, heatmaps, retention, and audiences
Collaboration Websites, personal and team spaces, permissions, workspaces, dashboards, and public sharing
Exports CSV / JSON / ZIP for the selected scope, preserving fields, states, and sensitive-data handling
AI assistance Optional model connections and conversations based on website facts, disabled by default
Operations and governance Ingestion checks, historical data repair, analytics acceleration, and source and rule versioning

The application supports Simplified Chinese and English. The main date ranges are Today / 7 days / 30 days, and the default analytics timezone is Asia/Shanghai. The first full sign-in confirms the country and city timezone; later requests use the account's saved timezone to define today. Realtime visitors cover the most recent 30 minutes, and retention uses calendar months.

Browser metrics share a common traffic-quality policy. Empty data, missing integrations, unknown values, estimates, and unsupported capabilities are shown as distinct states. Demo websites are explicitly labeled. See page coverage for the feature matrix and date ranges and timezones for date definitions.

How data enters the system

flowchart LR
  A[Website browser script] --> C[Application and ingestion APIs]
  B[Server / CDN logs] --> C
  D[sitemap / CSV / JSON inventory] --> C
  C --> E[(PostgreSQL)]
  E --> F[Log and analytics workers]
  F --> E
  E --> G[Reports and published results]
  H[(Redis cache)] --- G
  G --> I[GEO / visitor / content analytics]
  G --> J[Permission-controlled sharing and exports]

The browser script collects pageviews, events, and enabled extended data. Server and CDN logs add crawler requests that do not run browser scripts. Content inventories provide a known set of pages. Each input can be connected independently, and the corresponding analysis states its limitations when a source is missing.

Log processing retains sources, classifications, and verification evidence. Analytics workers use pre-aggregation, exact visit facts, and durable results to reduce repeated calculations. Standard dashboards and heavier analysis have separate admission controls. Frequently used ranges are prewarmed, and published results remain available during background updates. See the architecture guide.

Quick deployment

Start Docker Engine / Docker Desktop and Docker Compose V2, and ensure that image and dependency download sources are reachable. After obtaining the source code, run this command from the project root:

sh scripts/liekan-deploy.sh

The script generates a private .env and random secrets, builds the application image, runs migrations, imports the bundled official example on a fresh installation, and starts the application, log worker, analytics worker, PostgreSQL, and Redis. The default address is:

http://127.0.0.1:3002

For a fresh installation, the initial username is admin and the initial password is liekan. Change the password after signing in, then create a website using the ingestion guide. Upgrades preserve existing customized passwords and accounts.

Docker startup imports the complete sanitized official example after migrations. For manual development, run:

docker compose -f docker-compose.liekan.yml exec app node scripts/liekan-seed-demo.mjs

The example is named “猎看官网(示例数据)”. The source and Docker image include its complete sanitized dataset, catalog, and checksum manifest, covering browser events, performance, revenue, heatmaps, replays, crawler evidence, content, and goals. On first import, its timestamps are shifted to make the data convenient to explore. Repeated runs preserve existing data and deletion state. See the default demo guide.

Production access requires a domain, HTTPS, and a trusted reverse proxy. Raw browser receipt remains observable without trusted IP ingress. Qualified browser metrics, including PV and UV, require usable identity evidence. Automatic log ingestion and optional AI analysis have separate configuration requirements.

The deployment guide covers services, configuration, proxies, backups, and upgrades. The quick start explains how to connect the first website.

Keeping analytics current

The main Today dashboards read published results every 30 seconds and show the actual data cutoff. Reads pause while the page is hidden or offline. Realtime visitors use their own refresh interval, while heavier analyses such as heatmaps and retention use longer background windows.

Completed results use browser, process, Redis, and PostgreSQL persistence. Common date ranges and pages share query conditions. Capacity safeguards govern eviction of older windows, idle failed tasks pause automatic retries, and initial calculations can finish through durable background tasks. Updates retain statistics permissions and checks for source quality, dates, and rule versions.

Initial calculations, cache hits, and background updates have different costs. Actual performance depends on data volume, coverage construction, the database, and cache state. After deployment, the Analytics Acceleration page shows tasks and coverage. See analytics acceleration and caching.

Self-hosting and scope

  • Core website analytics and crawler identification can run on your own infrastructure without a model API key.
  • Browser tracking is cookieless by default. Optional recording, event properties, and business integrations use the data scope configured for each deployment.
  • AI analysis is disabled by default. When enabled, users choose model connections and website materials. See the AI configuration guide for the data sent to models.
  • GEO Weight is in Beta. It uses qualified AI content access from the most recent 30 complete calendar days, with a documented formula, evidence, and limitations. The weight guide defines the fixed policy and applicable scope.
  • GEO extensions, supplemental journeys, complete exports, and analytics acceleration primarily target PostgreSQL. Retained ClickHouse, link, and pixel endpoints follow their existing protocols; support for each GEO extension must be checked separately.
  • Automatic server collection requires public HTTPS, an ingestion secret, and signed installation assets. Cloudflare integration also requires OAuth, permissions, and the relevant provider capabilities.
  • Search impressions, actual rankings, model-answer citations, training inclusion, and article completion rates require additional data. The detailed guides define the observations and scores this project provides.

Development and maintenance

Development uses Node.js 22.23.4, pnpm 12.3.4, and PostgreSQL. Prepare an independent database and private configuration using the deployment guide, then run the following commands. This example uses the separate development port 3302:

pnpm install --frozen-lockfile
pnpm build:db
pnpm db:migrate
pnpm liekan:migrate
pnpm liekan:queue-bootstrap
pnpm build:openapi
pnpm build:packages
pnpm build:tracker
pnpm build:recorder
pnpm liekan:build-worker
pnpm dev --port 3302

Start the log and analytics workers in separate terminals as described in CONTRIBUTING.md. Development workers and the web application use the same private environment configuration.

Product pages live in src/components/liekan, data contracts in src/lib/liekan/contracts, and upstream query and permission adapters in src/lib/liekan/upstream. New structures use incremental project migrations. Applied migrations remain immutable. The liekan technical identifiers, collection protocols, and existing workspace package names retain compatibility.

For issue reports, contributions, scoped verification, and upstream synchronization, see Contributing, the documentation index, and upstream maintenance.

License and notices

GEOInflow application source code and project documentation use the MIT license, permitting use, modification, and redistribution, including commercial use, subject to its notice requirements. The full license text governs these permissions.

GEOInflow is jointly published by 猎看科技 and 北京日报社智源GEO. Original copyright and license text are retained with the source. See the upstream notes for the project's origin and compatibility relationship.

Dependencies, fonts, and geographic datasets retain their own licenses. See third-party notices. The default geographic dataset is DB-IP City Lite, with its attribution and CC BY 4.0 license retained. Supplied MaxMind or other geographic databases must comply with their respective data terms. Runtime configuration, real visitor data, database backups, private keys, and privately supplied geographic databases are outside the source release.

Frequently asked questions

Is GEOInflow free to use?

GEOInflow is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does GEOInflow do?

Self-hosted web and AI crawler analytics for Generative Engine Optimization (GEO). Track visitors, AI search referrals, crawl logs, content coverage, and conver

What is GEOInflow written in?

GEOInflow is primarily written in TypeScript. Its source is publicly available at https://github.com/yaojingang/GEOInflow, and it has 634 GitHub stars.