OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  monzo:访问 Monzo 银行账户,支持查询余额、交易记录及转账管理

monzo:访问 Monzo 银行账户,支持查询余额、交易记录及转账管理

 
  sharding ·  2026-02-16 13:04:42 · 3 次点击  · 0 条评论  

名称: monzo
描述: 接入 Monzo 银行账户 - 查询余额、查看交易、管理储蓄罐、发送应用内通知。适用于个人财务查询与银行自动化。
元数据: {"openclaw":{"emoji":"🏦","requires":{"env":["MONZO_KEYRING_PASSWORD"],"bins":["curl","jq","openssl","bc"]},"primaryEnv":"MONZO_KEYRING_PASSWORD"}}


Monzo 银行技能

接入您的 Monzo 银行账户,查询余额、查看交易记录、管理储蓄罐,并向您的 Monzo 应用发送通知。

前提条件

在设置此技能前,您需要:

  • 一个 Monzo 账户(英国个人账户、联名账户或商业账户)
  • 手机上已安装 Monzo 应用(用于 SCA 批准)
  • 正在运行且具有工作空间访问权限的 OpenClaw
  • 标准工具curljqopensslbc(大多数 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

详细设置指南

步骤 1:设置加密密码

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 的方法都有效。

步骤 2:创建 Monzo OAuth 客户端

  1. 访问 https://developers.monzo.com/ 并使用您的 Monzo 账户登录
  2. 点击 "Clients""New OAuth Client"
  3. 填写:
    - NameOpenClaw(或您喜欢的名称)
    - Logo URL(留空)
    - Redirect URLshttp://localhost ← 必须完全一致,无尾部斜杠
    - Description(留空)
    - ConfidentialityConfidential ← ⚠️ 重要!启用刷新令牌
  4. 点击 Submit
  5. 记下您的 Client ID (oauth2client_...) 和 Client Secret (mnzconf....)

步骤 3:运行设置向导

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...

步骤 4:在 Monzo 应用中批准(SCA)

⚠️ 此步骤是必需的! Monzo 要求强客户身份认证。

  1. 在手机上打开 Monzo 应用
  2. 查找关于“API 访问”或新连接的通知
  3. 点击批准

如果您没有看到通知:
- 前往 账户 → 设置 → 隐私与安全 → 管理已连接的应用
- 找到并批准您的客户端

批准后,完成设置:

scripts/setup.sh --continue

步骤 5:验证是否正常工作

# 检查认证状态
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 "检查煤气表"

给代理的重要提示

  1. 金额以便士为单位:£50 = 5000,£1.50 = 150
  2. 日期可以是相对值--since 7d 表示过去 7 天
  3. 默认使用人类可读的输出(不使用 --json 标志)
  4. 储蓄罐 ID:在存款/取款前,先使用 scripts/pots.sh 获取储蓄罐 ID
  5. 多个账户:用户可能拥有个人、联名和商业账户。默认为个人账户。使用 scripts/whoami.sh 查看所有账户。

错误处理

如果看到 forbidden.insufficient_permissions
- 告诉用户检查他们的 Monzo 应用并批准 API 访问
- 然后运行 scripts/setup.sh --continue

如果看到 MONZO_KEYRING_PASSWORD not set
- 进程环境中没有设置该环境变量
- 引导用户使用设置指南步骤 1 中的任一方法进行设置


脚本参考

balance - 查询账户余额

scripts/balance.sh                 # 默认账户
scripts/balance.sh acc_...         # 指定账户
scripts/balance.sh --json          # JSON 输出

输出示例:

当前余额:£1,234.56
总计(含储蓄罐):£2,500.00
今日支出:£12.34

transactions - 交易历史记录

获取所有可用交易(分页),按最新优先显示。

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 笔交易

pots - 储蓄罐管理

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...

feed - 发送应用通知

scripts/feed.sh --title "提醒"                        # 简单通知
scripts/feed.sh --title "警报" --body "详情在此"    # 带正文
scripts/feed.sh --title "链接" --url "https://..."   # 带点击操作

whoami - 检查认证状态

scripts/whoami.sh                  # 显示认证状态和账户
scripts/whoami.sh --account-id     # 仅显示默认账户 ID
scripts/whoami.sh --json           # JSON 输出

receipt - 为交易附加收据

scripts/receipt.sh create tx_... --merchant "商店" --total 1234 --item "物品:1234"
scripts/receipt.sh get ext_...
scripts/receipt.sh delete ext_...

webhooks - 管理 Webhook(高级)

scripts/webhooks.sh list
scripts/webhooks.sh create https://your-server.com/webhook
scripts/webhooks.sh delete webhook_...

故障排除

"forbidden.insufficient_permissions"

最常见的问题! Monzo 要求应用内批准(SCA)。

修复方法:
1. 打开 Monzo 应用 → 检查通知 → 批准
2. 或者:账户 → 设置 → 隐私与安全 → 管理已连接的应用 → 批准
3. 运行:scripts/setup.sh --continue

"MONZO_KEYRING_PASSWORD not set"

进程环境中未设置该环境变量。

修复方法: 使用设置指南步骤 1 中描述的任何方法设置 MONZO_KEYRING_PASSWORD,然后重启 OpenClaw。

"Authorization code has been used"

每个授权码只能使用一次。重新开始:

scripts/setup.sh --reset

"No refresh token received"

您的 OAuth 客户端未设置为“Confidential”。创建一个新的客户端,设置机密性为 Confidential,然后:

scripts/setup.sh --reset

"Credentials file not found"

先运行设置:

scripts/setup.sh

"Failed to decrypt credentials"

MONZO_KEYRING_PASSWORD 错误。请检查您的配置与设置时使用的密码是否匹配。


安全说明

  • 凭据静态加密(AES-256-CBC)
  • 加密密钥是您的 MONZO_KEYRING_PASSWORD
  • 访问令牌自动刷新(无需手动干预)
  • 文件权限设置为 600(仅所有者)
  • 所有 API 调用均使用 HTTPS
  • 不记录敏感数据

文件结构

skills/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


API 功能覆盖

功能 脚本
认证 setup, whoami
余额 balance
交易 transactions
储蓄罐 pots
通知 feed
收据 receipt
Webhooks webhooks
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor