ShareXのカスタムWebhookでNotionとSlackを連携:10分で自動化ワークフローを構築
ShareXは、キーストローク一つでスクリーンの任意の領域をキャプチャまたは録画し、画像、テキスト、様々なファイルタイプを幅広い宛先にアップロードできる無料のオープンソースアプリケーションです。本記事では、カスタムWebhook機能を利用して、10分以内にShareXをNotionやSlackなどのツールとシームレスに連携させ、効率的な自動化ワークフローを構築する方法を紹介します。
なぜShareXのカスタムWebhookを選ぶのか?
日常業務において、スクリーンショットやスクリーン録画のコンテンツをチームコラボレーションツールに迅速に同期する必要が頻繁にあります。ShareXのカスタムWebhook機能は、このニーズを解決する強力なツールです。主な利点は以下の通りです。
- プラットフォームの壁を打破する:キャプチャしたコンテンツをNotionデータベースやSlackチャンネルなどの一般的なツールに直接プッシュできます。
- 自動化ワークフローの実現:手動でのコピー&ペーストが不要になり、コンテンツの共有と記録をワンクリックで完了させることができます。
- 高いカスタマイズ性:リクエストパラメータ、ヘッダー情報、データ形式をカスタマイズできます。
ShareXの核心的な強みはその柔軟な拡張性にあります。ShareX.UploadersLib/CustomUploader/ディレクトリ内の関連実装を通じて、ユーザーはカスタムアップロード先を簡単に設定でき、Webhookエンドポイントを含む様々な宛先を構成できます。
準備:Webhookアドレスの取得
設定を開始する前に、ターゲットプラットフォームのWebhookアドレスを準備する必要があります。
Notion Webhookの設定
- Notionでインテグレーションを作成し、APIキーを取得します。
- データベースを作成し、データベースIDを取得します。
- APIリクエストURLを構築します:`https://api.notion.com/v1/pages`
Slack Webhookの設定
- SlackワークスペースでIncoming Webhookを作成します。
- 生成されたWebhook URLをコピーします。
- デフォルトのチャンネルと表示名を設定します。
ステップバイステップ設定ガイド
1. ShareXのインストール
まず、最新バージョンのShareXがインストールされていることを確認してください。公式ウェブサイトからダウンロードしてインストールします。
2. カスタムアップローダーの設定
- ShareXメインインターフェースを開き、「Destinations」→「Custom uploader settings」に移動します。
- 「New」をクリックして新しいアップローダー設定を作成します。
- 設定ページで以下の情報を入力します:
- 名前:Notion Webhook(またはSlack Webhook)
- URL:準備したWebhookアドレスを入力します。
- メソッド:POST
- コンテンツタイプ:application/json
3. リクエストボディテンプレートの設定
ターゲットプラットフォームのAPI要件に基づいてJSONリクエストボディを構成します。Notionを例に挙げます。
{
"parent": { "database_id": "YOUR_DATABASE_ID" },
"properties": {
"タイトル": { "title": [{ "text": { "content": "{filename}" } }] },
"URL": { "url": "{url}" }
}
}
4. リクエストヘッダの設定
必要なリクエストヘッダ情報を追加します。Notionの場合は以下が必要です。
- Authorization: Bearer YOUR_API_KEY
- Notion-Version: 2022-06-28
5. 接続テスト
「Test」ボタンをクリックして設定が正しいか検証し、成功したら設定を保存します。
高度なテクニック:動的パラメータと条件ロジック
ShareXのカスタムアップローダーは、豊富な変数と条件ロジックをサポートしています。ShareX.UploadersLib/CustomUploader/CustomUploaderItem.csの実装を通じて、より複雑なシナリオを実現できます。
常用変数
{filename}:キャプチャされたファイルの名前{url}:アップロード後のURL{timestamp}:現在のタイムスタンプ{clipboard}:クリップボードの内容
条件ロジックの例
カスタムJavaScriptコードを用いることで、ファイルタイプに基づいて異なるWebhookを選択する自動化を実現できます。以下の例では、ビデオファイル(.mp4)をSlackに、それ以外をNotionに送信するロジックを示します。
if (filename.endsWith('.mp4')) {
return 'https://hooks.slack.com/services/XXX';
} else {
return 'https://api.notion.com/v1/pages';
}
よくある問題の解決策
接続に失敗した場合
- Webhook URLが正しいか確認してください。
- リクエストヘッダ情報が完全か確認してください。
- ShareX.HelpersLib/Logger.csを通じて詳細なログを確認してください。
Webhookリクエストをデバッグする方法
- PostmanなどのツールでWebhookアドレスをテストします。
- ShareXのデバッグモードを有効にします。
- ターゲットプラットフォームのAPIドキュメントを確認してください。