← 返回 Skills 市场
normandmickey

GPTSportswriter

作者 normandmickey · GitHub ↗ · v0.1.0 · MIT-0
cross-platform ⚠ suspicious
104
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install gptsportswriter
功能描述
Generate sports betting research reports using live odds, matchup context, and public/news sources. Supports premium mode with API-backed odds/news and free...
使用说明 (SKILL.md)

GPTSportswriter

Overview

Use this skill to generate structured sports betting research reports. It can operate in:

  • premium mode with API-backed odds and news context
  • free mode with public-source workflows and extraction helpers

The goal is to surface current matchups, betting angles, and relevant context in a clean format without pretending certainty.

Data Priority

The skill supports three modes:

  • auto (default): use paid sources when configured, otherwise fall back
  • premium: require paid sources
  • free: use only free/public sources
  1. Primary source in premium/auto mode: The Odds API

    • Use it first for:
      • today's matchups
      • moneylines
      • spreads
      • totals
      • sportsbook availability
    • Treat this as the source of truth for what games and lines actually exist right now.
  2. Secondary source in premium/auto mode: AskNews + web search

    • Use AskNews first for:
      • recent sports articles
      • matchup previews
      • injury/news context
      • broader same-day coverage summaries
    • Use web search as a fallback or supplement for:
      • betting previews
      • source consensus and disagreement
      • extra matchup-specific context
    • Do not let article coverage override current market reality when the odds data says otherwise.
  3. Free mode fallback

    • Use public odds/news pages when the user does not want paid services or when no API keys are configured.
    • Prefer public pages from sources like:
      • Covers
      • OddsShark
      • Yahoo Sports
      • AP
      • ESPN
      • CBS Sports
    • Be explicit that free-mode odds can be more stale and less precise.

Workflow

  1. Identify the slate.

    • If the user says "today," use today's games only.
    • If the user names a league, focus there.
    • If the request is broad, cover major in-season sports.
    • For Premier League soccer, use the Odds API sport key soccer_epl.
  2. Pull current odds and matchups first.

    • Use The Odds API to get the current slate.
    • Prefer commonly used U.S. books when comparing prices.
    • Note where prices differ meaningfully by book.
  3. Search for context.

    • First use scripts/fetch_asknews.py for article context.
    • Then, if needed, search the web for combinations like:
      • best bets today [sport]
      • [league] picks today odds
      • [matchup] betting preview
      • [team] injuries betting line
    • Prefer same-day results.
    • Pull multiple sources before summarizing.
  4. Cross-check before recommending anything.

    • Look for overlap between current odds and web consensus.
    • Separate consensus picks from one-off hot takes.
    • Note line sensitivity explicitly.
    • If a good angle depends on getting a better number at a specific book, say that.
  5. Write the summary.

    • Include the event, market, current line range, and the reasoning in one or two lines.
    • Mention uncertainty, injuries, schedule spots, or stale-preview risk when relevant.
    • Keep it readable and useful, not breathless.

Required Structured Output

Unless the user explicitly asks for a different format, use this exact output shape:

GPTSportswriter — Best Betting Advice of the Day Date: [today] Scope: Broad daily slate across in-season sports

Top Looks Today

  1. [Event or matchup]

    • Market: [spread / moneyline / total / prop]
    • Lean: [the recommended side or angle]
    • Current odds: [best current range found]
    • Why this play: [1-2 short sentences]
    • Confidence: Low / Medium / High
  2. [Event or matchup]

    • Market: [spread / moneyline / total / prop]
    • Lean: [the recommended side or angle]
    • Current odds: [best current range found]
    • Why this play: [1-2 short sentences]
    • Confidence: Low / Medium / High
  3. [Event or matchup]

    • Market: [spread / moneyline / total / prop]
    • Lean: [the recommended side or angle]
    • Current odds: [best current range found]
    • Why this play: [1-2 short sentences]
    • Confidence: Low / Medium / High

Consensus Signals

  • [short bullet on where multiple sources overlap]
  • [short bullet on a repeated theme or angle]

Watch-Outs

  • [injury/news uncertainty]
  • [line movement or stale odds risk]
  • [source disagreement or thin support]

Bottom Line

  • [one short paragraph with the overall takeaway]

Fallback Rules

  • If The Odds API is unavailable, say that plainly and fall back to web-only summaries.
  • If you only find one or two credible angles, do not force a third pick.
  • If sources are weak or old, say that clearly in Bottom Line.
  • If the user asks for only one best bet, still include:
    • Market
    • Lean
    • Current odds
    • Why this play
    • Main caveat
    • Confidence

Standards

  • Do not claim guaranteed wins.
  • Do not fabricate odds, records, injuries, or sportsbook prices.
  • Prefer "sources are leaning" over "this will hit."
  • If the market has already moved away from the good number, say so.
  • If the web results are thin or conflicting, say so plainly.

The Odds API Notes

  • Use the configured THE_ODDS_API_KEY from environment.
  • Prefer current pregame markets where available.
  • Compare multiple bookmakers before quoting a range.
  • Be explicit when a price is widely available versus only available at one book.
  • Use scripts/fetch_odds.py to fetch and normalize live odds before writing the summary.

Script usage

Fetch normalized odds:

python3 scripts/fetch_odds.py --mode auto --sports baseball_mlb basketball_nba --pretty

Generate an automatic ranked report:

python3 scripts/generate_report.py --mode auto --sports baseball_mlb basketball_nba

Generate a deeper report with extra context:

python3 scripts/generate_report.py --mode auto --sports baseball_mlb --detail deep

MLB deep mode currently adds:

  • weather context
  • article-based key players / injuries / trend context
  • extra matchup summary for top picks

Force free mode:

python3 scripts/generate_report.py --mode free --sports baseball_mlb

Get free-source hints directly:

python3 scripts/fetch_free_context.py --sports baseball_mlb basketball_nba

Get free-mode odds-search queries:

python3 scripts/fetch_free_odds.py --sports baseball_mlb basketball_nba

Parse rough public-odds text into event candidates:

python3 scripts/parse_free_odds.py sample.txt

Public-page fetch pipeline:

python3 scripts/free_pipeline.py --sport baseball_mlb

Targeted Covers MLB event extraction:

python3 scripts/extract_covers_mlb.py page.html

Targeted Covers MLB line snapshot extraction:

python3 scripts/extract_covers_mlb_lines.py page.html

Free-mode MLB prototype report:

python3 scripts/generate_report.py --mode free --sports baseball_mlb

Fetch AskNews article context:

python3 scripts/fetch_asknews.py 'Knicks Hornets betting preview March 26 2026' --n-articles 5

Send the report by email:

bash scripts/send_daily_report.sh

Default behavior:

  • reads THE_ODDS_API_KEY from environment
  • queries MLB, NBA, and NHL by default
  • compares FanDuel, DraftKings, and BetMGM
  • fetch_odds.py returns normalized game objects with:
    • best available moneyline by team
    • spread ranges by team
    • total ranges for Over and Under
    • per-book market details
  • generate_report.py builds:
    • best-price ranking
    • automatic per-game candidate selection
    • automatic top-3 formatted report output

Useful search habits

  • Use freshness filters when available.
  • Search by sport + date + best bets.
  • Search matchup previews separately when a pick looks interesting.
  • If injury news may matter, search that team and player status directly before finalizing.
安全使用建议
Don't install or run this skill blindly. Before using: 1) Inspect and remove or rewrite scripts you don't trust (especially send_daily_report.sh). It contains an absolute path, sources a local .env, and sends the report to a hard-coded Gmail address — running it could leak the workspace .env or report data. 2) Treat THE_ODDS_API_KEY and ASKNEWS_* keys as required if you plan to use premium mode; provide them only after confirming the code will use them only for API calls you expect. 3) Manually install Python dependencies (requests, bs4, asknews_sdk) in an isolated environment and review network calls. 4) If you want daily/automated emails, replace the hard-coded recipient/path with your own, or better: run the generator interactively and inspect output before automating. 5) If you need provenance, ask the publisher for a homepage/source repo and a declared dependency/install spec; the current package metadata is inconsistent with the code and should be treated as untrusted until reconciled.
功能分析
Type: OpenClaw Skill Name: gptsportswriter Version: 0.1.0 The skill bundle contains a shell script (scripts/send_daily_report.sh) that hardcodes a specific recipient email address ([email protected]) and local file paths (/home/pi/), which would cause any generated reports to be sent to an external party if executed. While the core logic in generate_report.py and the various scraping/API scripts (fetch_odds.py, fetch_asknews.py) appears to serve the stated purpose of sports betting research, the inclusion of hardcoded exfiltration targets and environment-specific paths is a significant privacy risk and irregular for a general-purpose skill.
能力评估
Purpose & Capability
The skill claims to generate betting research and the SKILL.md explains use of The Odds API and AskNews, which legitimately require API keys, but the registry metadata lists no required environment variables or declared primary credential. That mismatch (code expecting THE_ODDS_API_KEY and ASKNEWS_* secrets while metadata lists none) is incoherent and surprising.
Instruction Scope
The SKILL.md instructs the agent to run the included scripts (fetch_odds.py, fetch_asknews.py, etc.) and to use THE_ODDS_API_KEY / AskNews credentials. The instructions themselves are scoped to gathering odds and news. However the runtime behavior of the supplied scripts copies the process environment into subprocesses and one included shell helper (send_daily_report.sh) sources a local .env and sends an email with the generated report — actions not called out in the top-level metadata and that broaden what will be read/transmitted if executed.
Install Mechanism
There is no install spec (instruction-only), which minimizes automatic disk changes. That said, the package includes Python scripts that import non-standard packages (requests, bs4/BeautifulSoup, asknews_sdk). The skill does not declare these dependencies, so the environment may need manual package installs; this is a packaging/integrity mismatch but not an automatic supply-chain download risk.
Credentials
Although the registry says 'required env vars: none', multiple scripts explicitly read THE_ODDS_API_KEY and ASKNEWS_API_KEY / ASKNEWS_CLIENT_ID / ASKNEWS_CLIENT_SECRET, and generate_report passes os.environ to subprocesses. The send_daily_report.sh script sources /home/pi/.openclaw/workspace/.env (exporting all variables) and then emails a report — sourcing a local .env and exporting it to subprocesses could expose secrets unexpectedly. Requesting/using these credentials without declaring them is disproportionate and risks accidental leaks.
Persistence & Privilege
The skill itself does not set always:true and does not automatically persist. However the included send_daily_report.sh contains absolute paths, sources a workspace .env, and posts the generated report via an agentmail script to a hard-coded external email address ([email protected]). If a user runs that helper (or schedules it), it will exfiltrate the report and could include any environment-derived secrets or local context. That shipped helper increases the blast radius materially compared to the described behavior.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install gptsportswriter
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /gptsportswriter 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v0.1.0
Initial public release of GPTSportswriter. Includes premium mode with The Odds API + AskNews, free fallback workflows, structured betting reports, deep MLB report mode with weather/context, AgentMail delivery helpers, and public-source extraction for free-mode MLB.
元数据
Slug gptsportswriter
版本 0.1.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

GPTSportswriter 是什么?

Generate sports betting research reports using live odds, matchup context, and public/news sources. Supports premium mode with API-backed odds/news and free... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 104 次。

如何安装 GPTSportswriter?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install gptsportswriter」即可一键安装,无需额外配置。

GPTSportswriter 是免费的吗?

是的,GPTSportswriter 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

GPTSportswriter 支持哪些平台?

GPTSportswriter 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 GPTSportswriter?

由 normandmickey(@normandmickey)开发并维护,当前版本 v0.1.0。

💬 留言讨论