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.
Backlink Analysis
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/*:
whoami.ts– Minimal example demonstrating project authenticationsearch-console-tools.ts– Exposes GSC performance statisticssite-audit-tools.ts– Provides audit triggers and issue remediation
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:
- Docker – Local deployment using
Dockerfile.selfhostand documented indocs/SELF_HOSTING_DOCKER.md - Cloudflare Workers – Edge-distributed deployment using
wrangler.jsoncfor high-throughput crawls within the Cloudflare step budget, documented indocs/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.tsenables AI agent integration through typed tools likesearch-console-tools.tsandsite-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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →