kai-brand-pulse - Multi-Platform Brand Intelligence
Kai root note: knowledge/, harness/, and scripts/ 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 a knowledge/ 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 referenced scripts/ command is not available in this install, say so, skip it, and continue with the file-based guidance — never fabricate its output.
Run a cited brand pulse across public reputation surfaces. This is the Kai-native version of the Brand Monitor Agent pattern: collect evidence first, analyze each platform separately, then synthesize into marketing actions.
When to Use
- You need a current public read on a brand, product, founder, or client.
- You want objection mining for copy, sales, ads, social, or lifecycle messaging.
- You need competitor positioning evidence before
/kai-brand, /kai-competitors, or /kai-surround-sound.
- You want weekly delta monitoring for new mentions, complaints, comparisons, and content opportunities.
When Not to Use
- You need a full marketing audit. Use
/kai-audit.
- You need technical SEO or agent-readiness checks only. Use
/kai-seo-audit or /kai-surround-sound.
- You do not have approval to collect or report on a sensitive individual.
- You plan to publish claims without citations. Stop and collect source-backed evidence first.
Command Shape
/kai-brand-pulse <brand> [competitors]
Local runner:
python scripts/intel/brand_pulse.py "<brand>" \
--domain "https://example.com" \
--category "category buyers ask about" \
--competitor "Competitor A" \
--competitor "Competitor B" \
--out "workspace/brand-pulse/<brand>-YYYY-MM-DD"
Optional:
python scripts/intel/brand_pulse.py "<brand>" --skip-fetch
python scripts/intel/brand_pulse.py "<brand>" --wiki-dir "<brain-wiki-folder>"
python scripts/intel/brand_pulse.py "<brand>" --json
Live search uses SERPAPI_API_KEY when present. Without it, the runner archives the query plan and writes data gaps instead of inventing findings.
Phase 0: Context and Provenance
- Read
MARKETING.md if present. Pull brand name, domain, ICP, category, competitors, positioning, and voice constraints.
- For client-facing or quantitative recommendations, load
harness/references/audit-data-provenance.md.
- If a domain is available, run the shared source collector before writing final claims:
python -m kai.source_data.collect \
--url "https://example.com" \
--firm-name "<brand>" \
--workflow brand-pulse \
--mode sales_external \
--out "workspace/brand-pulse-data"
Use sales_external, onboarding_connected, or internal_demo. Cite collector sources for domain, schema, sitemap, or metric claims. Use _data-gaps.md for missing access.
Phase 1: Collect Evidence
Run the Brand Pulse runner. It creates a raw archive, platform packets, a synthesis shell, and a delta-tracking database.
Default surfaces:
| Surface |
Collection Pattern |
Why It Matters |
| Web |
Brand, reviews, alternatives, pricing, own-domain entity queries |
General entity footprint and objections |
| News |
Brand and category news queries |
Authority, recency, PR angles |
| YouTube |
site:youtube.com search fallbacks |
Reviews, demos, creator narratives |
| X |
site:x.com and site:twitter.com search fallbacks |
Fast-moving complaints, praise, comparisons |
| LinkedIn |
site:linkedin.com/posts and company fallbacks |
B2B proof, founder/category narratives |
| Reddit |
site:reddit.com search fallbacks |
Raw objections and buying-language mining |
| Review Sites |
G2, Capterra, Trustpilot, Clutch, Yelp search fallbacks |
Social proof, complaints, competitor context |
The runner writes:
workspace/brand-pulse/<run>/
├── brand-pulse-data.json
├── _brand-pulse.md
├── _content-angles.md
├── _objection-mining.md
├── _surround-sound-actions.md
├── _monitoring-plan.md
├── _data-gaps.md
├── raw/
│ └── query-plan.json
└── platforms/
├── web.md
├── news.md
├── youtube.md
├── x.md
├── linkedin.md
├── reddit.md
└── reviews.md
Every evidence item has a citation id. Do not make a claim unless it points to a citation id or a collector source id.
Phase 2: Platform Analyzers
Analyze one platform at a time before synthesis. Use the packet in platforms/<platform>.md as the only source material for that platform.
For each platform, produce:
| Analyzer Output |
Questions |
| Repeated claims |
What does the market keep saying about the brand? |
| Objections |
What pain, doubt, pricing, trust, or support language repeats? |
| Proof gaps |
What proof do people need that the brand does not visibly supply? |
| Competitor context |
Which competitors appear beside the brand and why? |
| Content angles |
What can Kai write, publish, pitch, or test next? |
| AEO actions |
Which citations, pages, or entity signals should feed /kai-surround-sound? |
Keep platform conclusions separate until all packets have been reviewed. This prevents one loud platform from swallowing quieter but useful evidence.
Phase 3: Cross-Platform Synthesis
After platform analysis, synthesize:
- Narrative map - What the public web thinks the brand is, who it is for, and what doubts cluster around it.
- Objection bank - Exact objection themes with cited examples.
- Competitor positioning - Where competitors own attention, proof, or trust.
- Content angles - Blog, comparison, social, email, ad, and sales enablement ideas tied to evidence.
- Surround-sound actions - Third-party citation, directory, review, forum, and own-domain AEO moves.
- Monitoring deltas - What is newly observed since the previous run.
Do not blur "observed in search results" with "market share" or "sentiment share." Treat search output as a sampled evidence packet.
Phase 4: Recommended Actions
Turn findings into Kai work:
| Finding |
Next Kai Move |
| Repeated pricing objection |
/kai-landing-page, /kai-write, or sales FAQ refresh |
| Repeated competitor comparison |
/kai-competitors plus comparison page brief |
| Reddit objections |
/kai-reddit-listen profile keywords and reply guardrails |
| Thin review-site footprint |
Review request system, directory cleanup, or /kai-surround-sound |
| Strong third-party praise |
Repurpose into proof assets, ads, case studies, and AEO citations |
| Missing own-domain entity clarity |
/kai-brand, /kai-seo-audit, then /kai-surround-sound |
For phone-led businesses, apply the KaiCalls Fit Rule. Recommend KaiCalls only when phone-capture evidence supports it, disclose Kai ownership, and compare alternatives.
Phase 5: Weekly Delta Monitoring
Run the same brand weekly. The local SQLite database at data/intel/brand_pulse.db tracks first-seen and last-seen mentions.
Example cron:
0 8 * * 1 cd /path/to/kai-cmo-harness && python scripts/intel/brand_pulse.py "<brand>" --domain "https://example.com" --category "<category>" --out "workspace/brand-pulse/<brand>-$(date +\%F)"
For Brain wiki ingestion, pass --wiki-dir to write a pointer page to the latest cited packet. Keep the full raw archive in the workspace.
Quality Rules
- Cite every client-facing claim with a citation id or source id.
- Store raw search responses and query plan before synthesis.
- Use
_data-gaps.md for missing APIs, private platform access, or unavailable exports.
- Never report review counts, rankings, traffic, share of voice, sentiment share, or platform volume unless the source directly provides them.
- Label sampled search evidence as sampled search evidence.
- Gate any publishable copy generated from the pulse with
/kai-gate.
1---2name: kai-brand-pulse3description: Multi-platform brand intelligence pulse - collect cited public reputation evidence across web, news, YouTube, X, LinkedIn, Reddit, and review sites, then turn it into objection mining, content angles, competitor positioning, and surround-sound actions. Use when "brand monitor", "brand pulse", "what are people saying about us", "multi-platform reputation", "brand intelligence", "weekly brand monitoring", "objection mining", or "public reputation scan".4---56# kai-brand-pulse - Multi-Platform Brand Intelligence78> **Kai root note:** `knowledge/`, `harness/`, and `scripts/` 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 a `knowledge/` 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 referenced `scripts/` command is not available in this install, say so, skip it, and continue with the file-based guidance — never fabricate its output.910Run a cited brand pulse across public reputation surfaces. This is the Kai-native version of the Brand Monitor Agent pattern: collect evidence first, analyze each platform separately, then synthesize into marketing actions.1112## When to Use1314- You need a current public read on a brand, product, founder, or client.15- You want objection mining for copy, sales, ads, social, or lifecycle messaging.16- You need competitor positioning evidence before `/kai-brand`, `/kai-competitors`, or `/kai-surround-sound`.17- You want weekly delta monitoring for new mentions, complaints, comparisons, and content opportunities.1819## When Not to Use2021- You need a full marketing audit. Use `/kai-audit`.22- You need technical SEO or agent-readiness checks only. Use `/kai-seo-audit` or `/kai-surround-sound`.23- You do not have approval to collect or report on a sensitive individual.24- You plan to publish claims without citations. Stop and collect source-backed evidence first.2526## Command Shape2728```bash29/kai-brand-pulse <brand> [competitors]30```3132Local runner:3334```bash35python scripts/intel/brand_pulse.py "<brand>" \36 --domain "https://example.com" \37 --category "category buyers ask about" \38 --competitor "Competitor A" \39 --competitor "Competitor B" \40 --out "workspace/brand-pulse/<brand>-YYYY-MM-DD"41```4243Optional:4445```bash46python scripts/intel/brand_pulse.py "<brand>" --skip-fetch47python scripts/intel/brand_pulse.py "<brand>" --wiki-dir "<brain-wiki-folder>"48python scripts/intel/brand_pulse.py "<brand>" --json49```5051Live search uses `SERPAPI_API_KEY` when present. Without it, the runner archives the query plan and writes data gaps instead of inventing findings.5253---5455## Phase 0: Context and Provenance56571. Read `MARKETING.md` if present. Pull brand name, domain, ICP, category, competitors, positioning, and voice constraints.582. For client-facing or quantitative recommendations, load `harness/references/audit-data-provenance.md`.593. If a domain is available, run the shared source collector before writing final claims:6061```bash62python -m kai.source_data.collect \63 --url "https://example.com" \64 --firm-name "<brand>" \65 --workflow brand-pulse \66 --mode sales_external \67 --out "workspace/brand-pulse-data"68```6970Use `sales_external`, `onboarding_connected`, or `internal_demo`. Cite collector sources for domain, schema, sitemap, or metric claims. Use `_data-gaps.md` for missing access.7172---7374## Phase 1: Collect Evidence7576Run the Brand Pulse runner. It creates a raw archive, platform packets, a synthesis shell, and a delta-tracking database.7778Default surfaces:7980| Surface | Collection Pattern | Why It Matters |81|---------|--------------------|----------------|82| Web | Brand, reviews, alternatives, pricing, own-domain entity queries | General entity footprint and objections |83| News | Brand and category news queries | Authority, recency, PR angles |84| YouTube | `site:youtube.com` search fallbacks | Reviews, demos, creator narratives |85| X | `site:x.com` and `site:twitter.com` search fallbacks | Fast-moving complaints, praise, comparisons |86| LinkedIn | `site:linkedin.com/posts` and company fallbacks | B2B proof, founder/category narratives |87| Reddit | `site:reddit.com` search fallbacks | Raw objections and buying-language mining |88| Review Sites | G2, Capterra, Trustpilot, Clutch, Yelp search fallbacks | Social proof, complaints, competitor context |8990The runner writes:9192```text93workspace/brand-pulse/<run>/94├── brand-pulse-data.json95├── _brand-pulse.md96├── _content-angles.md97├── _objection-mining.md98├── _surround-sound-actions.md99├── _monitoring-plan.md100├── _data-gaps.md101├── raw/102│ └── query-plan.json103└── platforms/104 ├── web.md105 ├── news.md106 ├── youtube.md107 ├── x.md108 ├── linkedin.md109 ├── reddit.md110 └── reviews.md111```112113Every evidence item has a citation id. Do not make a claim unless it points to a citation id or a collector source id.114115---116117## Phase 2: Platform Analyzers118119Analyze one platform at a time before synthesis. Use the packet in `platforms/<platform>.md` as the only source material for that platform.120121For each platform, produce:122123| Analyzer Output | Questions |124|-----------------|-----------|125| Repeated claims | What does the market keep saying about the brand? |126| Objections | What pain, doubt, pricing, trust, or support language repeats? |127| Proof gaps | What proof do people need that the brand does not visibly supply? |128| Competitor context | Which competitors appear beside the brand and why? |129| Content angles | What can Kai write, publish, pitch, or test next? |130| AEO actions | Which citations, pages, or entity signals should feed `/kai-surround-sound`? |131132Keep platform conclusions separate until all packets have been reviewed. This prevents one loud platform from swallowing quieter but useful evidence.133134---135136## Phase 3: Cross-Platform Synthesis137138After platform analysis, synthesize:1391401. **Narrative map** - What the public web thinks the brand is, who it is for, and what doubts cluster around it.1412. **Objection bank** - Exact objection themes with cited examples.1423. **Competitor positioning** - Where competitors own attention, proof, or trust.1434. **Content angles** - Blog, comparison, social, email, ad, and sales enablement ideas tied to evidence.1445. **Surround-sound actions** - Third-party citation, directory, review, forum, and own-domain AEO moves.1456. **Monitoring deltas** - What is newly observed since the previous run.146147Do not blur "observed in search results" with "market share" or "sentiment share." Treat search output as a sampled evidence packet.148149---150151## Phase 4: Recommended Actions152153Turn findings into Kai work:154155| Finding | Next Kai Move |156|---------|---------------|157| Repeated pricing objection | `/kai-landing-page`, `/kai-write`, or sales FAQ refresh |158| Repeated competitor comparison | `/kai-competitors` plus comparison page brief |159| Reddit objections | `/kai-reddit-listen` profile keywords and reply guardrails |160| Thin review-site footprint | Review request system, directory cleanup, or `/kai-surround-sound` |161| Strong third-party praise | Repurpose into proof assets, ads, case studies, and AEO citations |162| Missing own-domain entity clarity | `/kai-brand`, `/kai-seo-audit`, then `/kai-surround-sound` |163164For phone-led businesses, apply the KaiCalls Fit Rule. Recommend KaiCalls only when phone-capture evidence supports it, disclose Kai ownership, and compare alternatives.165166---167168## Phase 5: Weekly Delta Monitoring169170Run the same brand weekly. The local SQLite database at `data/intel/brand_pulse.db` tracks first-seen and last-seen mentions.171172Example cron:173174```bash1750 8 * * 1 cd /path/to/kai-cmo-harness && python scripts/intel/brand_pulse.py "<brand>" --domain "https://example.com" --category "<category>" --out "workspace/brand-pulse/<brand>-$(date +\%F)"176```177178For Brain wiki ingestion, pass `--wiki-dir` to write a pointer page to the latest cited packet. Keep the full raw archive in the workspace.179180---181182## Quality Rules183184- Cite every client-facing claim with a citation id or source id.185- Store raw search responses and query plan before synthesis.186- Use `_data-gaps.md` for missing APIs, private platform access, or unavailable exports.187- Never report review counts, rankings, traffic, share of voice, sentiment share, or platform volume unless the source directly provides them.188- Label sampled search evidence as sampled search evidence.189- Gate any publishable copy generated from the pulse with `/kai-gate`.