Brand monitor skill

Brand monitoring and mention tracking via the Brand.dev API.

by OpenClaudia·MIT license·★ 705 Stars on the repo·GitHub ↗

Use now

Files of Brand monitor

OpenClaudia/main1 file shown
SKILL.md
Show the full text347 lines

Brand Monitor

Track brand mentions, analyze sentiment, and discover PR opportunities using the Brand.dev API.

Prerequisites

Requires BRANDDEV_API_KEY set in .env, .env.local, or ~/.claude/.env.global.

echo "BRANDDEV_API_KEY is ${BRANDDEV_API_KEY:+set}"

If the key is not set, instruct the user:

You need a Brand.dev API key. Get one at https://brand.dev/ Then add BRANDDEV_API_KEY=your_key to your .env file.

API Base

All requests go to https://api.brand.dev/v1/ with the header Authorization: Bearer {BRANDDEV_API_KEY}.


Search for mentions of a brand name across the web.

Endpoint
GET https://api.brand.dev/v1/brand/search
Parameters
Param Type Description
query string Brand name or phrase to search
limit int Number of results (default 20, max 100)
offset int Pagination offset
sort string relevance or date
from_date string Start date (YYYY-MM-DD)
to_date string End date (YYYY-MM-DD)
Example curl
curl -s -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
  "https://api.brand.dev/v1/brand/search?query=YourBrand&limit=20&sort=date"
Response Parsing
curl -s -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
  "https://api.brand.dev/v1/brand/search?query=YourBrand&limit=20" \
  | python3 -c "
import json, sys
data = json.load(sys.stdin)
for m in data.get('results', []):
    print(f\"Source: {m.get('source','')}  |  Title: {m.get('title','')}  |  Sentiment: {m.get('sentiment','n/a')}  |  Date: {m.get('published_at','')}\")
    print(f\"  URL: {m.get('url','')}\")
    print()
"

2. Brand Info Lookup

Get structured brand information for any company or product.

Endpoint
GET https://api.brand.dev/v1/brand/info
Parameters
Param Type Description
domain string Company domain (e.g., stripe.com)
name string Brand name (alternative to domain)
Example curl
curl -s -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
  "https://api.brand.dev/v1/brand/info?domain=stripe.com"
Response Fields
  • name: Official brand name
  • domain: Primary domain
  • description: Brand description
  • industry: Industry classification
  • founded: Year founded
  • headquarters: Location
  • social_profiles: Links to social media
  • logos: Brand logo URLs
  • colors: Brand color palette
  • employees_range: Company size estimate

3. Logo Detection

Detect brand logos in images across the web.

Endpoint
GET https://api.brand.dev/v1/logo/search
Parameters
Param Type Description
brand string Brand name to search for
domain string Filter to specific domain
limit int Number of results
Example curl
curl -s -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
  "https://api.brand.dev/v1/logo/search?brand=YourBrand&limit=20"

Use logo detection to find:

  • Unauthorized logo usage
  • Partner and sponsor visibility
  • Event coverage and media placements
  • Counterfeit product listings

4. Mention Tracking

Set up ongoing tracking for brand mentions.

Create a Monitor
POST https://api.brand.dev/v1/monitors
Body
{
  "name": "My Brand Monitor",
  "keywords": ["YourBrand", "Your Brand", "yourbrand.com"],
  "exclude_keywords": ["unrelated term"],
  "sources": ["news", "blogs", "social", "forums", "reviews"],
  "languages": ["en"],
  "notify_email": "[email protected]"
}
Example curl
curl -s -X POST -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
  -H "Content-Type: application/json" \
  "https://api.brand.dev/v1/monitors" \
  -d '{
    "name": "Brand Alert",
    "keywords": ["YourBrand"],
    "sources": ["news", "blogs", "social"],
    "languages": ["en"]
  }'
List Monitors
curl -s -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
  "https://api.brand.dev/v1/monitors"
Get Monitor Results
curl -s -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
  "https://api.brand.dev/v1/monitors/{monitor_id}/mentions?limit=50&sort=date"

5. Sentiment Analysis

Analyze sentiment of brand mentions.

Endpoint
GET https://api.brand.dev/v1/brand/sentiment
Parameters
Param Type Description
query string Brand name
from_date string Start date
to_date string End date
granularity string day, week, or month
Example curl
curl -s -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
  "https://api.brand.dev/v1/brand/sentiment?query=YourBrand&from_date=2024-01-01&to_date=2024-03-31&granularity=week"
Sentiment Scores
  • Positive (> 0.3): Praise, recommendations, positive reviews
  • Neutral (-0.3 to 0.3): Factual mentions, news coverage
  • Negative (< -0.3): Complaints, criticism, negative reviews

6. Competitor Mention Comparison

Compare brand mention volume and sentiment against competitors.

Workflow
  1. Search mentions for your brand and each competitor
  2. Compare mention counts over the same time period
  3. Compare sentiment distributions
  4. Identify sources where competitors get mentioned but you do not
# For each brand, get mention counts
for brand in "YourBrand" "Competitor1" "Competitor2"; do
  count=$(curl -s -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
    "https://api.brand.dev/v1/brand/search?query=${brand}&limit=1" \
    | python3 -c "import json,sys; print(json.load(sys.stdin).get('total',0))")
  echo "${brand}: ${count} mentions"
done

Workflow: Full Brand Audit

When asked for a comprehensive brand monitoring report:

Step 1: Brand Info

Pull structured brand data for context.

Step 2: Mention Volume

Search for brand mentions over the last 30/90 days. Count total mentions and break down by source type.

Step 3: Sentiment Analysis

Get sentiment trends. Flag any negative spikes and investigate root causes.

Step 4: PR Opportunities

From mention data, identify:

  • High-authority sites that mention competitors but not you
  • Journalists who cover your industry
  • Trending topics where your brand could contribute
  • Unanswered questions about your brand on forums
Step 5: Logo/Visual Presence

Search for logo appearances. Flag unauthorized usage.

Step 6: Report

Present findings as:

## Brand Monitoring Report: {Brand}

### Overview
- Total mentions (last 30 days): X
- Sentiment breakdown: X% positive, X% neutral, X% negative
- Top sources: ...

### Sentiment Trend
[Weekly trend data]

### Top Positive Mentions
1. [Source] - [Title] - [URL]
2. ...

### Negative Mentions Requiring Attention
1. [Source] - [Title] - [URL] - [Issue summary]
2. ...

### PR Opportunities
1. [Publication] covers [topic] - pitch angle: ...
2. [Journalist] recently wrote about [topic] - pitch angle: ...

### Competitor Comparison
| Metric | Your Brand | Competitor A | Competitor B |
|--------|-----------|-------------|-------------|
| Mentions | ... | ... | ... |
| Positive % | ... | ... | ... |
| Top Source | ... | ... | ... |

### Action Items
- [ ] Respond to [negative mention]
- [ ] Pitch [publication] about [topic]
- [ ] Update brand listing on [platform]

Error Handling

Status Meaning
401 Invalid or expired API key
403 Insufficient permissions for this endpoint
404 Resource not found (check monitor ID)
429 Rate limit exceeded - wait and retry
500 Server error - retry after a few seconds

Tips

  • Use exact brand name + common misspellings as keywords
  • Exclude your own domain to avoid self-mentions
  • Set up monitors for competitor brands too
  • Check mentions weekly at minimum; daily during launches or crises
  • Export negative mentions to a spreadsheet for customer support follow-up
1---
2name: brand-monitor
3description: >
4 Brand monitoring and mention tracking via the Brand.dev API. Use when asked to
5 monitor brand mentions, track sentiment, find PR opportunities, detect logo
6 usage, or analyze brand presence online. Trigger phrases: "brand monitoring",
7 "mention tracking", "brand sentiment", "PR opportunities", "logo detection",
8 "brand.dev", "brand mentions", "media monitoring".
9---
10 
11# Brand Monitor
12 
13Track brand mentions, analyze sentiment, and discover PR opportunities using the Brand.dev API.
14 
15## Prerequisites
16 
17Requires `BRANDDEV_API_KEY` set in `.env`, `.env.local`, or `~/.claude/.env.global`.
18 
19```bash
20echo "BRANDDEV_API_KEY is ${BRANDDEV_API_KEY:+set}"
21```
22 
23If the key is not set, instruct the user:
24> You need a Brand.dev API key. Get one at https://brand.dev/
25> Then add `BRANDDEV_API_KEY=your_key` to your `.env` file.
26 
27## API Base
28 
29All requests go to `https://api.brand.dev/v1/` with the header `Authorization: Bearer {BRANDDEV_API_KEY}`.
30 
31---
32 
33## 1. Brand Search
34 
35Search for mentions of a brand name across the web.
36 
37### Endpoint
38 
39```
40GET https://api.brand.dev/v1/brand/search
41```
42 
43### Parameters
44 
45| Param | Type | Description |
46|-------|------|-------------|
47| `query` | string | Brand name or phrase to search |
48| `limit` | int | Number of results (default 20, max 100) |
49| `offset` | int | Pagination offset |
50| `sort` | string | `relevance` or `date` |
51| `from_date` | string | Start date (YYYY-MM-DD) |
52| `to_date` | string | End date (YYYY-MM-DD) |
53 
54### Example curl
55 
56```bash
57curl -s -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
58 "https://api.brand.dev/v1/brand/search?query=YourBrand&limit=20&sort=date"
59```
60 
61### Response Parsing
62 
63```bash
64curl -s -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
65 "https://api.brand.dev/v1/brand/search?query=YourBrand&limit=20" \
66 | python3 -c "
67import json, sys
68data = json.load(sys.stdin)
69for m in data.get('results', []):
70 print(f\"Source: {m.get('source','')} | Title: {m.get('title','')} | Sentiment: {m.get('sentiment','n/a')} | Date: {m.get('published_at','')}\")
71 print(f\" URL: {m.get('url','')}\")
72 print()
73"
74```
75 
76---
77 
78## 2. Brand Info Lookup
79 
80Get structured brand information for any company or product.
81 
82### Endpoint
83 
84```
85GET https://api.brand.dev/v1/brand/info
86```
87 
88### Parameters
89 
90| Param | Type | Description |
91|-------|------|-------------|
92| `domain` | string | Company domain (e.g., `stripe.com`) |
93| `name` | string | Brand name (alternative to domain) |
94 
95### Example curl
96 
97```bash
98curl -s -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
99 "https://api.brand.dev/v1/brand/info?domain=stripe.com"
100```
101 
102### Response Fields
103 
104- `name`: Official brand name
105- `domain`: Primary domain
106- `description`: Brand description
107- `industry`: Industry classification
108- `founded`: Year founded
109- `headquarters`: Location
110- `social_profiles`: Links to social media
111- `logos`: Brand logo URLs
112- `colors`: Brand color palette
113- `employees_range`: Company size estimate
114 
115---
116 
117## 3. Logo Detection
118 
119Detect brand logos in images across the web.
120 
121### Endpoint
122 
123```
124GET https://api.brand.dev/v1/logo/search
125```
126 
127### Parameters
128 
129| Param | Type | Description |
130|-------|------|-------------|
131| `brand` | string | Brand name to search for |
132| `domain` | string | Filter to specific domain |
133| `limit` | int | Number of results |
134 
135### Example curl
136 
137```bash
138curl -s -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
139 "https://api.brand.dev/v1/logo/search?brand=YourBrand&limit=20"
140```
141 
142Use logo detection to find:
143- Unauthorized logo usage
144- Partner and sponsor visibility
145- Event coverage and media placements
146- Counterfeit product listings
147 
148---
149 
150## 4. Mention Tracking
151 
152Set up ongoing tracking for brand mentions.
153 
154### Create a Monitor
155 
156```
157POST https://api.brand.dev/v1/monitors
158```
159 
160### Body
161 
162```json
163{
164 "name": "My Brand Monitor",
165 "keywords": ["YourBrand", "Your Brand", "yourbrand.com"],
166 "exclude_keywords": ["unrelated term"],
167 "sources": ["news", "blogs", "social", "forums", "reviews"],
168 "languages": ["en"],
169 "notify_email": "[email protected]"
170}
171```
172 
173### Example curl
174 
175```bash
176curl -s -X POST -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
177 -H "Content-Type: application/json" \
178 "https://api.brand.dev/v1/monitors" \
179 -d '{
180 "name": "Brand Alert",
181 "keywords": ["YourBrand"],
182 "sources": ["news", "blogs", "social"],
183 "languages": ["en"]
184 }'
185```
186 
187### List Monitors
188 
189```bash
190curl -s -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
191 "https://api.brand.dev/v1/monitors"
192```
193 
194### Get Monitor Results
195 
196```bash
197curl -s -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
198 "https://api.brand.dev/v1/monitors/{monitor_id}/mentions?limit=50&sort=date"
199```
200 
201---
202 
203## 5. Sentiment Analysis
204 
205Analyze sentiment of brand mentions.
206 
207### Endpoint
208 
209```
210GET https://api.brand.dev/v1/brand/sentiment
211```
212 
213### Parameters
214 
215| Param | Type | Description |
216|-------|------|-------------|
217| `query` | string | Brand name |
218| `from_date` | string | Start date |
219| `to_date` | string | End date |
220| `granularity` | string | `day`, `week`, or `month` |
221 
222### Example curl
223 
224```bash
225curl -s -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
226 "https://api.brand.dev/v1/brand/sentiment?query=YourBrand&from_date=2024-01-01&to_date=2024-03-31&granularity=week"
227```
228 
229### Sentiment Scores
230 
231- **Positive** (> 0.3): Praise, recommendations, positive reviews
232- **Neutral** (-0.3 to 0.3): Factual mentions, news coverage
233- **Negative** (< -0.3): Complaints, criticism, negative reviews
234 
235---
236 
237## 6. Competitor Mention Comparison
238 
239Compare brand mention volume and sentiment against competitors.
240 
241### Workflow
242 
2431. Search mentions for your brand and each competitor
2442. Compare mention counts over the same time period
2453. Compare sentiment distributions
2464. Identify sources where competitors get mentioned but you do not
247 
248```bash
249# For each brand, get mention counts
250for brand in "YourBrand" "Competitor1" "Competitor2"; do
251 count=$(curl -s -H "Authorization: Bearer ${BRANDDEV_API_KEY}" \
252 "https://api.brand.dev/v1/brand/search?query=${brand}&limit=1" \
253 | python3 -c "import json,sys; print(json.load(sys.stdin).get('total',0))")
254 echo "${brand}: ${count} mentions"
255done
256```
257 
258---
259 
260## Workflow: Full Brand Audit
261 
262When asked for a comprehensive brand monitoring report:
263 
264### Step 1: Brand Info
265 
266Pull structured brand data for context.
267 
268### Step 2: Mention Volume
269 
270Search for brand mentions over the last 30/90 days. Count total mentions and break down by source type.
271 
272### Step 3: Sentiment Analysis
273 
274Get sentiment trends. Flag any negative spikes and investigate root causes.
275 
276### Step 4: PR Opportunities
277 
278From mention data, identify:
279- **High-authority sites** that mention competitors but not you
280- **Journalists** who cover your industry
281- **Trending topics** where your brand could contribute
282- **Unanswered questions** about your brand on forums
283 
284### Step 5: Logo/Visual Presence
285 
286Search for logo appearances. Flag unauthorized usage.
287 
288### Step 6: Report
289 
290Present findings as:
291 
292```
293## Brand Monitoring Report: {Brand}
294 
295### Overview
296- Total mentions (last 30 days): X
297- Sentiment breakdown: X% positive, X% neutral, X% negative
298- Top sources: ...
299 
300### Sentiment Trend
301[Weekly trend data]
302 
303### Top Positive Mentions
3041. [Source] - [Title] - [URL]
3052. ...
306 
307### Negative Mentions Requiring Attention
3081. [Source] - [Title] - [URL] - [Issue summary]
3092. ...
310 
311### PR Opportunities
3121. [Publication] covers [topic] - pitch angle: ...
3132. [Journalist] recently wrote about [topic] - pitch angle: ...
314 
315### Competitor Comparison
316| Metric | Your Brand | Competitor A | Competitor B |
317|--------|-----------|-------------|-------------|
318| Mentions | ... | ... | ... |
319| Positive % | ... | ... | ... |
320| Top Source | ... | ... | ... |
321 
322### Action Items
323- [ ] Respond to [negative mention]
324- [ ] Pitch [publication] about [topic]
325- [ ] Update brand listing on [platform]
326```
327 
328---
329 
330## Error Handling
331 
332| Status | Meaning |
333|--------|---------|
334| 401 | Invalid or expired API key |
335| 403 | Insufficient permissions for this endpoint |
336| 404 | Resource not found (check monitor ID) |
337| 429 | Rate limit exceeded - wait and retry |
338| 500 | Server error - retry after a few seconds |
339 
340## Tips
341 
342- Use exact brand name + common misspellings as keywords
343- Exclude your own domain to avoid self-mentions
344- Set up monitors for competitor brands too
345- Check mentions weekly at minimum; daily during launches or crises
346- Export negative mentions to a spreadsheet for customer support follow-up
347 

Discussion

Alternatives

Skill CreatorCreate new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.Coding · Apache-2.0Professional Full-Stack Developer for Network Mapping & Monitoring ApplicationAct as a professional full-stack developer tasked with building a web application for mapping and monitoring networks using Mikrotik Netwatch API. Implement multi-user role-based management to handle devices, monitor their status, and manage user subscriptions.Coding · CC0-1.0Prompt refinerHigh-end Prompt Engineering & Prompt Refiner skill. Transforms raw or messy user requests into concise, token-efficient, high-performance master prompts for systems like GPT, Claude, and Gemini. Use when you want to optimize or redesign a prompt so it solves the problem reliably while minimizing tokens.Data & AI · CC0-1.0Constraint driven developmentEstablishes a project's quality bar as a written contract and stops agents quietly lowering it. Interviews the user on which dimensions matter, supplies sane default thresholds when they have no number in mind, records everything in CONSTRAINTS.md, and watches the diff for a weakened bar — new @ts-ignore or eslint-disable suppressions, skipped or deleted tests, assertions stripped out, unimplemented stubs, thresholds edited down. Use when no quality bar is written down, when the user says "set up constraints" or "define our standards", when the user wants dimensions they care about — accessibility, web performance, coverage — set up as enforced constraints, when an agent keeps silencing checks or skipping tests to get to green, when you need a coverage or performance threshold and don't know what number to pick, or when an agent writes more code than anyone will read.Coding · MIT