当サイトは、一部記事に広告を含みます

Slackの履歴を毎月自動でダウンロードし、バックアップする仕組みを作った話

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形式での活用もできます。
ぜひチームや個人利用に活かしてください!

---

記事が気に入ったら、ぜひ応援いただけると更新がんばれます☕️

Buy Me A Coffee