Steam Daily Deals
Retrieve and present current Steam game deals and special offers with comprehensive game information.
Overview
This skill fetches real-time Steam discount data from the Steam Storefront API (no API key required) and presents it in a user-friendly format. It supports regional pricing, language localization, and detailed game information enrichment.
When to Use
- User asks about current Steam deals, discounts, or sales
- User wants to find cheap games on Steam
- User asks "今天Steam有什么打折游戏" or similar questions
- User wants a summary of current Steam promotions
- User asks about specific game pricing or discount history
Workflow
Step 1: Determine User Preferences
Before fetching data, determine the following from the user's request:
| Preference | Default | Notes |
|---|---|---|
| Country/Region | CN (China) | Affects pricing currency |
| Language | schinese | Affects game titles and descriptions |
| Number of games | 15 | How many deals to show |
| Detailed mode | Yes | Whether to fetch full details per game |
| Minimum discount | 0% | Filter out small discounts |
| Sort order | By discount (highest first) | Options: discount, price, name, reviews |
If the user does not specify preferences, use the defaults above.
Step 2: Fetch Steam Deals
Run the bundled fetch script to retrieve deal data:
python3 {SKILL_DIR}/scripts/fetch_steam_deals.py \
--country CN \
--language schinese \
--limit 15 \
--detailed \
--sort discount \
--min-discount 0 \
--output markdown \
--output-file /tmp/steam_deals_today.md
Parameter mapping from user requests:
| User says | Script parameter |
|---|---|
| "美区价格" / "US pricing" | --country US |
| "日区" / "Japanese prices" | --country JP |
| "港区" | --country HK |
| "英文" | --language english |
| "只看5折以上" / ">50% off" | --min-discount 50 |
| "按价格排序" | --sort price |
| "按评价排序" | --sort reviews |
| "按好评率排序" | --sort rating |
| "给我看30个" | --limit 30 |
| "简单列表就行" | Remove --detailed flag |
| "JSON格式" | --output json |
Step 3: Present Results
After the script completes, read the output file and present it to the user:
- Read
/tmp/steam_deals_today.md(or the output file path used) - Present the formatted content directly to the user
- Highlight notable deals:
- Games with 75%+ discount (🔥 super deals)
- AAA games on sale
- Games with "特别好评" or higher review ratings - Offer to:
- Show more deals (--limitincrease)
- Show different regions
- Filter by genre or minimum discount
- Get details on a specific game
Step 4: Follow-up Actions
After presenting the initial results, handle follow-up requests:
- "Tell me more about [game]": Use the appdetails endpoint via the script or direct API call
- "Show deals in [region]": Re-run with different
--countryparameter - "Only show RPGs": Filter results by genre from the detailed data
- "What about free games?": Run with
--min-discount 100to find free-to-play promotions
Script Details
The main script is at scripts/fetch_steam_deals.py. It:
- Fetches featured specials from
store.steampowered.com/api/featuredcategories - Supplements with search results from
store.steampowered.com/search/results?specials=1 - Optionally enriches each game with full details from
store.steampowered.com/api/appdetails - Fetches Steam user review summary (positive rate, score description) from
store.steampowered.com/appreviews/<appid>?json=1 - Outputs in markdown, JSON, or plain text format
Dependencies: Python 3.7+ standard library only (no pip packages required).
Game information returned includes:
- Game name, App ID, store link
- Original price, discounted price, discount percentage
- Discount expiration time
- Steam user review score description (e.g. 好评如潮, 特别好评, 多半好评)
- Positive review rate (percentage), total positive/negative counts
- Developer and publisher
- Genres and categories (e.g., Action, RPG, Multiplayer)
- Platform support (Windows, macOS, Linux)
- Metacritic score
- Total user reviews count
- Achievement count
- Controller support level
- Supported languages
- DLC count
- Age rating
- Short description
- Header image and screenshots
- Trailer links
API Reference
For detailed Steam API endpoint documentation, field definitions, rate limits, and country/language codes, refer to references/steam_api_reference.md.
Error Handling
- If the Steam API is unreachable, the script prints error messages to stderr and returns an empty or partial result set
- If individual game details fail to load, the deal entry is preserved with basic information only
- Rate limiting is handled with built-in delays between detail requests (300ms)
Tips
- The
--detailedflag significantly increases data richness but also execution time (due to per-game API calls). For quick overviews, omit it. - Chinese region (CN) typically has the lowest prices globally.
- Steam featured specials update periodically; for the freshest data, run the script each time rather than caching.
- The script uses only Python standard library modules, ensuring maximum portability.