{"id":47982264,"url":"https://github.com/nlink-jp/scli","last_synced_at":"2026-04-24T05:01:09.562Z","repository":{"id":345740965,"uuid":"1187071139","full_name":"nlink-jp/scli","owner":"nlink-jp","description":"Terminal-based Slack client for users — channel read/post, DMs, search, unread summary, and more","archived":false,"fork":false,"pushed_at":"2026-04-24T03:14:00.000Z","size":257,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-24T03:33:47.805Z","etag":null,"topics":["cli","golang","oauth2","slack","slack-client","terminal"],"latest_commit_sha":null,"homepage":"https://github.com/nlink-jp/cli-series","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nlink-jp.png","metadata":{"files":{"readme":"README.ja.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-20T10:01:34.000Z","updated_at":"2026-04-24T03:14:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nlink-jp/scli","commit_stats":null,"previous_names":["magifd2/scli","nlink-jp/scli"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/nlink-jp/scli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nlink-jp%2Fscli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nlink-jp%2Fscli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nlink-jp%2Fscli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nlink-jp%2Fscli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nlink-jp","download_url":"https://codeload.github.com/nlink-jp/scli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nlink-jp%2Fscli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32209895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T03:15:14.334Z","status":"ssl_error","status_checked_at":"2026-04-24T03:15:11.608Z","response_time":64,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["cli","golang","oauth2","slack","slack-client","terminal"],"created_at":"2026-04-04T11:09:40.339Z","updated_at":"2026-04-24T05:01:09.547Z","avatar_url":"https://github.com/nlink-jp.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# scli\n\nユーザーとして操作するターミナルベースの Slack クライアント（ボットではなく人間として認証）。\nチャンネルの閲覧、メッセージ送信、検索、DM の管理をターミナルから実行できる。\n\n[English README is here](README.md)\n\n## 特徴\n\n- チャンネル・DM メッセージの閲覧（スレッド展開対応）\n- メッセージ投稿・スレッド返信（`\\n` で改行対応）\n- [Block Kit](https://api.slack.com/block-kit) メッセージの投稿（ファイル、stdin、インライン JSON）\n- ファイルアップロード\n- 未読チャンネル・DM の一覧表示\n- ワークスペース横断のメッセージ検索\n- 複数ワークスペース対応\n- カラー出力（`--json` / `--no-color` フラグ対応）\n- OS キーチェーン、環境変数、`.env` ファイルによるトークン管理\n\n## インストール\n\n### ソースからビルド\n\n```sh\ngit clone https://github.com/nlink-jp/scli.git\ncd scli\nmake build          # 現在のプラットフォーム向け → dist/scli\nmake build-all      # 全プラットフォーム向けクロスコンパイル\n```\n\n必要条件: Go 1.26+, `make`\n\n### 初期設定\n\nSlack App の作成と認証の手順は [docs/setup.md](docs/setup.md) を参照。\n\n```sh\nscli auth login\n```\n\n## コマンド\n\n| コマンド | 説明 |\n|---------|------|\n| `scli auth login` | Slack で認証（OAuth 2.0 PKCE） |\n| `scli auth logout` | 保存された認証情報を削除 |\n| `scli auth list` | 認証済みワークスペースの一覧 |\n| `scli channel list` | 表示可能なチャンネルの一覧（参加・未参加問わず） |\n| `scli channel joined` | 参加中のチャンネルの一覧 |\n| `scli channel read \u003cchannel\u003e` | チャンネルのメッセージを読む |\n| `scli channel export \u003cchannel\u003e` | チャンネル履歴を JSON にエクスポート（[フォーマット](docs/EXPORT_FORMAT.md)） |\n| `scli dm list` | DM 会話の一覧 |\n| `scli dm read \u003cuser\u003e` | DM メッセージを読む |\n| `scli dm send \u003cuser\u003e [message]` | DM を送信（Block Kit 対応） |\n| `scli post \u003cchannel\u003e [message]` | チャンネルにメッセージを投稿 |\n| `scli search \u003cquery\u003e` | ワークスペース内のメッセージを検索 |\n| `scli unread` | 未読のチャンネル・DM を表示 |\n| `scli user list` | ワークスペースメンバーの一覧 |\n| `scli workspace list` | 設定済みワークスペースの一覧 |\n| `scli workspace use \u003cname\u003e` | デフォルトワークスペースを切り替え |\n| `scli workspace rename \u003cold\u003e \u003cnew\u003e` | ワークスペースをリネーム（config + keychain + cache を一括更新） |\n\n### 共通フラグ\n\n```\n--workspace, -w   ワークスペース名（デフォルト: \"default\"）\n--json            JSON で出力\n--no-color        カラー出力を無効化\n```\n\n### channel read / dm read オプション\n\n```\n-n, --limit N     取得メッセージ数（デフォルト: 20）\n--unread          最終既読以降のメッセージのみ表示\n--thread \u003cts\u003e     指定タイムスタンプのスレッドを表示\n```\n\n### post オプション\n\n```\n--file \u003cpath\u003e         ファイルを添付（メッセージ省略可、--thread と併用可）\n--thread \u003cts\u003e         スレッドに返信\n--blocks \u003cjson\u003e       Block Kit JSON 配列（インライン文字列）\n--blocks-file \u003cpath\u003e  Block Kit JSON をファイルから読み込み（\"-\" で stdin）\n```\n\n`--blocks` / `--blocks-file` 使用時、`[message]` は通知フォールバックテキストになり省略可能。\n両フラグは排他的。\n\n### dm send オプション\n\n```\n--blocks \u003cjson\u003e       Block Kit JSON 配列（インライン文字列）\n--blocks-file \u003cpath\u003e  Block Kit JSON をファイルから読み込み（\"-\" で stdin）\n```\n\n`post` と同じ動作 — blocks 指定時はメッセージ省略可能。\n\n#### Block Kit の例\n\n```sh\n# インライン JSON\nscli post '#general' 'Hello' --blocks '[{\"type\":\"section\",\"text\":{\"type\":\"mrkdwn\",\"text\":\"*Hello*\"}}]'\n\n# ファイルから\nscli post '#general' 'Hello' --blocks-file blocks.json\n\n# stdin から（md-to-slack からパイプ）\nmd-to-slack input.md | scli post '#general' 'Hello' --blocks-file -\n```\n\n#### メッセージ ts の取得\n\n`post` と `dm send` は `--json` 指定で `{\"ts\":\"...\",\"channel\":\"...\"}` を出力:\n\n```sh\n# ts を取得してスレッド返信やファイル添付に使用\nTS=$(scli post '#ops' 'alert' --json | jq -r .ts)\nscli post '#ops' 'details' --thread \"$TS\"\n```\n\n### search オプション\n\n```\n-n, --limit N     最大結果数（デフォルト: 20）\n--asc             古い順に表示（デフォルト: 新しい順）\n```\n\n## 複数ワークスペース\n\n```sh\nscli auth login --workspace personal\nscli auth login --workspace work\nscli workspace use work\nscli channel read #general --workspace personal\n```\n\n### ワークスペースのリネーム\n\n```sh\nscli workspace rename personal my-personal\n```\n\n\u003e **警告:** `config.json` を直接編集してワークスペース名を変更しないでください。\n\u003e 認証トークンは OS キーチェーンにワークスペース名をキーとして保存されています。\n\u003e 設定ファイル上の名前だけ変更すると、キーチェーンのトークンが孤立して認証が\n\u003e できなくなります。ワークスペース名の変更には必ず `scli workspace rename` を\n\u003e 使用してください。config、keychain、cache が一括で更新されます。\n\n## ライセンス\n\nMIT — [LICENSE](LICENSE) を参照\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnlink-jp%2Fscli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnlink-jp%2Fscli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnlink-jp%2Fscli/lists"}