Lee Foot

LLM Sitemap Creator

Use GPT to generate hierarchical sitemap structures from keywords.

Launch the app → View the source

#about

OpenAI chat completion with JSON mode (guarantees valid JSON but does not enforce a schema).

GPT-4o-mini/4o/4.1 organises keywords by search volume and semantic relationships.

Warns about input keywords missing from the output; inclusion is requested in the prompt, not enforced.

Recursive dictionary traversal for tree rendering.

Max categories 3-15 (default 8), depth 2-5 (default 3).

Streamlit appRequires an API key

Platform
Browser-based (no installation required)
Input
OpenAI API keyKeywords CSV with volumes
Output
CSV: Level, Parent, Keyword, Volume. JSON: nested hierarchy. TXT: ASCII tree with volume annotations.

Use cases

  • Planning new site architecture
  • Organising keyword research into content structure
  • Category taxonomy planning
  • Information architecture design

#features

  • GPT-4o-mini, GPT-4o, or GPT-4.1 models
  • OpenAI JSON mode output (temperature 0)
  • Post-generation check warns of missing and model-invented keywords
  • Max top-level categories (3-15, default 8)
  • Max depth (2-5, default 3)
  • Recursive tree rendering

#how-to-use

  1. Enter your OpenAI API key
  2. Select model (GPT-4o-mini recommended)
  3. Upload keyword CSV and map columns
  4. Set max categories (3-15) and depth (2-5)
  5. Generate sitemap
  6. Download CSV, JSON, or TXT tree

#faq

Why are some of my keywords disappearing before generation?
Every keyword must have a numeric search volume. CSV rows where the volume cell is empty or non numeric are skipped silently, and in manual entry any line that is not a keyword,volume pair is ignored. Compare the "Prepared N keywords" count against your file before generating.
Is every keyword guaranteed to appear in the sitemap?
No. Inclusion is requested in the prompt, then after generation the app compares output against input case insensitively and shows a warning listing missing keywords, plus an info notice for extra category names the model invented. There is no automatic retry, so regenerate if the missing list matters.
Is there a practical size limit on the keyword list?
The model response is capped at 4,000 tokens, and the entire hierarchy including every keyword has to fit in that JSON response. Very large lists can be truncated mid JSON and fail to parse, so split big keyword sets into batches if generation errors.
What does it cost to run?
One OpenAI chat completion per generation on your own API key. Input tokens scale with the keyword list, which is sent as JSON with volumes, and output tokens with the hierarchy size. gpt-4o-mini is the default and cheapest of the three model options, and temperature is fixed at 0.

/contact

Want me to run this for you? I run this tool as a managed service, or build something custom around your data. You get the insights without touching the code.