ai-citations-tracker
Use when you need to **measure** (not just describe) brand citation frequency across AI search surfaces over time. Runs a configurable brand-mention prompt set…
Use when an e-commerce or content site wants to deeply understand WHO their organic competitors are (often surprising — not the brands they think) and WHERE the competitors outrank them — e.g. "competitor analysis", "keyword gap analysis", "who outranks me",
$ npx -y skills add maxschottke-spec/seo-survival-kit --skill competitor-deep-audit --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/competitor-deep-auditContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when an e-commerce or content site wants to deeply understand WHO their organic competitors are (often surprising — not the brands they think) and WHERE the competitors outrank them — e.g. "competitor analysis", "keyword gap analysis", "who outranks me",
name: competitor-deep-audit description: 'Use when an e-commerce or content site wants to deeply understand WHO their organic competitors are (often surprising — not the brands they think) and WHERE the competitors outrank them — e.g. "competitor analysis", "keyword gap analysis", "who outranks me", "Wettbewerber-Lücken", "wo verlieren wir gegen die Konkurrenz", "content opportunities from competitor SERPs". Produces a prioritized opportunity list (keyword + search volume + competitor URL + your current position) for the next content-roadmap quarter. Triggers also from "Sistrix Konkurrenten" or "DataForSEO competitors".' user-invocable: true argument-hint: '[domain]' allowed-tools: [Read, Write, Bash(node:*), Bash(curl:*)] license: MIT metadata: author: Max Schottke version: '0.5.4' category: marketing
Identifies the **real organic competitors** of a target domain (not who the owner thinks competes, but who actually shows up in their SERPs), then for the top 5–8 competitors pulls a **keyword-gap-analysis**: keywords where competitors rank top-10 but the target does not, sorted by search volume × estimated traffic.
Output: a prioritized 30–100-item opportunity list for the next content roadmap.
**Don't use for:**
const competitorsResp = await d4sPost('/v3/dataforseo_labs/google/competitors_domain/live', {
target: 'example.com',
language_code: 'de',
location_code: 2276,
limit: 25,
});The response orders competitors by SERP-overlap (intersections) × keyword count × ETV. Top 5–8 entries = your real competitors.
**Surprise factor:** typically 30–60 % of real competitors are NOT the brands the owner names off the cuff. Often blogs, info-sites, marketplaces, or niche players that swallow long-tail traffic.
const ranked = await d4sPost('/v3/dataforseo_labs/google/ranked_keywords/live', {
target: 'competitor.com',
language_code: 'de',
location_code: 2276,
limit: 500, // wide net
order_by: ['ranked_serp_element.serp_item.estimated_traffic_volume,desc'],
});For each competitor's top-ranking keyword (position ≤ 10):
Sort by opportunity score, take top 100, that's your roadmap.
Bucket the opportunities:
Output as a table:
| # | Keyword | SV | Your Pos | Best Competitor | Their Pos | Their URL | Gap Type | Action | |---|---------|----|---------:|------------------|----------:|-----------|----------|--------| | 1 | "outdoor jacke wasserdicht damen" | 5400 | — | bergfreunde.de | 3 | /jacken/.../damen-wasserdicht | category-missing | Build dedicated category page | | 2 | "merino socken test 2026" | 880 | 47 | outdoor-magazin.de | 2 | /test/merino-socken-2026 | content/blog | Write tested-buyer-guide |
A realistic content-roadmap fits 5–15 new pieces per quarter (depending on team size). From your top-100, pick:
// Only available with Sistrix API-Pro tier — basic tier returns error_code 5001
const sxComp = await sistrix('domain.competitors.seo', {
domain: 'example.com',
country: 'de',
num: 20,
});Compare DataForSEO competitors vs Sistrix competitors — high overlap (>60 %) means your competitor set is robust. Low overlap → re-check both datasets, often signals a recent SERP volatility event.
| Pitfall | Mitigation | |---------|------------| | Treating Amazon / Wikipedia / Marketplaces as "competitors" | Filter them out — they're SERP-fixtures, not actionable competitors | | Going after very high-volume head terms | Usually impossibly competitive — focus on 100-5000 SV mid-tail | | Picking opportunities matching only blog content | If your URL slug structure is /blog/ then your e-commerce business may not benefit much from ranked blog posts — prefer category/product gaps | | Ignoring intent mismatch | Competitor ranks for "X review" — but you sell X, not review X. Check intent alignment | | Cost spiral | DataForSEO ranked_keywords with `limit: 500` per competitor × 8 competitors = 4000 results. Cost: ~$0.20–$0.40. Cap reasonably. |
Recovery-first decision support for ecommerce/D2C SEO. Claude Code skills for Core Update recovery diagnosis, prioritized action plans, weekly monitoring, and a Change Governor / Settlement Gate that prevents over-optimizing during recovery windows.
Repo: maxschottke-spec/seo-survival-kit
Use when you need to **measure** (not just describe) brand citation frequency across AI search surfaces over time. Runs a configurable brand-mention prompt set…
Use when a site has lost visibility in AI search surfaces (Google AI Overviews, Google AI Mode, ChatGPT citations, Perplexity citations) or wants to…
Use when an e-commerce business sells across multiple channels (own shop, Amazon, OTTO, eBay, Etsy, Zalando, etc.) and wants to know which channel is actually…
Use when the user wants Google Search Console data pulled directly into the session instead of manually screenshotting / CSV-exporting from search.google.com.…
Use when a website experienced a sudden visibility/ranking drop that correlates with a published Google Core Update — symptoms include broad ranking loss…
Use when setting up automated weekly PageSpeed Insights tracking for a set of URLs — to catch performance regressions before users notice, or to validate that…