Reheat

Search Console tells you which queries arrived. It does not tell you how those queries relate to each other, which intent clusters dominate your impressions, or where your content is thin relative to actual demand. Reheat makes that structure legible.

Reheat is an open-source Python CLI. It pulls query data from Google Search Console, embeds each query as a vector, clusters by semantic intent, and produces a ranked report of content gaps and opportunities. A local web dashboard shows the full intent landscape as a scatter plot, with a coverage summary and an opportunities table ranked by impression potential.

Reheat high-value topics report

Install

pip install reheat

Configure a Search Console source with your OAuth2 credentials, run the pipeline, and open the dashboard at http://localhost:8000. Full setup and pipeline documentation is at bayinfosys.github.io/reheat.

How it works

Each stage of the pipeline enriches the previous output and writes to a local state file. An interrupted run resumes from the last completed stage. Embedding runs locally via fastembed -- no API calls, no data leaving your machine. Clustering uses k-means; the cluster count defaults to 32 and is configurable.

Each cluster receives a natural language label from an inference provider of your choice: OpenAI, Anthropic, or Marigold. An optional SerpAPI enrichment pass pulls related queries and People Also Ask results into the same embedding space, widening the model's view of the intent landscape around your existing queries.

Intent map scatter plot showing query clusters

Persistence uses dynawrap, which provides a consistent interface over a local JSON file, PostgreSQL, and DynamoDB. The default backend is a JSON file at ~/.reheat/state.json. Switching to a hosted database is a configuration change; the pipeline stays identical.

Content schedule report

Links

For more on the technique, see the technical writeup in the library.