Install
openclaw skills install football-value-betsProfessional football bet analysis skill. Generates data-driven bet slips based on form, H2H, standings, injuries and value analysis. Includes result tracking with hitrate and ROI. Use when the user asks for a football bet, bet slip, accumulator, tips, or picks.
openclaw skills install football-value-betsGenerate professional, data-driven football bet slips. No gut feelings, purely statistics and value analysis.
Activate this skill when the user:
Install dependencies (one-time):
pip install requests
Set API key (free via football-data.org/client/register):
export FOOTBALL_DATA_API_KEY="your-key-here"
Or fill in the key at {baseDir}/config/settings.json under api_key.
Fetch current match data:
python3 {baseDir}/scripts/match_fetcher.py --mode full
This returns a JSON package with:
Coverage: Premier League, Bundesliga, Serie A, La Liga, Ligue 1, Eredivisie, Champions League.
If the user wants a specific date:
python3 {baseDir}/scripts/match_fetcher.py --mode full --date-from 2026-02-15 --date-to 2026-02-15
Analyse EVERY match from the data on these factors (in order of importance):
A. Form (last 5-10 matches)
form field from the standings data (e.g. "W,W,D,L,W")B. Home/away statistics
C. Head-to-head (H2H)
h2h data: who wins historically?D. Table position and motivation
E. Additional factors (via web search) After the data analysis, search the web for EVERY shortlisted match:
Use search terms like: "[Team A] vs [Team B] team news injuries" and "[Team A] xG stats 2025-26"
F. Odds estimation
Select ONLY picks that meet all criteria:
Allowed pick types:
If you find FEWER than 3 picks with real value:
Do NOT generate a bet slip. Say honestly:
"No strong bet slip possible today. The matches offer insufficient value based on the data. Reasons: [brief explanation]. Wait for better odds or the next matchday."
This is MANDATORY. Never force it. Honesty > revenue.
Generate TWO variants:
Variant A: Main slip (3-4 picks, total odds 8x-15x)
| Match | Pick | Odds | Motivation | Prob % | Risk |
|---|---|---|---|---|---|
| Ajax - PSV | BTTS Yes | 1.85 | Both teams scored in 8/10 recent matches, H2H always goals | 52% | Low |
| Arsenal - Chelsea | Over 2.5 | 1.90 | Avg 3.2 goals per match this season, both attack-minded | 48% | Medium |
| ... | ... | ... | ... | ... | ... |
Total odds: XX.XX Recommended stake: 5-10 EUR Potential payout: XX.XX EUR
Variant B: Backup (2-3 picks, total odds 4x-8x)
Same table format but with safer picks (higher probabilities, lower odds).
Always include at the bottom:
Automatically save the bet slip for tracking:
python3 {baseDir}/scripts/bet_tracker.py --mode save --data '{
"type": "main",
"stake": 5.0,
"picks": [
{
"match": "Ajax - PSV",
"competition": "Eredivisie",
"pick": "BTTS Yes",
"odds": 1.85,
"estimated_probability": 0.52,
"motivation": "Both teams scored in 8/10 recent matches",
"risk": "low"
}
],
"total_odds": 12.50,
"notes": ""
}'
Repeat for the backup slip with "type": "backup".
When the user says a bet has won or lost:
# Mark entire slip
python3 {baseDir}/scripts/bet_tracker.py --mode result --date 2026-02-15 --slip-idx 1 --result win
# Mark specific pick
python3 {baseDir}/scripts/bet_tracker.py --mode result --date 2026-02-15 --slip-idx 1 --pick-idx 2 --result loss
Result options: win, loss, void
Always ask the user for the date and which slip (main or backup) it concerns.
When the user asks about results, stats, ROI, or hitrate:
python3 {baseDir}/scripts/bet_tracker.py --mode stats
Present the JSON output as a readable summary:
Warn if the monthly budget is almost spent (>80% used).
python3 {baseDir}/scripts/bet_tracker.py --mode history --days 30
Show an overview of all bets from the last N days.
These rules are HARD. Always follow them:
Configuration is in {baseDir}/config/settings.json:
If the monthly budget is at or nearly at its limit (>90%):