https://github.com/nlink-jp/scli
Terminal-based Slack client for users — channel read/post, DMs, search, unread summary, and more
https://github.com/nlink-jp/scli
cli golang oauth2 slack slack-client terminal
Last synced: 2 months ago
JSON representation
Terminal-based Slack client for users — channel read/post, DMs, search, unread summary, and more
- Host: GitHub
- URL: https://github.com/nlink-jp/scli
- Owner: nlink-jp
- License: mit
- Created: 2026-03-20T10:01:34.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-04-24T03:14:00.000Z (2 months ago)
- Last Synced: 2026-04-24T03:33:47.805Z (2 months ago)
- Topics: cli, golang, oauth2, slack, slack-client, terminal
- Language: Go
- Homepage: https://github.com/nlink-jp/cli-series
- Size: 251 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.ja.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# scli
ユーザーとして操作するターミナルベースの Slack クライアント(ボットではなく人間として認証)。
チャンネルの閲覧、メッセージ送信、検索、DM の管理をターミナルから実行できる。
[English README is here](README.md)
## 特徴
- チャンネル・DM メッセージの閲覧(スレッド展開対応)
- メッセージ投稿・スレッド返信(`\n` で改行対応)
- [Block Kit](https://api.slack.com/block-kit) メッセージの投稿(ファイル、stdin、インライン JSON)
- ファイルアップロード
- 未読チャンネル・DM の一覧表示
- ワークスペース横断のメッセージ検索
- 複数ワークスペース対応
- カラー出力(`--json` / `--no-color` フラグ対応)
- OS キーチェーン、環境変数、`.env` ファイルによるトークン管理
## インストール
### ソースからビルド
```sh
git clone https://github.com/nlink-jp/scli.git
cd scli
make build # 現在のプラットフォーム向け → dist/scli
make build-all # 全プラットフォーム向けクロスコンパイル
```
必要条件: Go 1.26+, `make`
### 初期設定
Slack App の作成と認証の手順は [docs/setup.md](docs/setup.md) を参照。
```sh
scli auth login
```
## コマンド
| コマンド | 説明 |
|---------|------|
| `scli auth login` | Slack で認証(OAuth 2.0 PKCE) |
| `scli auth logout` | 保存された認証情報を削除 |
| `scli auth list` | 認証済みワークスペースの一覧 |
| `scli channel list` | 表示可能なチャンネルの一覧(参加・未参加問わず) |
| `scli channel joined` | 参加中のチャンネルの一覧 |
| `scli channel read ` | チャンネルのメッセージを読む |
| `scli channel export ` | チャンネル履歴を JSON にエクスポート([フォーマット](docs/EXPORT_FORMAT.md)) |
| `scli dm list` | DM 会話の一覧 |
| `scli dm read ` | DM メッセージを読む |
| `scli dm send [message]` | DM を送信(Block Kit 対応) |
| `scli post [message]` | チャンネルにメッセージを投稿 |
| `scli search ` | ワークスペース内のメッセージを検索 |
| `scli unread` | 未読のチャンネル・DM を表示 |
| `scli user list` | ワークスペースメンバーの一覧 |
| `scli workspace list` | 設定済みワークスペースの一覧 |
| `scli workspace use ` | デフォルトワークスペースを切り替え |
| `scli workspace rename ` | ワークスペースをリネーム(config + keychain + cache を一括更新) |
### 共通フラグ
```
--workspace, -w ワークスペース名(デフォルト: "default")
--json JSON で出力
--no-color カラー出力を無効化
```
### channel read / dm read オプション
```
-n, --limit N 取得メッセージ数(デフォルト: 20)
--unread 最終既読以降のメッセージのみ表示
--thread 指定タイムスタンプのスレッドを表示
```
### post オプション
```
--file ファイルを添付(メッセージ省略可、--thread と併用可)
--thread スレッドに返信
--blocks Block Kit JSON 配列(インライン文字列)
--blocks-file Block Kit JSON をファイルから読み込み("-" で stdin)
```
`--blocks` / `--blocks-file` 使用時、`[message]` は通知フォールバックテキストになり省略可能。
両フラグは排他的。
### dm send オプション
```
--blocks Block Kit JSON 配列(インライン文字列)
--blocks-file Block Kit JSON をファイルから読み込み("-" で stdin)
```
`post` と同じ動作 — blocks 指定時はメッセージ省略可能。
#### Block Kit の例
```sh
# インライン JSON
scli post '#general' 'Hello' --blocks '[{"type":"section","text":{"type":"mrkdwn","text":"*Hello*"}}]'
# ファイルから
scli post '#general' 'Hello' --blocks-file blocks.json
# stdin から(md-to-slack からパイプ)
md-to-slack input.md | scli post '#general' 'Hello' --blocks-file -
```
#### メッセージ ts の取得
`post` と `dm send` は `--json` 指定で `{"ts":"...","channel":"..."}` を出力:
```sh
# ts を取得してスレッド返信やファイル添付に使用
TS=$(scli post '#ops' 'alert' --json | jq -r .ts)
scli post '#ops' 'details' --thread "$TS"
```
### search オプション
```
-n, --limit N 最大結果数(デフォルト: 20)
--asc 古い順に表示(デフォルト: 新しい順)
```
## 複数ワークスペース
```sh
scli auth login --workspace personal
scli auth login --workspace work
scli workspace use work
scli channel read #general --workspace personal
```
### ワークスペースのリネーム
```sh
scli workspace rename personal my-personal
```
> **警告:** `config.json` を直接編集してワークスペース名を変更しないでください。
> 認証トークンは OS キーチェーンにワークスペース名をキーとして保存されています。
> 設定ファイル上の名前だけ変更すると、キーチェーンのトークンが孤立して認証が
> できなくなります。ワークスペース名の変更には必ず `scli workspace rename` を
> 使用してください。config、keychain、cache が一括で更新されます。
## ライセンス
MIT — [LICENSE](LICENSE) を参照