名称: monzo
描述: 接入 Monzo 银行账户 - 查询余额、查看交易、管理储蓄罐、发送应用内通知。适用于个人财务查询与银行自动化。
元数据: {"openclaw":{"emoji":"🏦","requires":{"env":["MONZO_KEYRING_PASSWORD"],"bins":["curl","jq","openssl","bc"]},"primaryEnv":"MONZO_KEYRING_PASSWORD"}}
接入您的 Monzo 银行账户,查询余额、查看交易记录、管理储蓄罐,并向您的 Monzo 应用发送通知。
在设置此技能前,您需要:
curl、jq、openssl、bc(大多数 Linux 系统已预装)# 1. 设置 MONZO_KEYRING_PASSWORD 环境变量(见下文“设置密码”部分)
# 2. 在 https://developers.monzo.com/ 创建 OAuth 客户端
# - 设置机密性:Confidential
# - 设置重定向 URL:http://localhost
# 3. 运行设置脚本
scripts/setup.sh
# 4. 根据提示在 Monzo 应用中批准,然后运行:
scripts/setup.sh --continue
# 5. 测试
scripts/balance.sh
MONZO_KEYRING_PASSWORD 环境变量用于加密您存储的 Monzo 凭据。请选择一个强且唯一的密码,并妥善保管——如果您需要迁移或恢复此技能,将需要此密码。
有多种方式提供此变量。请选择适合您设置的方式:
选项 A:OpenClaw 技能配置(最简单)
添加到您的 OpenClaw 配置(例如 openclaw.json):
{
skills: {
entries: {
"monzo": {
enabled: true,
env: {
"MONZO_KEYRING_PASSWORD": "在此选择一个安全的密码"
}
}
}
}
}
然后重启:openclaw gateway restart
注意: 此方法会将密码以明文形式存储在配置文件中。请确保文件权限严格(
chmod 600)且不提交到版本控制。
选项 B:Shell 环境(将密码排除在配置文件外)
添加到您的 Shell 配置文件(~/.bashrc、~/.zshrc 等):
export MONZO_KEYRING_PASSWORD="在此选择一个安全的密码"
然后重启您的 Shell 和 OpenClaw。
选项 C:systemd EnvironmentFile(适用于服务器部署)
创建一个密钥文件(例如 /etc/openclaw/monzo.env):
MONZO_KEYRING_PASSWORD=在此选择一个安全的密码
设置权限:chmod 600 /etc/openclaw/monzo.env
在您的 systemd 单元文件中通过 EnvironmentFile=/etc/openclaw/monzo.env 引用它。
选项 D:密码管理器 / 密钥管理器
使用您偏好的密钥工具在运行时注入环境变量。任何能在进程环境中设置 MONZO_KEYRING_PASSWORD 的方法都有效。
OpenClaw(或您喜欢的名称)http://localhost ← 必须完全一致,无尾部斜杠oauth2client_...) 和 Client Secret (mnzconf....)scripts/setup.sh
向导将:
1. 询问您的 Client ID 和 Client Secret
2. 提供一个授权 URL,请在浏览器中打开
3. 要求您将重定向 URL 粘贴回来
4. 将授权码交换为访问令牌
5. 保存加密的凭据
替代方案:非交互模式(适用于自动化或代理):
scripts/setup.sh --non-interactive \
--client-id oauth2client_xxx \
--client-secret mnzconf.xxx \
--auth-code eyJ...
⚠️ 此步骤是必需的! Monzo 要求强客户身份认证。
如果您没有看到通知:
- 前往 账户 → 设置 → 隐私与安全 → 管理已连接的应用
- 找到并批准您的客户端
批准后,完成设置:
scripts/setup.sh --continue
# 检查认证状态
scripts/whoami.sh
# 检查余额
scripts/balance.sh
您应该能看到您的账户信息和当前余额。完成!🎉
本节告诉代理如何有效使用此技能。
当用户询问以下内容时使用此技能:
- 余额:“我有多少钱?”、“我的余额是多少?”
- 交易:“我在 X 上花了多少钱?”、“显示最近的交易”
- 消费分析:“我这个月在咖啡上花了多少钱?”
- 储蓄:“我的储蓄罐里有多少钱?”、“转 £X 到我的度假罐”
- 通知:“给我的 Monzo 应用发送一个提醒”
# “我有多少钱?”
scripts/balance.sh
# “给我看看最近的交易” / “我花了什么?”
scripts/transactions.sh # 所有可用交易,最新优先
# “给我看我最近的 5 笔交易”
scripts/transactions.sh --limit 5 # 最近的 5 笔
# “我这周花了什么?”
scripts/transactions.sh --since 7d
# “我这个月在咖啡上花了多少钱?”
scripts/transactions.sh --search coffee --since 30d
# “我的储蓄罐有哪些?”
scripts/pots.sh
# “放 £50 到我的度假基金里”
scripts/pots.sh deposit pot_XXXXX 5000 # 金额以便士为单位!
# “给我的手机发个提醒”
scripts/feed.sh --title "别忘了!" --body "检查煤气表"
--since 7d 表示过去 7 天--json 标志)scripts/pots.sh 获取储蓄罐 IDscripts/whoami.sh 查看所有账户。如果看到 forbidden.insufficient_permissions:
- 告诉用户检查他们的 Monzo 应用并批准 API 访问
- 然后运行 scripts/setup.sh --continue
如果看到 MONZO_KEYRING_PASSWORD not set:
- 进程环境中没有设置该环境变量
- 引导用户使用设置指南步骤 1 中的任一方法进行设置
scripts/balance.sh # 默认账户
scripts/balance.sh acc_... # 指定账户
scripts/balance.sh --json # JSON 输出
输出示例:
当前余额:£1,234.56
总计(含储蓄罐):£2,500.00
今日支出:£12.34
获取所有可用交易(分页),按最新优先显示。
scripts/transactions.sh # 所有交易,最新优先
scripts/transactions.sh --limit 10 # 最近的 10 笔
scripts/transactions.sh --since 7d # 仅过去 7 天
scripts/transactions.sh --since 2026-01-01 # 自特定日期起
scripts/transactions.sh --search coffee # 按商户/描述/备注搜索
scripts/transactions.sh --search "Pret" --since 30d # 组合筛选
scripts/transactions.sh --id tx_... # 获取特定交易
scripts/transactions.sh --json # JSON 输出
输出示例:
日期 金额 描述 类别
============ ========== =================================== ===============
2026-01-29 -£3.50 Pret A Manger 餐饮
2026-01-29 -£12.00 TfL 交通
2026-01-28 -£45.23 Tesco 杂货
总计:3 笔交易
scripts/pots.sh # 列出所有储蓄罐
scripts/pots.sh list --json # JSON 输出
scripts/pots.sh deposit pot_... 5000 # 存入 £50(5000 便士)
scripts/pots.sh withdraw pot_... 2000 # 取出 £20(2000 便士)
输出示例(列表):
名称 余额 目标 ID
========================= ============ ============ ====================
度假基金 £450.00 £1,000.00 pot_0000...
应急资金 £2,000.00 £3,000.00 pot_0001...
scripts/feed.sh --title "提醒" # 简单通知
scripts/feed.sh --title "警报" --body "详情在此" # 带正文
scripts/feed.sh --title "链接" --url "https://..." # 带点击操作
scripts/whoami.sh # 显示认证状态和账户
scripts/whoami.sh --account-id # 仅显示默认账户 ID
scripts/whoami.sh --json # JSON 输出
scripts/receipt.sh create tx_... --merchant "商店" --total 1234 --item "物品:1234"
scripts/receipt.sh get ext_...
scripts/receipt.sh delete ext_...
scripts/webhooks.sh list
scripts/webhooks.sh create https://your-server.com/webhook
scripts/webhooks.sh delete webhook_...
最常见的问题! Monzo 要求应用内批准(SCA)。
修复方法:
1. 打开 Monzo 应用 → 检查通知 → 批准
2. 或者:账户 → 设置 → 隐私与安全 → 管理已连接的应用 → 批准
3. 运行:scripts/setup.sh --continue
进程环境中未设置该环境变量。
修复方法: 使用设置指南步骤 1 中描述的任何方法设置 MONZO_KEYRING_PASSWORD,然后重启 OpenClaw。
每个授权码只能使用一次。重新开始:
scripts/setup.sh --reset
您的 OAuth 客户端未设置为“Confidential”。创建一个新的客户端,设置机密性为 Confidential,然后:
scripts/setup.sh --reset
先运行设置:
scripts/setup.sh
MONZO_KEYRING_PASSWORD 错误。请检查您的配置与设置时使用的密码是否匹配。
MONZO_KEYRING_PASSWORDskills/monzo/
├── SKILL.md # 本文档
└── scripts/
├── lib/monzo.sh # 共享库
├── setup # OAuth 设置向导
├── whoami # 验证认证
├── balance # 查询余额
├── transactions # 交易历史记录
├── pots # 储蓄罐
├── feed # 应用通知
├── receipt # 收据管理
└── webhooks # Webhook 管理
凭据文件: ~/.openclaw/credentials/monzo.json(加密,旧版安装可能在 ~/.clawdbot/credentials/monzo.json)
| 功能 | 脚本 |
|---|---|
| 认证 | setup, whoami |
| 余额 | balance |
| 交易 | transactions |
| 储蓄罐 | pots |
| 通知 | feed |
| 收据 | receipt |
| Webhooks | webhooks |