Slack Datamine

sadeshmukh1 pts0 comments

GitHub - 3kh0/slack-datamine: Datamining Slack changes from the webpack manifest · GitHub

/" data-turbo-transient="true" />

Skip to content

Search/

Sign in<br>Sign upAppearance settings

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

3kh0

slack-datamine

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star<br>10

master

BranchesTags

Go to file

CodeOpen more actions menu

Latest commit

History<br>1,857 Commits<br>1,857 Commits

Folders and files<br>NameNameLast commit message<br>Last commit date<br>bin

bin

build

build

lib

lib

systemd

systemd

.env.example

.env.example

.gitignore

.gitignore

LICENSE

LICENSE

README.md

README.md

datamine.js

datamine.js

View all files

Repository files navigation

slack-datamine

Tracks Slack webpack bundle changes.

The miner reads Slack's authed client HTML, extracts the current build metadata and webpack chunk list, downloads the public CDN chunks, and writes the results into build/. Each mined build becomes a commit and tag for your convenience.

What It Writes

datamine.js dumps to build/ on each run and dumps the following:

API methods and method args

feature flags and experiments

error codes, slash commands, and OAuth scopes

analytics events

workflow functions and events

notification types

AI, MCP, and Block Kit enum values

trace spans, icon names, shortcuts, dev commands, and UI strings

chunks.txt and meta.json

The Setup

This is an archaic ass setup, but the intended strategy is to have a logged-in Slack desktop client exposing the Chrome DevTools Protocol on port 9222.

bin/watch-cdp.sh continuously peeks at the client HTML into<br>queue/html/.

bin/poll.sh mines queued snapshots in capture order, commits build/, tags<br>the build, and optionally pushes.

bin/snapshot-cdp.js captures one Slack client snapshot through CDP.

bin/reload-cdp.js reloads or navigates the Slack renderer and reports the<br>ready build.

Local Commands

Create local config:

cp .env.example .env

Mine from a saved Slack client HTML file:

node datamine.js --html page.html

Mine from a live Slack CDP instance:

node datamine.js --port 9222

Queue one snapshot and mine it through the normal poller path:

node bin/snapshot-cdp.js --port 9222 --dir queue/html --fetch-client<br>bash bin/poll.sh

For quick extractor checks:

node datamine.js --html page.html --limit 40<br>node datamine.js --port 9222 --loaded-only

systemd

Systemd can help automate things, the checked-in units run Slack under Xvfb, keep CDP available, watch for new client snapshots, and mine the queue every 30 seconds. Adjust as needed, then install and start:

install -m 0644 systemd/slack-xvfb.service /etc/systemd/system/slack-xvfb.service<br>install -m 0644 systemd/slack-cdp.service /etc/systemd/system/slack-cdp.service<br>install -m 0644 systemd/slack-datamine-watch.service /etc/systemd/system/slack-datamine-watch.service<br>install -m 0644 systemd/slack-datamine.service /etc/systemd/system/slack-datamine.service<br>install -m 0644 systemd/slack-datamine.timer /etc/systemd/system/slack-datamine.timer

systemctl daemon-reload<br>systemctl enable --now slack-xvfb.service slack-cdp.service<br>systemctl enable --now slack-datamine-watch.service slack-datamine.timer

Useful commands:

systemctl status slack-datamine-watch.service --no-pager<br>systemctl status slack-datamine.timer --no-pager<br>journalctl -u slack-datamine-watch.service -u slack-datamine.service -f

Set GIT_PUSH=1 in da .env if you want to push commits and tags.

Notes

Slack can skip public build numbers sometimes (because fuck logic). The miner logs the numeric gaps, but it cannot backfill a build after Slack stops serving that exact client HTML.

If Slack serves a lower build number again, the poller commits it as an observed rollback.

Some manifest chunks can 404 on every run. They are recorded in meta.json and skipped after retries.

Don't use any of the datamines as proof a feature is coming.

About<br>Datamining Slack changes from the webpack manifest<br>Topics<br>slack<br>Resources<br>Readme<br>GPL-3.0 license<br>Activity<br>Stars<br>10 stars<br>Watchers<br>0 watching<br>Forks<br>0 forks<br>Report repository

Releases

Used by

Contributors

Languages

You can’t perform that action at this time.

slack datamine systemd service build html

Related Articles