Build an AI Visibility Dashboard With Semrush and Search Console
TL;DR
An AI visibility dashboard combines Semrush prompt tracking (AI visibility rate, mentions, cited pages) with Google Search Console performance data in one Google Sheet, rendered as a live Claude artifact. Build it in about 90 minutes, update it in 20 minutes weekly, and use it to fix pages AI trusts but Google users never find.
Key takeaways
- Track roughly 30 prompts across five journey groups, tagged and left unchanged for at least a month; 30 prompts yield about 200 observations weekly.
- Claude artifacts that call connectors require a paid Claude plan (Pro, Max, Team, or Enterprise) and cannot be shared by public link.
- Google Search Console's Generative AI report currently offers impressions only, with no queries, clicks, or CTR data.
- End GSC export windows 2-3 days before today, because the newest data is incomplete and undercounts.
- Prioritise pages AI cites but that earn no Google clicks, competitors' citations, and prompt groups with zero visibility.
- Append weekly rows with snapshot dates and normalise URLs so GSC does not count a page twice.
A step-by-step guide shows how any business can build an AI visibility dashboard that combines its AI Visibility Toolkit data with Google Search Console. For a local business or SME, that means seeing in one place whether AI platforms like ChatGPT, Google AI Mode, and Gemini actually cite and recommend your brand, and whether the pages they cite are the same pages earning clicks in Google search.
The setup is deliberately lightweight. It uses Semrush for prompt-level AI data and Google Search Console for page-level Google data. A Google Sheet holds everything, and a paid Claude plan turns the Sheet into a live dashboard. The person who built it for a test site spent about 90 minutes on the first build and now spends 20 minutes per weekly update.
What the AI visibility dashboard measures
The dashboard puts two measurements side by side. On the AI side, Semrush’s prompt tracking provides the AI visibility rate. This is the share of tracked prompts where your brand appears. It also provides mentions, cited pages, and cited source domains. On the Google side, Search Console contributes generative AI impressions, plus clicks, impressions, click-through rate, and average position for standard search.
Two constraints matter before starting. The dashboard runs as a Claude artifact that pulls live data from the Google Sheet through the Google Drive connector. Artifacts that call connectors require a paid Claude plan. Plans include Pro, Max, Team, or Enterprise. Second, it cannot be shared by public link. Team and Enterprise plans can share it inside the organisation. Pro and Max users keep it private. For leadership reporting, the practical workaround is asking Claude to export the dashboard’s report as an HTML file that opens in any browser.
One early finding illustrates why the pairing matters. On the test site, the first refresh surfaced a guide that AI answers cited for 50 prompts. The page earned zero Google clicks. AI platforms already trust it, but nobody finds it through search.
Set up prompt tracking and export your data
First decide what to measure. This includes your domain, brand-name variations, and which AI platforms to track. Semrush’s Prompt Tracking supports ChatGPT, Google AI Mode, and Gemini. Also decide location, language, and a fixed reporting window, such as the latest 28 days versus the previous 28 days.
Then build roughly 30 prompts in Semrush’s Prompt Tracking tool, which checks the same prompts against your chosen platform daily. Spread them across five groups of six: customer problems, product or category discovery, comparisons, product selection, and branded questions. Prompts should mirror how buyers actually talk, mined from support tickets, sales calls, and forums. Monitored daily, 30 prompts generate roughly 200 observations a week, enough for a stable site-wide visibility rate. Note that the entry AI Visibility Toolkit plan covers 25 prompts, so 30 requires a higher tier or an add-on.
Tag each prompt with its group in the campaign’s Tags tab so you can compare segments instead of one blended score. Keep two cautions in mind. With six prompts per group, one prompt changing moves that group’s rate by 17 points. Treat group swings as leads to investigate. Branded prompts almost always show your brand, so report both on all prompts and on non-branded only. The non-branded number shows whether AI recommends you to people who don’t know you yet. Keep the core prompt set unchanged for at least a month, or every trend line breaks.
Next, export two datasets from Semrush into Google Sheets: prompt-level performance (from the campaign’s Top Prompts section) and the cited pages and sources (from Visibility Overview, using the same platform selector). If export is grayed out, ask the campaign owner for permission. Even a campaign created yesterday inherits months of history. The test site had a mentions trend going back six months on day one. Visibility Overview draws on Semrush’s own ongoing analysis of AI answers.
Then export Search Console data. If your Generative AI performance report has data, export it twice. Export once for the last 3 months, which gives a daily trend. Export once for the last 28 days, which gives a pages table. Impressions are currently the only metric available, Google provides no queries, clicks, or CTR for generative AI. If the report is empty, use the standard Search results report instead. End each export window 2-3 days before today. The newest GSC data is incomplete and undercounts.
Build and test the dashboard in Claude
Organise every export in one master Google Sheet with a fixed tab structure. Use one tab for reshaped Semrush prompt data and one for cited pages. Add tabs for source domains and topics, plus tabs for the GSC exports. Stamp every Semrush batch with a snapshot date.
Connect Google Drive in Claude’s connector settings and confirm Claude can open the Sheet. Then prompt Claude to build a live dashboard artifact, naming the Sheet and your domain. Instruct it to compare rather than blend the two datasets. Also instruct it to flag data freshness. On the first build, prompt-tracking charts will show only a few days, that is expected.
Test the connection before trusting anything. Edit one clicks value in the GSC tab and refresh the artifact. Confirm the matching KPI card changes and the freshness stamp updates, then undo the edit. If a section goes empty after an edit, check that column headers match the original structure exactly.
Act on insights and keep the data fresh
The dashboard earns its keep through three priority patterns. A page AI cites that earns no Google clicks needs Google-side work: find a keyword it can realistically rank for, refresh the page around it, and build links. Competitors cited where you are not, on the test site, domains cited for seven prompts each, point to comparison content to create and listicles to get mentioned in. An entire prompt group with zero visibility signals missing content, not a weak page. Those prompts become the brief for new top-of-funnel pieces.
As history builds, watch for pages ranking well in Google but rarely cited by AI. These pages usually need clearer structure, with direct answers, descriptive headings, and current dates. Also watch for pages losing mentions after an edit, and topics improving across both channels.
One caveat worth knowing: a strong Google ranking does not guarantee a ChatGPT citation, because ChatGPT pulls from its own web index. Check whether the page answers the tracked prompt directly.
Finally, run a fixed weekly routine: export fresh prompt tracking, cited pages, and GSC data. Append rows with a new snapshot date rather than replacing old ones. Import into the same Google Sheet (a new file would leave the dashboard reading the old one). Refresh the artifact; and note any major content changes so movements can be explained later. Normalise URLs consistently across tabs. GSC otherwise counts a page twice, once with a trailing slash and once without. Absurdly low page numbers are usually URL variants.
Sources: