Skip to main content

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.


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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reheat-0.0.1.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reheat-0.0.1-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

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

Hashes for reheat-0.0.1.tar.gz
Algorithm Hash digest
SHA256 f7bf8081851cad32265c9791ee678e7dec44b7ab2e95c3bf979ac3c4ebd055af
MD5 ceaf5432298c4cc0aeb6422a4a179db6
BLAKE2b-256 d7febe86f0cc97ffe48d6862ebdac244e25caeff7213194333eadaec8dd8aa9c

See more details on using hashes here.

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

Hashes for reheat-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b1c1bba1db353c53592dd11c714844b9e2967d14fa43a390ae28e0685b742b69
MD5 71cddb47ac8ab88090e987a41990f7f6
BLAKE2b-256 751f902c6945deadc89ef558d930b75f0658636e79784647cd0073eaf8abdfd4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page