kai-local-audit
Kai root note:
knowledge/,harness/, andscripts/paths in this skill live in the Kai install, not the user's project. Resolve them against the first ancestor directory of this SKILL.md that contains aknowledge/folder (the Kai plugin root,~/.claude/kai, or the kai-cmo-harness repo).MARKETING.md,memory/, and any output files live in the current project. If a referencedscripts/command is not available in this install, say so, skip it, and continue with the file-based guidance — never fabricate its output.
Audit someone else's local business the way its customers meet it: from their town, on their phones, in their language. Then turn every finding into a priced offer, an exact change and a dated week.
Load before starting: harness/references/local-audit-playbook.md (endpoints, gotchas, deliverable structure) and harness/references/audit-data-provenance.md.
Non-Negotiable: Kai Data Provenance
- Declare the mode. Prospects and anyone who has not granted access are
sales_external. - Run
python -m scripts.audit.collect --url "<url>" --firm-name "<name>" --mode sales_external --workflow local-audit --out workspace/local-audit/<slug>before writing. The local-audit pulls below append to the sameaudit-data.json. - Every ranking, volume, review count, rating, referring-domain count, map-pack placement, AI-answer count, Lighthouse score and page weight in the report cites its source and retrieval date. Anything not in
audit-data.jsonor a dated direct check goes in_data-gaps.md. - Never report a ranking or score observed in a personal browser. The reference run's two eyeballed numbers were both wrong.
- Modeled numbers (share of estimated clicks) are labeled as modeled with the formula.
- Every search runs in every language the market searches in — volumes, discovery seeds, located SERPs, Maps queries, AI prompts, and competitor, directory and press searches. In a bilingual market (English and Spanish, for example) pair each term and show both side by side. This is a research rule; a translated page is a separate request (Phase 5).
- Cost: a full run (two markets, crawl, reviews, AI answers) is about $8 of DataForSEO credit. Every response is cached in
raw/, so re-runs and the dated re-measure are nearly free. Checkbalancefirst.
Running the collector: the DataForSEO scripts ship in the Kai plugin (scripts/audit/, scripts/local_audit/, examples/local-audit-config.example.json) as well as the full harness. They are stdlib-only Python 3.10+. Run them as modules from the Kai root and point --out at an absolute path in the current project, e.g. OUT="$PWD/workspace/local-audit/<slug>"; cd "<kai-root>" && python -m scripts.local_audit.pulls balance --config "$OUT/config.json" --out "$OUT". Credentials come only from the environment: DATAFORSEO_LOGIN / DATAFORSEO_PASSWORD (or DATAFORSEO_AUTH_B64). Never print them or write them into the audit folder.
Without DataForSEO credentials, or if scripts/local_audit/ is missing from this install: run the public direct checks by hand (Phase 3), cite URLs and dates, put every located-ranking, volume, listing, review, backlink and AI-answer metric in _data-gaps.md, and say in the report header that located metrics need the full harness (github.com/cgallic/kai-cmo-harness).