← 返回 Skills 市场
yujesyoga

Brevo

作者 yuj es yoga · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
2517
总下载
3
收藏
1
当前安装
1
版本数
在 OpenClaw 中安装
/install brevo
功能描述
Brevo (formerly Sendinblue) email marketing API for managing contacts, lists, sending transactional emails, and campaigns. Use when importing contacts, sending emails, managing subscriptions, or working with email automation.
使用说明 (SKILL.md)

Brevo Email Marketing API

Manage contacts, send emails, and automate marketing via Brevo's REST API.

Authentication

BREVO_KEY=$(cat ~/.config/brevo/api_key)

All requests require header: api-key: $BREVO_KEY

Base URL

https://api.brevo.com/v3

Common Endpoints

Contacts

Action Method Endpoint
Create contact POST /contacts
Get contact GET /contacts/{email}
Update contact PUT /contacts/{email}
Delete contact DELETE /contacts/{email}
List contacts GET /contacts?limit=50&offset=0
Get blacklisted GET /contacts?emailBlacklisted=true

Lists

Action Method Endpoint
Get all lists GET /contacts/lists
Create list POST /contacts/lists
Get list contacts GET /contacts/lists/{listId}/contacts
Add to list POST /contacts/lists/{listId}/contacts/add
Remove from list POST /contacts/lists/{listId}/contacts/remove

Emails

Action Method Endpoint
Send transactional POST /smtp/email
Send campaign POST /emailCampaigns
Get templates GET /smtp/templates

Examples

Create/Update Contact

curl -X POST "https://api.brevo.com/v3/contacts" \
  -H "api-key: $BREVO_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "listIds": [10],
    "updateEnabled": true,
    "attributes": {
      "NOMBRE": "John",
      "APELLIDOS": "Doe"
    }
  }'

Get Contact Info

curl "https://api.brevo.com/v3/contacts/[email protected]" \
  -H "api-key: $BREVO_KEY"

Update Contact Attributes

curl -X PUT "https://api.brevo.com/v3/contacts/[email protected]" \
  -H "api-key: $BREVO_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "listIds": [10, 15],
    "attributes": {
      "CUSTOM_FIELD": "value"
    }
  }'

Send Transactional Email

curl -X POST "https://api.brevo.com/v3/smtp/email" \
  -H "api-key: $BREVO_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "sender": {"name": "My App", "email": "[email protected]"},
    "to": [{"email": "[email protected]", "name": "John"}],
    "subject": "Welcome!",
    "htmlContent": "\x3Cp>Hello {{params.name}}\x3C/p>",
    "params": {"name": "John"}
  }'

Send with Template

curl -X POST "https://api.brevo.com/v3/smtp/email" \
  -H "api-key: $BREVO_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": [{"email": "[email protected]"}],
    "templateId": 34,
    "params": {
      "NOMBRE": "John",
      "FECHA": "2026-02-01"
    }
  }'

List All Contact Lists

curl "https://api.brevo.com/v3/contacts/lists?limit=50" \
  -H "api-key: $BREVO_KEY"

Add Contacts to List (Bulk)

curl -X POST "https://api.brevo.com/v3/contacts/lists/10/contacts/add" \
  -H "api-key: $BREVO_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "emails": ["[email protected]", "[email protected]"]
  }'

Safe Import Pattern

When importing contacts, always respect unsubscribes:

import requests

BREVO_KEY = "your-api-key"
HEADERS = {'api-key': BREVO_KEY, 'Content-Type': 'application/json'}
BASE = 'https://api.brevo.com/v3'

def get_blacklisted():
    """Get all unsubscribed/blacklisted emails"""
    blacklisted = set()
    offset = 0
    while True:
        r = requests.get(
            f'{BASE}/contacts?limit=100&offset={offset}&emailBlacklisted=true',
            headers=HEADERS
        )
        contacts = r.json().get('contacts', [])
        if not contacts:
            break
        for c in contacts:
            blacklisted.add(c['email'].lower())
        offset += 100
    return blacklisted

def safe_import(emails, list_id):
    """Import contacts respecting unsubscribes"""
    blacklisted = get_blacklisted()
    
    for email in emails:
        if email.lower() in blacklisted:
            print(f"Skipped (unsubscribed): {email}")
            continue
        
        r = requests.post(f'{BASE}/contacts', headers=HEADERS, json={
            'email': email,
            'listIds': [list_id],
            'updateEnabled': True
        })
        
        if r.status_code in [200, 201, 204]:
            print(f"Imported: {email}")
        else:
            print(f"Error: {email} - {r.text[:50]}")

Contact Attributes

Brevo uses custom attributes for contact data:

{
  "attributes": {
    "NOMBRE": "John",
    "APELLIDOS": "Doe",
    "FECHA_ALTA": "2026-01-15",
    "PLAN": "premium",
    "CUSTOM_FIELD": "any value"
  }
}

Create attributes in Brevo dashboard: Contacts → Settings → Contact attributes.

Response Codes

Code Meaning
200 Success (GET)
201 Created (POST)
204 Success, no content (PUT/DELETE)
400 Bad request (check payload)
401 Invalid API key
404 Contact/resource not found

Best Practices

  1. Always check blacklist before importing contacts
  2. Use updateEnabled: true to update existing contacts instead of failing
  3. Use templates for consistent transactional emails
  4. Batch operations when adding many contacts to lists
  5. Store list IDs in config, not hardcoded
  6. Log imports for audit trail

Automations

Brevo automations trigger on:

  • Contact added to list
  • Contact attribute updated
  • Email opened/clicked
  • Custom events via API

Trigger automation manually:

curl -X POST "https://api.brevo.com/v3/contacts/import" \
  -H "api-key: $BREVO_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "listIds": [10],
    "emailBlacklist": false,
    "updateExistingContacts": true,
    "emptyContactsAttributes": false,
    "jsonBody": [
      {"email": "[email protected]", "attributes": {"NOMBRE": "John"}}
    ]
  }'

Useful Queries

# Count contacts in list
curl "https://api.brevo.com/v3/contacts/lists/10" -H "api-key: $BREVO_KEY" | jq '.totalSubscribers'

# Get recent contacts
curl "https://api.brevo.com/v3/contacts?limit=10&sort=desc" -H "api-key: $BREVO_KEY"

# Check if email exists
curl "https://api.brevo.com/v3/contacts/[email protected]" -H "api-key: $BREVO_KEY"

# Get account info
curl "https://api.brevo.com/v3/account" -H "api-key: $BREVO_KEY"
安全使用建议
This skill appears to be a straightforward Brevo API cookbook, but it implicitly expects an API key at ~/.config/brevo/api_key (or a BREVO_KEY env var) even though the registry metadata lists no credentials. Before installing or invoking it: - Confirm how the agent will supply the Brevo API key. Either ensure you place a key at ~/.config/brevo/api_key with appropriate permissions or modify the skill to expect a declared environment variable (and add that to the metadata). - Limit the API key's permissions to only what's necessary (sending emails / managing contacts) and rotate/revoke it if you stop using the skill. - If you don't want the agent to read files automatically, ask the skill author to change the instructions to read the key from a declared env var or to prompt the user at runtime. - Because the skill can be invoked autonomously by the agent (default), ensure the agent's execution policy and access to your home config directory are acceptable. These mismatches look like sloppy metadata rather than malicious intent, but treat the implicit file read as a secret-access risk until resolved.
功能分析
Type: OpenClaw Skill Name: brevo Version: 1.0.0 The skill bundle is benign, providing instructions and examples for interacting with the legitimate Brevo (Sendinblue) email marketing API. It instructs the agent to retrieve the `BREVO_KEY` from `~/.config/brevo/api_key`, which is a standard and necessary practice for API authentication. All network requests are directed to the official `https://api.brevo.com/v3` domain, and there is no evidence of data exfiltration to unauthorized endpoints, malicious execution, persistence mechanisms, obfuscation, or prompt injection attempts against the agent in SKILL.md.
能力评估
Purpose & Capability
The name/description (Brevo email API) align with the documented endpoints and examples in SKILL.md. The operations (contacts, lists, sending emails) are coherent with the stated purpose.
Instruction Scope
The runtime instructions explicitly read a local secret file (BREVO_KEY=$(cat ~/.config/brevo/api_key)) and then include that value in API requests. While reading an API key is expected for this integration, the skill's instructions reference a specific filesystem path that was NOT declared in the skill metadata. There are no other out-of-scope filesystem reads or unexpected network endpoints — all network calls are to api.brevo.com.
Install Mechanism
This is an instruction-only skill with no install spec or code files, so nothing is written to disk by an installer. That minimizes install-time risk.
Credentials
The registry metadata lists no required environment variables or primary credential, yet the SKILL.md expects BREVO_KEY (sourced from ~/.config/brevo/api_key) to authenticate requests. The skill implicitly assumes a local secret file or an environment variable, but the lack of declared required credentials is inconsistent and may lead the agent to read a local file unexpectedly.
Persistence & Privilege
The skill is not always-enabled and does not request persistent system-wide changes. It does not declare modifications to other skills or global agent configuration.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install brevo
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /brevo 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
- Initial release of Brevo email marketing API skill. - Provides guides for managing contacts, lists, transactional emails, and campaigns. - Includes authentication setup and common API endpoint references. - Offers practical code examples for importing contacts, sending emails, and managing lists. - Documents safe import patterns and best practices for handling unsubscribes and updates. - Lists useful queries and automation triggers for effective email marketing workflows.
元数据
Slug brevo
版本 1.0.0
许可证
累计安装 1
当前安装数 1
历史版本数 1
常见问题

Brevo 是什么?

Brevo (formerly Sendinblue) email marketing API for managing contacts, lists, sending transactional emails, and campaigns. Use when importing contacts, sending emails, managing subscriptions, or working with email automation. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 2517 次。

如何安装 Brevo?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install brevo」即可一键安装,无需额外配置。

Brevo 是免费的吗?

是的,Brevo 完全免费(开源免费),可自由下载、安装和使用。

Brevo 支持哪些平台?

Brevo 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Brevo?

由 yuj es yoga(@yujesyoga)开发并维护,当前版本 v1.0.0。

💬 留言讨论