Plan and manage topical coverage for any WordPress site, connect live content, review gaps, and prepare the next publishing sprint.
Active site profileNew site
Each profile keeps its own map, sitemap cache, internal links, plans, settings, and WordPress credentials.
2012Total rows
8Entities
—Live sitemap rows
—Planned / non-live URLs
0Blank topic URLs
0New rows
0Deleted rows
● UNSAVEDAuto-save: idleSitemap: (loading…)
🤖 AI Reviewuses OpenAI Responses API + web search to find merge/remove/adjust candidates
Filtered review checks the visible rows against each other and the sitemap. Full review checks the entire selected language. Entity + Attribute pairings are unique within each language.
The tiny auditors are sharpening their pencils…
🔍 Topic Audituses Tavily SERP + GPT to check if each topic matches what actually ranks on Google
For each topic, Tavily returns the top 5 real Google results. GPT then judges whether the topic aligns with that SERP intent — keep, merge into an existing same-language topic, rename to match the dominant intent, or remove (and tell you what the SERP results actually want to see instead). Suggestions land in the same Approve/Deny queue as AI Review.
Pulling real SERP data…
❓ User guide — what each button does
A quick reference for every button in the toolbar. Hover any button for a one-line tooltip; this panel has the longer story. Use the ❓ User guide button in the toolbar to open or close this.
Editing & data
+ Add new topic
Inserts a new row at the bottom of the table. Fill in Entity, Sub-learning area, and Topic inline. Entity + Attribute (Topic) pairings must be unique within a language, so duplicate pairs are blocked.
⚡ Batch tools
Edit many rows at once. Paste tab-separated rows (one per line) and apply, or run common bulk ops like "set language = en for all filtered rows", "delete all new rows", etc. Handy when you have just imported a long list of raw topics.
↶ Undo history
Reverts any change in the last 50 actions. Click an action to step back to that snapshot. Use freely — it doesn’t touch the deployed map, only local edits.
💾 Export map JSON
Downloads a JSON backup of the current profile’s local map (rows, statuses, deleted, sitemap matches, everything). Treat this as a database backup: save it whenever you’ve made non-trivial edits, before switching profiles, or before clearing the browser.
📥 Import JSON
Replaces the current profile’s local data with a JSON map file. Useful for restoring a backup or pulling in a fresh map from another editor session. Import only affects the profile you have selected.
AI audits & quality
🤖 AI Review (Sitemap Audit)
Uses GPT web search to find duplicates, gaps, and renames across your topics and against the live sitemap. Suggestions are: merge two topics into one, remove a redundant row, or adjust a topic name. Nothing changes until you click Approve. Add your OpenAI key in the panel first. Scope selector: filtered rows (your current view, recommended) or full map.
🔍 Topic Audit (new)
Pulls the real top-5 Google results for each topic title via Tavily, then asks GPT if the topic matches what actually ranks. Returns: keep / merge into existing same-language row / rename to match dominant SERP intent / remove. For removes and renames it adds a 💡 What to cover instead hint (e.g. "wine 101 beginner guide + history of wine roundup"). Cost: 1 Tavily search + 1 GPT call per topic — cap at 30 by default. API keys are stored per profile, so each client site keeps its own Maton/OpenAI credentials.
🔗 Bulk match filtered
AI auto-fills the Supporting topics field for every visible row by matching to existing same-language topics. Useful after you add many new rows — it generates internal-link suggestions in one pass.
Sharing & reporting
🧹 Flush LS
Wipes all editor data from this browser: all profiles, rows, AI keys, Maton keys, WordPress credentials, sitemap cache. Confirmation required. Use it when the editor is misbehaving or before handing the laptop to someone else.
🔗 Share filtered view
Copies a URL that recreates your current filter (search term, entity, language, status, etc.). Send the link to a teammate and they’ll see exactly what you’re seeing — rows, counts, filters. Includes the active profile, so they land on the same site.
📄 Coverage report
Opens an in-page report: how well the current profile’s topical map covers the sitemap, which entity + sub combos are saturated, and which need new articles. Downloadable as HTML.
External connections
⚙ WordPress connection
Connect a WordPress site (URL + username + application password). Complete sync pulls every published post, page, and product; matches each URL into the topical map and marks rows as Existing. Check Complete rows re-walks the cached sitemap and matches any newly published URLs back to rows you marked Complete. Run it after publishing — first refresh the sitemap if the new posts aren’t showing up. AI match unmatched resolves rows with no clear URL using GPT batched over the unmatched candidates. Credentials and sitemap cache are kept per profile.
Sitemap tools
Cached sitemap URLs vs topical map. Match exact URLs pairs every cached URL with its row (when path matches). Refresh unmatched URLs re-runs the cache against current rows. The list shows pages on the site with no topic yet, and topics with no URL.
🌳 Topic tree
Visual tree of all topics grouped by Entity → Sub-learning area → Topic. One language at a time. Follows the current table filters, so you can drill into a specific entity and see the full sub-tree.
↺ Reset map to empty seed
Discards all local edits and reloads an empty seed map for the current profile. Confirmation required. Use it after a big mistake or when you want to start a profile from scratch.
Right-side insights
Coverage pulse
Snapshot of existing pages, complete pages, and the next layer of suggested coverage. Updates as you edit and as the sitemap loads.
Entity coverage (clickable!)
Shows every parent entity and its coverage progress. Click an entity to drill into its sub-learning areas; click a sub-learning area to filter the table to that slice (you’ll jump straight into that view). Use the back button to return to all parents.
Do this week
High-value topics closest to what the source context offers. Click Copy on any item to send it to the Writing Studio: the topic is added to your content calendar, marked In progress, and the Writing Studio opens in a new tab with the topic pre-filled so you can start writing immediately.
✎ Writing Studio
A separate editor for drafting the actual article. Pick a topic here, press Copy, and it opens with the topic in the input. Work, save, and the article moves toward Complete.
Content calendar
Once WordPress is connected, click Fetch post dates to load every published post and group them by month — you’ll see your monthly post cadence plus the titles of the last few posts in each month. Click Link to 7-day plan to feed that publishing history into the seven-day suggestions: the editor will spot topics that the existing posts don’t cover well and surface them in Do this week.
Per-row buttons (in the topic column)
Go to Studio
Sends the topic to the Writing Studio. Marks the row as In progress (with confirmation) and adds it to the content calendar. The Writing Studio opens in a new tab with the topic pre-filled.
Check Google
Opens a Google search for the exact topic title — a quick way to see what ranks before you write.
Images
Opens a Google Images search for the topic — useful for picking reference shots or hero art before drafting.
Profile notes (multi-site)
TBS Topical Map Editor is a multi-site profile tool. The first time you load the editor, you create a profile (URL + nickname). After that, the top-right profile chip lets you switch between profiles. Every profile keeps its own:
rows + statuses + deleted rows
OpenAI key, Maton key, Topic Audit connection
WordPress credentials + sitemap cache
local content plan
last filter / selection
All "current map" actions (Export, Import, Reset, WordPress sync, Topic Audit, AI Review) only touch the active profile. To add a brand-new client site, click the profile chip → New profile. To remove a profile, use the profile chip → Delete (confirmation required).
How a typical session flows
Pick or create a profile. Top-right chip → select a client or create a new one.
Connect the site. Open ⚙ WordPress connection, save credentials, run Complete sync to import posts/pages/products.
Audit. Filter to one language, hit 🤖 AI Review (Sitemap Audit) to merge duplicates and surface gaps. Hit 🔍 Topic Audit to verify each topic matches what actually ranks on Google.
Approve & apply. Each suggestion shows in the Approve/Deny queue. Approve what you want, Apply — undo is one click away.
Write. From any row, click Go to Studio (or use Do this week → Copy). The topic moves to In progress, gets added to the content calendar, and the Writing Studio opens with the topic ready to draft. Write the article, then come back here and set the row status to Complete.
Match the published URL. Back in ⚙ WordPress connection, click Check Complete rows. It walks the sitemap and matches any newly published URLs back to rows you marked Complete. If the new post isn’t there yet, refresh the sitemap first (Sitemap tools) and re-run.
Backup. Click 💾 Export map JSON whenever you’ve done meaningful work. This is your database backup — keep it.
WordPress content connection Fetches records page-by-page and matches canonical URLs locally — no giant sitemap prompt.
How to use: 1) Save connection · 2) Run the Complete sync below to import current WordPress pages, posts, and products · 3) If rows remain unresolved, run AI match unmatched (optional).
Important: run Complete sync after publishing. Sitemap links only prove URLs currently exist. New post URLs are added to the map by the Complete sync.
Credentials stay in this browser and are sent only to the WordPress REST API. WordPress must allow REST requests from this editor domain.
Cached sitemap tools Every useful fetched sitemap URL should have a row in this topical map. Products stay as map rows, while cart, account, checkout, legal, feed, and other utility URLs are excluded from coverage.
Coverage pulse
Existing pages, complete pages, and the next layer of suggested coverage.
Entity coverage
Parent coverage across the topical map. Select a parent to drill down.
Do this week
High-value topics closest to what the source context offers.
Content workspace
Pick a topic, copy it, and continue drafting against the active site profile.
Fetch WordPress post dates to see publishing patterns and align the seven-day plan.
Rows 0–0 of 0Page 1of1Jump to:· 50 / page
Coverage report
Generated from the current local map. This stays in the editor instead of opening another tab.
Topic tree of life
Entity → sub-learning area → topic. The tree follows the current table filters and shows one language at a time.
Filter table:979 / 979
Attribute / topic
Status
Entity
Sub-learning area
URL
Related products
Supporting topics to link to
Actions
Rows 0–0 of 0Page 1of1Jump to:· 50 / page
⚡ Batch tools
Apply bulk changes to a set of rows.
Hint: First run "Export" of current state to get the JSON, edit it in your editor of choice, then drag-drop into the page. Or use this dialog with one row per line, tab-separated.
↶ Undo history
Past 50 actions. Click to revert.
💾 Export complete
Downloaded:
Drag-drop this file into your Telegram chat with publishing workflow. He'll rebuild the report and email it back.