Claude Prompt Library

30 Claude Prompts That Build SEO Dashboards

30 copy-paste prompts

Describe the Search Console metrics you track and Claude returns a working SEO dashboard as one self-contained HTML file with sample data and charts you can click in the chat. Prompts for rankings, clicks, coverage, cannibalization, content velocity, and technical. Not "give me a chart."

In short: This page contains 30 copy-paste ready prompts, organized into 6 categories with a description and pro tip for each. The first 5 prompts are free instantly, no signup needed. Hand-curated and tested by the AI Academy team.

Louis Corneloup
By Louis Corneloup ยท Founder, Techpresso
Last updated ยทHand-curated & tested by the AI Academy team

Rankings

5 prompts

Keyword Rank Tracker

1/30

โœจ What it does

Claude builds a keyword rank tracker for [SITE] with current position, weekly change, and a movers list as a working screen you can click in the chat. Click a falling query, then swap the sample numbers for your Search Console query export.

You are an SEO analyst who builds keyword rank trackers a Monday review can trust. <context> I need a keyword rank tracker as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic queries so I can click the working screen in the chat. </context> <inputs> - Site or property: [SITE] - Period: [E.G. LAST 28 DAYS VS PRIOR 28] - Queries: [12-20 TERMS OR "INVENT REALISTIC ONES"] - Brand versus nonbrand: [TAG EACH OR "INVENT A SPLIT"] - Target average position: [E.G. 8] </inputs> <task> Build the dashboard with: a header for [SITE]; KPI cards (queries tracked, average position, keywords in top 3, keywords that moved 3 or more spots); a sortable query table (query, brand/nonbrand, impressions, clicks, CTR, current position, prior position, change); a gainers and losers strip; a position-distribution bar (1-3, 4-10, 11-20, 21+); and a falling-query watchlist. Keep rows in labeled JS constants and compute CTR, change, and averages from those rows. Color a rank improvement green even though the position number drops. Clicking a query shows a tiny 8-week sparkline from a sample series. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - All data in labeled JS constants at the top so I can swap in a Search Console query export later. - Do not invent a live Search Console API. Sample data only, with a note on where the export would go. - Responsive grid, accessible contrast, not color-only. No lorem ipsum. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then list which constants to replace and how average position and change are calculated. </format>

๐Ÿ’ก

Pro tip: Tag brand and nonbrand before you scan movers. A brand term sitting at position 1 will hide the queries you are actually fighting for.

SERP Position Movement

2/30

โœจ What it does

Claude builds a SERP movement board for [QUERY SET] with gainers, losers, and a 28-day sparkline as a working screen you can click in the chat. Click the biggest loser, then swap the sample numbers for your rank history.

You are an SEO analyst who reads ranking health as movement, not a single average position. <context> I need a SERP position movement dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic rank history so I can click the working screen in the chat. </context> <inputs> - Query set name: [QUERY SET] - Site: [SITE] - Windows: [E.G. THIS 28 DAYS VS PRIOR 28] - How many queries: [E.G. 30 SAMPLE QUERIES] - Big-move threshold: [E.G. 3 POSITIONS] </inputs> <task> Build the dashboard with: a header for [QUERY SET]; KPI cards (queries compared, median change, gainers, losers, new this window); a waterfall or paired bar of position change; a dual list of top gainers and top losers; a 28-day sparkline of average position; and a table (query, prior, current, change, impressions, clicks). Only compare queries present in both windows. New and dropped queries sit in their own chips, not in the gainer math. Compute change as prior position minus current position so a move toward 1 is positive. Clicking a loser opens its sparkline. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - History rows in labeled JS constants at the top so I can swap a rank history later. - Do not invent a live rank API. Sample data only. - Pending or missing weeks labeled pending, not zero. Accessible contrast. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write the change formula and which arrays to replace. </format>

๐Ÿ’ก

Pro tip: Measure change on the same query set both weeks. A new query that just appeared is not a gainer. It is a new row.

Rankings by Landing Page

3/30

โœจ What it does

Claude builds a rankings-by-page board for [SITE] with average position, query count, and a weak-URL list as a working screen you can click in the chat. Open a weak URL, then swap the sample numbers for your pages export.

You are an SEO analyst who judges landing pages by the queries they hold, not vanity sessions. <context> I need a rankings-by-landing-page dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic URLs so I can click the working screen in the chat. </context> <inputs> - Site: [SITE] - Period: [E.G. LAST 28 DAYS] - Landing pages: [10-16 PATHS OR "INVENT REALISTIC ONES"] - Queries per page if known: [OR "INVENT A COUNT"] - Weak page rule: [E.G. POSITION WORSE THAN 15 WITH 1K+ IMPRESSIONS] </inputs> <task> Build the dashboard with: a header for [SITE]; KPI cards (pages, median position, pages in top 10, weak pages); a bar of clicks by page; a sortable table (path, clicks, impressions, CTR, average position, query count, change); a weak-URL list using my rule; and a click-to-open drawer of sample queries for the selected page. Compute CTR and averages from page rows. Clicking a page filters the query drawer. Flag pages that fail the weak rule. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Page rows and a small query-per-page array in labeled JS constants at the top. - Do not invent a live pages API. Sample data only, with a note on pasting a Search Console pages export. - Accessible contrast. Sort default: clicks descending. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then explain the weak-page rule and which arrays to replace. </format>

๐Ÿ’ก

Pro tip: Rank pages by organic clicks first, then position. A URL stuck at 12 with real impressions is a rewrite job, not a new article.

Competitor Rank Compare

4/30

โœจ What it does

Claude builds a competitor rank compare for [COMPETITOR] next to your domain with position deltas as a working screen you can click in the chat. Toggle both domains, then swap the sample numbers for your rank tracker export.

You are an SEO competitive analyst who compares the same query set across two domains. <context> I need a competitor rank-compare dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with two realistic rank series so I can click the working screen in the chat. </context> <inputs> - My domain: [SITE] - Competitor domain: [COMPETITOR] - Shared queries: [12-20 TERMS OR "INVENT A REALISTIC OVERLAP"] - Period: [E.G. THIS WEEK] - Win rule: [E.G. I RANK AT LEAST 3 SPOTS BETTER] </inputs> <task> Build the dashboard with: a header naming both domains; a control that focuses me, [COMPETITOR], or both; KPI cards (shared queries, I win, they win, ties); a grouped bar of position per query; a comparison table (query, my position, their position, delta, impressions if given); and a callout of the query with the largest gap I can still close. Compute delta as their position minus mine so a positive number means I am ahead. Queries only I rank, or only they rank, sit in side lists, not in the shared delta. The control must update the focused view without a reload. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Both domain series in labeled JS constants at the top so I can swap a rank tracker export later. - Do not invent traffic or backlinks. Positions and optional impressions only. - Accessible contrast. Largest gap flagged. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write the delta math and which arrays to replace. </format>

๐Ÿ’ก

Pro tip: Compare the queries you both actually rank for. A competitor keyword they own and you never tried is a brief, not a rank loss.

Brand Versus Nonbrand Mix

5/30

โœจ What it does

Claude builds a brand versus nonbrand rank mix for [PROPERTY] with share, average position, and a nonbrand watchlist as a working screen you can click in the chat. Filter nonbrand, then swap the sample numbers for your tagged queries.

You are an SEO analyst who splits rankings into brand and nonbrand so a healthy brand tab cannot hide a weak nonbrand tab. <context> I need a brand versus nonbrand rank-mix dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with tagged queries so I can click the working screen in the chat. </context> <inputs> - Search Console property: [PROPERTY] - Brand match rule: [E.G. CONTAINS BRAND OR PRODUCT NAME] - Period: [E.G. LAST 28 DAYS] - Queries: [OR "INVENT A TAGGED SET"] - Nonbrand position target: [E.G. 12] </inputs> <task> Build the dashboard with: a header for [PROPERTY]; KPI cards (brand click share, nonbrand click share, nonbrand average position, nonbrand queries worse than target); a stacked area of clicks over time by bucket; a position-distribution split; a filter chip set (brand / nonbrand / all); and a nonbrand watchlist (query, position, impressions, CTR). Tag each sample query in the constants using my rule. Compute shares from clicks, not from query count. Selecting a chip filters every widget. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Tagged query rows in labeled JS constants at the top so I can swap a Search Console export later. - Show the brand rule on the page. Do not invent a third bucket. - Accessible contrast. Below-target nonbrand rows flagged. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write the share math and which array to replace. </format>

๐Ÿ’ก

Pro tip: Define brand as queries that contain your name or product. Mixing them with nonbrand will make the average position look healthier than the fight is.

Clicks

5 prompts

Search Console Clicks Overview

6/30

โœจ What it does

Claude builds a Search Console clicks overview for [PROPERTY] with clicks, impressions, CTR, and a daily trend as a working screen you can click in the chat. Read the latest week, then swap the sample numbers for your performance export.

You are an SEO analyst who builds Search Console performance overviews a weekly SEO standup can defend. <context> I need a Search Console clicks overview as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic daily performance so I can click the working screen in the chat. </context> <inputs> - Property: [PROPERTY] - Period: [E.G. LAST 90 DAYS] - Compare to: [E.G. PRIOR 90 DAYS] - Country or device filter if useful: [OR "ALL"] - Click target if any: [E.G. +10% OR "NONE"] </inputs> <task> Build the dashboard with: a header for [PROPERTY]; KPI cards (clicks, impressions, average CTR, average position, versus prior); a dual-axis line of clicks and impressions; a CTR line with the period average; a weekday table (day, clicks, impressions, CTR); and a latest-week callout versus the prior four weeks. Keep a daily series in labeled JS constants and compute CTR as clicks / impressions. Versus-prior uses matching-length windows. Do not invent conversions. Search metrics only. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Daily rows in labeled JS constants at the top so I can swap a Search Console performance export later. - Do not invent a live API. Sample data only. - Below-average CTR weeks flagged. Accessible contrast. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write the CTR and versus-prior math and which series to replace. </format>

๐Ÿ’ก

Pro tip: Show impressions next to clicks. A click drop with flat impressions is a CTR problem. A click drop with falling impressions is a coverage or rank problem.

CTR Versus Position Board

7/30

โœจ What it does

Claude builds a CTR versus position board for [SITE] with expected CTR, gaps, and a title-fix list as a working screen you can click in the chat. Click a gap row, then swap the sample numbers for your query CTR table.

You are an SEO analyst who finds title and meta work by comparing actual CTR to a position-based expected CTR. <context> I need a CTR versus position dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic queries so I can click the working screen in the chat. </context> <inputs> - Site: [SITE] - Period: [E.G. LAST 28 DAYS] - Expected CTR by position band: [OR "USE A SIMPLE EDITABLE TABLE"] - Minimum impressions to score: [E.G. 200] - Queries: [OR "INVENT REALISTIC ONES"] </inputs> <task> Build the dashboard with: a header for [SITE]; KPI cards (queries scored, median CTR gap, title-fix count, skipped as thin); a scatter of position versus CTR with the expected curve; a gap table (query, position, impressions, actual CTR, expected CTR, gap); and a title-fix list where actual sits under expected by an editable threshold. Compute actual CTR from clicks / impressions. Expected CTR comes from an editable band table in the constants (for example position 1 = 28 percent, 2 = 15, 3 = 11, 4-10 sliding down). Queries under the impression floor show as thin, not as a wild gap. Clicking a gap row highlights the scatter point. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Queries and the expected-CTR table in labeled JS constants at the top. - Show the expected table on the page. Do not invent a proprietary CTR model. - Accessible contrast. Thin rows labeled thin. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write the gap formula and which constants to replace with a query CTR table. </format>

๐Ÿ’ก

Pro tip: Use a simple expected CTR by position band, not a secret industry curve. A query at position 2 with a 1 percent CTR is a title job.

Query Click Opportunity

8/30

โœจ What it does

Claude builds a query click-opportunity board for [QUERY SET] with high impressions, weak clicks, and a rewrite list as a working screen you can click in the chat. Sort by wasted impressions, then swap the sample numbers for your Search Console queries.

You are an SEO strategist who turns high-impression, low-click queries into a rewrite board, not a keyword fantasy list. <context> I need a query click-opportunity dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic Search Console style queries so I can click the working screen in the chat. </context> <inputs> - Query set: [QUERY SET] - Site: [SITE] - Period: [E.G. LAST 28 DAYS] - Opportunity rule: [E.G. IMPRESSIONS OVER 500 AND CTR UNDER 2% AND POSITION UNDER 15] - Queries: [OR "INVENT PLAUSIBLE ONES"] </inputs> <task> Build the dashboard with: a header for [QUERY SET]; KPI cards (queries, opportunity rows, wasted impressions, estimated missed clicks); a bar of wasted impressions by query; a sortable table (query, impressions, clicks, CTR, position, wasted impressions, suggested action title/meta or content); and a rewrite list. Compute wasted impressions as impressions minus clicks. Estimate missed clicks as impressions times (expected CTR minus actual CTR) using a simple editable expected CTR, and mark the estimate as an estimate. Rows that fail my opportunity rule stay in the full table but not on the rewrite list. Clicking a row shows the rule check. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Query rows and the rule in labeled JS constants at the top so I can swap a Search Console query export later. - Do not invent rankings you did not seed. Sample data only. - Accessible contrast. Sort default: wasted impressions descending. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write wasted-impression math and which array to replace. </format>

๐Ÿ’ก

Pro tip: Opportunity is impressions you already earned and did not click. A keyword with no impressions is a brief, not an opportunity row.

Page Click Trend

9/30

โœจ What it does

Claude builds a page click-trend board for [LANDING PAGE] with weekly clicks, CTR, and a drop callout as a working screen you can click in the chat. Scan the drop week, then swap the sample numbers for that URL's performance.

You are an SEO analyst who reads one landing page as a weekly click trend, not a lifetime total. <context> I need a page click-trend dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with a realistic weekly series so I can click the working screen in the chat. </context> <inputs> - Landing page path: [LANDING PAGE] - Site: [SITE] - Weeks: [E.G. LAST 16] - Known changes if any: [E.G. TITLE REWRITE IN WEEK 9 OR "NONE"] - Drop rule: [E.G. CLICKS DOWN 25% VS PRIOR 4-WEEK AVERAGE] </inputs> <task> Build the dashboard with: a header for [LANDING PAGE]; KPI cards (latest week clicks, CTR, position, versus prior 4 weeks); a dual line of weekly clicks and impressions; a CTR line; a table of weeks; markers on the chart for [E.G. TITLE REWRITE IN WEEK 9 OR "NONE"]; and a drop callout using my rule. Compute CTR each week from that week's clicks and impressions. A change marker is a date I gave, not a claimed cause. Do not write that the rewrite caused the drop. Timing only. Clicking a week highlights the table row. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Weekly series and markers in labeled JS constants at the top so I can swap that URL's Search Console performance later. - No causal language in labels. Accessible contrast. - Do not invent a second URL. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then explain drop math and which series to replace. </format>

๐Ÿ’ก

Pro tip: Keep one URL per board. A site-wide line will hide the page that actually fell after a title change.

Device and Country Clicks

10/30

โœจ What it does

Claude builds a device and country clicks board for [PROPERTY] with share, CTR, and a lagging-geo list as a working screen you can click in the chat. Filter a country, then swap the sample numbers for your Search Console dimensions.

You are an SEO analyst who splits Search Console clicks by device and country a team can actually act on. <context> I need a device and country clicks dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic dimension rows so I can click the working screen in the chat. </context> <inputs> - Property: [PROPERTY] - Period: [E.G. LAST 28 DAYS] - Devices: [MOBILE, DESKTOP, TABLET] - Countries to show: [6-10 OR "INVENT A REALISTIC MIX"] - Lagging rule: [E.G. CTR 30% BELOW PROPERTY CTR WITH 1K+ IMPRESSIONS] </inputs> <task> Build the dashboard with: a header for [PROPERTY]; a cut selector (device, country); KPI cards (clicks, impressions, CTR, lagging slices); a share bar; a CTR bar by slice; a table (slice, clicks, impressions, CTR, average position, versus property CTR); and a lagging-geo or lagging-device list using my rule. Compute CTR and shares from the dimension rows. Selecting a country filters the device breakdown for that country from a nested sample array, or shows n/a if I did not seed the nest. Slices under an editable impression floor show n/a CTR, not a wild score. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Dimension rows in labeled JS constants at the top so I can swap a Search Console device/country export later. - n/a labeled when thin. Accessible contrast. - Do not invent conversions or revenue. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then explain the lagging rule and which arrays to replace. </format>

๐Ÿ’ก

Pro tip: Lead with the geo or device you can change (hreflang, mobile titles, local pages). A country split you will not staff is a trivia chart.

Coverage

5 prompts

Index Coverage Overview

11/30

โœจ What it does

Claude builds an index coverage overview for [SITE] with indexed, excluded, and error counts as a working screen you can click in the chat. Click the error slice, then swap the sample numbers for your coverage export.

You are a technical SEO analyst who builds index coverage overviews from Search Console coverage style counts. <context> I need an index coverage overview as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic coverage buckets so I can click the working screen in the chat. </context> <inputs> - Site: [SITE] - Snapshot date: [DATE] - Buckets: [INDEXED, EXCLUDED, ERROR, VALID WITH WARNING] - Counts: [OR "INVENT PLAUSIBLE"] - Prior snapshot if any: [OR "INVENT A SMALL SHIFT"] </inputs> <task> Build the dashboard with: a header for [SITE] and the snapshot date; KPI cards (indexed, excluded, error, change versus prior); a donut or stacked bar of buckets; a 6-week trend of indexed versus error if you seed a short series; a reason table (reason, count, share, severity); and an error-slice callout. Compute shares from the counts. Clicking a bucket filters the reason table. Severity is an editable map (error = high, excluded crawled currently not indexed = medium, and so on), shown on the page. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Bucket counts and reasons in labeled JS constants at the top so I can swap a coverage export later. - Do not invent a live Search Console API. Sample data only. - Error slice visually loud. Accessible contrast. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write share math and which constants to replace. </format>

๐Ÿ’ก

Pro tip: Lead with errors that block indexing. A pretty Core Web Vitals card will not save pages Google cannot see.

Excluded URL Watchlist

12/30

โœจ What it does

Claude builds an excluded-URL watchlist for [SITE] with reason codes, age, and a fix-first list as a working screen you can click in the chat. Open a crawled-not-indexed row, then swap the sample numbers for your excluded URLs.

You are a technical SEO analyst who builds excluded-URL watchlists that force a fix, noindex, or leave-it decision. <context> I need an excluded URL watchlist as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic excluded rows so I can click the working screen in the chat. </context> <inputs> - Site: [SITE] - Reasons to include: [E.G. CRAWLED CURRENTLY NOT INDEXED, DISCOVERED NOT INDEXED, ALTERNATE WITH CANONICAL, BLOCKED BY ROBOTS, EXCLUDED BY NOINDEX] - Sample URLs: [12-20 OR "INVENT REALISTIC PATHS"] - Fix-first rule: [E.G. MONEY URL + CRAWLED NOT INDEXED + AGE OVER 14 DAYS] - Today constant: [DATE] </inputs> <task> Build the dashboard with: a header for [SITE]; KPI cards (excluded rows, crawled not indexed, discovered not indexed, fix-first count); a bar of count by reason; a sortable watchlist (url, reason, first seen, age days, page type if tagged, suggested action); reason chips that filter the table; and a fix-first list using my rule. Compute age from first seen and a today constant. Suggested actions come from an editable reason-to-action map (for example alternate with canonical = confirm canonical, noindex = leave or remove noindex). Clicking a row opens the suggested action. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - URL rows and the action map in labeled JS constants at the top so I can swap an excluded-URL export later. - Suggested actions are rules I can edit, not a strategy memo. - Accessible contrast. Sort default: age descending. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write the age and fix-first rules and which array to replace. </format>

๐Ÿ’ก

Pro tip: Age from the first seen excluded date, not from last recrawl. A URL excluded for 90 days is a different job from one excluded this week.

Crawl Error Board

13/30

โœจ What it does

Claude builds a crawl error board for [PROPERTY] with 4xx, 5xx, and a broken-URL table as a working screen you can click in the chat. Sort by status, then swap the sample numbers for your crawl error report.

You are a technical SEO analyst who builds crawl error boards that separate broken cleanup from live incidents. <context> I need a crawl error dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic status rows so I can click the working screen in the chat. </context> <inputs> - Property: [PROPERTY] - Crawl date: [DATE] - Error samples: [12-20 URLS OR "INVENT REALISTIC ONES"] - Statuses: [E.G. 404, 410, 500, 503, SOFT 404] - Incident rule: [E.G. 5XX ON A TAGGED MONEY URL] </inputs> <task> Build the dashboard with: a header for [PROPERTY]; KPI cards (error URLs, 4xx, 5xx, incidents); a stacked bar of status over a short week series if you seed one; a sortable table (url, status, page type, last seen, inbound links if given, severity); chips for 4xx / 5xx / all; and a broken-URL incident list using my rule. Compute counts from the rows. Severity is an editable map (5xx = high, 404 on money = high, 404 on old blog = low). Search filters the table. Clicking a status chip updates every widget. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Error rows in labeled JS constants at the top so I can swap a crawl error report later. - Do not invent server logs. Status and URL only. - Incident rows red. Accessible contrast. Search works. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write severity rules and which array to replace. </format>

๐Ÿ’ก

Pro tip: Split 4xx from 5xx. A not-found URL you meant to retire is cleanup. A 500 on a live money URL is an incident.

Sitemap Versus Indexed

14/30

โœจ What it does

Claude builds a sitemap versus indexed board for [SITEMAP] with submitted, indexed, and a missing-URL list as a working screen you can click in the chat. Open a missing row, then swap the sample numbers for your sitemap status.

You are a technical SEO analyst who reconciles sitemap submitted URLs against what is indexed. <context> I need a sitemap versus indexed dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic URL rows so I can click the working screen in the chat. </context> <inputs> - Sitemap name or URL: [SITEMAP] - Site: [SITE] - Submitted count: [OR "INVENT"] - Indexed count: [OR "INVENT"] - Sample missing and extra URLs: [OR "INVENT REALISTIC PATHS"] </inputs> <task> Build the dashboard with: a header for [SITEMAP]; KPI cards (submitted, indexed, missing from index, indexed but not in sitemap); a two-circle or grouped bar of submitted versus indexed; a missing-URL list (in sitemap, not indexed); an extra-URL list (indexed, not in sitemap); and a table with a status chip per URL (in both / missing / extra). Compute missing as submitted minus overlap, extra as indexed minus overlap, from a sample URL array with two boolean flags (inSitemap, indexed). Clicking missing filters the table. Do not invent lastmod facts I did not seed. Empty lastmod is allowed. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - URL flags in labeled JS constants at the top so I can swap a sitemap status export later. - Show the overlap math on the page. Accessible contrast. - Do not invent a live sitemap API. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write overlap math and which array to replace. </format>

๐Ÿ’ก

Pro tip: A URL in the sitemap that is not indexed is the row that matters. Indexed URLs that are not in the sitemap are a different cleanup.

New URL Discovery Lag

15/30

โœจ What it does

Claude builds a new-URL discovery board for [SITE] with found dates, first index, and a lag list as a working screen you can click in the chat. Age-sort the lag, then swap the sample numbers for your URL inspection log.

You are a technical SEO analyst who measures how long new URLs wait to be discovered and indexed. <context> I need a new-URL discovery lag dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic new URLs so I can click the working screen in the chat. </context> <inputs> - Site: [SITE] - New URLs: [10-16 PATHS WITH PUBLISH DATES OR "INVENT"] - Discovery date and first index date per URL: [OR "INVENT CONSISTENT LAGS"] - Lag target days: [E.G. 7] - Today constant: [DATE] </inputs> <task> Build the dashboard with: a header for [SITE]; KPI cards (new URLs, median days to discovery, median days to index, still waiting); a histogram of lag days; a table (url, published, discovered, indexed, days to discovery, days to index, status); and a lag list where days to index exceed the target, or where index is still empty. Compute days from the dates. Still-waiting rows use the today constant and show as waiting, not as a fake zero lag. Clicking a status chip (indexed / waiting / discovered only) filters the table. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - URL dates in labeled JS constants at the top so I can swap a URL inspection log later. - Waiting labeled waiting. Accessible contrast. - Do not invent rankings. Dates and lag only. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write lag math and which array to replace. </format>

๐Ÿ’ก

Pro tip: Start the clock on the publish or first-seen date, not on the day you remembered to inspect. A two-week lag on a news URL is a crawl problem.

These prompts give you the what. Tutorials give you the why.

Learn when to use extended thinking, how to build Claude Projects, and workflows that compound. 300+ tutorials and growing.

Try AI Academy Free

Cannibalization

5 prompts

Query Cannibalization Finder

16/30

โœจ What it does

Claude builds a query cannibalization finder for [QUERY] with ranking URLs, click share, and a winner pick as a working screen you can click in the chat. Click the split query, then swap the sample numbers for your query-by-page export.

You are an SEO analyst who finds queries where two or more of our URLs split impressions. <context> I need a query cannibalization finder as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic query-by-page rows so I can click the working screen in the chat. </context> <inputs> - Focus query example: [QUERY] - Site: [SITE] - Period: [E.G. LAST 28 DAYS] - Cannibal rule: [E.G. TWO PLUS URLS EACH WITH 15%+ IMPRESSION SHARE ON THE SAME QUERY] - Sample query-page pairs: [OR "INVENT A REALISTIC SET"] </inputs> <task> Build the dashboard with: a header for [SITE]; KPI cards (queries scored, cannibalized queries, worst split, unique URLs in fights); a table of cannibalized queries (query, URL A, URL B, impressions A/B, clicks A/B, position A/B, impression share); a stacked bar of click share for the selected query; and a winner-pick note using a simple rule (most clicks, then best position) labeled as a rule, not a mandate. Compute impression share per URL on that query. Queries with only one URL do not appear on the fight list. Clicking a query updates the stacked bar and the winner note. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Query-page rows in labeled JS constants at the top so I can swap a Search Console query-by-page export later. - Show the cannibal rule on the page. Do not invent a third domain. - Accessible contrast. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write share and winner rules and which array to replace. </format>

๐Ÿ’ก

Pro tip: A query is cannibalized when two of your URLs both earn impressions. One URL with 99 percent of clicks is not a fight. It is a winner.

Duplicate Title Cluster

17/30

โœจ What it does

Claude builds a duplicate-title cluster board for [SITE] with matching titles, URLs, and a merge list as a working screen you can click in the chat. Open a cluster, then swap the sample numbers for your title crawl.

You are an SEO analyst who clusters pages that share an exact title so the merge list is honest. <context> I need a duplicate-title cluster dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic titles so I can click the working screen in the chat. </context> <inputs> - Site: [SITE] - Crawl of titles: [OR "INVENT 20-30 URLS WITH SOME DUPLICATE TITLES"] - Index status if known: [OR "UNKNOWN"] - Merge rule: [E.G. KEEP THE URL WITH MOST CLICKS] - Period for clicks if given: [E.G. LAST 28 DAYS] </inputs> <task> Build the dashboard with: a header for [SITE]; KPI cards (pages crawled, duplicate titles, clusters of 2+, singleton titles); a cluster list grouped by exact title; a selected-cluster table (url, title, clicks if given, index status); and a merge list that names a keep URL from my rule and the others as consolidate or retitle. Compute clusters in JS by grouping on normalized title (trim, collapse spaces, case fold). Singles do not appear on the merge list. Clicking a cluster opens its URLs. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - URL-title rows in labeled JS constants at the top so I can swap a title crawl later. - Keep/consolidate is a rule, not a mandate. Accessible contrast. - Do not invent body copy. Titles and optional clicks only. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write the cluster and keep rules and which array to replace. </format>

๐Ÿ’ก

Pro tip: Cluster on the exact title string first. Near-duplicates are a second pass. Mixing them will hide the true copy-paste titles.

Same Intent Page Clash

18/30

โœจ What it does

Claude builds a same-intent clash board for [TOPIC] with overlapping pages, queries, and a keep-or-merge list as a working screen you can click in the chat. Compare the two URLs, then swap the sample numbers for your overlapping queries.

You are an SEO strategist who finds pages that fight for the same intent because they share queries. <context> I need a same-intent page clash dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with overlapping query sets so I can click the working screen in the chat. </context> <inputs> - Topic: [TOPIC] - Candidate pages: [3-6 PATHS OR "INVENT"] - Top queries per page: [OR "INVENT OVERLAPS"] - Clash rule: [E.G. 3+ SHARED QUERIES OR 20%+ QUERY OVERLAP] - Site: [SITE] </inputs> <task> Build the dashboard with: a header for [TOPIC]; KPI cards (pages, clash pairs, strongest overlap, unique queries); a pair table (url A, url B, shared query count, overlap percent, sample shared queries); a Venn-style or two-column query list for the selected pair; and a keep-or-merge list using a simple rule (keep the URL with more clicks, merge or differentiate the other) labeled as a rule. Compute overlap as shared queries / union of queries for that pair. Pairs under the clash rule stay off the fight list. Clicking a pair updates the shared query list. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Page-query arrays in labeled JS constants at the top so I can swap overlapping query exports later. - Do not invent intent labels I did not give. Overlap math only. - Accessible contrast. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write overlap math and which arrays to replace. </format>

๐Ÿ’ก

Pro tip: Clash means shared queries, not similar slugs. Two pages that never rank for the same query are not cannibalizing, even if the titles feel close.

Canonical Conflict Board

19/30

โœจ What it does

Claude builds a canonical conflict board for [SITE] with declared versus chosen URLs and a mismatch list as a working screen you can click in the chat. Open a mismatch, then swap the sample numbers for your canonical crawl.

You are a technical SEO analyst who builds canonical conflict boards from declared and chosen URLs. <context> I need a canonical conflict dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic crawl rows so I can click the working screen in the chat. </context> <inputs> - Site: [SITE] - Rows: [URL, DECLARED CANONICAL, CHOSEN CANONICAL OR "INVENT A MIX OF MATCH AND MISMATCH"] - Conflict types: [SELF OK, MISMATCH, CHAIN, LOOP, CROSS DOMAIN] - Money URL tags if any: [OR "NONE"] </inputs> <task> Build the dashboard with: a header for [SITE]; KPI cards (rows, mismatches, chains, loops); a type bar; a mismatch table (url, declared, chosen, type, money yes/no); chips for type; and a mismatch list with a suggested check (confirm declared, fix loop, drop cross-domain) from an editable map. Classify in JS: self ok when url equals declared and declared equals chosen or chosen is empty; mismatch when declared does not equal chosen; chain when declared points at a URL whose declared is a third URL; loop when A declares B and B declares A. Clicking a type filters the table. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Canonical rows in labeled JS constants at the top so I can swap a canonical crawl later. - Show the classification rules on the page. Accessible contrast. - Do not invent Google-chosen values I marked unknown. Unknown chosen is its own type. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write the classification rules and which array to replace. </format>

๐Ÿ’ก

Pro tip: A mismatch is declared canonical not equal to the URL Google chose, or two live URLs pointing at each other. Self-canonical on a single live URL is healthy.

Internal Link Dilution

20/30

โœจ What it does

Claude builds an internal-link dilution board for [MONEY PAGE] with inbound links split across twin URLs as a working screen you can click in the chat. Rank the twins, then swap the sample numbers for your internal-link export.

You are an SEO analyst who shows when internal links are split across twin URLs instead of concentrating on the money page. <context> I need an internal-link dilution dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic inbound counts so I can click the working screen in the chat. </context> <inputs> - Money page: [MONEY PAGE] - Twin or competing URLs: [2-5 PATHS] - Unique inbound links per URL: [OR "INVENT PLAUSIBLE"] - Dilution rule: [E.G. A TWIN HAS 40%+ OF THE MONEY PAGE INBOUNDS] - Site: [SITE] </inputs> <task> Build the dashboard with: a header for [MONEY PAGE]; KPI cards (money inbounds, twin inbounds, dilution ratio, twins over the rule); a bar of unique inbounds by URL; a table (url, unique inbounds, share of the set, sample anchors if given); and a twin list that fails the dilution rule. Compute share as that URL's unique inbounds over the set total. Dilution ratio is the largest twin / money page. Clicking a twin lists sample linking paths from a small nested array. Do not invent PageRank. Counts only. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Inbound counts in labeled JS constants at the top so I can swap an internal-link export later. - Show the dilution rule on the page. Accessible contrast. - Unique linking URLs, not raw hits, labeled on the page. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write dilution math and which arrays to replace. </format>

๐Ÿ’ก

Pro tip: Count unique linking URLs, not raw crawl hits. A footer link on every page will make every twin look equally loved.

Content

5 prompts

Content Velocity Board

21/30

โœจ What it does

Claude builds a content velocity board for [BLOG] with publishes per week, organic clicks, and a stall week as a working screen you can click in the chat. Check the stall, then swap the sample numbers for your publish log and Search Console.

You are a content SEO analyst who reads publishing pace next to organic clicks, not as a vanity post count. <context> I need a content velocity dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with a realistic publish log so I can click the working screen in the chat. </context> <inputs> - Blog or site: [BLOG] - Weeks: [E.G. LAST 16] - Target publishes per week: [E.G. 2] - Weekly organic clicks: [OR "INVENT A SERIES THAT LAGS PUBLISHES"] - Stall rule: [E.G. 0 PUBLISHES FOR 2+ WEEKS] </inputs> <task> Build the dashboard with: a header for [BLOG]; KPI cards (posts in range, average per week, versus target, latest-week clicks); a weekly bar of publishes with the target line; a line of organic clicks on the same weeks; a table (week, publishes, clicks, click change); and a stall-week callout using my rule. Keep publishes and clicks in separate labeled series. Do not claim a publish caused a click move. Show timing only. Clicking a stall week lists the nearby posts from a sample title array. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Weekly series in labeled JS constants at the top so I can swap a publish log and a Search Console weekly total later. - No causal language. Accessible contrast. - Below-target weeks flagged. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then explain stall math and which series to replace. </format>

๐Ÿ’ก

Pro tip: Count published URLs that are indexable, not drafts. A busy week of noindex outlines is not velocity.

Publish to Rank Lag

22/30

โœจ What it does

Claude builds a publish-to-rank lag board for [CONTENT TYPE] with days to first page-one hit and a slow list as a working screen you can click in the chat. Open a slow URL, then swap the sample numbers for your publish dates and positions.

You are a content SEO analyst who measures how long a new URL waits to earn a first strong rank. <context> I need a publish-to-rank lag dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic new URLs so I can click the working screen in the chat. </context> <inputs> - Content type: [CONTENT TYPE] - Site: [SITE] - New URLs with publish dates: [10-16 OR "INVENT"] - First date they hit a position at or above: [E.G. POSITION 10, OR "INVENT LAGS"] - Slow rule: [E.G. OVER 28 DAYS OR STILL WAITING] </inputs> <task> Build the dashboard with: a header for [CONTENT TYPE]; KPI cards (URLs, median days to page one, still waiting, slow count); a histogram of lag days; a table (url, published, first page-one date, days, current position, clicks); and a slow list. Compute days from publish to first page-one date. Still-waiting rows have no page-one date and use a today constant, shown as waiting. Page one means position at or under an editable threshold (default 10). Clicking a slow URL shows its sample weekly position sparkline. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - URL dates and positions in labeled JS constants at the top so I can swap publish dates and a rank export later. - Waiting labeled waiting. Accessible contrast. - Do not invent traffic forecasts. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write lag math and which arrays to replace. </format>

๐Ÿ’ก

Pro tip: Start the clock on publish date, not on the day you added the URL to a tracker. A four-week lag on a comparison page is a different story from a news post.

Freshness Decay Watch

23/30

โœจ What it does

Claude builds a freshness decay watch for [SITE] with age, click change, and a refresh list as a working screen you can click in the chat. Sort by decay, then swap the sample numbers for your page ages and clicks.

You are a content SEO analyst who finds aging URLs that still earn impressions but are losing clicks. <context> I need a freshness decay dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic page ages so I can click the working screen in the chat. </context> <inputs> - Site: [SITE] - Period versus prior: [E.G. LAST 28 VS PRIOR 28] - Pages: [12-20 WITH PUBLISH OR LAST-UPDATED DATES] - Decay rule: [E.G. AGE OVER 180 DAYS AND CLICKS DOWN 20% AND IMPRESSIONS STILL OVER 500] - Today constant: [DATE] </inputs> <task> Build the dashboard with: a header for [SITE]; KPI cards (pages scored, decaying, median age, prune-like count); a scatter of age versus click change; a sortable table (url, age days, last updated, clicks, prior clicks, change, impressions, flag decay/prune/ok); and a refresh list using my decay rule. Compute age from last updated or publish, using last updated when both exist. Prune-like means clicks and impressions both under editable floors. Clicking a decay row highlights the scatter point. Do not invent a refresh outline. Flags only. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Page rows in labeled JS constants at the top so I can swap ages and a Search Console pages export later. - Show decay and prune rules on the page. Accessible contrast. - Sort default: click change ascending. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write the flags and which array to replace. </format>

๐Ÿ’ก

Pro tip: Decay is clicks down on an aging URL that still gets impressions. A dead URL with no impressions is a prune candidate, not a refresh.

Topic Cluster Coverage

24/30

โœจ What it does

Claude builds a topic cluster coverage board for [PILLAR TOPIC] with missing subtopics, ranks, and a next-brief list as a working screen you can click in the chat. Click a gap, then swap the sample numbers for your cluster map and queries.

You are an SEO strategist who maps a pillar topic to supporting URLs and shows the holes. <context> I need a topic cluster coverage dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with a realistic cluster map so I can click the working screen in the chat. </context> <inputs> - Pillar topic: [PILLAR TOPIC] - Pillar URL: [PATH OR "INVENT"] - Planned subtopics: [8-12] - Existing URLs and their best query plus position: [OR "INVENT A PARTIAL MAP"] - Covered rule: [E.G. LIVE URL AND POSITION AT OR UNDER 20] </inputs> <task> Build the dashboard with: a header for [PILLAR TOPIC]; KPI cards (planned subtopics, covered, missing, median position of covered); a cluster map or card grid (subtopic, url or missing, position, clicks); a coverage bar; and a next-brief list of missing subtopics with a sample target query. Compute covered from my rule. Missing cards are visually loud. Clicking a gap card opens the brief line. Do not invent a full outline. One target query per missing subtopic, marked as a sample I can edit. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Cluster rows in labeled JS constants at the top so I can swap a cluster map and query export later. - Do not invent search volume I did not give. Mark missing volume as [VERIFY]. - Accessible contrast. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write the covered rule and which array to replace. </format>

๐Ÿ’ก

Pro tip: Keep gap keywords tied to a subtopic you already planned. A keyword with no honest URL is a brief, not a dashboard win.

Output Versus Organic Impact

25/30

โœจ What it does

Claude builds an output-versus-impact scorecard for [EDITORIAL CALENDAR] with ships, clicks gained, and a zero-lift list as a working screen you can click in the chat. Open a zero-lift post, then swap the sample numbers for your ships and Search Console.

You are a content SEO analyst who puts shipped posts next to the organic clicks they added in a fixed window. <context> I need an output-versus-organic-impact scorecard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with a realistic ship log so I can click the working screen in the chat. </context> <inputs> - Calendar or site: [EDITORIAL CALENDAR] - Window after publish: [E.G. FIRST 28 DAYS] - Shipped posts: [10-16 TITLES WITH DATES OR "INVENT"] - Clicks in that window: [OR "INVENT A MIX OF LIFT AND ZERO"] - Zero-lift rule: [E.G. UNDER 20 CLICKS IN THE WINDOW AND AGE OVER THE WINDOW] </inputs> <task> Build the dashboard with: a header for [EDITORIAL CALENDAR]; KPI cards (ships, median clicks in window, zero-lift count, best ship); a bar of clicks in window by post; a weekly ships versus total new-post clicks line; a table (title, published, window clicks, current position, status ok/too new/zero lift); and a zero-lift list. Posts younger than the window are too new, not zero lift. Compute status in JS. Do not claim a post caused a site-wide click move. Per-URL window clicks only. Clicking a zero-lift row highlights the bar. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Ship rows in labeled JS constants at the top so I can swap the calendar and a Search Console pages export later. - Too-new labeled too new. Accessible contrast. - No causal site-wide language. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write window and zero-lift rules and which array to replace. </format>

๐Ÿ’ก

Pro tip: One window per board, such as 28 days after publish. Lifetime clicks will make an old hit look like this month's win.

Most people use 10% of Claude. Tutorials unlock the rest.

AI Academy: 300+ hands-on tutorials on Claude, ChatGPT, Midjourney, and 50+ AI tools. New tutorials added every week.

Start Your Free Trial

Technical

5 prompts

Core Web Vitals Board

26/30

โœจ What it does

Claude builds a Core Web Vitals board for [SITE] with LCP, INP, CLS, and a failing-URL list as a working screen you can click in the chat. Open a failing URL, then swap the sample numbers for your CrUX or Search Console vitals.

You are a technical SEO analyst who builds Core Web Vitals boards from field metrics a crawl review can trust. <context> I need a Core Web Vitals dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic LCP, INP, and CLS rows so I can click the working screen in the chat. </context> <inputs> - Site: [SITE] - URL groups or pages: [8-16 OR "INVENT REALISTIC PATHS"] - Metrics per row: [LCP, INP, CLS, GOOD/NEEDS IMPROVEMENT/POOR] - Thresholds: [LCP 2.5S, INP 200MS, CLS 0.1, OR "USE EDITABLE CONSTANTS"] - Period: [E.G. LAST 28 DAYS] </inputs> <task> Build the dashboard with: a header for [SITE]; KPI cards (percent good LCP, INP, CLS, failing URL groups); three vital cards with the threshold and a pass/fail; a table (url or group, LCP, INP, CLS, status per vital, overall); a failing-URL list where any vital is poor; and a short trend of percent good if you seed 6 weeks. Compute status from editable thresholds in JS. Clicking a failing URL highlights the row. Do not invent lab-only scores. Field metrics only. Show the thresholds on the page. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Vitals rows and thresholds in labeled JS constants at the top so I can swap a CrUX or Search Console vitals export later. - Poor rows flagged. Accessible contrast, not color-only. - Do not invent a live CrUX API. Sample data only. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write the threshold rules and which constants to replace. </format>

๐Ÿ’ก

Pro tip: Use field data thresholds you can edit. A pretty lab score on one URL will not match the Search Console URL group that is failing.

Crawl Budget Watch

27/30

โœจ What it does

Claude builds a crawl budget watch for [PROPERTY] with crawled URLs, wasted hits, and a waste list as a working screen you can click in the chat. Sort wasted crawl, then swap the sample numbers for your crawl stats.

You are a technical SEO analyst who builds crawl budget watches that name wasted hits, not a vague crawl volume. <context> I need a crawl budget watch as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic crawl rows so I can click the working screen in the chat. </context> <inputs> - Property: [PROPERTY] - Days: [E.G. LAST 14] - Daily crawled count: [OR "INVENT PLAUSIBLE"] - Sample crawled URLs with type: [MONEY, PARAM, FACET, 404, OTHER] - Waste types: [PARAM, FACET, 404] </inputs> <task> Build the dashboard with: a header for [PROPERTY]; KPI cards (URLs crawled, wasted hits, waste share, money-URL share); a daily line of crawl volume; a stacked bar of type mix; a waste list (url, type, hits, last crawled); and a table of types with hits and share. Compute waste as hits whose type is in my waste list. Clicking a type filters the waste list. Do not invent server capacity. Counts only. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Daily totals and URL-type rows in labeled JS constants at the top so I can swap crawl stats later. - Show the waste types on the page. Accessible contrast. - Do not invent a live log API. Sample data only. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write waste math and which arrays to replace. </format>

๐Ÿ’ก

Pro tip: Waste is crawl on URLs you do not want indexed (params, faceted, 404). A busy crawl on money URLs is not waste.

Redirect Chain Board

28/30

โœจ What it does

Claude builds a redirect chain board for [SITE] with hop count, final status, and a chain list as a working screen you can click in the chat. Open a long chain, then swap the sample numbers for your redirect crawl.

You are a technical SEO analyst who builds redirect chain boards that show hop count and the final status. <context> I need a redirect chain dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic redirect paths so I can click the working screen in the chat. </context> <inputs> - Site: [SITE] - Sample start URLs: [10-16 OR "INVENT REALISTIC CHAINS"] - Hops and final status per start: [OR "INVENT 1-4 HOP MIX"] - Long-chain rule: [E.G. 3 OR MORE HOPS] - Loop examples if any: [OR "INCLUDE ONE LOOP"] </inputs> <task> Build the dashboard with: a header for [SITE]; KPI cards (start URLs, median hops, long chains, loops); a hop-count histogram; a chain table (start, hop count, final url, final status, loop yes/no); a selected-chain stepper that lists each hop; and a long-chain list using my rule. Compute hop count from a hops array on each row. A loop is when a URL repeats in the path. Clicking a long chain opens the stepper. Do not invent link equity math. Hops and status only. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Chain rows in labeled JS constants at the top so I can swap a redirect crawl later. - Loops flagged. Accessible contrast. - Do not invent a live crawl API. Sample data only. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write hop and loop rules and which array to replace. </format>

๐Ÿ’ก

Pro tip: A single hop to HTTPS is fine. Three hops through old http and www versions is the row to flatten.

Structured Data Errors

29/30

โœจ What it does

Claude builds a structured-data error board for [SITE] with rich-result types, errors, and a fix list as a working screen you can click in the chat. Filter a type, then swap the sample numbers for your enhancement report.

You are a technical SEO analyst who builds structured-data error boards from Search Console enhancement style counts. <context> I need a structured-data error dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic rich-result rows so I can click the working screen in the chat. </context> <inputs> - Site: [SITE] - Types: [E.G. ARTICLE, PRODUCT, FAQ, BREADCRUMB, ORGANIZATION] - Valid, warning, and error counts per type: [OR "INVENT PLAUSIBLE"] - Sample error URLs: [OR "INVENT"] - Priority types I care about: [LIST] </inputs> <task> Build the dashboard with: a header for [SITE]; KPI cards (types tracked, error items, warning items, valid items); a stacked bar of valid / warning / error by type; a type table with those counts and error share; chips that filter to one type; and a fix list of sample URLs (url, type, issue, severity). Compute error share as errors / (valid + warning + error). Priority types I named sort first. Clicking a type filters the fix list. Do not invent rich-result impressions I did not seed. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Type counts and error URLs in labeled JS constants at the top so I can swap an enhancement report later. - Error share computed. Accessible contrast. - Do not invent a live Search Console API. Sample data only. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write error-share math and which arrays to replace. </format>

๐Ÿ’ก

Pro tip: Lead with types you actually want in the SERP (article, product, FAQ). A leftover recipe error on a SaaS blog is cleanup, not the first fight.

Index Hygiene Board

30/30

โœจ What it does

Claude builds an index hygiene board for [SITE] with noindex, robots blocks, and a mixed-signal list as a working screen you can click in the chat. Open a mixed-signal URL, then swap the sample numbers for your robots and noindex crawl.

You are a technical SEO analyst who builds index hygiene boards from robots, noindex, and sitemap flags. <context> I need an index hygiene dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic crawl flags so I can click the working screen in the chat. </context> <inputs> - Site: [SITE] - Sample URLs with flags: [robots allow/disallow, meta noindex yes/no, in sitemap yes/no, OR "INVENT A MIX"] - Mixed-signal rule: [E.G. IN SITEMAP AND NOINDEX, OR DISALLOW AND INDEX] - Money URL tags if any: [OR "NONE"] </inputs> <task> Build the dashboard with: a header for [SITE]; KPI cards (URLs scored, noindex, robots blocked, mixed signals); a bar of flag combinations; a sortable table (url, robots, noindex, sitemap, mixed yes/no, money yes/no); chips for mixed / noindex / blocked; and a mixed-signal list using my rule with a suggested check (remove from sitemap, drop noindex, or keep blocked). Compute mixed in JS from the flags. Clicking a mixed row opens the suggested check. Do not invent index counts from Search Console unless I seed them. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Flag rows in labeled JS constants at the top so I can swap a robots and noindex crawl later. - Show the mixed-signal rule on the page. Accessible contrast. - Suggested checks are rules, not a mandate. </constraints> <format> Return the full HTML so I can click the working screen in the chat, then write the mixed-signal rule and which array to replace. </format>

๐Ÿ’ก

Pro tip: A mixed signal is indexable in robots but noindex in the page, or the reverse, or a sitemap URL that is noindex. Pick one source of truth per URL.

Free tool

SEO Meta Generator

Generate a title tag, meta description, and slug options.

Try it free โ†’

Frequently Asked Questions

Yes. Each prompt asks Claude to return one self-contained HTML file with inline CSS, vanilla JS, and a charting library from a CDN, pre-seeded with realistic sample rows. It opens as a working screen you can click in the chat, with KPI cards, charts, and watchlists already populated.
Every prompt tells Claude to keep sample data in labeled JS constants near the top of the file. Replace those arrays with a Search Console export (queries, pages, coverage, or enhancements) or a crawl CSV. The cards and charts recompute from the same formulas. Click around on the sample first so you know which number you are about to overwrite.
The dashboards hub covers analytics, sales, finance, SaaS, and marketing in one library. Marketing dashboards mix acquisition, campaigns, content, funnel, a short SEO set, and spend. This page is only SEO work: rankings, clicks, coverage, cannibalization, content velocity, and technical. Use this set when the screen has to survive an SEO review.
The sample numbers are invented so the screen renders. The formulas are real and written on the page or in the closing note: CTR as clicks over impressions, position change as prior minus current, coverage shares, cannibal impression share, publish-to-rank lag, and Core Web Vitals pass/fail from editable thresholds. Read that note, then swap the constants. If a target or window is missing, the prompt tells Claude to mark [VERIFY] instead of guessing.
Because it is a single HTML file, you can copy it out of the chat, save it as dashboard.html, and open it in any browser or put it on a static host. For a live review screen, follow Claude's closing note on swapping the sample arrays for a Search Console CSV or a fetch. Keep secrets out of the file.

Prompts are the starting line. Tutorials are the finish.

A growing library of 300+ hands-on tutorials on ChatGPT, Claude, Midjourney, and 50+ AI tools. New tutorials added every week.

7-day free trial. Cancel anytime.