What Is every-app/open-seo? A Deep Dive Into the Open-Source SEO Platform
every-app/open-seo is an open-source, full-stack SEO platform that delivers Semrush-like capabilities with pay-as-you-go pricing, built on TypeScript, Cloudflare Workers, and TanStack React-Start.
every-app/open-seo is an open-source alternative to commercial SEO tools like Semrush or Ahrefs, offering full control over your data and infrastructure. Built with modern TypeScript and designed to run on Cloudflare Workers, it provides keyword research, rank tracking, backlink analysis, and site audits through a flexible self-hosted or hosted model.
Three-Layer Architecture
The codebase follows a clean separation of concerns across three distinct layers.
Frontend UI Layer
The React-based interface drives SEO workflows including keyword research, rank tracking, and AI-assisted visibility analysis. Located in src/start.ts, the application uses Vite for bundling and TanStack Query for server-state management.
Server API Layer
REST-like server functions exposed through createServerFn wrappers handle all client requests. These functions in src/serverFunctions/*.ts validate inputs with Zod schemas before delegating to domain services. The src/serverFunctions/projects.ts file contains typical CRUD endpoints for project management.
Core Services Layer
Business logic resides in service classes like ProjectService and RankCheckWorkflow, while data access uses Drizzle ORM. The src/server/features/projects/services/ProjectRepository.ts implements persistence logic, supporting both SQLite (D1) and PostgreSQL backends via src/db/pg/client.ts.
Dual Authentication Modes
The platform supports two distinct authentication strategies depending on deployment needs.
Hosted Mode uses Better Auth configured in src/lib/auth.ts, supporting email/password credentials, Google social login, and Turnstile captcha protection. This mode integrates with the DataForSEO API for credit-based usage tracking.
Self-Hosted Mode allows deployment to your own Cloudflare account. Set AUTH_MODE=local_noauth to disable authentication for trusted internal development environments, as documented in docs/LOCAL_DEVELOPMENT.md.
AI Agent Integration via MCP
The Micro-Control-Panel (MCP) server enables AI agents like Claude Code or OpenClaw to automate SEO tasks programmatically. The src/server.ts entry point routes /agents/* requests to Durable Object agents after authorization, allowing external tools to trigger keyword research or site audits directly.
Database Flexibility
Data persistence supports two backends managed through Drizzle migrations in src/db/.
- Cloudflare D1 (SQLite) serves as the default option for edge-deployed instances.
- PostgreSQL handles larger installations requiring complex querying capabilities.
Working with the Codebase
The following snippets demonstrate common development patterns against the actual source.
Creating a new project invokes the validated server function:
import { createProject } from '@/serverFunctions/projects';
// Payload validated by createProjectSchema
await createProject({ name: 'My Site', domain: 'example.com' });
Fetching projects on the server automatically injects authentication context:
import { getProjects } from '@/serverFunctions/projects';
export async function load() {
const projects = await getProjects();
return { projects };
}
AI agents interact with the MCP through the public origin helper:
import { requestWithPublicOrigin } from '@/server/mcp/public-origin';
import { MCP_ROUTE } from '@/server/mcp/context';
await fetch(requestWithPublicOrigin(new Request(`${MCP_ROUTE}/keyword-research`, {
method: 'POST',
body: JSON.stringify({ keyword: 'best laptops 2024' })
})));
Scheduled rank checks run via Cloudflare Cron triggers defined in src/server.ts:
export default {
async scheduled(_controller, env, _ctx) {
await withPgClient(() => runScheduledRankChecks(env));
},
};
Summary
- every-app/open-seo provides open-source SEO tooling comparable to commercial platforms with full code ownership and pay-as-you-go pricing.
- The architecture separates concerns into Frontend UI, Server API, and Core Services layers using TanStack React-Start and Cloudflare Workers.
- Dual authentication modes support both SaaS-style hosted deployments with Better Auth and fully self-hosted internal tools via
AUTH_MODE=local_noauth. - The MCP server exposes SEO capabilities to AI agents through Durable Objects routed in
src/server.ts. - Database flexibility allows running on Cloudflare D1 (SQLite) or PostgreSQL via Drizzle ORM schemas in
src/db/.
Frequently Asked Questions
Is every-app/open-seo free to use?
Yes, every-app/open-seo is open-source and free to self-host on your own Cloudflare account or compatible infrastructure. The hosted version operates on a pay-as-you-go model using DataForSEO API credits, while the self-hosted option incurs only your own infrastructure costs.
What technology stack does every-app/open-seo use?
The platform builds on TypeScript, TanStack React-Start for the frontend, and Cloudflare Workers for the edge runtime. It uses Better Auth for authentication, Drizzle ORM for database access, and supports both SQLite (via D1) and PostgreSQL backends.
How do I disable authentication for local development?
Set the environment variable AUTH_MODE=local_noauth to bypass authentication during trusted internal development. This configuration is documented in docs/LOCAL_DEVELOPMENT.md and allows immediate API access without credential checks.
Can AI agents automate tasks in every-app/open-seo?
Yes, the Micro-Control-Panel (MCP) server exposes SEO functionality to AI agents through the /agents/* endpoint hierarchy defined in src/server.ts. Agents like Claude Code can call these endpoints to automate keyword research, rank tracking, and site audits programmatically.
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 →