Slackの無料プランを使っていると、過去90日より前のメッセージが見られなくなることがあります。
大事なやり取りやファイルを消さずに残しておくには、自分で定期的にバックアップを取るのが確実です。
今回は、Slackの履歴をHTML形式でダウンロード&ローカル保存し、さらに月1回の自動バックアップをcronで設定する手順をまとめました。
わたし的ポイント
- Slackの履歴を無料プランでダウンロード・保存できる
- HTML形式で人が読める形に保存できる
- cronによる完全自動バックアップ
出来上がりイメージ👇

目次
使用するツールと前提
- OS:macOS(cronによる自動実行を想定)
- ツール:
slack-archive
- 必要環境:Node.js v14以上、npm
- プロジェクトディレクトリ:~/Desktop/project/slack履歴
手順① Slackアプリの作成とトークン取得
Slackの履歴を取得するには、カスタムアプリを作ってトークンを発行する必要があります。
1️⃣ Slack API にアクセスし、「Create New App」→「From scratch」
2️⃣ 名前とワークスペースを設定
3️⃣ 左メニューの「OAuth & Permissions」から以下の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
4️⃣「Install to Workspace」してトークンを発行
トークンは xoxp-… という形。これを控えておきます。
手順② slack-archive の初回実行(手動)
npx slack-archive
初回はインタラクティブなUIで、チャンネル・DMの種類・対象などを選択できます。
取得したトークンは slack-archive 実行ディレクトリ内に .token というファイルを作成し、そこに貼っておくと次回以降省略可能◎
echo "xoxp-xxxxx..." > .token
実行したら、/slack-archiveに生成されたindex.htmlを開くと・・・

できてます!🎉🎉🎉🎉
手順③ バックアップ自動化(cron)
シェルスクリプトを作成
(例:~/Desktop/project/slack履歴/run_slack_backup.sh
)
#!/bin/bash
export PATH=/opt/homebrew/bin:/usr/local/bin:$PATH
# slack-archive のあるディレクトリへ移動
cd /Users/ユーザー名/Desktop/project/slack履歴/slack-archive
# 自動オプションを付けて実行
npx slack-archive \
--automatic \
--use-previous-channel-config
実行権限を付与:
chmod +x run_slack_backup.sh
cron に登録(例:毎月1日 朝9時に実行)
以下を追記:
0 9 1 * * /bin/bash /Users/ユーザー名/Desktop/project/slack履歴/run_slack_backup.sh<
macOS のセキュリティ設定(重要)
cron がファイルにアクセスできるように、システム設定 → プライバシーとセキュリティ → フルディスクアクセス に以下を追加:
/usr/sbin/cron
- 使用中の
Terminal.app
(cron が内部的に使うケースもある)
設定後はMacの再起動を推奨。
テストしてみる
スケジュールを 「数分後」とかに一時的に変更してお試し実行してみる!
たとえば今が5月11日の14時01分なら、14時5分に予約してみる
crontab -e
下記のように先頭の数値を書き換える
5 14 11 * * /bin/bash /Users/ユーザー名/Desktop/project/slack履歴/run_slack_backup.sh<
実行確認のポイント
cron.log
に出力される内容をチェック(エラーがあれば表示される)data/
以下のフォルダが増えてるか見てみる- slackに事前に適当にメッセージ送っておいて、更新されるか見るのも◎
おわりに
Slackの履歴が消える前に、ローカルに定期的に保存しておくのはとても大事です。
今回の方法なら、Slackの履歴をHTMLで閲覧可能な状態でバックアップ&自動化できます。
必要な方は、ファイルのダウンロードやJSON形式での活用もできます。
ぜひチームや個人利用に活かしてください!