Coder Social home page Coder Social logo

slack-archive's Introduction

Export your Slack workspace as static HTML

Alright, so you want to export all your messages on Slack. You want them in a format that you can still enjoy in 20 years. This tool will help you do that.

  • Completely static: The generated files are pure HTML and will still work in 50 years.
  • Everything you care about: This tool downloads messages, files, and avatars.
  • Nothing you do not care about: Choose exactly which channels and DMs to download.
  • All types of conversations: We'll fetch public channels, private channels, DMs, and multi-person DMs.
  • Incremental backups: If you already have local data, we'll extend it - no need to download existing stuff again.
  • JSON included: All data is also stored as JSON, so you can consume it with other tools later.
  • No cloud, free: Do all of this for free, without giving anyone your information.
  • Basic search: Offers basic search functionality.

Screen Shot 2021-09-09 at 6 43 55 PM

Using it

  1. Do you already have a user token for your workspace? If not, read on below on how to get a token.
  2. Make sure you have node and npm installed, ideally something newer than Node v14.
  3. Run slack-archive, which will interactively guide you through the options.
npx slack-archive

Parameters

--automatic: Don't prompt and automatically fetch all messages from all channels.
--no-backup: Don't create backups. Not recommended.
--no-search: Don't create a search file, saving disk space.

Getting a token

In order to download messages from private channels and direct messages, we will need a "user token". Slack uses the token to identify what permissions it'll give this app. We used to be able to just copy a token out of your Slack app, but now, we'll need to create a custom app and jump through a few hoops.

This will be mostly painless, I promise.

1) Make a custom app

Head over to https://api.slack.com/apps and Create New App. Select From scratch. Give it a name and choose the workspace you'd like to export.

Then, from the Features menu on the left, select OAuth & Permission.

As a redirect URL, enter something random that doesn't actually exist, or a domain you control. For instace:

https://notarealurl.com/

(Note that redirects will take a very long time if using a domain that doesn't actually exist)

Then, add the following User Token Scopes:

  • channels:history
  • channels:read
  • files:read
  • groups:history
  • groups:read
  • im:history
  • im:read
  • mpim:history
  • mpim:read
  • remote_files:read
  • users:read

Finally, head back to Basic Information and make a note of your app's client id and client secret. We'll need both later.

2) Authorize

Make sure you have your Slack workspace URL (aka team name) and your app's client id. Then, in a browser, open this URL - replacing {your-team-name} and {your-client-id} with your values.

https://{your-team-name}.slack.com/oauth/authorize?client_id={your-client-id}&scope=client

Confirm everything until Slack sends you to the mentioned non-existent URL. Look at your browser's address bar - it should contain an URL that looks like this:

https://notarealurl.com/?code={code}&state=

Copy everything between ?code= and &state. This is your code. We'll need it in the next step.

Next, we'll exchange your code for a token. To do so, we'll also need your client secret from the first step when we created your app. In a browser, open this URL - replacing {your-team-name}, {your-client-id}, {your-code} and {your-client-secret} with your values.

https://{your-team-name}.slack.com/api/oauth.access?client_id={your-client-id}&client_secret={your-client-secret}&code={your-code}"

Your browser should now be returning some JSON including a token. Make a note of it - that's what we'll use.

slack-archive's People

Contributors

cheapsteak avatar cmbuckley avatar felixrieseberg avatar russki avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.