Python CLI for SEO analysis. Cluster search intent, surface content gaps.
Project description
Reheat
Python CLI for SEO analysis. Pulls search queries from Google Search Console, enriches them with related searches and People Also Ask data, clusters by semantic intent, and surfaces content gaps and opportunities.
Built by Edward Grundy at Bay Information Systems.
- Install:
pip install reheat - Docs: bayinfosys.github.io/reheat
- PyPI: pypi.org/project/reheat
Getting started
Install
pip install reheat
Requires Python 3.10+. For the local web interface you also need a running postgres instance (or use the JSON file backend for local development without postgres).
docker run -d \
--name reheat-pg \
-e POSTGRES_USER=reheat \
-e POSTGRES_PASSWORD=reheat \
-e POSTGRES_DB=reheat \
-p 5432:5432 \
postgres:16
export DATABASE_URL=postgresql://reheat:reheat@localhost:5432/reheat
Configure a Google Search Console source
Download OAuth2 credentials from Google Cloud Console (APIs and Services >
Credentials > OAuth 2.0 Client IDs, Desktop app type) and save as
~/.reheat/google-search-console.json. Then:
reheat sources create \
--source-type google_search_console \
--domain yourdomain.com \
--client-secrets-path ~/.reheat/google-search-console.json
Authenticate
reheat sources auth
Opens a browser for the Google OAuth2 consent flow. The token is persisted
to ~/.reheat/gsc_token.json and refreshed automatically on subsequent runs.
Configure a SerpAPI source (optional)
Required for PAA and related search enrichment. Get an API key at serpapi.com.
reheat sources create \
--source-type serp \
--api-key YOUR_SERP_API_KEY
Run the pipeline
# Fetch queries from Search Console
reheat runs create
# Enrich and process
reheat enrich tags
reheat enrich embed
reheat enrich cluster
reheat enrich gap
reheat analyse opportunities
# Build report data
reheat project create
reheat report scatter create
reheat report summary create
reheat report coverage create
# Start the web interface
reheat serve
Open http://localhost:8000.
Inference providers
reheat analyse summarise labels intent clusters using an LLM. Configure
one of the following.
OpenAI
Set OPENAI_API_KEY in your environment or .env file, or:
reheat config set --key openai_api_key --value sk-...
Anthropic
Set ANTHROPIC_API_KEY in your environment or .env file, or:
reheat config set --key anthropic_api_key --value sk-ant-...
Marigold
Marigold is a private inference API built by Bay Information Systems. Set endpoint and key when available:
reheat config set --key marigold_endpoint --value https://api.marigold.run
reheat config set --key marigold_api_key --value <key>
CLI reference
reheat config show / set
reheat sources create / list / show / update / delete / auth
reheat runs create / list / show / delete
reheat enrichments list / show / delete
reheat enrich tags / embed / cluster / gap
reheat analyse summarise / opportunities
reheat project create / read
reheat report scatter / summary / coverage create / read
reheat serve
Architecture
reheat has three layers.
Commands in reheat/commands/ are the single source of truth for the
application surface. Each command is a Python function decorated with
@command, registered in a central registry, and exposed automatically
through both the CLI and the HTTP API.
Pipeline functions in reheat/pipeline/ are pure data transforms:
embedding, clustering, gap analysis, report building. No persistence, no
side effects.
Persistence uses dynawrap, a lightweight key-value library with identical interfaces over PostgreSQL and DynamoDB. Tables are passed at call time; models are backend-agnostic.
The web interface is a static SPA served by FastAPI. All pages share a
single stylesheet and a common api.js module that is the single source
of truth for API endpoint calls.
Requirements
- Python 3.10+
- PostgreSQL (or JSON file backend for local development)
- Google Search Console OAuth2 credentials
- SerpAPI key (optional, for PAA enrichment)
- OpenAI, Anthropic, or Marigold key (optional, for cluster summarisation)
License
MIT. See LICENSE.
Built by Edward Grundy -- Bay Information Systems
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 reheat-0.0.1.tar.gz.
File metadata
- Download URL: reheat-0.0.1.tar.gz
- Upload date:
- Size: 15.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7bf8081851cad32265c9791ee678e7dec44b7ab2e95c3bf979ac3c4ebd055af
|
|
| MD5 |
ceaf5432298c4cc0aeb6422a4a179db6
|
|
| BLAKE2b-256 |
d7febe86f0cc97ffe48d6862ebdac244e25caeff7213194333eadaec8dd8aa9c
|
File details
Details for the file reheat-0.0.1-py3-none-any.whl.
File metadata
- Download URL: reheat-0.0.1-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b1c1bba1db353c53592dd11c714844b9e2967d14fa43a390ae28e0685b742b69
|
|
| MD5 |
71cddb47ac8ab88090e987a41990f7f6
|
|
| BLAKE2b-256 |
751f902c6945deadc89ef558d930b75f0658636e79784647cd0073eaf8abdfd4
|