install
source · Clone the upstream repo
git clone https://github.com/syphax/openclaw-tools
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/syphax/openclaw-tools "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/world-cup-tickets" ~/.claude/skills/syphax-openclaw-tools-world-cup-tickets && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/syphax/openclaw-tools "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/world-cup-tickets" ~/.openclaw/skills/syphax-openclaw-tools-world-cup-tickets && rm -rf "$T"
manifest:
skills/world-cup-tickets/SKILL.mdsource content
world-cup-tickets
Track 2026 FIFA World Cup ticket prices on StubHub across matches, categories, and quantities.
Usage
# Run the price scraper python3 scripts/scrape_tickets.py
What it does
Scrapes StubHub for ticket prices for configured World Cup matches. For each match, it checks prices across all configured ticket categories (1-4) and quantities (1-4), then stores the results in both a local CSV and a Google Sheet.
Each run produces one row per (date, match, category, quantity) combination.
Configuration
- Main config with match URLs, categories, quantities, and Google Sheet IDcfg/wct-config.yaml
- Reference file with raw StubHub URLs and spreadsheet linkcfg/private-info.json
Output
- CSV:
- Local append-only price historyticket-price-history.csv - Google Sheet: Configured in
with columns: Date, Match, Category, Quantity, Pricewct-config.yaml - Logs:
logs/world-cup-tickets.log - stdout: JSON summary of the run
Dependencies
Auto-installed on first run:
(with Chromium browser)playwrightpyyaml
(for Google Sheets integration)gspread
Implementation
- Script:
scripts/scrape_tickets.py - Config:
cfg/wct-config.yaml - Language: Python 3
- Scraping: Playwright (headless Chromium)
- Sheets API: gspread with service account auth