ai-search-rescue
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 you need to **measure** (not just describe) brand citation frequency across AI search surfaces over time. Runs a configurable brand-mention prompt set weekly against ChatGPT (OpenAI API), Perplexity (Sonar API), and optionally Google AI Mode / AI Overviews / Bing
$ npx -y skills add maxschottke-spec/seo-survival-kit --skill ai-citations-tracker --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ai-citations-trackerContext preview
The summary Claude sees to decide when to auto-load this skill.
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 weekly against ChatGPT (OpenAI API), Perplexity (Sonar API), and optionally Google AI Mode / AI Overviews / Bing
name: ai-citations-tracker description: '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 weekly against ChatGPT (OpenAI API), Perplexity (Sonar API), and optionally Google AI Mode / AI Overviews / Bing Copilot / Claude.ai (manual workflow). Stores NDJSON history for trend analysis. Triggers from "track AI citations", "AI Overview citation tracker", "ChatGPT brand mention monitoring", "Perplexity citation tracking", "AI-Sichtbarkeit messen", "wie oft erwähnt ChatGPT meine Marke". Complements [[ai-search-rescue]]: that skill is the framework, this skill is the measurement loop.' user-invocable: true argument-hint: '[setup | run | analyze]' allowed-tools: [Read, Write, Bash(node:*), Bash(curl:*), Bash(launchctl:*), Bash(crontab:*)] license: MIT metadata: author: Max Schottke version: '0.5.4' category: marketing
Most "AI search visibility" advice is descriptive ("you should rank in AI Overviews"). This skill is the measurement loop: a weekly cron job that asks the same brand-mention prompts to AI surfaces, parses the answers for your brand vs competitors, and logs results to NDJSON for trend analysis.
This is the **possible-early-signal** companion to [[post-core-update-recovery]]:
**Don't use for:**
ai-citations-config.json (your prompts + competitors + API keys via env) ↓ ai-citations-fetch.example.js (run weekly via cron) ↓ ai-citations-history.ndjson (append-only, per-week records) ↓ your trend chart / Sistrix-style overlay
The script is **opt-in per AI surface**: skip surfaces where you don't have API access. Default: ChatGPT (OpenAI API) + Perplexity (Sonar API). Manual workflow appended for Google AI Mode / AI Overviews / Bing Copilot / Claude.ai (no stable public APIs for those as of 2026-05).
`ai-citations-config.json` (gitignored — see `SECURITY.md` at the repo root, in the repository, not shipped in the plugin package):
{
"brand": "Your Brand",
"brand_variants": ["Your Brand", "your-brand.com", "yourbrand"],
"competitors": ["competitor-a.com", "competitor-b.de", "competitor-c.io"],
"prompts": [
"Was ist die beste Matratze für Rückenschläfer in Deutschland?",
"Wo kaufe ich orthopädische Matratzen?",
"Vergleich von Matratzenmarken in Deutschland",
"Welche Matratzenmarke produziert in Deutschland?"
],
"surfaces": ["chatgpt", "perplexity"],
"output_dir": "./ai-citations-history"
}| Field | Required | Notes | |-------|----------|-------| | `brand` | yes | Canonical brand name as it appears in the wild | | `brand_variants` | yes | Other strings the model might use (domain, abbreviations, common typos) — used for fuzzy match | | `competitors` | yes | 3-15 domains for competitive context | | `prompts` | yes | 10-30 prompts covering category, problem-aware, comparison, brand-aware queries | | `surfaces` | yes | Subset of `["chatgpt", "perplexity"]` for now. Google AI Mode / AI Overviews / Bing Copilot are manual (see below) | | `output_dir` | no | Default `./ai-citations-history` — must be relative, no `..` |
API keys (env-only, never in config — same pattern as [[psi-weekly-cron-baseline]]):
export OPENAI_API_KEY=sk-... export PERPLEXITY_API_KEY=pplx-...
1. Copy `ai-citations-config.example.json` to `ai-citations-config.json` and customize. Put the file in a private location outside the plugin repo. 2. Get API keys:
3. Run once manually: `node ai-citations-fetch.example.js` 4. Inspect the resulting `./ai-citations-history/history.ndjson` — one record per `(prompt, surface)` pair. 5. Schedule weekly via launchd / cron / GHA — see [[psi-weekly-cron-baseline]] for the cron-setup pattern.
Per `(prompt, surface)` pair, the NDJSON record contains:
| Field | Type | Description | |-------|------|-------------| | `timestamp` | epoch ms | When the call ran | | `date` | YYYY-MM-DD | Cron-friendly date | | `prompt` | string |
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 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 an e-commerce or content site wants to deeply understand WHO their organic competitors are (often surprising — not the brands they think) and WHERE…
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…