Open-SEO Main Features: Technical Deep-Dive into the Open-Source SEO Platform

Open-SEO is a full-stack, open-source SEO platform providing keyword research, rank tracking, competitor insights, backlink analysis, site audits, and AI agent integration through a pay-as-you-go credit system designed as an alternative to expensive commercial tools like Semrush and Ahrefs.

The every-app/open-seo repository delivers these capabilities via a modern TypeScript architecture built on TanStack React-Start and Cloudflare Workers. It integrates directly with Google Search Console and DataForSEO APIs while exposing functionality through both a focused React UI and a Model-Context-Protocol (MCP) server for AI agents.

Core SEO Workflow Features

Open-SEO implements six primary SEO workflows through typed server functions and dedicated UI routes defined in web/src/lib/feature-pages.ts.

Keyword Research

The keyword research module generates keyword ideas, difficulty scores, and topic clusters by querying Google Search Console data. The implementation in src/serverFunctions/searchPerformance.ts builds GSC filters and returns totals, striking-distance rows, and country lists.

import { getSearchPerformanceReport } from "@/serverFunctions/searchPerformance";

await getSearchPerformanceReport({
  method: "POST",
  data: {
    dateRange: "last-30-days",
    device: "mobile",
    country: "US",
  },
});

This function calls GscService.getPerformance and powers the UI routes under /features/keyword-research.

Rank Tracking

The rank tracking feature monitors position changes for selected keywords across time. Implemented in src/serverFunctions/rank-tracking.ts, it stores historical SERP data and exposes trend analysis through the /features/rank-tracker interface.

Competitor Insights

Competitor analysis leverages src/serverFunctions/serp-locations.ts to retrieve SERP positioning data and backlink profiles for competing domains. The UI routes under /features/competitor-insights visualize this comparative data.

The backlink checker retrieves and monitors backlink profiles via DataForSEO integration. Server functions in src/serverFunctions/backlinks.ts (referenced in the architecture) support the /features/backlink-checker workflow.

Site Audits

Site auditing crawls websites to detect broken links, duplicate content, and missing meta tags. The crawl workflow resides in src/server/workflows/site-audit-workflow-helpers.ts, while MCP exposure lives in src/server/mcp/tools/site-audit-tools.ts.

import { mcpResponse } from "@/server/mcp/formatters";
import { withMcpProjectAuth } from "@/server/mcp/project-auth";

export const runSiteAudit = withMcpProjectAuth(
  async (projectId, url) => {
    await startCrawl({ projectId, startUrl: url });
    return mcpResponse({ status: "queued", url });
  }
);

AI Visibility

The AI visibility layer exposes all SEO data through MCP tools (e.g., whoami.ts, search-console-tools.ts) allowing external AI agents to query statistics, trigger audits, and receive remediation instructions programmatically.

MCP Server and AI Integration Architecture

Open-SEO's MCP server functions as a bridge between SEO data and AI agents like Claude Code or Hermes. The transport layer in src/server/mcp/transport.ts handles authentication, versioning, and response formatting.

Individual tools reside in src/server/mcp/tools/*:

These typed tools enable AI skills (reusable workflows) defined in docs/MAINTAINERS.md that guide agents through complex SEO tasks without manual UI interaction.

Technical Implementation Stack

Front-End Architecture

The React-Start application provides a modern interface with file-based routing managed by web/src/routeTree.gen.ts. Feature pages are registered in web/src/lib/feature-pages.ts with associated metadata and keywords.

Server Functions and Data Layer

TanStack React-Start server functions (located in src/serverFunctions/) call third-party services and return typed results. The data layer uses D1 (SQLite-compatible) for structured storage and optionally R2 for object storage, with schemas defined via Drizzle ORM in drizzle.config.ts and src/db/telemetry.schema.ts.

Self-Hosting Options

Open-SEO supports two officially documented deployment paths:

  1. Docker – Local deployment using Dockerfile.selfhost and documented in docs/SELF_HOSTING_DOCKER.md
  2. Cloudflare Workers – Edge-distributed deployment using wrangler.jsonc for high-throughput crawls within the Cloudflare step budget, documented in docs/SELF_HOSTING_CLOUDFLARE.md

Both paths share the same core codebase, differing only in deployment scripts.

Credit-Based Billing System

Open-SEO operates on a credit-based pricing model defined in src/shared/billing-credit-features.ts. The hosted SaaS charges $10 per month, while self-hosted deployments only incur DataForSEO API usage costs without platform fees.

import { getProjectCredits } from "@/shared/billing";

const credits = await getProjectCredits({ projectId: "proj_123" });
console.log(`Remaining credits: ${credits}`);

This implementation allows granular cost control compared to traditional subscription-based SEO tools.

Summary

  • Open-SEO provides six core SEO workflows: keyword research, rank tracking, competitor insights, backlink analysis, site audits, and AI visibility
  • The MCP server architecture in src/server/mcp/transport.ts enables AI agent integration through typed tools like search-console-tools.ts and site-audit-tools.ts
  • Technical stack includes TanStack React-Start, Cloudflare Workers/D1, and Drizzle ORM for type-safe database operations
  • Self-hosting supports both Docker local deployment and Cloudflare Workers edge distribution
  • Billing uses a credit system (src/shared/billing-credit-features.ts) with $10/month hosted option or pay-for-usage DataForSEO costs when self-hosted

Frequently Asked Questions

What makes Open-SEO different from Semrush or Ahrefs?

Open-SEO is open-source and offers a pay-as-you-go credit system rather than expensive fixed subscriptions. According to the every-app/open-seo source code, you can self-host the platform and only pay for DataForSEO API usage, or use the hosted version for $10/month, significantly reducing costs for agencies and individual practitioners.

How does the MCP server integration work?

The MCP server exposes SEO data through typed tools in src/server/mcp/tools/* that AI agents can invoke. The transport layer in src/server/mcp/transport.ts handles authentication and formatting, allowing tools like search-console-tools.ts to return GSC data directly to agents like Claude Code for automated analysis and recommendations.

Can I self-host Open-SEO without using Cloudflare?

Yes. While Cloudflare Workers provide scalable edge deployment documented in docs/SELF_HOSTING_CLOUDFLARE.md, the repository includes docs/SELF_HOSTING_DOCKER.md and a Dockerfile.selfhost for local Docker-based deployments that run independently of Cloudflare's infrastructure.

What database does Open-SEO use for storing SEO data?

Open-SEO uses D1, a SQLite-compatible database, for structured data storage with schemas defined in Drizzle ORM files like drizzle.config.ts and src/db/telemetry.schema.ts. It optionally uses R2 for object storage, particularly for crawl data and large audit reports.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →