-
Notifications
You must be signed in to change notification settings - Fork 137
Add game buying guide cookbook example #23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
3fcfa9b
ad6175a
5fb0763
0be8757
9fa8f17
d1b6079
6f39c7f
905efc6
ab28cc2
7a44800
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| MINO_API_KEY = YOUR_API_KEY | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. | ||
|
|
||
| # dependencies | ||
| /node_modules | ||
|
|
||
| # next.js | ||
| /.next/ | ||
| /out/ | ||
|
|
||
| # production | ||
| /build | ||
|
|
||
| # debug | ||
| npm-debug.log* | ||
| yarn-debug.log* | ||
| yarn-error.log* | ||
| .pnpm-debug.log* | ||
|
|
||
| # env files | ||
| .env* | ||
|
|
||
| # vercel | ||
| .vercel | ||
|
|
||
| # typescript | ||
| *.tsbuildinfo | ||
| next-env.d.ts |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,172 @@ | ||||||||||||||||||||||||||||||
| # GamePulse | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| **Live:** [https://v0-game-buying-guide.vercel.app/](https://v0-game-buying-guide.vercel.app/) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| GamePulse helps users decide **whether to buy a video game now or wait for a better deal**. | ||||||||||||||||||||||||||||||
| It compares pricing, discounts, and store signals across **10 major gaming platforms in parallel** using **Mino autonomous browser agents**, then surfaces a clear recommendation for each store. | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| Instead of relying on price-tracking APIs or scraped datasets, GamePulse launches real browser agents that visit each store, observe the live page, and return structured pricing analysis in real time. | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ## Demo | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| https://github.com/user-attachments/assets/61c22b80-2cfc-40a6-bc3a-7d5917cf71a9 | ||||||||||||||||||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Wrap bare URLs in angle brackets for proper markdown formatting. Lines 14 and 126 contain bare URLs that should be wrapped in angle brackets ( 📝 Proposed fixesLine 14: -https://github.com/user-attachments/assets/61c22b80-2cfc-40a6-bc3a-7d5917cf71a9
+<https://github.com/user-attachments/assets/61c22b80-2cfc-40a6-bc3a-7d5917cf71a9>Line 126: -Open http://localhost:3000
+Open <http://localhost:3000>Also applies to: 126-126 🧰 Tools🪛 markdownlint-cli2 (0.20.0)14-14: Bare URL used (MD034, no-bare-urls) 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ## Mino API Usage | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| GamePulse uses the **TinyFish SSE Browser Automation API** to analyze multiple game stores simultaneously. | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| For each platform (Steam, Epic, PlayStation Store, etc.), the app launches a Mino agent that: | ||||||||||||||||||||||||||||||
| - Navigates to the store search page | ||||||||||||||||||||||||||||||
| - Locates the requested game | ||||||||||||||||||||||||||||||
| - Extracts pricing, discounts, and sale signals | ||||||||||||||||||||||||||||||
| - Returns a structured JSON recommendation | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ### Example API Call | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ```ts | ||||||||||||||||||||||||||||||
| const response = await fetch("https://mino.ai/v1/automation/run-sse", { | ||||||||||||||||||||||||||||||
| method: "POST", | ||||||||||||||||||||||||||||||
| headers: { | ||||||||||||||||||||||||||||||
| "X-API-Key": process.env.MINO_API_KEY, | ||||||||||||||||||||||||||||||
| "Content-Type": "application/json", | ||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||
| body: JSON.stringify({ | ||||||||||||||||||||||||||||||
| url: platformSearchUrl, | ||||||||||||||||||||||||||||||
| goal: ` | ||||||||||||||||||||||||||||||
| You are analyzing a game store page to help a user decide | ||||||||||||||||||||||||||||||
| whether to buy "${gameTitle}" now or wait. | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| Observe: | ||||||||||||||||||||||||||||||
| - Current price | ||||||||||||||||||||||||||||||
| - Sale or discount indicators | ||||||||||||||||||||||||||||||
| - User ratings and review signals | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| Return a JSON object with pricing and a recommendation. | ||||||||||||||||||||||||||||||
| `, | ||||||||||||||||||||||||||||||
| timeout: 300000, | ||||||||||||||||||||||||||||||
| }), | ||||||||||||||||||||||||||||||
| }) | ||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| The response streams **Server-Sent Events (SSE)**, including: | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - `STREAMING_URL` → live browser preview of the agent | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - `STATUS` → navigation and extraction progress | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - `COMPLETE` → final structured pricing analysis JSON | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ## How It Works | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| 1. User enters a game title (e.g., Elden Ring) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| 2. Platform discovery generates search URLs from a curated list of 10 stores | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| 3. Parallel Mino agents launch (one per platform) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| 4. Live browser previews stream into the UI | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| 5. Results aggregate into a buy / wait / consider recommendation dashboard | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ## Supported Platforms | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| GamePulse checks the following platforms for every search: | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - Steam | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - Epic Games Store | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - GOG | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - PlayStation Store | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - Xbox Store | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - Nintendo eShop | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - Humble Bundle | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - Green Man Gaming | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - Fanatical | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - CDKeys | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| No external discovery APIs or LLMs are used — the platform list is curated and deterministic. | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ## How to Run | ||||||||||||||||||||||||||||||
| **Prerequisites** | ||||||||||||||||||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Use proper heading syntax instead of emphasis. Line 103 uses bold emphasis ( 📝 Proposed fix-**Prerequisites**
+### Prerequisites📝 Committable suggestion
Suggested change
🧰 Tools🪛 markdownlint-cli2 (0.20.0)103-103: Emphasis used instead of a heading (MD036, no-emphasis-as-heading) 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||
| - Node.js 18+ | ||||||||||||||||||||||||||||||
| - A Mino API key [get one here](https://mino.ai/api-keys) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ## Setup | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| 1. Install dependencies: | ||||||||||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||||||||||
| cd game-buying-guide | ||||||||||||||||||||||||||||||
| npm install | ||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| 2. Create a .env.local file: | ||||||||||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||||||||||
| MINO_API_KEY=your_mino_api_key_here | ||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| 3. Start the dev server: | ||||||||||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||||||||||
| npm run dev | ||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| Open http://localhost:3000 | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ## Architecture Diagram | ||||||||||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||||||||||
| ┌─────────────────────────────────────────────────────────┐ | ||||||||||||||||||||||||||||||
| │ User (Browser) │ | ||||||||||||||||||||||||||||||
| │ ┌─────────────────────────────────────────────────┐ │ | ||||||||||||||||||||||||||||||
| │ │ Next.js Frontend │ │ | ||||||||||||||||||||||||||||||
| │ │ │ │ | ||||||||||||||||||||||||||||||
| │ │ 1. Enter game title │ │ | ||||||||||||||||||||||||||||||
| │ │ 2. View 10 live agent cards │ │ | ||||||||||||||||||||||||||||||
| │ │ 3. See buy / wait recommendations │ │ | ||||||||||||||||||||||||||||||
| │ └──────────────────┬──────────────────────────────┘ │ | ||||||||||||||||||||||||||||||
| └─────────────────────┼───────────────────────────────────┘ | ||||||||||||||||||||||||||||||
| │ POST /api/analyze-platform (x10, parallel) | ||||||||||||||||||||||||||||||
| ▼ | ||||||||||||||||||||||||||||||
| ┌─────────────────────────────────────────────────────────┐ | ||||||||||||||||||||||||||||||
| │ Next.js API Routes │ | ||||||||||||||||||||||||||||||
| │ │ | ||||||||||||||||||||||||||||||
| │ - /api/discover-platforms │ | ||||||||||||||||||||||||||||||
| │ - /api/analyze-platform → Mino SSE proxy │ | ||||||||||||||||||||||||||||||
| └─────────────────────┬───────────────────────────────────┘ | ||||||||||||||||||||||||||||||
| │ POST /v1/automation/run-sse | ||||||||||||||||||||||||||||||
| ▼ | ||||||||||||||||||||||||||||||
| ┌─────────────────────────────────────────────────────────┐ | ||||||||||||||||||||||||||||||
| │ Mino API │ | ||||||||||||||||||||||||||||||
| │ │ | ||||||||||||||||||||||||||||||
| │ - Spins up autonomous browser agents │ | ||||||||||||||||||||||||||||||
| │ - Streams live previews and status │ | ||||||||||||||||||||||||||||||
| │ - Returns structured pricing JSON │ | ||||||||||||||||||||||||||||||
| └──────────┬──────────┬──────────┬──────────┬────────────┘ | ||||||||||||||||||||||||||||||
| ▼ ▼ ▼ ▼ | ||||||||||||||||||||||||||||||
| Steam Epic PlayStation Xbox ... (10 platforms) | ||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ## Environment Variables | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| MINO_API_KEY - API key for Mino browser automation | ||||||||||||||||||||||||||||||
|
Comment on lines
+161
to
+163
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Improve environment variables formatting. The environment variables section uses hard tabs and unclear formatting. Consider using a proper markdown table or list format for better clarity. 📝 Proposed fix (table format) ## Environment Variables
-MINO_API_KEY - API key for Mino browser automation
+| Variable | Description |
+|----------|-------------|
+| `MINO_API_KEY` | API key for Mino browser automation |Alternatively, as a list: ## Environment Variables
-MINO_API_KEY - API key for Mino browser automation
+- `MINO_API_KEY` - API key for Mino browser automation📝 Committable suggestion
Suggested change
Suggested change
🧰 Tools🪛 markdownlint-cli2 (0.20.0)163-163: Hard tabs (MD010, no-hard-tabs) 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ## Notes | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - All platform analysis is performed via live browser automation | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - No price databases, scraping services, or AI discovery APIs are used | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - Results reflect real-time store state, not cached data | ||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove spaces around
=to ensure dotenv parsing works.Some dotenv parsers treat spaces as part of the key/value and won’t load the variable.
✅ Proposed fix
📝 Committable suggestion
🧰 Tools
🪛 dotenv-linter (4.0.0)
[warning] 1-1: [SpaceCharacter] The line has spaces around equal sign
(SpaceCharacter)
🤖 Prompt for AI Agents