English | 日本語
private な Notion リンクが Slack に投稿された際に、それを展開してくれる Slack App です。
- Notion の記事タイトル展開(プロパティは未対応)
- Notion の記事コンテンツ展開
- Heading
- Paragraph
- 箇条書きリスト
- 番号リスト
- TODO リスト
- Notion API の Integrations を Internal integrations で作成し、token を取得
- Slack App 作成
- slack-notion-preview のデプロイ
- 2 で作った app に、3 の URL を登録する
- Slack App の bot ユーザーをチャンネルに招待する
- 展開したいページで Integration を許可する
Getting Started を参考にしながらアクセストークンを取得してください。
- https://api.slack.com/apps の Create New App からアプリ作成
- 左メニュー OAuth & Permissions を開き、Scopes で link:write を追加
- 左メニュー Event Subscriptions を開く
- App unfurl domains を展開し、 Add Domain で、
www.notion.so
を入力し、Save Changes
- App unfurl domains を展開し、 Add Domain で、
- 左メニュー Install App を開き、 Install App to Workspace -> Allow
- OAuth Access Token が表示されるのでメモ (
SLACK_TOKEN
) - Basic Information を開き App Credentials の Signing Secret をメモ (
SLACK_SIGNING_SECRET
)
※後で戻ってくるので、Slack App の管理画面は開いたままにしておく。
Node.js で書かれた Web アプリケーションなので、任意の場所で簡単に動かせますが、Heroku や Google App Engine を利用するのがより簡単でしょう。動作のためには以下の環境変数が必要です。
NOTION_TOKEN
: 手順 1 で取得した Notion のアクセストークンSLACK_TOKEN
: 手順 2-5 で取得した Slack App のトークンSLACK_SIGNING_SECRET
: 手順 2-6 で取得したリクエスト署名検証 secret
以下のボタンからデプロイできます。
※ デプロイしたアプリの URL ルートにアクセスしてもページは表示されませんが仕様なので気にしないでください。
- 左メニュー Event Subscriptions を開く
- Request URL に
3でデプロイしたアプリのURL/slack/events
を入力(e.g. https://your-app.herokuapp.com/slack/events) - Verified と表示されたら Enable Events を On にして Save Changes
Bot 名は、左メニューの App Home から確認してください。
API 経由でのアクセスをするためには、そのページで Integration を許可する必要があります。
現状ワークスペースレベルで全てのページを許可することはできないようです。
とはいえ親ページで許可をすれば子孫のページでも適用されるため、サイドバーの各ページで許可をすれば面倒ですが解決は可能です。
これで準備完了です。
slack-notion-preview はMH4GF さんのリポジトリを参考に作られています。
特に README の大半をそのまま利用させていただいています。この場をお借りして御礼申し上げます。