{"id":16044938,"url":"https://github.com/nylen/slack-archiver","last_synced_at":"2026-06-12T23:34:31.981Z","repository":{"id":44118687,"uuid":"167643885","full_name":"nylen/slack-archiver","owner":"nylen","description":"Set of tools to archive a Slack workspace.","archived":false,"fork":false,"pushed_at":"2022-02-12T05:55:00.000Z","size":43,"stargazers_count":0,"open_issues_count":3,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-22T07:18:14.147Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nylen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-26T03:08:03.000Z","updated_at":"2024-02-25T03:48:37.000Z","dependencies_parsed_at":"2022-08-03T01:31:24.837Z","dependency_job_id":null,"html_url":"https://github.com/nylen/slack-archiver","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nylen/slack-archiver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nylen%2Fslack-archiver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nylen%2Fslack-archiver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nylen%2Fslack-archiver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nylen%2Fslack-archiver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nylen","download_url":"https://codeload.github.com/nylen/slack-archiver/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nylen%2Fslack-archiver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34266915,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-09T00:03:52.023Z","updated_at":"2026-06-12T23:34:31.950Z","avatar_url":"https://github.com/nylen.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Slack Archiver\n\nThis is a set of tools for archiving a Slack workspace, including files and\nprivate channels.\n\nEach essential function is performed by a separate script file:\n\n- Archive all visible messages to newline-delimited JSON files\n- Use the\n  [Slack RTM API](https://api.slack.com/rtm)\n  to log events to newline-delimited JSON files as they happen\n- Archive all files seen by the bot\n\nFuture plans include merging data from other sources (like Slack export files),\ndownloading custom emoji, and automatically building/updating a HTML archive of\nreceived messages.\n\n## Setup\n\n- [Create a Slack app with a bot user](https://api.slack.com/bot-users)\n  and save the token.\n- Add the bot user to any channels you want to archive.\n- Copy `sample-config.json` to `config.json` and fill in the values.\n- Run `npm install`.\n\n## Archiving message history\n\nRun `bin/log-history.js`.  This script will archive all message history that is\ncurrently visible to the user associated with the token, subject to the 10,000\nmessage limit for the free Slack plan.\n\nThis script saves a set of newline-delimited JSON log files under the\n`historyPath` directory specified in the config file, with one subdirectory per\nmonth and one file per hour (using the format `YYYY-MM/YYYY-MM-DD_HH.log`).\n\n## Archiving messages in realtime\n\nRun `bin/log-events.js`.  This script will connect to the Slack API and listen\nfor events.  It will try to reconnect if it gets disconnected, but you are\nresponsible for restarting it if it experiences some other error.\n\nThis script saves a set of newline-delimited JSON log files under the `logPath`\ndirectory specified in the config file, with one subdirectory per month and one\nfile per hour (using the format `YYYY-MM/YYYY-MM-DD_HH.log`).\n\n## Archiving files\n\nRun `bin/download-files.js`.  This script will process all the JSON log files\nsaved by `bin/log-events.js` and `bin/log-history.js`, look for files, and\ndownload them (along with their metadata from the Slack API) to the\n`fileStoragePath` directory specified in the config file.\n\nCurrently you must run this script every time you want to download new files.\nThis may be improved in the future.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnylen%2Fslack-archiver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnylen%2Fslack-archiver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnylen%2Fslack-archiver/lists"}