Slack のチャンネルから全メッセージをダウンロードするスクリプトです。
対象範囲は、パブリックチャンネル、プライベートチャンネル、複数人のダイレクトメッセージ、ダイレクトメッセージです。ただし実行したユーザーが閲覧権限を持っているものに限ります。
- Python: 3.9.13
- requests: 2.28.1
Slack Web API を実行するために、Slack App を作成して OAuth トークンを入手します。
- Slack App を作成する。App の作成ページを開き、
Create New App
を押す。 From an app manifest
を選択し、manifest.yaml
の内容を貼り付けて、あとは指示通り進む。- 作成した App の Basic Information ページで
Install to Workspace
を押し、インストール先のワークスペースを選択する。 - OAuth & Permissions ページの
User OAuth Token
を控えておく。
slack_export.py
を以下のように実行します。token
パラメータには、先ほど入手したトークンを指定してください。- 以下の例では、実行するとカレントディレクトリに
output
ディレクトリが作成され、その中にチャンネルごとに JSON 形式で保存されます。
$ pip install -r requirements.txt
$ python slack_export.py \
--token xxxxx \
--output-dir output
INFO:__main__:Fetching users
INFO:__main__:xxx users fetched
INFO:__main__:Fetching channels
INFO:__main__:xxx channels fetched
INFO:__main__:Fetching messages: channel_name='xxxxx'
INFO:__main__:xxx messages/replies fetched
...
$ head -n 10 output/random.json
[
{
"subtype": "channel_join",
"text": "<@UXXXXXXXXXX>さんがチャンネルに参加しました",
"ts": "0000000000.000000",
"type": "message",
"user": "UXXXXXXXXXX"
},
...