Community寫作與編輯github.com

SyntaxFear/bog-banking-skill

適用於 AI 編碼代理(如 Claude Code、Codex 等)的唯讀銀行技能,可透過聊天查詢喬治亞銀行(Business Online)帳戶餘額、交易明細、消費記錄及匯率。

bog-banking-skill 是什麼?

SyntaxFear/bog-banking-skill 是一個專為 AI 編碼代理設計的唯讀銀行技能,支援 Claude Code、Codex 及任何相容於 SKILL.md 格式的代理。此技能透過內建工具 scripts/bog.py 與 Bank of Georgia 的 Business Online API 安全互動,可查詢帳戶餘額、交易明細、當日活動紀錄及官方匯率。其核心優勢在於完全唯讀設計——絕不具備發送付款、轉帳或簽署文件的功能,確保金融資料安全。技能提供詳細的引導式設定流程,包括 API 金鑰建立、帳戶綁定與貨幣自動偵測,並支援多帳戶管理。設定完成後,代理即可依據使用者需求執行查詢,並以自然語言分析結果,而非直接輸出原始 JSON 資料。此技能特別適合開發者在 CLI 或整合開發環境中,透過對話快速掌握企業帳戶財務狀況,無需切換至銀行網頁介面。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add SyntaxFear/bog-banking-skill

Installed? Explore more 寫作與編輯 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

BOG 銀行技能(唯讀)

透過對話協助使用者了解並管理其 Bank of Georgia Business Online 帳戶。內建工具(scripts/bog.py)負責資料存取並輸出 JSON;您則進行分析(分類、加總、對帳、標記異常)。適用於任何相容 SKILL.md 的代理(Claude Code、Codex 等)。

嚴格規則

  1. 永遠唯讀。 僅執行此處列出的 bog.py 指令。絕不發送付款、轉帳、簽署文件或呼叫任何寫入端點——此處沒有這樣的端點。若被要求動用資金,請說明此技能為唯讀,使用者必須自行在其 BOG 應用程式中操作(您仍可協助他們準備)。
  2. 謹慎處理金融資料;除非被要求,否則以摘要呈現而非傾印原始表格。
  3. 當您詢問憑證時,絕不在回覆中回顯 Client Secret,也不要把它印出來。該工具會將其儲存在本地端供您使用。

執行工具

python3 scripts/bog.py <command> [options]

每次執行會輸出一個 JSON 物件:command、mode(live/mock)、ok,以及 data 或 error+message。解析後,再以白話回答。

每次對話:先檢查狀態

在執行任何需要資料的操作之前,請先執行:

python3 scripts/bog.py whoami
  • ok: true 且 data.accounts_configured > 0 → 已完全設定;直接處理使用者的請求。絕不重新詢問憑證或已儲存的 IBAN。
  • ok: true 但 accounts_configured 為 0 → 金鑰可用,但尚無帳戶 → 執行 步驟 6 的入職流程(新增 IBAN)。
  • error: "no_keys" → 全新使用者 → 執行下方的首次設定。
  • error: "invalid_credentials" → 金鑰被拒絕 → 請見下方的步驟 5。

首次設定(入職流程)—— 引導使用者完成此流程一次

態度要親切,並逐步進行。完整的逐步點擊版本(包含確切的 BOG 畫面與連結)位於 reference/getting-credentials.md —— 請用自己的話轉述,並提供使用者下方的連結。

步驟 1 — 說明與安撫。 告訴使用者此技能是唯讀(絕不能動用資金),並且您需要 Bank of Georgia 的兩項資訊:Client ID 和 Client Secret。

步驟 2 — 登入。 請使用者使用其 Business Online 憑證,登入其商務銀行網站 **https://bonline.bog.ge/**。

步驟 3 — 建立 API 金鑰。 請使用者開啟 https://bonline.bog.ge/admin/api 並點擊 新增,然後:

  • 整合類型 — 選擇 Client Credentials Flow(自動授權類型,使用 Client ID + Client Secret,無需使用者名稱或密碼)。
  • API 客戶端名稱 — 任意名稱(例如其網路銀行使用者名稱,或 Banking Assistant)。
  • 使用一次性驗證碼(OTP) 確認。

步驟 4 — 複製金鑰。 BOG 接著會顯示 Client ID 和 Client Secret(部分畫面標示為 Public Key / Secret Key —— 內容相同)。請使用者貼上兩者,然後儲存 —— 透過 stdin 傳入 JSON,這樣機密就不會出現在命令列上:

python3 scripts/bog.py save-credentials <<'JSON'
{"client_id":"<Client ID>","client_secret":"<Client Secret>"}
JSON

絕不回顯 Client Secret。

步驟 5 — 確認登入。 再次執行 whoami。

  • ok: true → 金鑰可用。繼續進行步驟 6。
  • error: "invalid_credentials" → 可能是金鑰錯誤,或者使用者的 BOG 商務銀行專員尚未啟用 API 存取權限。請告知使用者這兩種可能性,並提供重新輸入的選項(必要時先清除:python3 scripts/bog.py forget-credentials)。

步驟 6 — 新增第一個帳戶。 詢問一個帳戶 IBAN(例如 GE..BG...)。此資訊可在其對帳單和 BOG 應用程式中找到,而且並非機密。無需詢問幣別。然後:

python3 scripts/bog.py add-account --iban <IBAN>
python3 scripts/bog.py discover --account <IBAN>

discover 會自動偵測該 IBAN 持有的幣別(GEL/USD/EUR/GBP)。

步驟 7 — 首次即時結果。 執行 balance 並以美觀方式呈現(請見呈現結果)。恭喜他們 —— 設定完成 —— 然後詢問是否要新增另一個帳戶,並回答他們原本的問題。

想在準備好金鑰之前先展示?python3 scripts/bog.py --mock balance 會傳回逼真的範例資料,無需存取銀行(請務必說明這是範例資料)。

後續設定 / 管理帳戶

BOG 無法列出公司的帳戶,因此您需要向使用者收集 IBAN —— 一次一個,僅收集他們想要的部分。新增時一律是合併(保留現有 IBAN)。IBAN 會持續存在,並在後續每次呼叫時重複使用 —— 一旦 whoami 回傳 ok,絕不再重新詢問已儲存的 IBAN,也絕不再重新詢問憑證。

  • "新增另一個帳戶 GE.." → add-account --iban <IBAN> 然後 discover --account <IBAN>(然後詢問是否還要再加)
  • "移除 / 忘記帳戶 GE.." → remove-account --iban <IBAN>(僅在使用者明確要求時執行)
  • "你有哪些帳戶?" → accounts

唯讀指令

指令回傳內容
whoami憑證是否存在及是否可用
add-account --iban GE.. [--currency GEL]新增一個 IBAN(合併;保留直到被移除)
remove-account --iban GE.. [--currency GEL]移除一個 IBAN(或僅移除一個幣別)
discover [--account IBAN] [--currencies GEL,USD]探查已儲存 IBAN 的幣別,並儲存它們
accounts已儲存的 IBAN 及其幣別
balance [--account IBAN] [--currency GEL]可用餘額 + 當前餘額
statement [--account IBAN] [--currency GEL] [--from YYYY-MM-DD] [--to YYYY-MM-DD]指定期間的交易記錄(自動分頁)
today [--account IBAN] [--currency GEL]當日盤中活動
rates [--currency USD]NBG 官方匯率 + BOG 商業買入/賣出價

預設 = 全部。 如果您沒有傳入 --account/--currency,指令會自動涵蓋所有已設定的 IBAN 及其持有的每種幣別(它會自動偵測幣別)。僅在使用者指定時(例如「我的美元餘額」、「帳戶 GE..123」)才傳入 --account 和/或 --currency。這些指令會回傳一個清單(每個 IBAN+幣別一個條目);某個條目可能因該帳戶未持有該幣別而帶有 error —— 直接跳過即可。

彙總時,絕不將不同幣別的金額相加 —— 請分別報告每種幣別(例如 GEL 總額和 USD 總額)。

範例

  • "我的餘額是多少?" → balance(涵蓋所有帳戶 + 幣別)
  • "我的美元餘額?" → balance --currency USD
  • "上個月的交易記錄" → statement --from 2026-05-01 --to 2026-05-31
  • "我付給<供應商>多少錢?" → 執行 statement,然後自行篩選/加總。
  • "有任何異常嗎?" → 執行 statement,然後標記重複項目、整數金額、新的交易對手、異常大的金額。
  • "美元匯率?" → rates --currency USD

模擬模式

傳入 --mock(或設定 BOG_MOCK=1)以回傳逼真的範例資料,無需存取銀行 —— 可在使用者準備好憑證之前用來展示此技能。當結果為範例資料時,務必告知使用者。

呈現結果

  • 金額格式請使用千分位分隔符號 + 2 位小數(例如 18,430.75 GEL)。
  • 先給答案,再附上簡短細項說明;說明分組假設。
  • 進行對帳時,明確標記可能的重複項目、異常大的金額、新的/不明的交易對手,以及整數付款。

請參閱 reference/getting-credentials.md 取得完整的憑證操作說明,以及 reference/endpoints.md 了解底層的 BOG 端點。

相關技能