360 Secure SkillHub
360 安全技能中心

ebusy-courts

该 Skill 封装通用 Python 客户端 ebusy_api.py,从环境变量读取 eBusy 基础地址、账号、密码、球场模块 ID 与起始球场号,登录 eBusy 预订系统,抓取指定日期的预订 JSON 并打印按球场与时间排序的预订列表;文档给出两个德国球馆的示例配置,并说明场馆选择逻辑由 agent 决定。

ogruenig
ogruenig
热度 56.34
最近更新 2026-09-15 05:01:53
分类:生活依赖:代码执行 / 第三方 API应用场景:API 集成 / 数据处理

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add ebusy-courts
Metadata
name
ebusy-courts
description
Query eBusy-based tennis hall bookings via a small Python client.
homepage
https://clawhub.com
license
MIT
metadata
{"openclaw":{"emoji":"🎾","requires":{"bins":["python"],"env":[]}}}

eBusy Courts Skill

This skill wraps a small Python client (ebusy_api.py) to log into eBusy-based booking systems and fetch reservations for a given court-module and date.

It is designed to work with multiple halls by switching configuration via environment variables. All hall- and user-specific values are provided by the environment, not hard-coded in the skill.

Important: No usernames/passwords should be committed into this skill folder. Keep real credentials in a local .env, your shell environment, or OpenClaw's gateway config.


Files

  • ebusy_api.py – core Python client
  • SKILL.md – this documentation
  • mcporter.json – MCP permissions manifest

Optional (local-only, do not publish):

  • .env – local environment file with hall-specific credentials

Python client: ebusy_api.py

The client is written to be generic; it reads all hall-specific config from environment variables:

EBUSY_BASE_URL       # e.g. https://myclub.ebusy.de
EBUSY_USERNAME       # login user for the chosen hall
EBUSY_PASSWORD       # login password for the chosen hall
EBUSY_COURT_ID       # eBusy court-module id for this hall
EBUSY_FIRST_COURT_NO # first court number inside that module

Usage (in a venv with requests + beautifulsoup4 installed):

source venv/bin/activate
export EBUSY_BASE_URL="https://myclub.ebusy.de"
export EBUSY_USERNAME="<your-user>"
export EBUSY_PASSWORD="<your-password>"
export EBUSY_COURT_ID="<module-id>"
export EBUSY_FIRST_COURT_NO="<first-court-no>"

python ebusy_api.py 03/07/2026

The script will:

  1. Log into the configured eBusy instance using the configured username/password.

  2. Fetch the reservations JSON for the given date.

  3. Print a sorted list of reservations:

    Reservierung Platz 1: 09:00 - 10:00 von <Text>
    Reservierung Platz 2: 10:00 - 11:00 von <Text>
    ...
    

Example hall profiles

This section shows example configurations for two real halls in Germany. Other users can copy the pattern and plug in their own club URLs and module IDs.

Example: Medenhalle Wiesbaden-Medenbach

  • Base URL: https://medenhalle.ebusy.de
  • EBUSY_COURT_ID = 1
  • EBUSY_FIRST_COURT_NO = 1
  • Credentials typically provided via:
    • MEDENHALLE_USER
    • MEDENHALLE_PASSWORD

Example shell setup:

source venv/bin/activate
# load your local secrets, e.g. from .env
export EBUSY_BASE_URL="https://medenhalle.ebusy.de"
export EBUSY_USERNAME="$MEDENHALLE_USER"
export EBUSY_PASSWORD="$MEDENHALLE_PASSWORD"
export EBUSY_COURT_ID="1"
export EBUSY_FIRST_COURT_NO="1"

python ebusy_api.py 03/07/2026

Example: KTEV Kelkheim

  • Base URL: https://ktev.ebusy.de
  • EBUSY_COURT_ID = 807
  • EBUSY_FIRST_COURT_NO = 2135
  • Credentials typically provided via:
    • KTEV_USER
    • KTEV_PASSWORD

Example shell setup:

source venv/bin/activate
# load your local secrets, e.g. from .env
export EBUSY_BASE_URL="https://ktev.ebusy.de"
export EBUSY_USERNAME="$KTEV_USER"
export EBUSY_PASSWORD="$KTEV_PASSWORD"
export EBUSY_COURT_ID="807"
export EBUSY_FIRST_COURT_NO="2135"

python ebusy_api.py 03/07/2026

How an agent can use this skill

When a user asks for availability in a given hall (e.g. "Suche freie Zeiten in der Tennishalle XYZ am Sonntag"), an OpenClaw agent can:

  1. Map the hall name to a profile (base URL, module id, first-court-no), either from TOOLS.md or agent-specific config.
  2. Ensure the environment variables EBUSY_* are set for that hall (credentials supplied by the runtime or .env).
  3. Call ebusy_api.py for the relevant date, parse the JSON, and build an availability table (free vs booked) per court and time slot.

The decision logic (which profile to choose for which user request) should live in the agent and/or TOOLS.md, not in this skill's code.


Sicherheit der Implementierung

⚠️ Wichtige Sicherheitshinweise:

1. Credential Access

  • Keine Dateien werden gelesen (z. B. .env, SSH-Keys, AWS-Credentials).
  • Environment-Variablen werden nur vom OpenClaw-Agenten bereitgestellt.
  • Keine Hardcoded Credentials im Skill.

2. Netzwerkzugriff

  • Nur eBusy-Instanzen: https://*.ebusy.de

3. Dateizugriff

  • Nur Lesezugriff auf eigene Dateien (ebusy_api.py, SKILL.md, mcporter.json).

4. Keine administrativen Rechte

  • Kein sudo, eval(), exec(), subprocess.

5. Sicherheit der Python-Implementierung

  • Nur Standardbibliothek (os, sys, requests, bs4).
  • Keine Systembefehle.

Publishing considerations

  • Do not publish .env or any file containing real credentials to ClawHub.
  • Ensure .gitignore excludes .env and similar secret-bearing files.
  • The skill itself (this SKILL.md + ebusy_api.py) contains only generic logic and non-secret configuration; the example profiles are illustrative and can be replaced by any other eBusy-based club.