Update README.md (#445)

v3 Readme, simplified, clearer warnings for common issues.
This commit is contained in:
Michael Cammarata
2026-01-12 13:31:03 -05:00
committed by GitHub
parent cbd8842f2f
commit f0bee7db5d

205
README.md
View File

@@ -2,9 +2,210 @@
---
TODO
## Table of Contents
- [Quick Setup](#quick-setup)
- [Nix Setup](#nix-setup)
- [Configuration Options](#configuration-options)
- [Account Configuration](#account-configuration)
- [Troubleshooting](#troubleshooting)
- [Disclaimer](#disclaimer)
[For installation see the main (v1) or v2 branch (mostly the same)](https://github.com/TheNetsky/Microsoft-Rewards-Script/tree/main?tab=readme-ov-file#setup)
---
## Quick Setup
**Requirements:** Node.js >= 22 and Git
Works on Windows, Linux, macOS, and WSL.
### Get the script
```bash
git clone https://github.com/TheNetsky/Microsoft-Rewards-Script.git
cd Microsoft-Rewards-Script
```
Or, download the latest release ZIP and extract it.
### Create an account.json and config.json
Copy, rename, and edit your account and configuration files before deploying the script.
- Copy or rename `src/accounts.example.json` to `src/accounts.json` and add your credentials
- Copy or rename `src/config.example.json` to `src/config.json` and customize your preferences.
> [!CAUTION]
> Do not skip this step.
> Prior versions of accounts.json and config.json are not compatible with current release.
> [!WARNING]
> You must rebuild your script after making any changes to accounts.json and config.json.
### Build and run the script (bare metal version)
```bash
npm run pre-build
npm run build
npm run start
```
### Build and run the script (docker version)
```bash
docker compose up -d
```
> [!CAUTION]
> Set `headless` to `true` in the `config.json` when using docker
> Additional docker-specific scheduling options are in the `compose.yaml`
> [!NOTE]
> When headless, monitor logs with `docker logs microsoft-rewards-script` (for example, to view 2FA codes), or enable a webhook service
---
## Nix Setup
If using Nix:
1. Run the pre-build step first:
```bash
npm run pre-build
```
2. Then start the script:
```bash
./run.sh
```
This will launch the script headlessly using `xvfb-run`.
---
## Configuration Reference
> [!NOTE]
> Edit `src/config.json` to customize behavior. Below are all currently available options
> Rebuild the script after all changes.
### Core
| Setting | Type | Default | Description |
|----------|------|----------|-------------|
| `baseURL` | string | `"https://rewards.bing.com"` | Microsoft Rewards base URL |
| `sessionPath` | string | `"sessions"` | Directory to store browser sessions |
| `headless` | boolean | `false` | Run browser invisibly |
| `runOnZeroPoints` | boolean | `false` | Run even when no points are available |
| `clusters` | number | `1` | Number of concurrent account clusters |
| `errorDiagnostics` | boolean | `false` | Enable error diagnostics |
| `searchOnBingLocalQueries` | boolean | `false` | Use local query list |
| `globalTimeout` | string | `"30sec"` | Timeout for all actions |
> [!CAUTION]
> Set `headless` to `true` when using docker
### Workers
| Setting | Type | Default | Description |
|----------|------|----------|-------------|
| `workers.doDailySet` | boolean | `true` | Complete daily set |
| `workers.doSpecialPromotions` | boolean | `true` | Complete special promotions |
| `workers.doMorePromotions` | boolean | `true` | Complete more promotions |
| `workers.doPunchCards` | boolean | `true` | Complete punchcards |
| `workers.doAppPromotions` | boolean | `true` | Complete app promotions |
| `workers.doDesktopSearch` | boolean | `true` | Perform desktop searches |
| `workers.doMobileSearch` | boolean | `true` | Perform mobile searches |
| `workers.doDailyCheckIn` | boolean | `true` | Complete daily check-in |
| `workers.doReadToEarn` | boolean | `true` | Complete Read-to-Earn |
### Search Settings
| Setting | Type | Default | Description |
|----------|------|----------|-------------|
| `searchSettings.scrollRandomResults` | boolean | `false` | Scroll randomly on results |
| `searchSettings.clickRandomResults` | boolean | `false` | Click random links |
| `searchSettings.parallelSearching` | boolean | `true` | Run searches in parallel |
| `searchSettings.queryEngines` | string[] | `["google", "wikipedia", "reddit", "local"]` | Query engines to use |
| `searchSettings.searchResultVisitTime` | string | `"10sec"` | Time to spend on each search result |
| `searchSettings.searchDelay.min` | string | `"30sec"` | Minimum delay between searches |
| `searchSettings.searchDelay.max` | string | `"1min"` | Maximum delay between searches |
| `searchSettings.readDelay.min` | string | `"30sec"` | Minimum delay for reading |
| `searchSettings.readDelay.max` | string | `"1min"` | Maximum delay for reading |
### Logging
| Setting | Type | Default | Description |
|----------|------|----------|-------------|
| `debugLogs` | boolean | `false` | Enable debug logging |
| `consoleLogFilter.enabled` | boolean | `false` | Enable console log filtering |
| `consoleLogFilter.mode` | string | `"whitelist"` | Filter mode (whitelist/blacklist) |
| `consoleLogFilter.levels` | string[] | `["error", "warn"]` | Log levels to filter |
| `consoleLogFilter.keywords` | string[] | `["starting account"]` | Keywords to filter |
| `consoleLogFilter.regexPatterns` | string[] | `[]` | Regex patterns for filtering |
### Proxy
| Setting | Type | Default | Description |
|----------|------|----------|-------------|
| `proxy.queryEngine` | boolean | `true` | Proxy query engine requests |
### Webhooks
| Setting | Type | Default | Description |
|----------|------|----------|-------------|
| `webhook.discord.enabled` | boolean | `false` | Enable Discord webhook |
| `webhook.discord.url` | string | `""` | Discord webhook URL |
| `webhook.ntfy.enabled` | boolean | `false` | Enable ntfy notifications |
| `webhook.ntfy.url` | string | `""` | ntfy server URL |
| `webhook.ntfy.topic` | string | `""` | ntfy topic |
| `webhook.ntfy.token` | string | `""` | ntfy authentication token |
| `webhook.ntfy.title` | string | `"Microsoft-Rewards-Script"` | Notification title |
| `webhook.ntfy.tags` | string[] | `["bot", "notify"]` | Notification tags |
| `webhook.ntfy.priority` | number | `3` | Notification priority (1-5) |
| `webhook.webhookLogFilter.enabled` | boolean | `false` | Enable webhook log filtering |
| `webhook.webhookLogFilter.mode` | string | `"whitelist"` | Filter mode (whitelist/blacklist) |
| `webhook.webhookLogFilter.levels` | string[] | `["error"]` | Log levels to send |
| `webhook.webhookLogFilter.keywords` | string[] | `["starting account", "select number", "collected"]` | Keywords to filter |
| `webhook.webhookLogFilter.regexPatterns` | string[] | `[]` | Regex patterns for filtering |
> [!WARNING]
> **NTFY Users** Set the `webhookLogFilter` to `enabled`, otherwise you will receive push notifications for *all* log lines
> When enabled, only account start, 2FA codes, and account completion summaries are delivered as push notifcations.
> Customize which notifications you receive with the `keywords` options.
---
## Account Configuration
> [!NOTE]
> Edit `src/accounts.json`. The file is an **array** of accounts
> Rebuild the script after all changes.
```json
[
{
"email": "email_1",
"password": "password_1",
"proxy": {
"proxyAxios": true,
"url": "",
"port": 0,
"username": "",
"password": ""
}
},
{
"email": "email_2",
"password": "password_2",
"proxy": {
"proxyAxios": true,
"url": "",
"port": 0,
"username": "",
"password": ""
}
}
]
```
**Notes**
- The file is a **flat array**, not `{ "accounts": [ ... ] }`.
- Only `email`, `password`, and `proxy` are supported.
- `proxyAxios` enables Axios-level proxying for API requests.
---
## Troubleshooting
> [!NOTE]
> Most login issues can be fixed by deleting your /sessions folder, and redeploying the script
---
## Disclaimer