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:
CODEBLOCK0
Generate an automatic ranked report:
CODEBLOCK1
Generate a deeper report with extra context:
CODEBLOCK2
MLB deep mode currently adds:
- - weather context
- article-based key players / injuries / trend context
- extra matchup summary for top picks
Force free mode:
CODEBLOCK3
Get free-source hints directly:
CODEBLOCK4
Get free-mode odds-search queries:
CODEBLOCK5
Parse rough public-odds text into event candidates:
CODEBLOCK6
Public-page fetch pipeline:
CODEBLOCK7
Targeted Covers MLB event extraction:
CODEBLOCK8
Targeted Covers MLB line snapshot extraction:
CODEBLOCK9
Free-mode MLB prototype report:
CODEBLOCK10
Fetch AskNews article context:
CODEBLOCK11
Send the report by email:
CODEBLOCK12
Default behavior:
- - reads
THE_ODDS_API_KEY from environment - queries MLB, NBA, and NHL by default
- compares FanDuel, DraftKings, and BetMGM
- INLINECODE9 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.
GPTSportswriter
概述
使用此技能生成结构化的体育博彩研究报告。
它可以在以下模式下运行:
- - 高级模式:基于API的赔率和新闻背景
- 免费模式:使用公共来源工作流程和提取辅助工具
目标是以简洁的格式呈现当前对阵、博彩角度和相关背景,而不假装确定性。
数据优先级
该技能支持三种模式:
- - 自动(默认):配置时优先使用付费来源,否则回退
- 高级:要求使用付费来源
- 免费:仅使用免费/公共来源
- 1. 高级/自动模式下的主要来源:Odds API
- 优先用于:
- 今日对阵
- 胜负盘
- 让分盘
- 总分盘
- 博彩公司可用性
- 将其视为当前实际存在的比赛和盘口的真实来源。
- 2. 高级/自动模式下的次要来源:AskNews + 网络搜索
- 优先使用AskNews获取:
- 近期体育文章
- 对阵预览
- 伤病/新闻背景
- 更广泛的同日报道摘要
- 将网络搜索作为回退或补充用于:
- 博彩预览
- 来源共识与分歧
- 额外的对阵特定背景
- 当赔率数据表明市场现实时,不要让文章报道覆盖当前市场现实。
- 3. 免费模式回退
- 当用户不希望使用付费服务或未配置API密钥时,使用公共赔率/新闻页面。
- 优先使用以下来源的公共页面:
- Covers
- OddsShark
- Yahoo Sports
- AP
- ESPN
- CBS Sports
- 明确说明免费模式下的赔率可能更陈旧且精度较低。
工作流程
- 1. 确定赛程范围。
- 如果用户说今天,仅使用今天的比赛。
- 如果用户指定联赛,则聚焦该联赛。
- 如果请求范围广泛,则覆盖主要赛季内体育项目。
- 对于英超足球,使用Odds API体育项目键soccer_epl。
- 2. 首先获取当前赔率和对阵。
- 使用Odds API获取当前赛程。
- 比较价格时优先选择常用的美国博彩公司。
- 注意不同博彩公司价格存在显著差异的地方。
- 3. 搜索背景信息。
- 首先使用scripts/fetch_asknews.py获取文章背景。
- 然后,如有需要,搜索网络获取以下组合:
- 今日最佳投注 [体育项目]
- [联赛] 今日精选赔率
- [对阵] 博彩预览
- [球队] 伤病博彩盘口
- 优先选择同日结果。
- 在总结前获取多个来源。
- 4. 在推荐任何内容前进行交叉核对。
- 寻找当前赔率与网络共识之间的重叠。
- 将共识选择与一次性热门观点区分开。
- 明确说明盘口敏感性。
- 如果某个好角度依赖于在特定博彩公司获得更好的赔率,请说明这一点。
- 5. 撰写摘要。
- 在一两行内包含赛事、市场、当前盘口范围以及推理过程。
- 在相关时提及不确定性、伤病、赛程位置或陈旧预览风险。
- 保持可读性和实用性,不要过于夸张。
必需的结构化输出
除非用户明确要求不同格式,否则使用以下精确输出结构:
GPTSportswriter — 今日最佳博彩建议
日期: [今天]
范围: 赛季内体育项目的广泛每日赛程
今日最佳选择
- 1. [赛事或对阵]
-
市场: [让分盘 / 胜负盘 / 总分盘 / 特殊盘]
-
倾向: [推荐的一方或角度]
-
当前赔率: [找到的最佳当前范围]
-
为何选择此投注: [1-2个短句]
-
信心度: 低 / 中 / 高
- 2. [赛事或对阵]
-
市场: [让分盘 / 胜负盘 / 总分盘 / 特殊盘]
-
倾向: [推荐的一方或角度]
-
当前赔率: [找到的最佳当前范围]
-
为何选择此投注: [1-2个短句]
-
信心度: 低 / 中 / 高
- 3. [赛事或对阵]
-
市场: [让分盘 / 胜负盘 / 总分盘 / 特殊盘]
-
倾向: [推荐的一方或角度]
-
当前赔率: [找到的最佳当前范围]
-
为何选择此投注: [1-2个短句]
-
信心度: 低 / 中 / 高
共识信号
- - [多个来源重叠的简短要点]
- [重复出现的主题或角度的简短要点]
注意事项
- - [伤病/新闻不确定性]
- [盘口变动或陈旧赔率风险]
- [来源分歧或支撑薄弱]
总结
回退规则
- - 如果Odds API不可用,明确说明并回退到仅基于网络的摘要。
- 如果只找到一个或两个可信角度,不要强行添加第三个选择。
- 如果来源薄弱或陈旧,在总结中明确说明。
- 如果用户只要求一个最佳投注,仍包括:
- 市场
- 倾向
- 当前赔率
- 为何选择此投注
- 主要警告
- 信心度
标准
- - 不要声称保证获胜。
- 不要捏造赔率、记录、伤病或博彩公司价格。
- 优先使用来源倾向于而非这一定会中。
- 如果市场已经偏离了好的赔率,请说明。
- 如果网络结果薄弱或相互矛盾,明确说明。
Odds API 说明
- - 使用环境中配置的THEODDSAPIKEY。
- 优先选择当前可用的赛前市场。
- 在引用范围前比较多个博彩公司。
- 明确说明某个价格是广泛可用还是仅在一家博彩公司可用。
- 在撰写摘要前使用scripts/fetchodds.py获取并标准化实时赔率。
脚本使用
获取标准化赔率:
bash
python3 scripts/fetchodds.py --mode auto --sports baseballmlb basketball_nba --pretty
生成自动排名报告:
bash
python3 scripts/generatereport.py --mode auto --sports baseballmlb basketball_nba
生成包含额外背景的深度报告:
bash
python3 scripts/generatereport.py --mode auto --sports baseballmlb --detail deep
MLB深度模式当前增加:
- - 天气背景
- 基于文章的关键球员/伤病/趋势背景
- 最佳选择的额外对阵摘要
强制免费模式:
bash
python3 scripts/generatereport.py --mode free --sports baseballmlb
直接获取免费来源提示:
bash
python3 scripts/fetchfreecontext.py --sports baseballmlb basketballnba
获取免费模式赔率搜索查询:
bash
python3 scripts/fetchfreeodds.py --sports baseballmlb basketballnba
将粗略的公共赔率文本解析为赛事候选:
bash
python3 scripts/parsefreeodds.py sample.txt
公共页面获取管道:
bash
python3 scripts/freepipeline.py --sport baseballmlb
定向Covers MLB赛事提取:
bash
python3 scripts/extractcoversmlb.py page.html
定向Covers MLB盘口快照提取:
bash
python3 scripts/extractcoversmlb_lines.py page.html
免费模式MLB原型报告:
bash
python3 scripts/generatereport.py --mode free --sports baseballmlb
获取AskNews文章背景:
bash
python3 scripts/fetch_asknews.py Knicks Hornets betting preview March 26 2026 --n-articles 5
通过电子邮件发送报告:
bash
bash scripts/senddailyreport.sh
默认行为:
- - 从环境读取THEODDSAPIKEY
- 默认查询MLB、NBA和NHL
- 比较FanDuel、DraftKings和BetMGM
- fetchodds.py返回标准化比赛对象,包含:
- 各球队最佳可用胜负盘
- 各球队让分盘范围
- 大/小总分范围
- 各博彩公司市场详情
- 最佳价格排名
- 自动每场比赛候选选择
- 自动前3名格式化报告输出
有用的搜索习惯
- - 在可用时使用新鲜度过滤器。
- 按体育项目+日期+最佳投注搜索