Back to Tools

Topical Map Visualiser

Use cases

Visualising topical map output for content strategy presentations Exploring keyword universe by topic and subtopic Identifying content gaps in underrepresented topic areas Communicating keyword coverage to stakeholders

Reads a tagged keyword CSV with a two-level topic hierarchy (parent > subtopic > keyword) and builds a zoomable D3.js circle packing chart via Jinja2 templating.

Circles are sized by one of five metrics: count, impressions, clicks, first_page_count (position 1-10) or top_3_count (position 1-3).

The chart uses a 10-colour pastel palette with 0.6 opacity for parent nodes.

Outputs a standalone HTML file for sharing or embedding.

Platform

Python script (requires Python 3.x)

Input

Tagged keyword CSV with parent topic, subtopic and keyword columns

Optional: metric columns (impressions, clicks, or position from GSC)

Output

Interactive zoomable circle packing HTML chart. Click circles to zoom in, click background to zoom out.

View Source

Features

  • D3.js v6 zoomable circle packing chart
  • 5 sizing metrics: count, impressions, clicks, first_page_count, top_3_count
  • Jinja2 HTML templating with 10-colour pastel palette
  • Click-to-zoom navigation with 750ms animated transitions
  • Column mapping for parent, subtopic and keyword columns
  • Standalone HTML download for embedding or sharing

How to use

  1. 1 Upload a tagged keyword CSV
  2. 2 Select the metric for circle sizing in the sidebar
  3. 3 Map the parent topic, subtopic and keyword columns
  4. 4 Map any required metric columns (position, impressions or clicks)
  5. 5 Click Generate Chart
  6. 6 Download the standalone HTML file

Frequently asked questions

What CSV format does it expect?
A CSV with at least three columns representing a two-level hierarchy: parent topic, subtopic and keyword. Column names are mappable in the sidebar (defaults: Parent, Child, query). For metrics other than count, you also need a position, impressions or clicks column.
How does the count metric work?
Each keyword contributes a value of 1 regardless of any other data. Circle size reflects the number of keywords within each subtopic and parent topic. This is the only metric that requires no numeric columns beyond the hierarchy.
What do first_page_count and top_3_count measure?
first_page_count counts keywords with a position column value between 1 and 10 (inclusive). top_3_count counts keywords with position 1 to 3. Keywords outside those ranges contribute zero to their parent circle size.
Can I embed the chart in a presentation or report?
Yes. The Download HTML button gives you a standalone HTML file with inline D3.js v6. It loads the D3 library from d3js.org CDN, so an internet connection is needed when viewing. The chart is fully interactive with click-to-zoom.
How does the zoom interaction work?
Click any circle to zoom into it (750ms animated transition). Click the background to zoom back out to the root level. Hold Alt while clicking for a slowed 7,500ms transition. Labels appear only for the focused level's children.

Need something built for your business?

This tool started as bespoke client work. I build custom scripts, data pipelines, and full apps for SEO and product data problems that off-the-shelf tools don't solve.

Tell Me What You Need