An AI-native SEO copilot for solo operators and small agencies — the AI layer over your existing SEO stack.
Project description
kvseo
The AI layer over your existing SEO stack.
kvseo is an AI-native SEO copilot for solo operators and small agencies. It
doesn't replace your data tools — it sits on top of them. Point it at a URL and
it runs an on-page audit, folds in Core Web Vitals and Search Console context,
and produces a prioritized, reasoned action list plus a client-ready report.
The data layer is a commodity. What kvseo adds is the layer the others skip:
synthesis, AI-assisted prioritization, and agency-shaped reporting — as a
fast, local, single-command CLI.
Status: v0.1 feature-complete. The full pipeline (audit → advise → report) runs end-to-end and is code-reviewed, type-checked, and tested throughout. Not yet on PyPI — install from source today (see Install); the tagged release is imminent.
Quickstart
Once installed (see Install):
$ kvseo init # create config + a local SQLite database
$ kvseo audit https://example.com # on-page audit + Core Web Vitals → HTML report
That loop needs no API keys and no accounts. audit writes a self-contained
HTML report to the current directory and prints the findings to your terminal.
Add data sources and an LLM to go deeper:
$ kvseo connect psi --api-key <key> # PageSpeed Insights (free; raises CWV limits)
$ kvseo connect csv export.csv --site https://example.com/ # import a GSC CSV export — no OAuth
$ kvseo connect gsc # …or connect Search Console via OAuth
$ export ANTHROPIC_API_KEY=… # bring your own LLM key (any LiteLLM provider)
$ kvseo audit https://example.com # now with GSC context + an AI action list
$ kvseo cost # what the advisor spent, by provider / model
What it does
- On-page audit — 19 checks across title, meta, headings, content, schema, images, and internal links, rolled into a single 0–100 score.
- Core Web Vitals — CrUX field data + Lighthouse lab metrics via the free PageSpeed Insights API (works keyless at lower rate limits).
- Search Console context — real query / click / impression / position data per URL, via OAuth or a plain CSV export (the no-API escape hatch).
- AI advisor — a prioritized "what to do next" list where every
recommendation is traceable to a specific finding. Bring your own LLM key
(Anthropic, OpenAI, Gemini, or a local Ollama — anything LiteLLM speaks to).
kvseo never proxies your key or marks up tokens, and
kvseo costshows exactly what each run spent. - Reports — a self-contained, single-file HTML report (inline CSS, embedded data, zero external requests, print-to-PDF friendly) plus clean Markdown. PDF/DOCX land in v0.2.
Everything degrades gracefully: the audit and HTML report work with no LLM key at all — the advisor is an optional layer you unlock by adding a provider key. No PSI key → the Core Web Vitals checks skip; no Search Console → the audit still scores the page.
Principles
- BYO-key. kvseo never ships, proxies, or marks up an LLM key.
- Local-first. Everything lives in one SQLite file on your machine — no account, no cloud.
- Read-only. kvseo pulls from APIs you authorize; it never writes upstream.
- No telemetry. No phone-home, no usage metrics — not unless you opt in.
- Reproducible. Every audit and advisor run is stored and re-runnable; the advisor works from stored data, so you can re-prioritize without re-fetching.
Install
Requires Python 3.12+.
# from PyPI (once published):
pipx install kvseo
# from source (works today):
git clone https://github.com/kVadrum/kvseo && cd kvseo
python3.12 -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
kvseo --version
Config lives in ~/.config/kvseo/ and data in ~/.local/share/kvseo/ (XDG;
%APPDATA% / %LOCALAPPDATA% on Windows). Override either with the
KVSEO_CONFIG_DIR / KVSEO_DATA_DIR environment variables.
License
MIT — free to use, modify, and distribute. KeMeK Network © 2026.
Trademarks
The "kvseo" and "kVadrum" names are trademarks of KeMeK Network. They are not covered by the MIT license, and no rights to use the names are granted by this repository. Independent forks must replace the brand name with their own.
A kVadrum Lab project, built in public.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kvseo-0.6.6.tar.gz.
File metadata
- Download URL: kvseo-0.6.6.tar.gz
- Upload date:
- Size: 77.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5835ac6327199a776bc73d413be2a1bc2a21433321e82f639ca473c9cf8ca67c
|
|
| MD5 |
8db3dff9b536a5512f073b5a7571e75d
|
|
| BLAKE2b-256 |
7bc8aa097cb6ecc7c4c95dacae5fd16dfe0166524550020de5b1d2c9cbd1d5db
|
Provenance
The following attestation bundles were made for kvseo-0.6.6.tar.gz:
Publisher:
release.yml on kVadrum/kvseo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kvseo-0.6.6.tar.gz -
Subject digest:
5835ac6327199a776bc73d413be2a1bc2a21433321e82f639ca473c9cf8ca67c - Sigstore transparency entry: 2275876106
- Sigstore integration time:
-
Permalink:
kVadrum/kvseo@7e884ebf7b58ffe3748eed50e68e707df5e16f8e -
Branch / Tag:
refs/tags/v0.6.6 - Owner: https://github.com/kVadrum
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7e884ebf7b58ffe3748eed50e68e707df5e16f8e -
Trigger Event:
push
-
Statement type:
File details
Details for the file kvseo-0.6.6-py3-none-any.whl.
File metadata
- Download URL: kvseo-0.6.6-py3-none-any.whl
- Upload date:
- Size: 79.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19a1ad1863fb25a8e922bb31f0603eed89af1935f08f3ee31b94bf90205ed5a1
|
|
| MD5 |
fbd897465cc569e8fd84452872a7c323
|
|
| BLAKE2b-256 |
3981483c678c6e452ffd01f5b50843c19bb45d53a934f9d3ab2af5eb433bed24
|
Provenance
The following attestation bundles were made for kvseo-0.6.6-py3-none-any.whl:
Publisher:
release.yml on kVadrum/kvseo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kvseo-0.6.6-py3-none-any.whl -
Subject digest:
19a1ad1863fb25a8e922bb31f0603eed89af1935f08f3ee31b94bf90205ed5a1 - Sigstore transparency entry: 2275876149
- Sigstore integration time:
-
Permalink:
kVadrum/kvseo@7e884ebf7b58ffe3748eed50e68e707df5e16f8e -
Branch / Tag:
refs/tags/v0.6.6 - Owner: https://github.com/kVadrum
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7e884ebf7b58ffe3748eed50e68e707df5e16f8e -
Trigger Event:
push
-
Statement type: