OpenSEO is a production-quality, provider-agnostic command-line tool built to help developers, marketers, and SEO professionals audit, analyze, and monitor search engine visibility using Large Language Models (LLMs) and local diagnostic checks.
If you are developing locally from the source, create and activate a virtual environment:
# Create environment
python -m venv .venv
# Activate environment (Windows PowerShell)
.venv\Scripts\Activate.ps1
# Activate environment (macOS/Linux)
source .venv/bin/activateTo ensure the seo CLI command references your local workspace changes (src/ directory), install the package in editable mode:
pip install -e ".[all]"(Optionally run playwright install chromium if you wish to use javascript rendering features)
Run seo --help to see all available commands. Below is a detailed breakdown of each command and how to use it:
Initializes OpenSEO with an interactive setup wizard that guides you through selecting default providers, models, caches, and output directory paths. Configurations are stored globally in ~/.openseo/config.json.
seo initRuns a health check on your environment to verify API keys, cache database status, playwritght dependencies, and internet connectivity.
seo doctorLists available LLM providers, sets API credentials, and overrides default models.
# List all providers
seo provider list
# Set API key for a provider
seo provider set-key openai sk-proj-...
seo provider set-key gemini AIzaSy...
# Set active provider and model
seo provider use gemini --model gemini/gemini-1.5-flashCrawls a website and runs rule-based technical checks combined with LLM analysis.
# Run a quick audit on a single URL
seo audit https://example.com
# Audit pages found in the sitemap index with custom depth
seo audit https://example.com --sitemap-only --max-pages 20
# Generate a complete PDF scorecard report inside the results/ folder
seo audit https://example.com --reportAnalyzes content relevance against target keywords, checks search experience guidelines, and performs NLP/QRG diagnostics.
# Run LLM-based content keyword gap audit
seo content https://example.com/blog/python-tutorial --keyword "python tutorial"
# Run local Quality Rater Guidelines (QRG) checks (AI pattern, filler, repetition)
seo content https://example.com/blog/python-tutorial --qualityGenerates structured Schema.org JSON-LD blocks for search eligibility.
# Generate schema recommendations using page crawling + LLM analysis
seo schema https://example.com/blog/post --type article
# Interactively generate predefined high-leverage schema templates
seo schema --template profile
seo schema --template discussion
seo schema --template order
seo schema --template reservationAllows capturing a technical baseline state of page structures and comparing current states to check for unintended deployments/code regressions (e.g., losing noindex directives, removing canonical tags, or deleting Schema).
seo drift baseline https://example.com/pricing# Compare against the latest captured baseline
seo drift compare https://example.com/pricing
# Compare against a specific baseline ID
seo drift compare https://example.com/pricing --baseline-id 4
# Output diff results as raw JSON
seo drift compare https://example.com/pricing -o jsonseo drift history https://example.com/pricing# Creates a self-contained color-coded HTML report (seo-drift-report.html)
seo drift report https://example.com/pricingseo sitemap <url>: Fetches and parses standard XML sitemaps to check schema compliance.seo robots <url>: Audits siterobots.txtconfiguration and maps user-agent blocks.seo keywords <topic>: Generates keyword clustering and search-intent outlines.