slack-sieve

Sieve your Slack workspace export before Mattermost import — triage channels, cherry-pick messages, preview attachments.

Slack export → hydrate (attachments) → review UI → manifest.json → (prepare-export) → mmetl → mmctl

Quick start

git clone git@git.levkin.ca:ilia/slack-sieve.git
cd slack-sieve

# Optional: download files into __uploads/ from export token URLs
export SLACK_EXPORT_DIR="$HOME/Downloads/your-slack-export"
export SLACK_HYDRATED_DIR="$HOME/Downloads/your-slack-export-enriched"
make hydrate

# Optional: pre-skip noise channels (edit presets/levkin-skips.json or add your own)
make preset-skips

# Review at http://127.0.0.1:8765
export SLACK_EXPORT_PATH="$HOME/Downloads/your-slack-export-enriched"
make review

Selections are saved to manifest.json (gitignored).

Make targets

Target Description
make review Start the web UI on port 8765
make hydrate Copy export + download attachments via embedded xoxe URLs
make preset-skips Mark preset channels as skip in manifest.json

Environment

Variable Default
SLACK_EXPORT_PATH ~/Downloads/Levkin Slack export enriched
SLACK_EXPORT_DIR Raw export for hydrate
SLACK_HYDRATED_DIR Output folder for hydrate
SLACK_IMPORT_PORT 8765

UI shortcuts

  • J/K — previous/next message
  • Space — toggle cherry-pick
  • I / S — import/skip message
  • Shift+I / Shift+S — import/skip whole channel
  • N — next undecided channel

Presets

Edit presets/levkin-skips.json (or copy it) for workspace-specific channels to auto-skip.

Mattermost import (after review)

  1. Build a filtered export from manifest.json (prepare-export — planned).
  2. mmetl transform slack
  3. mmctl import

Docs: Migrate from Slack

Requirements

  • Python 3.10+ (stdlib only for server)
  • Official Slack export folder or enriched copy with channels.json, users.json, channel dirs

Handoff

Ongoing Levkin migration status, review order, and TODOs: docs/HANDOFF.md

Remote

git@git.levkin.ca:ilia/slack-sieve.git

SSH uses LAN 10.0.10.169 via Host git.levkin.ca in ~/.ssh/config (see homelab ansible docs).

Description
Sieve Slack export before Mattermost import — triage UI
Readme 565 KiB
Languages
Python 54.7%
JavaScript 25.2%
CSS 8.7%
HTML 3.9%
Shell 3.6%
Other 3.9%