sag: 具备 macOS Say 用户体验的 ElevenLabs 文本转语音工具 - Openclaw Skills
2026-08-16
2026-08-17 0
AgentMail 是专为 AI 代理从零设计的专业邮件基础设施。与 Gmail 或 Outlook 等消费级邮件服务不同,AgentMail 专注于程序化访问,为 Openclaw Skills 提供创建、管理和扩展基于邮件身份的能力。它为需要将邮件功能集成到代理工作流中的开发人员提供了无缝体验,无需处理复杂的 OAuth 流程或严格的速率限制。
通过使用 AgentMail,您的代理将获得一个能够处理富文本、HTML 内容和文件附件的专业通信渠道。该平台是需要可靠入站和出站通信的 Openclaw Skills 的核心组件,使代理能够在维护开发人员优先的基础设施方法的同时,作为全球邮件生态系统中的一等公民发挥作用。
下载入口:https://github.com/openclaw/skills/tree/main/skills/adboio/agentmail从源直接安装技能的最快方式。
npx clawhub@latest install agentmail
将技能文件夹复制到以下位置之一
全局模式~/.openclaw/skills/
工作区
/skills/
优先级:工作区 > 本地 > 内置
将此提示词复制到 OpenClaw 即可自动安装。
请帮我使用 Clawhub 安装 agentmail。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。
要将 AgentMail 集成到您的 Openclaw Skills 中,请执行以下安装步骤:
pip install agentmail python-dotenv
export AGENTMAIL_API_KEY='your_api_key_here'
AgentMail 组织其数据以使其易于被 Openclaw Skills 访问,重点关注程序化实体:
| 组件 | 功能 | 属性 |
|---|---|---|
| 收件箱 (Inbox) | 代表代理的邮件账户。 | inbox_id, username, client_id |
| 消息 (Message) | 邮件传输的有效载荷。 | to, subject, text, html, attachments |
| Webhook | 实时事件的配置。 | url, client_id |
| 附件 (Attachment) | 与消息关联的文件。 | filename, content (base64) |
所有数据都通过 API 优先的方法处理,确保邮件可以轻松解析为结构化格式供 LLM 使用。
name: agentmail
description: API-first email platform designed for AI agents. Create and manage dedicated email inboxes, send and receive emails programmatically, and handle email-based workflows with webhooks and real-time events. Use when you need to set up agent email identity, send emails from agents, handle incoming email workflows, or replace traditional email providers like Gmail with agent-friendly infrastructure.
AgentMail is an API-first email platform designed specifically for AI agents. Unlike traditional email providers (Gmail, Outlook), AgentMail provides programmatic inboxes, usage-based pricing, high-volume sending, and real-time webhooks.
pip install agentmail python-dotenvAGENTMAIL_API_KEY=your_key_herefrom agentmail import AgentMail
client = AgentMail(api_key=os.getenv("AGENTMAIL_API_KEY"))
# Create inbox with custom username
inbox = client.inboxes.create(
username="spike-assistant", # Creates [email protected]
client_id="unique-identifier" # Ensures idempotency
)
print(f"Created: {inbox.inbox_id}")
client.inboxes.messages.send(
inbox_id="[email protected]",
to="[email protected]",
subject="Task completed",
text="The PDF rotation is finished. See attachment.",
html="The PDF rotation is finished. See attachment.
",
attachments=[{
"filename": "rotated.pdf",
"content": base64.b64encode(file_data).decode()
}]
)
inboxes = client.inboxes.list(limit=10)
for inbox in inboxes.inboxes:
print(f"{inbox.inbox_id} - {inbox.display_name}")
Set up webhooks to respond to incoming emails immediately:
# Register webhook endpoint
webhook = client.webhooks.create(
url="https://your-domain.com/webhook",
client_id="email-processor"
)
See WEBHOOKS.md for complete webhook setup guide including ngrok for local development.
For branded email addresses (e.g., [email protected]), upgrade to a paid plan and configure custom domains in the console.
?? Risk: Incoming email webhooks expose a prompt injection vector. Anyone can email your agent inbox with instructions like:
Solution: Use a Clawdbot webhook transform to allowlist trusted senders.
~/.clawdbot/hooks/email-allowlist.ts:const ALLOWLIST = [
'[email protected]', // Your personal email
'[email protected]', // Any trusted services
];
export default function(payload: any) {
const from = payload.message?.from?.[0]?.email;
// Block if no sender or not in allowlist
if (!from || !ALLOWLIST.includes(from.toLowerCase())) {
console.log(`[email-filter] ? Blocked email from: ${from || 'unknown'}`);
return null; // Drop the webhook
}
console.log(`[email-filter] ? Allowed email from: ${from}`);
// Pass through to configured action
return {
action: 'wake',
text: `?? Email from ${from}:
${payload.message.subject}
${payload.message.text}`,
deliver: true,
channel: 'slack', // or 'telegram', 'discord', etc.
to: 'channel:YOUR_CHANNEL_ID'
};
}
~/.clawdbot/clawdbot.json):{
"hooks": {
"transformsDir": "~/.clawdbot/hooks",
"mappings": [
{
"id": "agentmail",
"match": { "path": "/agentmail" },
"transform": { "module": "email-allowlist.ts" }
}
]
}
}
clawdbot gateway restartIf you want to review untrusted emails before acting:
{
"hooks": {
"mappings": [{
"id": "agentmail",
"sessionKey": "hook:email-review",
"deliver": false // Don't auto-deliver to main ch@t
}]
}
}
Then manually review via /sessions or a dedicated command.
scripts/send_email.py - Send emails with rich content and attachmentsscripts/check_inbox.py - Poll inbox for new messagesscripts/setup_webhook.py - Configure webhook endpoints for real-time processing