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:
node index.jsFirst 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 or new messages, 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) 🔄 Updating "CharacterC" (45 → 52 messages)
...
── Incremental summary ──
✨ New: 0
🔄 Updated: 2
⏭ Skipped: 148
⏳ 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.
Now for the fun part! You need a simple web server to view the dashboard. Run this in your terminal:
npx -y http-server . -p 8080 -c-1What does this do? It starts a tiny web server on your computer. The
-c-1part disables caching so you always see the latest data.
Then open your browser and go to:
http://localhost:8080/stats.html
🎉 That's it! Your dashboard should load with all your stats.
To stop the server, go back to your terminal and press
Ctrl + C.
| 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.