raiffeisen-elba

Automate Raiffeisen ELBA online banking: login/logout, list accounts, and fetch transactions via Playwright.

Oliver Drobnik

@odrobnik

Install

$ openclaw skills install @odrobnik/raiffeisen-elba

Raiffeisen ELBA Banking Automation

Fetch current account balances, securities depot positions, and transactions for all account types in JSON format. Uses Playwright to automate Raiffeisen ELBA online banking.

⚠️ Security & 2FA Flow

This skill requires explicit 2FA approval on the user's mobile device (pushTAN).

  1. Start the Login Process: Start the login using the OpenClaw process tool with the exec command or run it as a background job via the exec tool.
  2. Tell the user to approve: You MUST stop executing further commands and inform the user of the pushTAN code (e.g., ELBA PUSHTAN CODE: XXXX). Do not loop polling the process without telling the user what to do. Use sessions_yield to wait for the user to confirm approval.
  3. Wait for approval: Only resume the automation flow after the user confirms approval. If the login process exits with a timeout (usually 60-300 seconds), ask the user if they are ready before restarting the login.
  4. Ephemeral Bearer Token: After successful 2FA, the token is cached locally (0600).
  5. Always Logout: Run logout after completing operations to clear the session.

Setup & Configuration

See SETUP.md for prerequisites and configuration.

  • Profiles: Credentials live in <WORKSPACE_ROOT>/raiffeisen-elba/config.json. If it has a profiles object, each key is a profile name; check which profiles exist when it is ambiguous which login the user means.
  • Profile Argument: If multiple profiles exist, pass --profile <name> to all ELBA commands. The argument must match the key in config.json.

Commands

Entry point: python3 {baseDir}/scripts/elba.py

# Authenticate (requires pushTAN approval)
python3 {baseDir}/scripts/elba.py [--profile <name>] login

# List all accounts
python3 {baseDir}/scripts/elba.py [--profile <name>] accounts [--json]

# Download transactions (--json prints to stdout; --out <file> writes a file instead)
# Important: If the account ID/IBAN fails, check the exact ID string output by the `accounts` command. Some accounts have an internal ID rather than a pure IBAN.
python3 {baseDir}/scripts/elba.py [--profile <name>] transactions --account <id|iban> --from YYYY-MM-DD --until YYYY-MM-DD [--json]

# Fetch depot portfolio positions
python3 {baseDir}/scripts/elba.py [--profile <name>] portfolio --depot-id <id> [--json]

# Clear session and cached token
python3 {baseDir}/scripts/elba.py [--profile <name>] logout

Recommended Workflow

  1. Check config.json for the profile name if more than one login is configured.
  2. Run the login process using the exec and process tools to read the generated pushTAN code.
  3. Inform the user to approve the pushTAN on their device and wait for their confirmation.
  4. Once logged in, run accounts --json to get the list of accounts and exact account IDs.
  5. Run transactions --account <exact-id-from-step-4> --from YYYY-MM-DD --until YYYY-MM-DD --json and redirect the output to a JSON file (e.g. > /tmp/elba_tx.json). Progress messages go to stderr, so the file contains only JSON.
  6. Run logout to clear the session.

Top skills in this category

Free Ride - Unlimited free AI

@shaivpidadi

Manages free AI models from OpenRouter for OpenClaw. Automatically ranks models by quality, configures fallbacks for rate-limit handling, and updates opencla...

49172k

SuperDesign

@mpociot

Expert frontend design guidelines for creating beautiful, modern UIs. Use when building landing pages, dashboards, or any user interface.

19442k

Video Frames

@steipete

Extract frames or short clips from videos using ffmpeg.

13359k

Playwright (Automation + MCP + Scraper)

@ivangdavila

Automates, tests, and debugs browsers with Playwright: locators, auto-waiting, traces, CI runs, and MCP browser control. Use when a test is flaky, times out, or fails only in CI or headless; when a locator matches multiple elements or the wrong one (strict mode violation); when clicks need force, waits become sleeps, or networkidle never settles; for storageState and login setup, request mocking and HAR replay, uploads and downloads, iframes and shadow DOM, popups and dialogs, screenshot diffs that change per machine, trace and report artifacts, sharding a slow suite, device and permission emulation, accessibility checks, driving a real browser through Playwright MCP, extracting data from JS-rendered pages, or porting a Cypress, Puppeteer, or Selenium suite to Playwright. Not for maintaining an existing Cypress or Puppeteer suite (cypress, puppeteer) or for work a plain HTTP request answers (http).

13043k

YouTube

@byungkyu

YouTube Data API integration with managed OAuth. Search videos, manage playlists, access channel data, and interact with comments. Use this skill when users want to interact with YouTube. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Calls run through the `maton` CLI with OAuth login, or over raw HTTP with a Maton API key where the CLI cannot be installed. Every call is authenticated as the user's connection and reaches only what that connection's authorization allows, which the provider enforces on every request; the endpoints documented here are the ones this skill uses, and any other endpoint of this app needs the user to ask for it by name. Default to read and list calls, and confirm every write or new connection with the user. This file also documents the three constructs that turn a YouTube connection into automation, in the order they are used: the connection (the first step), a hosted function that runs a YouTube action through the Maton SDK, and a trigger that calls that function on a schedule or on an event. Those sections are the platform's own reference text, shared with the api-gateway skill, with YouTube examples; they add no YouTube capability - YouTube is not an event source, a trigger cannot read YouTube data, and the files under `references/<source>/triggers.md` are the platform's event catalogues for the sources Maton offers (time, Calendly, GitHub, Gmail, HubSpot, Linear, Notion, Slack, Stripe).

14529k