Acca Tracker

v1.3.1

Track accumulator (acca) betting slips across football, basketball, and tennis — parses slip photo or text, checks live scores every 15 minutes, and reports...

0· 82·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for svenmedina07-ship-it/sports-acca-tracker.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Acca Tracker" (svenmedina07-ship-it/sports-acca-tracker) from ClawHub.
Skill page: https://clawhub.ai/svenmedina07-ship-it/sports-acca-tracker
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install sports-acca-tracker

ClawHub CLI

Package manager switcher

npx clawhub@latest install sports-acca-tracker
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
The skill's name/description (acca betting tracker) aligns with its runtime instructions and included script (scores.sh) which fetches live scores. There are no unrelated required credentials or binaries. Minor inconsistency: packaging metadata versions/authors differ (registry lists v1.3.1; package.json/openclaw.plugin.json show v1.0.0 and a different author), and openclaw.plugin.json's files array omits scripts/scores.sh — this is a distribution/packaging mismatch (not proof of maliciousness) that could cause the runtime to miss the helper script.
Instruction Scope
SKILL.md instructs the agent to parse slips (vision/text), create a cron job to run every ~15 minutes, and use the included scripts and fallbacks to fetch scores. All referenced actions (vision_analyze, terminal, cronjob, web_search) are within the skill's stated purpose. It does not instruct reading unrelated system files or requesting unrelated credentials.
Install Mechanism
No install spec — instruction-only plus an included helper script. No remote downloads or third-party package installs are required. The helper script is local and will be executed in the terminal/cron context.
Credentials
The skill declares no required environment variables or credentials and the code uses only public web APIs (TheSportsDB and ESPN endpoints). No secrets requested and no config paths accessed beyond the skill's own files.
Persistence & Privilege
The skill instructs the agent to create cron jobs that run periodically (*/15 * * * *) and deliver results back to the origin; this is consistent with its tracking purpose. Creating persistent cron jobs is a legitimate behavior for a monitoring skill but is a persistence capability you should consciously allow — verify you want periodic network activity and that the platform's cron lifecycle matches your expectations.
Assessment
This skill appears to do what it says: parse a betting slip, run a local helper script, and poll public score APIs periodically. Before installing, check two practical things: (1) packaging metadata mismatches (version/author and plugin manifest omitting the scripts file) — ensure the helper script is actually present in the installed package so cron jobs work; (2) you are comfortable allowing the agent to create a cron job that will run repeatedly and make outbound requests to public APIs (TheSportsDB, ESPN). No credentials are requested and no hidden endpoints were found, but if you need provenance, ask the publisher for a canonical homepage or signed release and confirm which file set/version they intend you to run.

Like a lobster shell, security has layers — review code before you run it.

latestvk976e9wk5pgrwbbxc332aqs3th84wkqm
82downloads
0stars
2versions
Updated 1w ago
v1.3.1
MIT-0

Acca Tracker — Multi-Sport Accumulator Monitor

Track accumulator (parlay) bets across football, basketball, and tennis by monitoring live scores and reporting whether each leg is still alive. Works with any betting slip — photo, screenshot, or typed text.

When to Use

  • User shares a photo/screenshot of a betting slip (accumulator/parlay/bet builder)
  • User wants live score updates for their bets
  • User says "track my acca", "monitor my bet", "is my bet alive", "check my slip"
  • Slips can mix sports (e.g., 2 football + 1 basketball + 1 tennis)

How It Works

User sends slip photo
  → Agent parses legs (vision_analyze or text extraction)
  → Agent creates a cron job (*/15 * * * *)
  → Cron searches live scores every 15 min
  → Cron delivers report: per-leg status + acca health
  → Auto-cleans up after all matches finish

Step 1: Parse the Slip

From a Photo

Use vision_analyze with the image and this question:

Extract all betting legs from this slip. For each leg return:
- Match (Team A vs Team B) or Event (Player A vs Player B for tennis)
- Sport (football/soccer, basketball, tennis)
- Competition/League
- Date and kickoff time
- Bet type (exact wording from slip)
- Decimal odds

Also extract: total odds, stake amount, max return, any bonus info.

Sport Detection

Auto-detect sport per leg based on:

  • Tennis: single names/players, WTA/ATP/Grand Slam, "set" in bet type, no team names
  • Basketball: NBA, EuroLeague, BBL, "quarter", "points", "rebounds"
  • Football/Soccer: everything else (default)

Tag each leg with its sport — the cron prompt uses sport-specific APIs.

From Text

If user types their slip, extract the same fields. Normalize bet type wording to match the standard types in references/bet-types.md.

Step 2: Build the Slip Summary

After parsing, confirm with the user before starting tracking:

📋 PARSED SLIP — 5 legs

 1. Arsenal vs PSG (⚽ UCL, 21:00) — Arsenal W (1.55) — 64.5%
 2. Bayern vs Inter (⚽ UCL, 21:00) — Bayern W (1.40) — 71.4%
 3. Lakers vs Celtics (🏀 NBA, 02:30) — Lakers W (1.80) — 55.6%
 4. Djokovic vs Alcaraz (🎾 ATP, 14:00) — Djokovic W (2.10) — 47.6%
 5. FSV Schöningen vs Lohne (⚽ RL, 18:00) — BTTS No (2.65) — 37.7% ⚠️

Stake: €10 | Combined odds: 30.12 | Max return: €301.20
Riskiest leg: #5 (37.7% implied)

Start tracking? (yes/no)

Calculate implied probability per leg: 1 / odds * 100. Flag any under 40% as ⚠️ gamble leg.

Step 3: Create the Cron Job

Use the cronjob tool:

action: create
name: acca-tracker-{short-id}
schedule: "*/15 * * * *"
repeat: 48
deliver: origin
prompt: {see template below}

Schedule Adjustments

ScenarioScheduleRepeat
Single match day*/15 * * * *48
High-stakes acca*/10 * * * *72
Multi-day (Tue + Wed)*/15 * * * *192
Tournament bracket0 */2 * * *84

Cron Prompt Template

You are tracking a MULTI-SPORT accumulator bet. Check live scores NOW and report.

SLIP DETAILS:
{paste all legs with sport tags, bet types, odds, and win conditions}

Total odds: {total} | Stake: {stake} | Max return: {max_return}

INSTRUCTIONS:
1. For each leg, determine scores using the scores.sh helper script:
   - Run in terminal: bash scripts/scores.sh {DATE} Soccer
   - Run in terminal: bash scripts/scores.sh {DATE} Basketball
   - Run in terminal: bash scripts/scores.sh {DATE} Tennis
   - Output: league|home|away|home_score|away_score|status (or league|event|result|status for tennis)
   - Match results to legs by team/player names
   - If script returns NO_DATA, fall back to web_search as last resort
2. For each leg determine:
   - Current score
   - Match status: Not Started / Live (minute/set) / HT / FT / Postponed / Abandoned
   - Sport-specific score format (football: goals, basketball: points, tennis: sets+games)
   - Bet status: ✅ WON / ✅ WINNING / ⏳ PENDING / ❌ LOST / ❌ DEAD
3. Calculate overall acca status:
   - ALL SAFE ✅ = no legs lost
   - STILL ALIVE ⏳ = no legs lost, none confirmed won
   - ACCA DEAD ❌ = at least one leg LOST
4. If acca dead: name the killing leg, explain why
5. Calculate "legs alive / won / lost / pending / total"
6. If all FT: state "TRACKING COMPLETE" and summarize

SPORT-SPECIFIC BET EVALUATION:
- Football: standard 90min + stoppage (see references/bet-types.md)
- Basketball: Match Winner = team with more points at FT. Overtime counts.
  Over/Under = total combined points of both teams.
- Tennis: Match Winner = player who wins required sets (2/3 or 3/5).
  Set betting = exact set score. Games over/Under = total games in match.

REPORT FORMAT (code blocks only):
🏟️ ACCA LIVE REPORT — {time}

Leg | Match                          | Score        | Status | Bet        | Result
----|--------------------------------|--------------|--------|------------|----------
 1  | ⚽ Arsenal vs PSG              | 2 - 0 (67')  | 67'    | Arsenal W  | ✅ WINNING
 2  | 🏀 Lakers vs Celtics           | 98 - 102     | Q4     | Lakers W   | ❌ DEAD
 3  | 🎾 Djokovic vs Alcaraz         | 6-4, 3-2     | Set 2  | Djokovic W | ✅ WINNING

📊 1 winning / 0 won / 1 dead / 1 pending (3 total)
❌ ACCA DEAD — Leg 2 killed it (Lakers trailing 98-102 Q4)

DATA: If no score found, say so explicitly. Never guess scores.
If 2+ hours past kickoff with no data: "unverified — likely finished"

Step 4: Report States

All Alive

🏟️ ACCA LIVE — 21:34 CET

 1 | Arsenal vs PSG       | 1 - 0 | 55' | Arsenal W | ✅ WINNING
 2 | Bayern vs Inter      | 0 - 0 | 55' | Bayern W  | ⏳ PENDING
 3 | Luton vs Northampton | 0 - 0 | 55' | BTTS No   | ✅ WINNING

📊 1 winning / 0 won / 0 lost / 2 pending
💰 ⏳ STILL ALIVE

Acca Dead

🏟️ ACCA LIVE — 22:18 CET

 1 | Arsenal vs PSG       | 2 - 1 | 78' | Arsenal W | ✅ WINNING
 2 | Bayern vs Inter      | 1 - 2 | 78' | Bayern W  | ❌ DEAD
 3 | Luton vs Northampton | 0 - 0 | 78' | BTTS No   | ✅ WINNING

📊 1 winning / 0 won / 1 dead / 1 pending
❌ ACCA DEAD — Leg 2 killed it (Bayern losing 1-2)

Remaining matches still playing — updating for interest.

Final — Won

🏟️ ACCA FINAL — 23:45 CET — 🎉🎉🎉

 1 | Arsenal vs PSG       | 2 - 1 | FT | Arsenal W | ✅ WON
 2 | Bayern vs Inter      | 3 - 1 | FT | Bayern W  | ✅ WON
 3 | Luton vs Northampton | 0 - 0 | FT | BTTS No   | ✅ WON

📊 3/3 LEGS WON
💰 ACCA WON — Stake: €10 | Return: €210.40

Tracking complete.

Cash-Out Context

When some legs won and others pending, estimate cash-out value:

Won legs combined odds: 1.55 × 1.40 = 2.17
Remaining legs implied probability: 0.565 × 0.541 × 0.377 = 0.115
Estimated value: €10 × 2.17 × 0.115 = €2.49
Cash-out range: ~€2.00 – €3.50 (rough estimate)

Only include when: at least 1 leg WON, at least 1 PENDING, acca NOT dead. Always frame as "estimated".

Data Source Strategy

See references/data-sources.md for full API details.

Quick reference:

  • PRIMARY: scripts/scores.sh {date} {sport} — handles all transport, all sports
  • FALLBACK: execute_code with Python/urllib (same API, different transport)
  • WEB SEARCH: last resort when script returns NO_DATA
  • TENNIS NOTE: Player names in strEvent (not strHomeTeam/strAwayTeam), coverage tournament-dependent

Bet Types

See references/bet-types.md for the full list of 18+ bet types with scoring logic, decision tree, and edge cases (void, ET, red cards, handicaps).

Step 5: Cleanup

  • After all matches FT, deliver final summary then stop
  • Auto-ends after repeat count
  • User can say "stop tracking" to remove cron early
  • Multi-day accas: increase repeat to 192

Limitations

  • 15-min intervals — goals/points missed between checks, not real-time
  • Low-tier football leagues — limited coverage, may only get HT/FT
  • JS-rendered sites — Flashscore/Sofascore can't be scraped directly
  • Tennis player names — TheSportsDB stores in strEvent, parsing required
  • Bookmaker-specific rules — some bet types vary by bookmaker (e.g., retirement handling)
  • Telegram cron delivery — if reports fail to arrive, check last_delivery_error. Try explicit telegram:chat_id:thread_id format. Reports still generate at ~/.hermes/cron/output/{job_id}/.md

Tips

  • Always confirm slip with user before starting
  • Include team nicknames in search queries
  • When acca dies, keep tracking for interest
  • Flag "near misses" (hit post, disallowed goal) if mentioned in results
  • Name each cron differently for multi-slip support
  • Tennis coverage on TheSportsDB is tournament-dependent — may return zero events between tournaments. Always have web_search as fallback.
  • Basketball events are rich on TheSportsDB — covers NBA, EuroLeague, BBL, LKL, LNB, Japanese B1, etc. ESPN is backup only.

ClawHub Publishing

  • Current slug: sports-acca-tracker (old football-acca-tracker also exists, no delete cmd)
  • Publish command: clawhub publish <path> --slug <slug> --name "Name" --version X.Y.Z --tags "tag1,tag2"
  • After publish, skill is hidden until security scan completes (usually minutes)
  • Verify with: clawhub inspect <slug>
  • ClawHub has no unpublish/delete — slug collisions mean choosing a new slug, not overwriting

Comments

Loading comments...