Topical drift 101
Normalized distances rescale a site's distances into a 0–1 range for easier relative comparison within a site and for composite scoring. Normalized mode is helpful when you want percentile-style zones or you're weighting multiple signals (like links + engagement).
- Topical Map Editor — plan your architecture before publishing. Build every page, URL, hub, section, FAQ, and internal link in a visual graph.
- Topical Drift Analyzer — monitor the architecture after publishing. Crawl your live site to find which pages have drifted away from the plan.
What we use, what we store, and what we don't
How the drift signal is computed
- Measure page-to-page similarity (cosine similarity) and distance
- Group pages into semantic clusters (k-means on embeddings)
- Project to 2D for visualization (UMAP)
- Compare internal link context vs destination page meaning
- Calculate distance from your topical centre (centroid embedding)
60% semantic distance (topical alignment)
30% link penalty (internal linking weakness)
10% engagement penalty (GSC performance signals)
You can customize these weights depending on your workflow (pure content audit, link-first fixes, etc.). SDI is most useful in normalized mode, where scores are comparable within a site.
• Core: ≤ 0.300 — excellent topical alignment
• Focus: 0.300–0.500 — strong alignment, on topic
• Extended: 0.500–0.700 — moderate drift, review recommended
• Peripheral: ≥ 0.700 — significant drift, needs attention
These are default heuristics and will be tuned as we calibrate across different site types.
In Normalized mode: Zones are percentile-based (0–0.3 = best 30%, etc.) for relative comparison within your site.
Interactive radial map and semantic projection
Angle (position around the circle): Uses semantic projection by default (derived from UMAP's 2D coordinates), so pages that are similar in meaning sit near each other. You can also switch to group by cluster, distribute evenly, or group by problem type.
- Toggle between actual/normalized distances
- Choose angle mode (semantic, by cluster, uniform, by problem type)
- Color by cluster, zone, SDI score, or drift severity
- Adjust node size (mapped to traffic)
- Show/hide labels (none / all / drifting only)
- Filter by cluster
- Zoom, pan, and click nodes to open pages
- Export as PNG for sharing
What you get — and what to do with it
- Drift report with severity rankings
- Semantic clusters and hub structure
- Interactive radial map with UMAP + distance zones
- Internal link meaning mismatch list
- Linking opportunities (similar pages that should link)
- Zone distribution dashboard
- CSV exports for all core datasets
- Prioritized checklist and action plan
- Adjusting link context (anchor + nearby text) to match destination pages
- Moving links into better semantic sections
- Re-centering headings/content to match intent
- Adding internal links between semantically close pages
- Consolidating overlapping/cannibalizing pages
- Strengthening hub pages with missing entities or sections
- Reviewing peripheral pages for consolidation, re-scope, or redirect
- Run a baseline crawl → note distances for problematic pages
- Implement fixes (content updates, link changes)
- Run a follow-up crawl (monthly is typical)
- Compare distances and zone movement over time
Under the hood
- Page drift data (URL, distance, zone, cluster, metrics)
- Cluster membership and statistics
- Internal link meaning mismatches with similarity scores
- UMAP coordinates and semantic positioning
- Linking opportunities
Embeddings, similarity, and distance calculations are deterministic for the same input and model. Clustering and UMAP can vary slightly unless we fix random seeds. With fixed seeds, repeated crawls on unchanged content produce the same cluster structure and a stable map layout.
Done-for-you remediation blueprint
Pricing for the Audit has not been set yet. We are taking on beta Audits on a case-by-case basis. Get in touch and describe your site and what you need.
- Executive summary + highest-impact wins
- Prioritized roadmap (what to fix first + why)
- Consolidation guidance (merge / trim / redirect decisions)
- Internal linking strategy (hubs, anchors, contextual placement)
- 30/60/90-day implementation plan
Map basics — what is a topical map?
Section — has no URL. It is a heading and content block inside a parent page. Shown with a dashed border and muted color in the editor.
Hub — a standalone page that also acts as a navigation centre for its child pages. It contains a summary section for each child and links out to all of them. Shown with a gold ring in the editor.
A node can be both a Section (summarised on its parent) and a Standalone (also has its own page).
- Macro — the broadest category (amber)
- Seed — the primary topic the map is built around (purple)
- Topic — main pillar pages under the seed (cyan)
- Subtopic — supporting pages under a topic (green)
- FAQ — question-based sections or pages (orange)
- Comparison — versus or comparison content (pink)
AI-powered map generation from macro + seed
- Normalize the seed — creates IDs, slugs, and establishes macro/seed context
- Discover candidate topics — AI topic expansion + SERP validation, PAA extraction, entity extraction
- Canonicalize topics — merges duplicates, separates concepts from wording variants
- Classify each topic — Section, FAQ, Standalone, or Hub (allows both Section + Standalone)
- Assign hierarchy + generate URLs — parent-child structure, tier levels, canonical URLs
- Generate internal linking — parent-child edges, related edges, FAQ attachment edges, anchor text + placement hints
- Assemble the final graph — nodes + edges JSON, loads into the editor automatically
Editing, layouts, and navigation
Horizontal Tree — left-to-right hierarchy. Tier level maps to column position. Best for reviewing URL depth and parent-child relationships.
Radial Tree — concentric rings. Seed is at the centre, Topics on the first ring, Subtopics on the second. Best for client presentations and exports.
- / — focus the search input
- F — fit view to all nodes
- Escape — close the edit panel or clear search
- Delete / Backspace — delete the selected node (when not typing)
What lives inside a topical map
- Unique ID, label, and URL slug
- Node type (Macro / Seed / Topic / Subtopic / FAQ / Comparison)
- Tier level (0 = Macro, 1 = Seed, 2 = Topic, 3+ = Subtopic)
- URL Role (Standalone = has its own page; Section = no URL)
- Hub Role (Hub Page or not)
- Canonical URL (auto-generated from parent URL + slug)
- Parent URL and parent node ID
- Confidence score (0–1)
- Entities (named organisations, concepts, tools, people)
- Aliases (keyword variants and search intent phrases)
- Source node ID and target node ID
- Edge type (Parent-Child / FAQ Attachment / Related)
- Weight (0–1, how strong the relationship is)
- Recommended anchor text
- Alternate anchor phrases
- Placement hint (body / hub section / FAQ block)
- Required vs optional status
Nodes/nodes
array and an Edges/edges array. Both PascalCase
(pipeline output) and camelCase (editor export) are supported on import.
The format is graph-ready and compatible with Neo4j, D3.js, and any
graph database or visualisation tool.
Parent: /golden-retriever/health/Slug: hip-dysplasiaResult: /golden-retriever/health/hip-dysplasia/Changing URL Role to Section Only clears the URL field. Changing the parent regenerates the URL if the field is empty. Manually typing a URL disables auto-generation for that node.
Getting your map out of the editor
- PNG (Viewport) — exports what is currently visible at 4× screen resolution
- PNG (Full Map) — captures the entire graph at 4800px+ on the longer side
- SVG (Viewport / Full Map) — vector format with inlined styles, scalable to any size
- CSV — all node fields for content calendar spreadsheets (built in browser, no server)
- JSON (Copy / Save) — full graph for pipeline reload, CMS, Neo4j, or D3.js
- Generate the map (or load your JSON)
- Review and edit in the editor — fix labels, URLs, hub assignments
- Switch to Radial Tree layout and click Fit View
- Enable Rectangular Nodes + Full Labels
- Use Hide Section-Only Nodes to show only pages
- Export PNG — Full Map for the client presentation
- Export CSV for the content team brief
- Export JSON to save and reload later
Plan (Map Editor) → Publish (your CMS) → Monitor (Drift Analyzer) → Fix (Drift report + action plan) → Re-plan (Map Editor)
Plans, limits, and beta pricing
- Drift Analyzer — unlimited crawls (fair use), up to 500 pages per site, free account required
- Topical Map Generator — up to 3 maps per month, free account required
- Visual Map Editor — always free, no account required, no limits
When pricing is ready we will email all registered users before any public announcement. Waitlist members receive early-user pricing. Join the waitlist .
- Affected URL lists for every issue type
- Per-page diagnostics (exact URLs, CTR gaps, missed clicks)
- Full issue drilldowns and complete export tables
- Advanced recommendations and remediation details
- Starting a new site or topic cluster? Use the Map Generator to plan your architecture before publishing. Then use the Visual Editor to review, refine, and export.
- Have an existing live site? Use the Drift Analyzer first to find where your content has already drifted. Then use the Map Editor to re-plan the structure.
- Not sure what a topical map looks like? Load the Golden Retriever starter map in the editor — no account needed — to see a complete example before generating your own.