$ seo-kit audit https://example.com auditing example.com ... Findings (ranked) [HIGH] crawl:schema.missing No JSON-LD structured data in server HTML (no Person/Organization entity for Google or LLMs). [HIGH] crawl:render.thin_shell Server HTML has only 21 words of text. Non-JS crawlers and most LLM bots see almost nothing. [MED] crawl:description.missing No meta description. [MED] crawl:sitemap.missing No /sitemap.xml (200). [LOW] crawl:canonical.missing No rel=canonical link. saved seo-reports/example.com-20260705T000345Z.md (+ .json)
Real output from the keyless crawl pass. No API keys, no config, any URL.
One audit, three audiences
Search crawlers
Titles, meta, canonical, structured data, sitemaps, robots, and Core Web Vitals from the PageSpeed API. Search Console queries once the property is connected.
Platform-internal search
GitHub repo topics, descriptions, and traffic signals. The searches that happen inside platforms, where classic SEO tooling never looks.
LLM answer engines
The GEO layer: is the content readable without JavaScript, does it ship an entity for the model to cite, and do answer engines surface you or a namesake?
Every data source is a provider behind one interface. The free Tier-0 core (crawl, PageSpeed, Search Console, GitHub, Bing, Trends) does most of the work; SERP position, keyword volume, and LLM citation probes are opt-in paid tiers. Nothing paid runs until you turn it on.
Quickstart
git clone https://github.com/johncarmack1984/seo-kit && cd seo-kit uv sync uv run seo-kit audit https://example.com # zero keys: crawl runs, the rest skip and say why uv tool install --editable . # global command; then, in any repo with a site: seo-kit setup # scaffold that repo's seo-kit.toml seo-kit audit example.com # full configured set; reports live with the repo
This page is part of the loop: the repo carries its own seo-kit.toml, this site is its registered surface, and the audit history is committed alongside the code.
Honesty about limits
Search Console lags about two days and spans 16 months. Keyword volumes from any tool are modeled estimates, not truth. GEO probe results are non-deterministic and shift with model versions, so they are read as trends across repeated runs, not single answers.
SEO feedback loops are weeks to months and confounded. seo-kit attributes improvement by trend and never invents a metric it did not measure.