Show HN: CiteLadder – open-source AI search visibility tracker An open-source project called CiteLadder has launched to track how AI answer engines including ChatGPT, Claude, Gemini and Google AI Overviews name brands and cite pages in response to buyer prompts. CiteLadder records visibility, share of voice, owned citation rate and competitor rankings across scheduled audits, and ships an MCP server with 46 tools for Claude, ChatGPT and other MCP clients; a hosted version, CiteLadder Cloud, is offered with a free trial and managed engine access. Open-source AI search visibility GEO / AEO you can self-host. See how ChatGPT, Gemini, Claude and Google AI Overviews answer your buyers' questions, which brands they name, and which pages they cite. Then find out why, fix it, and measure whether it worked. Quick start quick-start · Features features · Screenshots screenshots · MCP connect-an-ai-assistant-mcp · Hosted version https://citeladder.com · Docs https://docs.citeladder.com · Contributing https://github.com/abhij1306/CiteLadder/blob/main/CONTRIBUTING.md Don't want to run it yourself? CiteLadder Cloud https://citeladder.com is the hosted version with a free trial, team workspaces and managed engine access. Product guides live at docs.citeladder.com https://docs.citeladder.com . For a portfolio of real buyer questions prompts , CiteLadder asks the answer engines on a schedule and records every answer: - Which answer engines : ChatGPT, Claude and Gemini through their APIs, plus ChatGPT Search, the Gemini app and Google AI Overviews through DataForSEO. - Which brands they name : your brand and your competitors, with visibility, share of voice, rank and how each one changes between comparable runs. - Which pages they cite : cited and retrieved domains and URLs, your owned citation rate, source types, and which publishers show up next to your competitors. - What they get wrong : perception and fact checks against your own site's claims. - Why : your site's crawlability and structure for AI Site Health , the demand behind each question Search Console, GA4, Bing , and which AI crawlers and referrals actually reach you. The measured outcome is observed mention and citation share, compared under the same prompts and engines over time. Site and demand metrics are leading indicators, never presented as proof of cause. unavailable , not configured and observed zero stay three different things. | AI Visibility | Overview | |---|---| | Site Health | Issues | | Area | What you get | |---|---| | AI Visibility | Scheduled audits of your prompt portfolio across engines and markets. Visibility, share of voice, owned citation rate, average position, competitor ranking, trends between comparable runs, cited sources and URLs, perception, accuracy fact checks , AI ads and query fan-outs. CSV export. | | Prompts | Generate buyer prompts from your site, market and competitors; organise them by topic, intent and buyer stage; review candidates before they are tracked. | | Site Health | A polite, bounded crawler with page-type-aware checks: Web Fundamentals, AEO Readiness by pillar answerability, structure, evidence, machine readability, provenance, freshness, crawlability , AI crawler access robots.txt, llms.txt , architecture, internal links and crawl-to-crawl changes. | | Issues and Actions | Every finding with its evidence, affected pages and how to fix it, rolled into a ranked list of Actions you can work through and mark implemented. | | Agent | Ask questions about your project, or start from workflows articles, landing, comparison and FAQ pages, page refreshes, social posts . Answers are grounded in your evidence with sources, and outputs are reviewable drafts. | | Search Demand and Performance | Google Search Console, GA4 and Bing Webmaster sync, query evidence and landing-page performance. | | Search Intelligence | Keyword suggestions, search volume and backlink research via DataForSEO, with a cost review before any paid call runs. | | AI Traffic | AI crawler logs from Cloudflare Worker or Logpush , AWS Firehose, Google Cloud Pub/Sub or file uploads, and referral traffic from answer engines: which bots read which pages, and which answers send visitors. | | Commerce Suite | Product catalog, buyer prompts and an AI "shelf" view of how your products appear next to competitors. | | MCP server | 46 tools for Claude, ChatGPT and any MCP client: read visibility, sources, Site Health, actions, demand and traffic, and make changes : add or archive prompts, add competitors, launch and schedule audits, update actions. Every change is shown as a preview and applied only after you confirm. Includes an interactive MCP Apps view. | | Public API | Scoped API keys for /v1 endpoints, with an OpenAPI document at /v1/openapi.json . | | Overview reports | An editable project overview with layout control and PDF export. | CiteLadder never publishes anything to your site for you and never trains on your data. You bring your own model and data-provider keys, and every crawl and audit runs on your machine. You need Docker https://docs.docker.com/get-docker/ with Compose v2. git clone https://github.com/abhij1306/CiteLadder.git cd CiteLadder docker compose up -d --build Open http://localhost:8100 http://localhost:8100 . The first start builds the image, which takes a few minutes, then applies the database schema and creates your workspace. There is no sign-up and no login. Then: 1. Create a project. Enter your website; CiteLadder researches the brand and proposes competitors and an ideal customer profile for you to confirm. 2. Add model keys in Settings → Providers OpenAI, Anthropic, Google, DataForSEO to run AI Visibility audits. 3. Run Site Health to crawl and analyse your site; it needs no keys. 4. Optionally connect Search Console, GA4 or Bing in Settings → Integrations see Google and Microsoft sign-in google-and-microsoft-integrations . To use the Agent, brand research and prompt generation, set an LLM in .env see below and run docker compose up -d again. docker compose logs -f app follow the logs docker compose down stop data is kept in Docker volumes docker compose down -v stop and delete all data You need Node.js 26+, pnpm 12 corepack enable and a PostgreSQL 16 database. git clone https://github.com/abhij1306/CiteLadder.git cd CiteLadder pnpm bootstrap && pnpm build DATABASE URL=postgresql://user:password@localhost:5432/citeladder pnpm start pnpm start applies migrations, creates the workspace, serves the app on http://localhost:8100 http://localhost:8100 and runs background jobs. Settings come from the environment or a .env file in the repository root. Generated instance secrets are stored in .data/ . Everything is optional. Copy the template and fill in what you need: cp .env.example .env | Setting | Purpose | |---|---| | DEFAULT AGENT API KEY , DEFAULT AGENT BASE URL , DEFAULT AGENT MODEL | The LLM behind the Agent, brand research and prompt generation. Anthropic and OpenAI are fully supported; any OpenAI-compatible endpoint Gemini, Mistral, or a local server such as Ollama at http://host.docker.internal:11434/v1 works for research and generation. | | MCP TOKEN | Enables the MCP endpoint at /mcp ; clients send it as a bearer token. | | INTEGRATION GOOGLE CLIENT ID / SECRET | Search Console and GA4 sync your own Google OAuth client . | | INTEGRATION MICROSOFT CLIENT ID / SECRET | Bing Webmaster sync. | | TAVILY API KEY , KEENABLE API KEY | Optional web research for competitor and brand discovery. | | JEV API KEY | Optional quality judge for generated prompt candidates. | | CITELADDER PORT | Host port for Docker default 8100 . | | PUBLIC APP ORIGIN | The URL you open CiteLadder at, if it is not http://localhost:8100 . Used in OAuth redirects and MCP setup text. | | SITE HEALTH | Crawler politeness and size limits. | Answer-engine and DataForSEO keys are entered in the app Settings → Providers and stored encrypted in the database. The encryption key and other instance secrets are generated on first start and kept in the citeladder data volume or .data/ without Docker : back them up together with the database. Create an OAuth client in your own Google Cloud or Azure project, add the redirect URI shown in Settings → Integrations , and put the client ID and secret in .env . Without them the integrations show as not configured , and everything else keeps working. Set MCP TOKEN in .env to a long random string and restart. Then, for example in Claude Code: claude mcp add --transport http citeladder http://localhost:8100/mcp \ --header "Authorization: Bearer