by masuidrive @ Bloom&Co., Inc. 2023- APACHE LICENSE, 2.0
Slack の Public channel の要約を作って投稿するスクリプトです。
チャンネルが増えた組織では読むのが追いつかないことが多いため、要約を作って投稿することで、チャンネルの活動を把握しやすくすることができます。
このコードの大半も ChatGPT を使って書きました。とりあえず動くように書いただけなので、コードは雑然としています。
誰かキレイにしたら Pull Request ください。機能追加なども大歓迎です。
簡単な解説などはこちらの記事に書いています。
https://note.com/masuidrive/n/na0ebf8a4c4f0
GitHub Actions で毎日午前 5 時に動くようになっています。これ以外の環境で動かす場合は適当に頑張ってください。
- 右上の"Fork"ボタンを押して、自分のリポジトリに fork します
- 有料プランにするなどして GitHub Actions が実行できるようにしておきます
- "Settings"タブを開き、左の"Secrets and variables"→"Actions"を開きます
- 右上の緑の"New Repository Secret"をクリックすると環境変数が設定できるので、次の 3 つの変数を設定します
- OpenAI の認証トークン
- OpenAI の Web サイトにアクセスしてください
- 右上の"Sign In"ボタンをクリックし、アカウントにログインしてください
- ページ上部の"API"メニューから、"API Key"をクリックして、API キーを生成します
- "API Key"ページにアクセスすると、API キーが表示されます。これをコピーして Value に貼り付けます
- Slack の API 認証トークン
- Slack API の Web サイトにアクセスし、ログインしてください
- "Create a new app"をクリックして、"From an app manifest"を選択し manifest に下記の内容をコピーします
{"display_information":{"name":"Summary","description":"Public channelのサマリーを作る","background_color":"#d45f00"},"features":{"bot_user":{"display_name":"Summary","always_online":false}},"oauth_config":{"scopes":{"bot":["channels:history","channels:join","channels:read","chat:write","users:read"]}},"settings":{"org_deploy_enabled":true,"socket_mode_enabled":false,"token_rotation_enabled":false}}
- 画面左の"Install App"をクリックし、右に出る"Install App to Workspace"をクリックして、アプリをワークスペースにインストールします。インストールが完了すると、bot の OAuth アクセストークンが表示されます
- この
xoxb-
で始まるトークンをコピーして Value に貼り付けます
- 要約結果を投稿する Slack の channel_id
- Slack で要約結果を投稿したいチャンネルを開きます
- 上部のチャンネル名をクリックし、出てきた Popup の最下部にある Channel ID を Value に貼り付けます
- 画面上部の検索窓から"Summarizer"を検索し、"Summarizer [APP]"をクリックします。
- 上の"Summarizer"をクリックし、"Add this app to a channel"をクリックして、要約結果を投稿したいチャンネルを指定します
- GitHub のリポジトリで"Settings"タブを開き、左の"Actions"→"General"を開きます
- "Actions permissions"の"Allow all actions and reusable workflows"を選択して保存してください
これらの設定をすると、毎日午前 5 時に Slack の Public channel の要約結果が投稿されます。
手動で実行してみる場合には"Actions" タブを開き、左の"Summarizer"をクリックして、右の"Run workflow"をおしてください。
このスクリプトで既知の課題としては、1 チャンネル当たりの発言が 4000token を超えるとコケます。分割する部分は書いてないので。Pull Request をお待ちしてます → 誰か