Claude-skill-registry brevo
Full access to Brevo (email marketing, newsletters) using curl and the Brevo REST API directly - no MCP server or additional dependencies required.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/brevo" ~/.claude/skills/majiayu000-claude-skill-registry-brevo && rm -rf "$T"
skills/data/brevo/SKILL.mdBrevo Skill
Access Brevo to manage contacts, contact lists, email campaigns, and templates. Add subscribers to newsletters, draft email campaigns, and view email templates.
Capabilities
- Full CRUD for Contacts (create, read, update, delete subscribers)
- Full CRUD for Contact Lists (create, read, update, delete lists)
- Full CRUD for Email Campaigns (create, read, update, delete drafts)
- Read Email Templates (list and get)
Pre-flight Check
Before making API calls, verify the user is authenticated:
bash $SKILL_PATH/check-auth.sh
Returns
USER_AUTHENTICATED or USER_NOT_AUTHENTICATED.
Scripts Reference
All scripts are located at
$SKILL_PATH/. Replace $SKILL_PATH with the actual skill directory path.
Contact Lists
# List all contact lists (to find list IDs and names) bash $SKILL_PATH/lists/list.sh [limit] [offset] # Get details of a specific list bash $SKILL_PATH/lists/get.sh <list_id> # Create a new list bash $SKILL_PATH/lists/create.sh '<json_data>' # Update a list bash $SKILL_PATH/lists/update.sh <list_id> '<json_data>' # Delete a list (contacts are not deleted) bash $SKILL_PATH/lists/delete.sh <list_id>
Example - Create a new list:
bash $SKILL_PATH/lists/create.sh '{"name":"VIP Customers","folderId":1}'
Contacts
# List all contacts bash $SKILL_PATH/contacts/list.sh [limit] [offset] # Get contact by email or ID bash $SKILL_PATH/contacts/get.sh <identifier> # Create contact (optionally add to lists) bash $SKILL_PATH/contacts/create.sh '<json_data>' # Update contact bash $SKILL_PATH/contacts/update.sh <identifier> '<json_data>' # Delete contact bash $SKILL_PATH/contacts/delete.sh <identifier>
Example - Add contact to newsletter:
bash $SKILL_PATH/contacts/create.sh '{"email":"john@example.com","attributes":{"FIRSTNAME":"John","LASTNAME":"Doe"},"listIds":[4],"updateEnabled":true}'
Contact JSON fields:
(required): Email addressemail
: Object with contact attributes (FIRSTNAME, LASTNAME, etc.)attributes
: Array of list IDs to add the contact tolistIds
: If true, updates existing contact with same email (default: false)updateEnabled
Example - Update contact attributes:
bash $SKILL_PATH/contacts/update.sh john@example.com '{"attributes":{"LASTNAME":"Smith"}}'
Email Campaigns
# List all campaigns bash $SKILL_PATH/campaigns/list.sh [type] [status] [limit] [offset] # type: classic, trigger (default: all) # status: draft, sent, queued, suspended, in_process, archive (default: all) # Get campaign details bash $SKILL_PATH/campaigns/get.sh <campaign_id> # Create campaign draft bash $SKILL_PATH/campaigns/create.sh '<json_data>' # Update campaign draft (to iterate on content) bash $SKILL_PATH/campaigns/update.sh <campaign_id> '<json_data>' # Delete campaign bash $SKILL_PATH/campaigns/delete.sh <campaign_id>
Example - Create newsletter draft:
bash $SKILL_PATH/campaigns/create.sh '{ "name": "Weekly Newsletter", "subject": "This Week'\''s Updates", "sender": {"name": "Company Name", "email": "newsletter@example.com"}, "htmlContent": "<html><body><h1>Hello!</h1><p>Newsletter content here...</p></body></html>", "recipients": {"listIds": [4]} }'
Campaign JSON fields:
(required): Campaign name (internal identifier)name
(required): Email subject linesubject
(required): Object withsender
andnameemail
(required): HTML body of the emailhtmlContent
(required): Object withrecipients
arraylistIds
The campaign is created as a draft and can be edited in the Brevo UI before sending.
Example - Update campaign content:
bash $SKILL_PATH/campaigns/update.sh 123 '{"subject":"Updated Subject Line","htmlContent":"<html><body><h1>Revised Content</h1><p>New newsletter content...</p></body></html>"}'
Email Templates
# List all templates bash $SKILL_PATH/templates/list.sh [limit] [offset] # Get template details bash $SKILL_PATH/templates/get.sh <template_id>
Setup Instructions
-
Get your API key from Brevo:
- Log in to Brevo
- Navigate to Settings → SMTP & API → API Keys
- Or go directly to: https://app.brevo.com/settings/keys/api
- Generate a new API key
-
Create the config file:
mkdir -p ~/.config/brevo cat > ~/.config/brevo/config.json << 'EOF' { "api_key": "your-api-key-here" } EOF chmod 600 ~/.config/brevo/config.json -
Verify authentication:
bash $SKILL_PATH/check-auth.sh
Common Workflows
Add a person to the newsletter
# 1. Find the newsletter list ID bash $SKILL_PATH/lists/list.sh # Look for the list named "Newsletter" and note its ID (e.g., 4) # 2. Create contact and add to list bash $SKILL_PATH/contacts/create.sh '{"email":"john@example.com","attributes":{"FIRSTNAME":"John","LASTNAME":"Doe"},"listIds":[4],"updateEnabled":true}'
Draft a newsletter campaign
# 1. Check available templates (optional) bash $SKILL_PATH/templates/list.sh # 2. Find the target list bash $SKILL_PATH/lists/list.sh # 3. Create the campaign draft bash $SKILL_PATH/campaigns/create.sh '{ "name": "Product Launch Newsletter", "subject": "Introducing Our New Product", "sender": {"name": "Company", "email": "newsletter@example.com"}, "htmlContent": "<html><body><h1>New Product Launch</h1><p>We are excited to announce...</p></body></html>", "recipients": {"listIds": [4]} }' # 4. Go to Brevo UI to review and send the campaign
Check if a contact exists
bash $SKILL_PATH/contacts/get.sh john@example.com
Troubleshooting
Authentication fails:
- Verify config file exists at
~/.config/brevo/config.json - Check API key is valid and not expired
- Ensure API key has proper permissions
Contact creation fails:
- Verify email format is valid
- Check list IDs exist (use
to verify)lists/list.sh - Attribute names must be UPPERCASE (e.g., FIRSTNAME, not firstName)
Campaign creation fails:
- All required fields must be present (name, subject, sender, htmlContent, recipients)
- Sender email must be a verified sender in Brevo
- List IDs in recipients must exist