--- name: mini-seo-audit description: "Run a fast SEO domain audit using the Ahrefs MCP connector plus light web research then write it up as a Word document. Use this skill whenever someone asks to audit a domain, run an SEO audit, check the SEO health of a site, size up a competitor, or says things like 'audit example.com', 'what does this domain look like organically', 'how big is competitor X', 'give me a bird's eye view of this site', or 'prep an SEO overview for Y'. Use it even when the request sounds quick - the fixed structure is the point and the whole thing runs in about 13 API calls." --- # Mini SEO Audit You are running a compact SEO domain audit using the Ahrefs MCP connector and your own web research. The output is a structured report in the chat, then the same report as a Word document. This is the small version on purpose. It is built to fit an Ahrefs Lite plan and to finish in one sitting. Nine sections, roughly 13 API calls, one file at the end. ## What you need before you start The domain. That is all. If the user has not given you one, ask for it and stop until they do. If the Ahrefs MCP connector is not available, say so plainly and stop. Do not substitute guessed numbers or third party estimates for Ahrefs data. ## Rules that apply throughout Follow these in every section. They are what keep the audit cheap and readable. - **Use subdomains mode** on every Ahrefs call, so the audit covers the whole domain - **Limit to 10 results per call.** This is a budget rather than a plan cap: Lite allows 100 rows per request and higher tiers allow more, but 10 rows fills every table in this skill and keeps the unit spend low - **Batch fields into one call.** If a field can ride along on a call you are already making, never make a second call for it - **Never repeat a call.** Data pulled in section 2 gets reused in section 6, it does not get re-fetched - **Derive, do not fetch.** Clusters come from grouping keywords you already have, not from a clustering endpoint - **Skip what you cannot access.** If a plan or a permission blocks an endpoint, note it in one line and move on. Do not retry and do not guess - **Be specific with numbers.** Every claim carries the figure behind it - **Tables over prose.** The report should be skimmable in 2 minutes - **Count every API call** and state the total at the end ## Flags Use these inline so the reader can scan for trouble: - `[!!]` critical, needs action now - `[!]` worth watching - `[+]` a strength worth protecting --- ## Section 1: Company overview No API calls. Use web research and your own knowledge. Cover: - What the company does and the product category it sits in - What it is best known for - What it also sells but is less associated with - Who it competes with commercially, which is not the same list as who it competes with for keywords - The leading marketing channel and organic's share of traffic, with a source - Any confirmed business context: funding, growth, layoffs, pivots, recent news Cite every claim. Where you could not find something, say so rather than filling the gap. Keep a running list as you go of anything unconfirmed, ambiguous or contradictory. It does not go in the body. It goes in the Open Questions section at the end. --- ## Section 2: Organic health Two calls. 1. Current organic traffic, keyword count and traffic value. Present as a summary table 2. Six months of traffic history. Present as a table with month, traffic and month on month change Flag any month on month move over 15%, then check it against confirmed Google updates. Name the update and its rollout dates where one lines up. Say plainly that no confirmed update matches where none does. Never imply causation from timing alone: The alignment is evidence, the diagnosis is the reader's. --- ## Section 3: What the site ranks for One call. Pull top organic keywords selecting keyword, volume, best_position, sum_traffic, keyword_difficulty plus **serp_features**. The serp_features field costs nothing extra on this call and carries the whole SERP feature picture, including AI Overviews. Group the keywords by parent topic yourself and report the 5 biggest clusters as a table: cluster, combined traffic, number of keywords. Under each cluster, list 3 example keywords with volume and position. Then flag the pattern, because the pattern is the finding. Everything sitting at position 2 with no position 1 is a different problem to a long tail with nothing above position 8. ### AI Overviews and SERP features From the same pull, with no second call: - Count how many of these keywords return `ai_overview` or `ai_overview_found` in serp_features, then report it as a share of the keywords pulled - Table the affected keywords with volume and current position, highest volume first - Name the other features that show up most often, such as `snippet`, `local_pack`, `shopping`, `video` or `question` - Flag whether AI Overviews are reaching the money terms or only the informational tail, because those are different problems with different urgency Be clear about the limit: This shows whether an AI Overview appears on a keyword the domain ranks for. Whether the domain is cited inside that overview needs Brand Radar, so say so rather than implying the two are the same. --- ## Section 4: Top pages One call. Pull top pages by traffic. Table: URL, monthly traffic, primary keyword, position. Flag the concentration risk. If the top 5 pages carry most of the traffic, say what share. --- ## Section 5: Geography One call. Pull organic metrics by country. Table: country, monthly visits, ranking keywords, share of total organic traffic. Flag the biggest gap between market size and current share. --- ## Section 6: Competitors Two calls, plus one per competitor. Pull top organic competitors by keyword overlap. Cross-reference that list against the commercial competitors you identified in section 1. Your final list of 3 must include the real business competitors even where their keyword overlap is lower, so drop the least commercially relevant overlap domains to make room. Pull current metrics for the 3 competitors in parallel calls. One table with only these columns: | Domain | Monthly traffic | vs [domain] | Keywords in pos 1-3 | Known for | |---|---|---|---|---| - **vs [domain]** as a plain multiple, such as "3.3x larger" or "0.4x of [domain]" - **Keywords in pos 1-3** as a share of total organic keywords, because it shows ranking efficiency rather than size Mark the audited domain's row clearly. Flag anything where a smaller competitor is outperforming on efficiency. --- ## Section 7: Authority One call per domain, for the audited domain and the 3 competitors. Table: domain, referring domains, total backlinks, domain rating. The finding here is rarely the raw number. Compare authority to traffic. A site with more referring domains than a competitor that outranks it has a structural problem, not a link problem, which is worth saying out loud. --- ## Section 8: Content gaps No new calls. Work from what you already pulled. First, from the top pages in section 4, list what the domain clearly has pages for. Then identify which of those are ranking outside the top 10, or not ranking at all for the obvious term. These are the fixes and they are cheaper than new content because the page already exists. Second, name the clusters the top 2 competitors rank for in positions 1 to 10 where this domain has nothing. Two tables: - **Fix first:** page, target keyword, volume, competitor position, this domain's position - **Build next:** cluster, estimated opportunity, which competitor owns it, 3 example keywords --- ## Section 9: Summary No API calls. Synthesise everything above. **Snapshot table**, one sentence per row: organic health, biggest strength, biggest risk, position against closest competitor, top priority action. **SWOT**, a 2x2 with 3 data-backed bullets per cell. Every bullet carries a number from the audit. If a bullet would work for any site in the category, cut it. **Priority actions**, up to 5, each with what to do, why it matters and the expected impact. **Open questions**, 4 to 6 bullets, each framed as a question. This is where everything unconfirmed goes: contradictory revenue figures, a traffic drop with more than one possible cause, data you could not reach, anything that would change the conclusion if the internal reality differs from the outside view. --- ## Final line State the total number of API calls made. --- ## Then write it up as a Word document Once the report is in the chat, build the same content as a .docx. Use the docx skill if it is available, otherwise write it with python-docx. Formatting: - Body text DM Sans 12, or Calibri if DM Sans is not installed - Headings in a single accent colour, applied consistently - Every table gets a header row with bold text and a light fill - Flags carried through as bold labels, since colour alone will not survive every export - Cover line at the top: domain, audit date and the single most important finding in one sentence - Page numbers in the footer Name the file `-seo-audit-.docx` and tell the user where it is. The file opens in Word, Pages and Google Docs, so it can be shared with someone who does not have Ahrefs and does not want a login. ## Where to take it next Mention these once, at the end, only if the user seems likely to want more: - A slide version, either from the built in presentation tools or by passing the report to a deck generator - A spreadsheet version, if they want to sort and filter the keyword and competitor tables rather than read them - Crawl data from a Screaming Frog export, which turns section 8 from a ranking gap list into a ranking and technical gap list - Search Console data, which replaces estimated traffic with actual clicks and impressions