Openclaudia-skills brand-monitor
git clone https://github.com/OpenClaudia/openclaudia-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/OpenClaudia/openclaudia-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/brand-monitor" ~/.claude/skills/openclaudia-openclaudia-skills-brand-monitor && rm -rf "$T"
skills/brand-monitor/SKILL.mdBrand 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
to yourBRANDDEV_API_KEY=your_keyfile..env
API Base
All requests go to
https://api.brand.dev/v1/ with the header Authorization: Bearer {BRANDDEV_API_KEY}.
1. Brand Search
Search for mentions of a brand name across the web.
Endpoint
GET https://api.brand.dev/v1/brand/search
Parameters
| Param | Type | Description |
|---|---|---|
| string | Brand name or phrase to search |
| int | Number of results (default 20, max 100) |
| int | Pagination offset |
| string | or |
| string | Start date (YYYY-MM-DD) |
| 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 |
|---|---|---|
| string | Company domain (e.g., ) |
| 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
: Official brand namename
: Primary domaindomain
: Brand descriptiondescription
: Industry classificationindustry
: Year foundedfounded
: Locationheadquarters
: Links to social mediasocial_profiles
: Brand logo URLslogos
: Brand color palettecolors
: Company size estimateemployees_range
3. Logo Detection
Detect brand logos in images across the web.
Endpoint
GET https://api.brand.dev/v1/logo/search
Parameters
| Param | Type | Description |
|---|---|---|
| string | Brand name to search for |
| string | Filter to specific domain |
| 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": "alerts@yourdomain.com" }
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 |
|---|---|---|
| string | Brand name |
| string | Start date |
| string | End date |
| string | , , or |
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
- Search mentions for your brand and each competitor
- Compare mention counts over the same time period
- Compare sentiment distributions
- 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