A tool that collects all your SpicyChat conversation data and displays it in a beautiful, interactive dashboard — right in your browser.
- Collects your data — The script fetches all your characters, conversations, and message counts from SpicyChat
- Saves it locally — Everything is stored in a single
aggregated.jsonfile on your computer - Shows you cool stats — A dashboard with charts, tables, and a conversations browser
| Tab | What's Inside |
|---|---|
| 📊 Overview | Total stats, top characters, tag distribution, message histograms |
| 📅 Timeline | Monthly/yearly activity, busiest days, hour-of-day patterns |
| 💬 Conversations | Browse all characters, expand to see every conversation, open them directly on SpicyChat |
Before starting, make sure you have Node.js installed on your computer.
- Go to https://nodejs.org
- Download the LTS version (the big green button)
- Run the installer — just click "Next" through everything
- To verify it worked, open a terminal and type:
If you see a version number like
node --versionv18.x.xor higher, you're good!
💡 What is a terminal?
- Windows: Press
Win + R, typecmd, and hit Enter. Or search for "Command Prompt" or "PowerShell" in the Start menu.- Mac: Press
Cmd + Space, type "Terminal", and hit Enter.- Linux: Press
Ctrl + Alt + T.
The script needs your SpicyChat login token to access your data. Here's how to get it:
- Open Google Chrome (or any browser)
- Go to https://spicychat.ai and log in to your account
- Open Developer Tools:
- Press
F12on your keyboard, or - Press
Ctrl + Shift + I(Windows/Linux) /Cmd + Option + I(Mac)
- Press
- Click the "Network" tab at the top of the Developer Tools panel
- In the filter box, type
v2to narrow down the requests - Now click on anything on the SpicyChat website (like opening a chat)
- You'll see network requests appear in the list — click on any one of them
- In the right panel, scroll down to "Request Headers"
- Find the line that says
Authorization: Bearer eyJ... - Copy everything after
Bearer— that long string starting witheyJis your token
⚠️ Important: This token is like a password — never share it with anyone! It gives full access to your SpicyChat account.
⚠️ Token Expiry: Tokens expire after some time. If the script gives you authentication errors, just repeat these steps to get a fresh token.
-
Download this project — Click the green "Code" button on GitHub, then "Download ZIP", and unzip it somewhere on your computer. Or if you know Git:
git clone https://github.com/ReneR97/spicychatstats.git cd spicychatstats -
Install dependencies — Open a terminal in the project folder and run:
npm install
This downloads the one library the script needs (
axiosfor making web requests). -
Paste your token — Open the file
index.jsin any text editor (Notepad, VS Code, etc.) and find this line near the top:const BEARER_TOKEN = 'eyJ...';
Replace the token inside the quotes with your own token from Step 1.
In your terminal (make sure you're in the project folder), run:
npm run startThis will run the data collection script and then automatically open your dashboard in your browser.
First run — When there's no aggregated.json yet, the script does a full crawl of all your characters:
=== SpicyChat Data Aggregator ===
[Step 1] Fetching all conversations...
Fetching conversations page 1...
...
[Info] Found 150 unique characters from the API.
(1/150) Processing "CharacterA"...
(2/150) Processing "CharacterB"...
...
=== Done! Data saved to aggregated.json ===
Subsequent runs — When aggregated.json already exists, the script is smart about it: it checks each character for new conversations and only recrawls what has changed:
=== SpicyChat Data Aggregator ===
[Info] Found 150 unique characters from the API.
Loaded 150 existing characters from aggregated.json
(1/150) ⏭ Skipping "CharacterA" (3 convos, unchanged)
(2/150) 🔄 Updating "CharacterB" (2 → 3 convos)
(3/150) ✨ New character "CharacterC" — crawling...
...
── Incremental summary ──
✨ New: 1
🔄 Updated: 3
⏭ Skipped: 146
⏳ How long does it take?
- First run: Depends on how many characters you have. For ~150 characters, expect about 1-2 minutes.
- Later runs: Characters without changes are skipped, so updates are faster.
💡 Want a completely fresh dataset? Just delete
aggregated.jsonand run the script again.
Run this command in your terminal:
npm run startThis runs the collection script first and then automatically launches the dashboard.
If you haven't made any new chats and just want to see your existing stats, run:
npm run serverThis skips the data collection and just opens your dashboard.
| File | Purpose |
|---|---|
index.js |
The data collection script — fetches your data from SpicyChat |
stats.html |
The dashboard — displays all your stats in the browser |
aggregated.json |
Your data — created after running the script |
package.json |
Project configuration & dependencies |
Your token has expired. Get a new one (see Step 1) and paste it into index.js.
Node.js isn't installed or isn't in your system PATH. Reinstall it from nodejs.org and make sure to check the "Add to PATH" option during installation.
You forgot to install dependencies. Run npm install in the project folder.
Make sure aggregated.json exists in the same folder. Run node index.js first to generate it.
Some data might be missing (e.g., no createdAt dates for old conversations). This is normal — the charts will show whatever data is available.
This project is for personal use. Your data stays on your computer — nothing is sent anywhere except to SpicyChat's own API to fetch your existing data.