📩

RaycastからSlackに定型メッセージを送るextensionを作りました

2025/03/09に公開1

概要

Slack Templated Message というExtensionを作成しました。
Raycast Storeからインストールできます。もし興味ありましたら試してみてください。

https://www.raycast.com/koh-sh/slack-templated-message

例えば勤怠連絡などSlackに頻繁に同じメッセージを送信する際に、Raycastからサクッと送信できます。
事前に送信するメッセージやチャンネルを登録し、それらをRaycastからいつでも呼び出せます。

使い方

インストール/認証

Extension管理画面のInstall From Storeから, Slack Templated Message と検索してください。

最初にコマンド実行しようとすると認証を促されます。

ブラウザに遷移するのでOauthの設定をしてください。

テンプレート管理

Create Slack Template コマンドで、送信するメッセージのテンプレを作成できます。

  • テンプレの名前
  • メッセージ内容
  • 投稿先チャンネル
  • スレッド ID (スレッドにリプライする形で送信したい場合)

スレッドIDはスレッド元メッセージのリンクの末尾の、p1234567891234567みたいな部分です。
例) https://{workspace名}.slack.com/archives/{チャンネルID}/p1234567891234567

申し訳程度に date, timeなどの変数も使用できるようにしています。
例えば date は 2025-03-08, time は 15:03 のように変換されます。

またImport Templates,Export Templatesコマンドで、テンプレート一覧をJsonで管理できるようにしています。

メッセージ送信

Send Slack Messageコマンドで、先ほど作成したテンプレートメッセージを送信できます。
また既存のテンプレートの編集/削除もここから実施できます。 (cmd+k)

Store公開まで

実装

https://developers.raycast.com/basics/create-your-first-extension

基本的にはこちらのドキュメントに沿って進めていきます。
Create Extensionコマンドで諸々埋めて作成すると、初期プロジェクトが作成されます。
コードを書いてnpm run devを実行すると、raycastから呼び出せるようになります。
またhot reloadもしてくれるので動作確認しながらの実装も楽です。

なお今回のExtensionはほぼ Cursor (Claude-3.5-Sonnet) で実装しました。
RaycastのapiやUtilityを使用するところは多少細かめに指示をする必要がありましたが、それ以外の箇所は概ねスムーズに書いてくれました。
事前にapi一覧など眺めておいておくと良さそうです。
https://developers.raycast.com/api-reference/cache
https://developers.raycast.com/utilities/getting-started

公開準備

コマンドの命名規則やスクショの準備などをまとめたガイドラインがあるのでそれに則って修正します。
https://developers.raycast.com/basics/prepare-an-extension-for-store
またnpm run lint,npm run buildがパスしないといけないので合わせて確認します。

これらの仕組みはCursorと組み合わせるとかなりスムーズに進めやすかったです。
以下のように指示するとスムーズに進められたのでおすすめです。

  • (ガイドラインをcontextとした上で)「ガイドラインをチェックリスト形式にまとめて、現状のプロジェクトをレビューして」
  • 「コードを修正したら毎回 lint,buildを実行してパスするまで修正して」

またスクリーンショットやアイコンは専用ツールも用意されています。
https://developers.raycast.com/basics/prepare-an-extension-for-store#adding-screenshots
https://ray.so/icon

PR作成-Mergeまで

https://developers.raycast.com/basics/publish-an-extension
準備ができたら https://github.com/raycast/extensions にPRを出します。
npm run publishでPR作成できるみたいですが、私は自分でforkしてPR作成しました。

https://github.com/raycast/extensions/pull/17253

初回レビューまでおよそ1-2週ほどかかるので気長に待ちます。

レビューの際は greptile というAI botが動いているようでした。
styleだけでなくロジック面も正しそうなコメントしていたので精度も良さそうです。
AIが書いたコードをAIがレビューしていて、時代を感じました。

公開完了

PRがマージされるとStoreに自動で公開されます。

まとめ

Extensionを作るための仕組みがかなり整っていて、ほぼ初めてでしたがスムーズに進められました。
それらの仕組みは生成AIとも相性が良く、正しい状態をドキュメントやlinterで確認できることが重要だと思いました。

Discussion

harunonharunon

はじめまして!(リリースおめでとうございます🎉)

普段Slackで、HRMOS勤怠を使った打刻をしているのですが mentionの指定に一手間必要だった(結果できたのでHappy!)ので備忘録として残しておきます

話は単純で、WebからSlackにログイン→Webからメッセージ送信しNetworkタブから mentionに相当する文字列を見つけてそれを「Send Slack Message」の Message 部分にいれる

ということをしました🙏