mrkeyoor.com_
Sat 17 Oct 13:35 UTC
Self-Hostedevaluationupdated 26 Aug 2026

open-seo review

OpenSEO is an open-source dashboard for keyword research, rank tracking, backlinks, site audits, analytics, and AI visibility. It can expose that data through MCP and Claude Code skills, but self-hosting still depends on paid DataForSEO requests and optional outside model services.

+740stars / 7d
Verdict

Our OpenSEO run installed 984 packages, then passed a 67-second build and 36-second test step, making it the cleanest full repository run in this batch. Self-host it if owning the UI and MCP layer is worth operating Cloudflare or securing an auth-free Docker service. Skip it if open source means no paid data dependency to you, because DataForSEO is mandatory and the AI assistant currently adds OpenRouter.

We ran it

Lab card: what happened when we ran open-seoScreenshot of open-seo (openseo.so)
Install✓ · 40s984 packages · 1599 MB
Build✓ · 67s
Tests✓ · 36sran, no count parsed
Repo1276 files~141,045 lines of source · 18.3 MB · 4 CI workflows

Answers from our run

Does open-seo build from source?

Dependencies installed in 40 seconds (984 packages), and the build succeeded in 67 seconds. We cloned commit cd6a782 into a clean Debian container with 3 CPUs and no project-specific setup.

Do open-seo's tests pass?

Yes. The project's own test command exited successfully in 36 seconds, although its output did not expose an individual test count.

Who should not use open-seo?

Teams expecting self-hosting to eliminate outside data costs: every deployment requires DataForSEO credentials, and its setup guide states a $50 minimum top-up.

What are the alternatives to open-seo?

SiteOne Crawler, Lighthouse, Semrush. Our OpenSEO run installed 984 packages, then passed a 67-second build and 36-second test step, making it the cleanest full repository run in this batch.

Setup3/5Clean checks, but 1,599 MB and several external accounts
Docs4/5Docker, Cloudflare, credentials, auth, telemetry, and updates covered
Community4/513,588 stars and active work, with 113 open issues and PRs
Maturity3/5v0.1.6 works, but auth, billing, and agent edges are still moving

Who it’s for

Consultants who want SEO projects, reports, and agent access in a system they can fork.
Small teams comfortable paying DataForSEO per request instead of buying a large suite subscription.
Cloudflare users who want D1, KV, R2, and Access provisioned as one deployment.
Claude Code, OpenClaw, or Hermes users who want SEO data available through MCP.

Who it’s NOT for

Teams expecting self-hosting to eliminate outside data costs: every deployment requires DataForSEO credentials, and its setup guide states a $50 minimum top-up.
Anyone planning to expose the Docker quick start directly to the internet: it runs as admin@localhost with authentication disabled.
Privacy-sensitive operators who want the chat agent fully local: issue 102 says SAM is hardwired to OpenRouter and can send project domains, keywords, and Search Console context there.
Organizations needing isolated workspaces per teammate: the Cloudflare guide says allowed users share one workspace and see the same projects.
Buyers expecting the depth and historical indexes of Ahrefs or Semrush from source code alone: OpenSEO buys much of its underlying SEO data from DataForSEO.
Claude Code users relying on the current two-command plugin install: issue 247 reports that Claude Code rejects the manifest's displayName field.

Setup reality

Our sandbox install at commit cd6a782 succeeded in 40 seconds, adding 984 packages and using 1,599 MB. The build passed in 67 seconds, and tests passed in 36 seconds. This was the only requested Node project whose install, build, and test steps all completed successfully.

Every useful deployment needs a base64 DataForSEO login and password. AI features such as SAM also need OpenRouter. Cloudflare hosting requires Node 22.6+, R2 activation, a payment method, and account access for D1, KV, Workers, and Access.

Docker is simpler but ships with AUTH_MODE=local_noauth, so it belongs on a private network or behind an authenticated proxy. Cloudflare deploys a shared workspace. Telemetry is enabled by default and can be disabled with OPENSEO_TELEMETRY_DISABLED=1 or DO_NOT_TRACK=1.

Open source owns the interface, not the SEO dataset

OpenSEO combines keyword research, rank tracking, competitor data, backlinks, site audits, analytics, and AI visibility in one TypeScript application. Projects can be explored in its web interface or queried by agents through MCP. Prebuilt skills target Claude Code and other agent clients. That is a useful shape for consultants who want one project context shared between human work and automated analysis.

The data model is less independent than the source license suggests. Every self-hosted installation needs a DataForSEO account, and the project uses that service for SEO data. Its setup guide says new accounts include $1 of credit and require a $50 minimum top-up. The hosted service offers a subscription and says it marks DataForSEO requests up by 28%. OpenSEO replaces the application and workflow layer of a commercial suite, not the costly collection infrastructure behind search and backlink data.

Docker starts without authentication on port 3001

The easiest self-hosting route uses a published container image and a compose file. Copy the environment template, add the DataForSEO credential, start Compose, and the app listens on port 3001 by default. The guide is explicit that this mode sets AUTH_MODE=local_noauth and injects admin@localhost. It should stay on a trusted machine, private network, or authenticated reverse proxy.

That warning is load-bearing. Setting ALLOWED_HOST only lets the Vite preview accept a hostname; it does not create user authentication. The guide advises an auth-protected proxy or tunnel before exposing Docker. It also documents /api/health, image pinning, log inspection, and recreation after environment changes. Telemetry sends aggregate install and feature counts on a schedule unless OPENSEO_TELEMETRY_DISABLED=1 or DO_NOT_TRACK=1 is set.

What happened when we ran it

Our sandbox installed commit cd6a782 in 40 seconds. Pnpm added 984 packages and occupied 1,599 MB. The build completed successfully in 67 seconds, followed by a successful 36-second test step. Among the requested Node repositories, this was the only one where install, build, and tests all reached a successful outcome in the supplied root workflow.

The checkout itself contained 1,276 files, about 141,045 lines of source, and 18.3 MB. It is a workspace monorepo with 4 CI workflow files and a Compose file, but no tests directory found by the harness. Those structural signals do not contradict the passing test command; they show that test placement and orchestration do not follow a simple root tests/ convention.

Our run used an unprivileged Node 22 Debian container with 3 CPUs, 8 GB of RAM, and no secrets. We did not enter a DataForSEO credential, deploy Cloudflare resources, crawl a site, or connect an MCP client. The 1,599 MB figure covers installed repository dependencies, not browser data, D1 storage, R2 objects, API charges, or generated audit history.

Cloudflare trades local simplicity for managed access

The recommended internet-facing route provisions a Worker, D1 database, KV namespaces, an R2 bucket, migrations, and a Cloudflare Access application. It requires Node 22.6 or newer, a Cloudflare account, R2 activation, and a payment method even when usage stays within the R2 free tier. The deploy policy limits access to the email addresses listed in configuration.

All allowed users enter one shared workspace and see the same projects. That may be perfect for a small agency pod, but it is not tenant isolation. Dashboard edits to the managed Access policy are overwritten on redeploy, so membership belongs in configuration. The destroy command removes the Worker, D1, KV, R2, and Access resources, including stored data. Backups and export procedures should exist before treating the deployment as the system of record.

SAM currently sends its model work to OpenRouter

The core dashboard does not require OpenRouter, but AI features such as SAM do. Issue 102 says the chat path is fixed to OpenRouter and lacks a configurable OpenAI-compatible base URL. The report specifically mentions prompts containing project domains, keywords, and Search Console-derived context leaving a self-hosted machine. For a team that chose self-hosting to keep client data inside its network, this is a direct product boundary rather than an abstract privacy concern.

MCP access also deserves normal secret handling. Issue 233 reported that a newly created MCP API key could be captured by PostHog session replay because the one-time reveal was plain text outside the configured masks. Pull request 236 adds DOM masking and network-body redaction. Check that the fix is in the version you deploy, disable analytics where policy requires it, and rotate any key that may have appeared in a recording.

v0.1.6 is active and still has product edges

Release v0.1.6 shipped on August 19, 2026 with shared project context, early skills inside SAM, optional Lighthouse work, and Google Analytics data. GitHub recorded a last repository push on August 24, 13,588 stars, and 113 open issues and pull requests. New issue activity includes a broken Claude Code plugin manifest and a hosted Lighthouse job that reportedly charged credits after partial completion.

OpenSEO is credible because our 40-second install led to both a passing build and passing tests. The self-hosting docs also say plainly where auth is absent and where third-party costs begin. Use it when you want to own and modify the dashboard, database, MCP tools, and audit workflow. If you mainly want a proprietary backlink index with contractual support, the application source will not substitute for Ahrefs or Semrush.

Alternatives

ProjectWhat it isPick it when
SiteOne CrawlerA self-hostable crawler focused on technical website quality and repeatable audit output.pick this instead when deterministic technical crawling matters more than keyword and backlink data.
Lighthouse gh↗Google's audit engine for performance, accessibility, SEO basics, and web quality.pick this instead when browser lab checks and CI budgets are the main requirement.
SemrushA commercial SEO suite with proprietary datasets and mature team workflows.pick this instead when broad built-in data and vendor support matter more than source access.
AhrefsA commercial platform known for backlink and organic-search datasets.pick this instead when the backlink index is the product you need rather than an API-fed dashboard.

What people are saying

  1. [github-trending] every-app/open-seo

Sources

  1. OpenSEO repository
  2. OpenSEO v0.1.6 release
  3. Docker self-hosting guide
  4. Cloudflare self-hosting guide
  5. DataForSEO credential guide
  6. Local model support request
  7. Claude Code plugin manifest failure
  8. MCP key replay masking fix

More self-hosted reviews

playport · edge-smart-doh · Comma · ProsperoEden · zulu · node_exporter · the whole board →