财务技能:个人支出追踪与分析 - Openclaw Skills

作者:互联网

2026-03-24

AI教程

什么是 财务技能?

财务技能作为 AI 代理的持久记忆层,使其能够精确处理个人财务任务。它通过提供解析 PDF 或图像账单并将其整理到结构化 JSON 数据库中的工具,弥补了原始财务文档与可行性见解之间的鸿沟。

该技能确保您的代理能够记住过去的支出、识别模式,并帮助您在无需手动输入数据的情况下保持预算。通过利用 Openclaw Skills 进行财务管理,开发人员可以构建直接在对话界面中提供高实用性个人会计服务的代理。

下载入口:https://github.com/openclaw/skills/tree/main/skills/safaiyeh/finance-skill

安装与下载

1. ClawHub CLI

从源直接安装技能的最快方式。

npx clawhub@latest install finance-skill

2. 手动安装

将技能文件夹复制到以下位置之一

全局模式 ~/.openclaw/skills/ 工作区 /skills/

优先级:工作区 > 本地 > 内置

3. 提示词安装

将此提示词复制到 OpenClaw 即可自动安装。

请帮我使用 Clawhub 安装 finance-skill。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。

财务技能 应用场景

  • 上传信用卡或银彳对账单以自动记录交易。
  • 查询特定类别(如食品、交通或账单)的支出历史。
  • 计算特定月份或日期范围的总支出。
  • 通过自然语言命令添加手动的一次性交易。
  • 将提取的数据与对账单总额进行验证,以确保会计准确性。
财务技能 工作原理
  1. 用户与代理分享财务对账单(PDF 或图像)。
  2. 代理利用 pypdf 从文档中提取全文,绕过许多即时通讯平台中的预览限制。
  3. 提取的数据被转换为包含商户名称、金额和类别的结构化 JSON 格式。
  4. 代理在保存前根据对账单总额验证支出总和,以确保数据完整性。
  5. 交易被追加到位于标准 Openclaw Skills 工作区目录中的持久本地存储中。
  6. 用户随后可以使用自然语言查询代理,使用 jq 过滤、聚合和可视化其财务数据。

财务技能 配置指南

要启用此技能的全部功能,请安装用于 PDF 解析和 JSON 操作的必要依赖项:

pip3 install pypdf
# 对于 Linux 用户
sudo apt install jq
# 对于 macOS 用户
brew install jq

确保工作区目录存在以进行持久存储:

mkdir -p ~/.openclaw/workspace/finance/statements/

财务技能 数据架构与分类体系

交易组织在 ~/.openclaw/workspace/finance/transactions.json 中。该模式旨在方便查询并与其他 Openclaw Skills 集成。

字段 类型 描述
id UUID 交易的唯一标识符
date 字符串 YYYY-MM-DD 格式的交易日期
merchant 字符串 供应商或服务提供商的名称
amount 浮点数 支出为负值,收入/退款为正值
category 字符串 分类(例如:食品、交通、购物、账单)
source 字符串 原始源账单的文件名
added ISO8601 记录创建时的时间戳

Finance Skill

Personal finance memory layer. Parse statements, store transactions, query spending.

Data Location

  • Transactions: ~/.openclaw/workspace/finance/transactions.json
  • Raw statements: ~/.openclaw/workspace/finance/statements/

Storage convention: OpenClaw workspace (~/.openclaw/workspace/) is the standard location for persistent user data. This matches where session-memory and other hooks store agent data. Credentials/config would go in ~/.config/finance/ if needed.

Tools

1. Parse Statement

When user shares a statement (image or PDF):

?? IMPORTANT: T@elegrimm/channel previews truncate PDFs! Always extract with pypdf first to get ALL pages:

python3 -c "
import pypdf
reader = pypdf.PdfReader('/path/to/statement.pdf')
for i, page in enumerate(reader.pages):
    print(f'=== PAGE {i+1} ===')
    print(page.extract_text())
"

Then parse the full text output:

  1. Extract transactions from ALL pages
  2. Return JSON array: [{date, merchant, amount, category}, ...]
  3. Run scripts/add-transactions.sh to append to store
  4. Verify total matches statement (sum of expenses should equal "Total purchases")

Extraction format:

Each transaction: {"date": "YYYY-MM-DD", "merchant": "name", "amount": -XX.XX, "category": "food|transport|shopping|bills|entertainment|health|travel|other"}
Negative = expense, positive = income/refund.

Categories:

  • food: restaurants, groceries, coffee, fast food
  • transport: Waymo, Uber, gas, public transit
  • shopping: retail, online purchases
  • bills: utilities, subscriptions
  • entertainment: movies, concerts, theme parks
  • health: pharmacy, doctors
  • travel: hotels, flights

2. Query Transactions

User asks about spending → read transactions.json → filter/aggregate → answer

Example queries:

  • "How much did I spend last month?" → sum all negative amounts in date range
  • "What did I spend on food?" → filter by category
  • "Show my biggest expenses" → sort by amount

3. Add Manual Transaction

User says "I spent $X at Y" → append to transactions.json

File Format

{
  "transactions": [
    {
      "id": "uuid",
      "date": "2026-02-01",
      "merchant": "Whole Foods",
      "amount": -87.32,
      "category": "food",
      "source": "statement-2026-01.pdf",
      "added": "2026-02-09T19:48:00Z"
    }
  ],
  "accounts": [
    {
      "id": "uuid",
      "name": "Coinbase Card",
      "type": "credit",
      "lastUpdated": "2026-02-09T19:48:00Z"
    }
  ]
}

Usage Flow

  1. User: shares statement image
  2. Agent: extracts transactions via vision, confirms count
  3. Agent: runs add script to store
  4. User: "how much did I spend on food?"
  5. Agent: reads store, filters, answers

Dependencies

  • jq — for JSON transaction storage and querying (apt install jq / brew install jq)
  • pypdf — for full PDF text extraction (pip3 install pypdf)

Lessons Learned

  • T@elegrimm truncates PDF previews — always use pypdf to get all pages
  • Verify totals — sum extracted expenses and compare to statement total before importing
  • Coinbase Card — no Plaid support, statement upload only

Future: Plaid Integration

  • Add finance_connect tool for Plaid OAuth flow
  • Auto-sync transactions from connected banks
  • Same query interface, different data source