{"slug": "slack-datamine", "title": "Slack Datamine", "summary": "A developer released Slack Datamine, an open-source tool that mines Slack's webpack bundle to extract API methods, feature flags, error codes, analytics events, and AI-related enum values, committing each build to a Git repository. The tool requires a logged-in Slack desktop client with Chrome DevTools Protocol on port 9222 and can be automated via systemd. The project warns users not to treat datamines as proof of upcoming features.", "body_md": "Tracks Slack webpack bundle changes.\n\nThe 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/`\n\n. Each mined build becomes a commit and tag for your convenience.\n\n`datamine.js`\n\ndumps to `build/`\n\non each run and dumps the following:\n\n- API methods and method args\n- feature flags and experiments\n- error codes, slash commands, and OAuth scopes\n- analytics events\n- workflow functions and events\n- notification types\n- AI, MCP, and Block Kit enum values\n- trace spans, icon names, shortcuts, dev commands, and UI strings\n`chunks.txt`\n\nand`meta.json`\n\nThis is an archaic ass setup, but the intended strategy is to have a logged-in Slack desktop client exposing the [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/) on port 9222.\n\n`bin/watch-cdp.sh`\n\ncontinuously peeks at the client HTML into`queue/html/`\n\n.`bin/poll.sh`\n\nmines queued snapshots in capture order, commits`build/`\n\n, tags the build, and optionally pushes.`bin/snapshot-cdp.js`\n\ncaptures one Slack client snapshot through CDP.`bin/reload-cdp.js`\n\nreloads or navigates the Slack renderer and reports the ready build.\n\nCreate local config:\n\n```\ncp .env.example .env\n```\n\nMine from a saved Slack client HTML file:\n\n```\nnode datamine.js --html page.html\n```\n\nMine from a live Slack CDP instance:\n\n```\nnode datamine.js --port 9222\n```\n\nQueue one snapshot and mine it through the normal poller path:\n\n```\nnode bin/snapshot-cdp.js --port 9222 --dir queue/html --fetch-client\nbash bin/poll.sh\n```\n\nFor quick extractor checks:\n\n```\nnode datamine.js --html page.html --limit 40\nnode datamine.js --port 9222 --loaded-only\n```\n\nSystemd 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:\n\n```\ninstall -m 0644 systemd/slack-xvfb.service /etc/systemd/system/slack-xvfb.service\ninstall -m 0644 systemd/slack-cdp.service /etc/systemd/system/slack-cdp.service\ninstall -m 0644 systemd/slack-datamine-watch.service /etc/systemd/system/slack-datamine-watch.service\ninstall -m 0644 systemd/slack-datamine.service /etc/systemd/system/slack-datamine.service\ninstall -m 0644 systemd/slack-datamine.timer /etc/systemd/system/slack-datamine.timer\n\nsystemctl daemon-reload\nsystemctl enable --now slack-xvfb.service slack-cdp.service\nsystemctl enable --now slack-datamine-watch.service slack-datamine.timer\n```\n\nUseful commands:\n\n```\nsystemctl status slack-datamine-watch.service --no-pager\nsystemctl status slack-datamine.timer --no-pager\njournalctl -u slack-datamine-watch.service -u slack-datamine.service -f\n```\n\nSet `GIT_PUSH=1`\n\nin da `.env`\n\nif you want to push commits and tags.\n\n- 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.\n- If Slack serves a lower build number again, the poller commits it as an observed rollback.\n- Some manifest chunks can 404 on every run. They are recorded in\n`meta.json`\n\nand skipped after retries. - Don't use any of the datamines as proof a feature is coming.", "url": "https://wpnews.pro/news/slack-datamine", "canonical_source": "https://github.com/3kh0/slack-datamine", "published_at": "2026-08-20 22:41:31+00:00", "updated_at": "2026-08-20 23:15:18.162726+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["Slack", "Chrome DevTools Protocol", "Slack Datamine"], "alternates": {"html": "https://wpnews.pro/news/slack-datamine", "markdown": "https://wpnews.pro/news/slack-datamine.md", "text": "https://wpnews.pro/news/slack-datamine.txt", "jsonld": "https://wpnews.pro/news/slack-datamine.jsonld"}}