Model or dataset
yaojingang/GEORank avatar
yaojingang/GEORank

GEORank: a self-hosted GEO workbench for AI search visibility

Open-source GEO ranking and generative engine optimization platform.

469 stars106 forksPythonApache-2.0

At a glance

What is it?
GEORank is an Apache-2.0 platform that diagnoses how a site and brand appear in AI answers, then turns that diagnosis into 30/60/90 day plans, keyword assets and structured output. It ships as a monorepo with a FastAPI backend and a Docker Compose stack, and it is aimed at teams who want the data on their own servers.
Who is it for?
Adopt GEORank if you want a self-hosted GEO workbench and are willing to run PostgreSQL, Redis, Qdrant, Neo4j and MinIO alongside it, or if you plan to extend the FastAPI backend and Next.js admin for client work. Do not adopt it if you need a hosted tool with zero infrastructure, or if you expect the repository to contain real tutorials, keyword packs or expert content: the README states those are excluded.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 18, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What GEORank solves, and who it is built for

Search behaviour is moving from result pages to generated answers. The README frames the problem as a set of questions a growth team cannot answer with a rank tracker: whether an AI system understands the company and its products, whether the site content is structured so it can be summarized and cited, and which of schema, page structure, meta information and citation signals to fix first. GEORank is the workbench around those questions. It collects companies, tools and experts in a directory, runs a site diagnosis, generates structured Q&A, produces a 30/60/90 day plan, expands keywords, and emits JSON-LD, llms.txt and knowledge-base drafts.

The intended audience is stated plainly: GEO researchers, SEO and content teams, brand growth teams, AI search product teams and developers. Two of those groups matter more than the rest. Agencies and independent consultants can run client diagnostics and keyword planning on their own hardware, and developers can extend the channels, diagnostic rules, model services and tool modules. The repository is a product skeleton with demo data, not a finished content site.

The diagnose, plan, structure pipeline behind the FastAPI backend

The README carries a Mermaid flowchart that describes the data flow. A user submits a company or a website URL; the backend fetches and parses the page; structured facts are extracted; those facts land in a company library and content asset store, and separately feed vector retrieval and a knowledge graph. In parallel, the fetched page runs through GEO diagnostic rules to produce a report. The company library and the vector/graph stores both feed AI Q&A, and the report plus the Q&A feed the action plan. Keywords, tools and knowledge-base output sit at the end of that chain.

The stack behind the flow is heavier than the feature list suggests. The backend is FastAPI with SQLAlchemy, Alembic and Celery. Data services are PostgreSQL, Redis, Qdrant for vectors, Neo4j for the graph and MinIO for object storage. The AI layer talks to any OpenAI-compatible Chat and Embedding provider, configured through an API pool in the admin settings. The front end is a static build served on port 3009, with a Next.js App Router migration in progress, and the admin is a separate Next.js application. A pnpm workspace with Turborepo and an OpenAPI-generated TypeScript SDK holds the pieces together. Five stateful services is a real operational commitment for a diagnostic tool, and the README does not present a lighter mode.

Installing GEORank with Docker Compose

The README documents Docker Compose as the deployment path and asks for Docker Desktop on Windows or macOS, or Docker Engine with the Compose plugin on Linux. Copy the environment template first, then bring the stack up with both compose files. The dev overlay binds the static front end and the API to localhost so you can reach them directly.

bash
cp .env.example .env
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d

After Compose finishes, the site is served on the port named by GEORANK_HTTP_PORT in .env. The template default is port 80, so an unmodified .env answers at http://localhost. The dev overlay exposes the front end and API on GEORANK_FRONTEND_PORT and GEORANK_API_PORT.

One detail in the compose file explains a confusing first run. A one-shot migrate service runs before anything else, and the API and worker only start once the database reaches Alembic head. The README states that migrate showing Exited (0) in docker compose ps is expected, not a crash. Migration, restore and failure handling are covered in docs/database-migrations.md.

AI features need an OpenAI-compatible provider. You can set it in .env before starting, or start the stack and configure the API pool in the admin system settings.

bash
LLM_API_KEY=sk-xxx
LLM_BASE_URL=https://your-openai-compatible-endpoint/v1
LLM_MODEL=your-chat-model

Embedding is configured separately through EMBEDDING_API_KEY, EMBEDDING_BASE_URL and EMBEDDING_MODEL, with EMBEDDING_DIMENSIONS at 1536 in the template. Leaving embedding blank degrades to same-category recommendations rather than failing. Node.js and pnpm are only needed if you intend to change the Next.js front end or admin source.

Where GEORank stops: no real content, no ranking promise

The open-source boundary is the sharpest limitation, and the README is unusually direct about it. The repository contains product code, project structure, configuration templates and demo data. It does not contain real API keys, production databases, vector or graph data, object storage files, unauthorised expert material, real tutorial content, user Q&A history, client plans and diagnostic records, keyword packs or commercial data, or user-uploaded custom homepage runtime versions. If you expect to clone the repository and get a populated GEO knowledge base, you will get an empty shell and a public-data fixture instead.

Two more boundaries are worth taking at face value. The disclaimer states that GEORank does not sell rankings, does not guarantee that any model recommends a brand, and does not represent any AI search platform. A diagnostic score is a heuristic over schema, structure, meta data, readability and citation signals, not a prediction of what ChatGPT or Perplexity will say. The second boundary is cost and compliance: the public version ships no real API keys, so model usage, privacy and regulatory responsibility sit with the operator.

There is also a security trade-off in the environment template. ALLOW_PRIVATE_LLM_PROVIDER_URLS defaults to false as SSRF protection. Setting it to true permits private-network and HTTP endpoints, which the comment says should only be done for trusted self-hosted LLMs with network access restricted around the backend service.

GEORank compared with llms.txt generators and raw schema tools

The nearest alternatives are single-purpose utilities rather than platforms: an llms.txt generator, a JSON-LD builder, or a schema validator. The difference is the pipeline. A schema tool takes a URL and returns markup advice, and that is the whole interaction. GEORank keeps the company record, the diagnosis report, the Q&A context and the keyword assets in one place, then feeds them forward into the action plan and the structured output. GEORank includes the JSON-LD generator, the llms.txt generator, the AI-friendliness score, the GEO title generator and the knowledge-base generator as modules inside that flow, so the comparison is not feature against feature but scope against scope.

That scope is also the cost. A standalone generator is a script you run and forget. GEORank wants PostgreSQL, Redis, Qdrant, Neo4j and MinIO running, an Alembic migration to complete, a Celery worker to stay alive and a model provider to be reachable. If your only goal is to emit an llms.txt file for one site, GEORank is the wrong tool and you will spend an afternoon on infrastructure for a task that takes a minute. If your goal is a repeatable client-facing process with stored history and a plan attached, the platform shape is the point.

Licence, upgrades and the cost of staying current

Software code is Apache-2.0. Expert profiles, names, portraits, brands and the built-in homepage content fall under additional rights boundaries described in DATA_LICENSE.md. That split matters for anyone repackaging the project commercially: the code grant is permissive, but the bundled public data is not covered by the same terms, and the README asks contributors not to submit unauthorised content assets. This is a description of what the repository states, not legal advice, and a commercial deployment should have the licence files reviewed rather than assumed.

Upgrade cost is dominated by the migration contract. The migrate service is described as the only schema owner, and the API and worker wait for it to reach Alembic head, so a version bump means running that service and reading docs/database-migrations.md before touching a production database. The repository also ships a docker-compose.migration-contract.yml and a release:check script that chains release:contract, sdk:check, public:check, i18n:check, typecheck and build. Contributors are expected to run pnpm public:check before publishing, which enforces the open-source boundary. The last push to the repository was on 2026-09-16, and the most recent tagged release is v1.3.0 from 2026-07-15. The roadmap lists aligning the Next.js 2.0 front end with the static front end, refining the API pool and quota policy, splitting tutorial and expert data into public and private packs, adding more GEO tools, and filling in deployment docs and screenshots. Until that front-end alignment lands, expect two front-end implementations in the tree.

Editorial conclusion

Adopt GEORank if you want a self-hosted GEO workbench and are willing to run PostgreSQL, Redis, Qdrant, Neo4j and MinIO alongside it, or if you plan to extend the FastAPI backend and Next.js admin for client work. Do not adopt it if you need a hosted tool with zero infrastructure, or if you expect the repository to contain real tutorials, keyword packs or expert content: the README states those are excluded. Before committing, copy .env.example to .env, set POSTGRES_PASSWORD, SECRET_KEY, SETTINGS_ENCRYPTION_KEY and JWT_SECRET to real values, and confirm which of your own model endpoints the API pool will call.

Frequently asked questions

What is GEORank?

GEORank is an open-source workbench for generative engine optimization. The README describes it as a platform that diagnoses a website's visibility in AI search, then turns the diagnosis into Q&A, action plans, keyword expansion, structured tools and content assets.

Is GEORank reliable?

The README states that GEORank does not sell rankings, does not guarantee that any model will recommend a brand, and does not represent any AI search platform. Treat its diagnostic output as a heuristic over schema, structure, meta information, readability and citation signals rather than a prediction of model behaviour.

Where is the GEORank leaderboard?

The repository does not document a leaderboard. The documented entry points are the built-in GEO workbench homepage at /, the company directory at /companies, and the official demo at GEORankHub, which the README describes as an online demonstration and public GEO research platform.

What is geo rank?

In this project the term refers to generative engine optimization: improving how a company, product or site is understood, summarized and cited by AI systems such as ChatGPT, Claude, Perplexity and Gemini. GEORank is the open-source tool built around that workflow.

Official sources

  1. License: Apache-2.0
  2. Project website
  3. README
  4. Releases
  5. yaojingang/GEORank on GitHub
Community notes

Community notes